X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=commitid.scad.pl;h=bbc750ef5ed6ba4c724cfa603dbbc134b146f21a;hb=8707feb16d5e63e5314ab749c98d45f85e18d3b0;hp=9895360545f823adc3f9c21cf48b8c01003b4905;hpb=976ad5f07a3b812b027cd5c92bf8ceec89b147c1;p=reprap-play.git diff --git a/commitid.scad.pl b/commitid.scad.pl index 9895360..bbc750e 100755 --- a/commitid.scad.pl +++ b/commitid.scad.pl @@ -386,6 +386,7 @@ sub parsefont () { my %chrpolys; # $chrs{$chr}[$poly] = $poly # $poly->{E} = [ "012345012345", ... ] + # $poly->{Holes} = $poly2 while () { next unless m/\S/; chomp; @@ -425,15 +426,27 @@ sub parsefont () { my $demo = ''; my $democols = 6; foreach my $chr (sort keys %chrpolys) { + my $polys = $chrpolys{$chr}; + $_->{Holes} = [] foreach @$polys; + my $mod = chrmodname $chr; p "module $mod () {\n"; foreach my $poly (@$polys) { p " polygon("; + my $holes = $poly->{Holes}; my (@points, @vecs); p_edgelist(\@points, \@vecs, $poly->{E}); - p "points=[".(join ",",@points)."]"; - p ",convexity=4);\n"; + foreach my $hole (@$holes) { + p_edgelist(\@points, \@vecs, $hole->{E}); + } + p "points=[".(join ",",@points)."],"; + if (@$holes) { + p ",paths=[".(join ",", + map { "[".(join ",",@$_)."]" } + @vecs)."],"; + } + p "convexity=4);\n"; } p "}\n"; $demo .= $chr;