# --git generate git commit indications, as shown below
# (this is the default if no strings are requested with -t)
#
-# --git=object
+# --git=objid
# generate git commit indication based on commit object only
# (ie avoid counting commits)
#
# $Commitid_depth_scale if not set, we use 1.0 (multiplies depth above)
# $Commitid_max_best_scale if not set, we use 2.0 (max mult of xy in Best)
#
+# We have auto-sizing modules:
+#
+# module Commitid_BestCount_2D(max_sz, margin=Commitid_pixelsz()) { ... }
+# module Commitid_BestCount (max_sz, margin=Commitid_pixelsz()) { ... }
+# module Commitid_BestObjid_2D(max_sz, margin=Commitid_pixelsz()) { ... }
+# module Commitid_BestObjid (max_sz, margin=Commitid_pixelsz()) { ... }
+# // max_sz should be [x,y]
+#
# For each form we have
#
# module Commitid_Form_2D() { ... }
$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);
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";
push @do, " && sc_$id >= sc_${form}_r1" if !$rot;
push @do, ") {\n";
- push @do, " scale(sc_$id)\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 () {
$_ = shift;
if (m/^--(no)?-git$/) {
$do_git = $1 ? '' : 'co';
- } elsif (m/^---git=object$/) {
+ } elsif (m/^---git=objid$/i) {
$do_git = 'o';
} elsif (m/^-i$/) {
$do_git_untracked = 0;