X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=commitid.scad.pl;h=863e04df260bf780ced52115f9b350d764c4a0df;hb=ac3a8531acd97d6c0f6a71059a6f304e986d68ca;hp=aced30a46fa7dfbbb2d45b81c6fb27cb80737063;hpb=cb98ba852eb7e49ac77e6b949a6e7ae0471ebfab;p=reprap-play.git diff --git a/commitid.scad.pl b/commitid.scad.pl index aced30a..863e04d 100755 --- a/commitid.scad.pl +++ b/commitid.scad.pl @@ -8,15 +8,20 @@ $SIG{__WARN__} = sub { die @_; }; # We generate a physical indication of which commit was used. # # We provide for scaling factors with dynamic variables: -# $Commitid_pixelsz if not set, we use 0.4 } multiplied +# $Commitid_pixelsz if not set, we use 0.8 } multiplied # $Commitid_scale if not set, we use 1.0 } together -# $Commitid_depth if not set, we use xy pixel size from above +# $Commitid_depth if not set, we use xy pixel size from above / 2 # $Commitid_depth_scale if not set, we use 1.0 (multiplies depth above) # # For each form we have # -# module Commitid_Form_2D(.4) -# module Commitid_Form() +# module Commitid_Form_2D() { ... } +# module Commitid_Form() { ... } +# function Commitid_Form_sz() => [ x, y ] +# +# These have their origin in the bottom left corner. The 3D model +# is a positive, has its origin halfway through, and is twice the +# depth in height, so it can be added or subtracted. # # And we provide # @@ -33,6 +38,7 @@ $SIG{__WARN__} = sub { die @_; }; # Tiny8: # 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 # eg # Tiny4 1070 # @@ -43,10 +49,10 @@ $SIG{__WARN__} = sub { die @_; }; # Tiny4Q 10 # 70 # -# Git4 -# Git6 -# Git8 -# git-rev-parse HEAD +# Git4 Git4Q +# Git6 Git6Q +# Git8 Git8Q +# git-rev-parse HEAD (prefix of requested length) # eg # Git6 82f2a2 @@ -64,13 +70,13 @@ sub p { print @_ or die $!; } p <<'END'; // *** AUTOGENERATED - DO NOT EDIT *** // function Commitid_pixelsz() = - ($Commitid_pixelsz ? $Commitid_pixelsz : 0.4) * + ($Commitid_pixelsz ? $Commitid_pixelsz : 0.8) * ($Commitid_scale ? $Commitid_scale : 1.0); function Commitid_depth() = - ($Commitid_depth ? $Commitid_depth : Commitid_pixelsz()) * + ($Commitid_depth ? $Commitid_depth : Commitid_pixelsz()/2) * ($Commitid_depth_scale ? $Commitid_depth_scale : 1.0); function Commitid__scale() = - Commitid_pixelsz() / 0.1; + Commitid_pixelsz() / 0.2; END sub chrmodname ($) { @@ -80,10 +86,13 @@ sub chrmodname ($) { } sub gentextmodule ($@) { - my ($modulename, @lines) = @_; - p "module $modulename(){\n"; + my ($form, @lines) = @_; + my $modb = "Commitid_$form"; + p "module ${modb}_2D(){\n"; + p " // |$_|\n" foreach @lines; p " scale(Commitid__scale()){\n"; my $y = @lines; + my $cols = 1; foreach my $line (@lines) { $y--; my $x = 0; @@ -93,9 +102,16 @@ sub gentextmodule ($@) { $x, $y, chrmodname $chr; $x++; } + $cols = $x if $x > $cols; } p " }\n"; p "}\n"; + p "module ${modb}(){\n"; + 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); } our @demo; @@ -172,7 +188,10 @@ sub parsefont () { parsefont(); -gentextmodule('Commitid_FontDemo', @demo); +gentextmodule('FontDemo', @demo); + +flush STDOUT or die $!; +close STDOUT or die $!; __DATA__ @@ -200,3 +219,10 @@ a b c d e f # # # # # # # #/ # \## ##/ \## \## \#/ # ++ * + + r + # ### +### # + # ### + L