# padded with zeroes; if too long we reduce mod 10^n
# eg if the count is 123456
# Small5 3456*
-# Small8 __123456 (where _ are spaces)
+# Small8 _*123456 (where _ are spaces)
+# the git objectid is included if it will fit
+# unambiguously and usefully eg
+# Small9 ab*123456
#
# Small2S Small4S ... Small10S:
# Small3T Small9T:
$gtm_demo_i++;
}
+sub gen3dmodule ($@) {
+ my ($modb,@argl) = (@_);
+ p "module ${modb}(".(join ', ', @argl)."){\n";
+ p " d=Commitid_depth();\n";
+ p " translate([0,0,-d]) linear_extrude(height=d*2)\n";
+ p " ${modb}_2D(".(join ',', map { m/=/ ? $` : $_ } @argl).");\n";
+ p "}\n";
+}
+
sub gentextmodule ($@) {
my ($form, @lines) = @_;
my $modb = "Commitid_$form";
}
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";
+ gen3dmodule($modb);
p sprintf "function %s_sz() = Commitid__scale() * 0.1 * [ %d, %d ];\n",
$modb, 2 * ($cols * 4 - 1), 2 * (@lines * 6 - 1);
foreach my $sz (2..10) {
gentextmodule_demo_start_batch();
- genform_plusq("Small$sz", rjustt($sz, $git_count, $git_dirty))
- if defined $git_count;
+ if (defined($git_count)) {
+ my $smallstr = rjustt($sz, $git_count, $git_dirty);
+ if (defined($git_object) && $sz >= length($git_count) + 3) {
+ $smallstr = $git_object;
+ $smallstr .= ($git_dirty || ' ');
+ $smallstr .= $git_count;
+ $smallstr = rjustt($sz, $smallstr);
+ }
+ genform_plusq("Small$sz", $smallstr);
+ }
genform_plusq("Git$sz", ljustt($sz, $git_object, $git_dirty))
if defined $git_object;
sub do_some_best ($$) {
my ($modname, $formre) = @_;
my $fullmodname = "Commitid_${modname}_2D";
- p "module $fullmodname(max_sz) {\n";
- p ' sc_max = $Commitid_max_best_scale ? $Commitid_max_best_scale : 2;'."\n";
+ my @argl = qw(max_sz margin=Commitid_pixelsz());
+ p "module $fullmodname(".(join ', ', @argl).") {\n";
+ my $mbs = '$Commitid_max_best_scale';
+ p " sc_max = $mbs ? $mbs : 2;\n";
+ p " sz = max_sz - 2*[margin,margin];\n";
my @do;
foreach my $f (
sort {
my $id = "${form}_r${rot}";
p " sc_$id = min(sc_max";
foreach my $xy (qw(0 1)) {
- p ",max_sz[$xy]/sz_$form","[",(($xy xor $rot)+0),"]";
+ p ",sz[$xy]/sz_$form","[",(($xy xor $rot)+0),"]";
}
p ");\n";
- push @do, " if (sc_$id >= 1.0) {\n";
- push @do, " scale(sc_$id)\n";
+ push @do, " if (sc_$id >= 1.0";
+ push @do, " && sc_$id >= sc_${form}_r1" if !$rot;
+ push @do, ") {\n";
+ push @do, " translate([margin,margin]) scale(sc_$id)\n";
push @do, " rotate(90) translate([0,-sz_$form"."[1]])\n" if $rot;
push @do, " Commitid_${form}_2D();\n";
push @do, " } else";
END
p $_ foreach @do;
p "}\n";
+
+ gen3dmodule "Commitid_$modname", @argl;
}
sub do_git_best () {