X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=commitid.scad.pl;h=48585d5fd11909e402306a99ede5870aa166545c;hp=ff3634175900102ebae8b90b1f0b5f7f80d12a02;hb=0bd64b9ae61ec61a944e56c6d15e7466720d837d;hpb=a3353c662b109f52c4cf1734484e4dcfe716f12b diff --git a/commitid.scad.pl b/commitid.scad.pl index ff36341..48585d5 100755 --- a/commitid.scad.pl +++ b/commitid.scad.pl @@ -25,7 +25,7 @@ $SIG{__WARN__} = sub { die @_; }; # generate a form FORM containing TEXT # TEXT can contain newlines (final newline usually undesirable) # if FORM not specified, generates Arg0 Arg1 Arg2 in sequence -# character set is SPC 0-9 a-f + * (`*' glyph is `=/='). +# character set is SPC 0-9 a-f + * # # We generate a physical indication of which commit was used. # @@ -58,6 +58,8 @@ $SIG{__WARN__} = sub { die @_; }; # Small6: # Small7: # Small8: +# Small9: +# Small10: # git rev-list --first-parent --count HEAD # typically 3-4 characters but we allow for up to 6 # padded with zeroes; if too long we reduce mod 10^n @@ -66,16 +68,20 @@ $SIG{__WARN__} = sub { die @_; }; # If tree is dirty, + or * is suffixed, reducing number of # digits by 1. # -# Small4Q: -# Small6Q: -# Small9Q: -# same but in two lines eg -# Small4Q 10 -# 70 +# Small4S: +# Small6S: Small6T: +# Small8S: Small9T: +# Small10S: +# same but split into two lines (S) or three lines (T) eg +# Small4S 10 Small6t 1 +# 70 07 +# 0* # -# Git4 Git4Q -# Git6 Git6Q -# Git8 Git8Q +# Git4 Git4S +# Git6 Git6S Git6T +# Git8 Git8S +# Git9 Git9T +# Git10 Git10S # git-rev-parse HEAD (prefix of requested length) # eg # Git6 82f2a2 @@ -98,6 +104,12 @@ $SIG{__WARN__} = sub { die @_; }; # If tree is dirty, + or * is suffixed to count (but not to # commitid) reducing number of digits by 1. # +# Full6T +# Full9T +# Full12T +# Full15T +# As Full but commit is split over two lines for a 3-line message +# # FontDemo # # Arg0, Arg1, ... @@ -123,6 +135,15 @@ sub chrmodname ($) { return "Commitid__chr_$chrx"; } +our $gtm_demo_i = -1; +our $gtm_demo_j; +our @gtm_demo_o; + +sub gentextmodule_demo_start_batch ($;$) { + ($gtm_demo_i, $gtm_demo_j) = @_; + $gtm_demo_j //= 0; +} + sub gentextmodule ($@) { my ($form, @lines) = @_; my $modb = "Commitid_$form"; @@ -135,9 +156,9 @@ sub gentextmodule ($@) { $y--; my $x = 0; foreach my $chr (split //, $line) { - next if $chr !~ m/\S/; p sprintf " translate([%d * 0.8, %d * 1.2]) %s();\n", - $x, $y, chrmodname $chr; + $x, $y, chrmodname $chr + if $chr =~ m/\S/; $x++; } $cols = $x if $x > $cols; @@ -148,8 +169,20 @@ sub gentextmodule ($@) { p " d=Commitid_depth();\n"; p " translate([0,0,-d]) linear_extrude(height=d*2) ${modb}_2D();\n"; p "}\n"; + p sprintf "function %s_sz() = Commitid__scale() * 0.1 * [ %d, %d ];\n", $modb, 2 * ($cols * 4 - 1), 2 * (@lines * 6 - 1); + + push @gtm_demo_o, <=4) { - gentextmodule("${form}Q", substr($s,0,$l/2), substr($s,$l/2)); - } + gentextmodule_q("${form}S", $s, 2); + gentextmodule_q("${form}T", $s, 3); } our @gcmd; @@ -306,17 +348,28 @@ sub do_git () { $git_object = gitoutput qw(rev-parse HEAD); } - foreach my $sz (3..8) { + foreach my $sz (3..10) { + gentextmodule_demo_start_batch($sz-3); + gentextmodule_plusq("Small$sz", rjustt($sz, $git_count.$git_dirty)) if defined $git_count; gentextmodule_plusq("Git$sz", ljustt($sz, $git_object, $git_dirty)) if defined $git_object; - gentextmodule("Full$sz", - rjustt($sz, $git_count.$git_dirty), - ljustt($sz, $git_object, '')) - if defined $git_count && defined $git_object; + if (defined $git_count && defined $git_object) { + gentextmodule("Full$sz", + rjustt($sz, $git_count.$git_dirty), + ljustt($sz, $git_object, '')); + + if (!($sz % 2)) { + my $e = $sz/2; + gentextmodule("Full".($e*3)."T", + rjustt($e, $git_count), + ljustt($e*2, $git_object, $git_dirty) + =~ m/.{$e}/g); + } + } } } @@ -344,10 +397,17 @@ while (@ARGV) { $do_git //= defined($argcounter) ? '' : 'co'; +gentextmodule_demo_start_batch(-1); gentextmodule('FontDemo', @demo); do_git(); +p "module Commitid_2DDemo(){\n"; +p " st = Commitid__scale() * [ 10, 5 ];\n"; +p " e = Commitid_pixelsz();\n"; +p $_ foreach @gtm_demo_o; +p "}\n"; + flush STDOUT or die $!; close STDOUT or die $!; @@ -379,8 +439,8 @@ a b c d e f + * - r - # ### -### # - # ### - L + # # + # \#/ +### ### + # /#\ + # #