From: Martin Mares Date: Thu, 1 Sep 2011 10:36:45 +0000 (+0200) Subject: Digits: Multiple on a page X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=aae659215bdb34fb4846b6fa6f576c5a63514e47;p=misc.git Digits: Multiple on a page --- diff --git a/ucw/draw-digit-multi b/ucw/draw-digit-multi new file mode 100755 index 0000000..243bda5 --- /dev/null +++ b/ucw/draw-digit-multi @@ -0,0 +1,47 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Cairo; + +my $u = 72/4; +my $mi = 72/25.4; +my $pw = 210*$mi; +my $ph = 297*$mi; +my $s = Cairo::PdfSurface->create('digit.pdf', $pw, $ph); +my $c = Cairo::Context->create($s); +my $n = 0; + +$c->set_line_width(2); +$c->set_line_cap('round'); +$c->set_source_rgb(0, 0, 0); + +my $xp = $u; +my $yp = $u; +while (<>) { + s/^@@ // or next; + chomp; + my @r = split /\s+/; + @r == 5 or next; + + for my $r (@r) { + my ($x1,$y1,$x2,$y2) = $r =~ /^\((\d+),(\d+)\)-\((\d+),(\d+)\)$/ or die; + $c->move_to($xp + (.9*$x1+.1*$x2)*$u, $yp + (.9*$y1+.1*$y2)*$u); + $c->line_to($xp + (.9*$x2+.1*$x1)*$u, $yp + (.9*$y2+.1*$y1)*$u); + $c->stroke; + } + + $xp += 5*$u; + if ($xp + 5*$u > $pw) { + $xp = $u; + $yp += 5*$u; + if ($yp + 5*$u > $ph) { + $c->show_page; + $yp = $u; + } + } + $n++; +} + +print "Output $n matchograms.\n";