]> mj.ucw.cz Git - misc.git/commitdiff
Digits: Multiple on a page
authorMartin Mares <mj@ucw.cz>
Thu, 1 Sep 2011 10:36:45 +0000 (12:36 +0200)
committerMartin Mares <mj@ucw.cz>
Thu, 1 Sep 2011 10:36:45 +0000 (12:36 +0200)
ucw/draw-digit-multi [new file with mode: 0755]

diff --git a/ucw/draw-digit-multi b/ucw/draw-digit-multi
new file mode 100755 (executable)
index 0000000..243bda5
--- /dev/null
@@ -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";