chiark / gitweb /
explicit overall min/max
authorian <ian>
Mon, 27 Jun 2005 00:43:42 +0000 (00:43 +0000)
committerian <ian>
Mon, 27 Jun 2005 00:43:42 +0000 (00:43 +0000)
layout/plan-to-gui-data

index 6b6e3231700fef1b090dc77f43188dd34b1ac194..d9fa35c3520d2ecd08dd52485bff4a4c36519b42 100755 (executable)
@@ -135,9 +135,10 @@ sub ang2pixchars ($) {
 
 #---------- read input image ----------
 
-our(%sz);
+our(%sz,%overall);
 # $sz{X}
 # $sz{Y}
+# $overall{X|Y}{Min|Max}
 
 sub xpm_sizes () {
     my ($rr,$xp,$xy);
@@ -150,6 +151,10 @@ print STDERR "xpm_sizes\n";
            }
        }
     }
+    foreach $xy (qw(X Y)) {
+       $overall{$xy}{Min}= $sz{$xy}-1;
+       $overall{$xy}{Max}= 0;
+    }
 }
 
 #---------- read input pixels ----------
@@ -161,13 +166,15 @@ our(%p,$pp);
 
 sub xpmdata_pixel ($$$) {
     my ($style,$namerhs,$pcharstr)=@_;
-    my ($xp,$pk,$xy,$was);
+    my ($xp,$pk,$xy,$was,$mima);
 #printf STDERR "%s  %s %s \`%s'", $pp, $style, $namerhs, $pcharstr;
     $xp= $xpmdata{$style}{$namerhs};
     defined $xp or die "$pp: $style $namerhs ?";
     foreach $xy (qw(X Y)) {
-       $xp->{$xy}{Min}= $p{$xy} if $p{$xy} < $xp->{$xy}{Min};
-       $xp->{$xy}{Max}= $p{$xy} if $p{$xy} > $xp->{$xy}{Max};
+       foreach $mima ($xp->{$xy}, $overall{$xy}) {
+           $mima->{Min}= $p{$xy} if $p{$xy} < $mima->{Min};
+           $mima->{Max}= $p{$xy} if $p{$xy} > $mima->{Max};
+       }
     }
     $was= $xp->{Pixels}{$p{Y}}{$p{X}};
     if (defined($was) && $was gt $pcharstr) {
@@ -399,8 +406,6 @@ cmaps_define();
 
 #---------- output ----------
 
-our ($backgd);
-
 sub cmapdata_output_all () {
     my ($cmapname, $stuff, $cmap, $sname, $pixchars);
 
@@ -432,7 +437,6 @@ sub cmapdata_output_all () {
 sub xpmdata_output_all () {
     my ($style, $namerhs, $xp, $row, $pp, $xy, $pixel);
     my ($y, $cmap_data, $header_data, $cmapname);
-    $backgd= $xpmdata{'background'}{''};
     foreach $style (sort keys %xpmdata) {
        foreach $namerhs (sort keys %{ $xpmdata{$style} }) {
            $xp= $xpmdata{$style}{$namerhs};
@@ -485,7 +489,7 @@ sub ppdr ($$$) {
     $xpmd= $xpmdata{$style}{$namerhs};
 defined $xpmd or die "$style $cmap $namerhs ?";
     return sprintf("{ %d-%d,%d-%d, p_%s_%s }",
-                  (map { $xpmd->{$_}{Min}, $backgd->{$_}{Min} } qw(X Y)),
+                  (map { $xpmd->{$_}{Min}, $overall{$_}{Min} } qw(X Y)),
                   $cmap, $namerhs);
 }
 
@@ -548,8 +552,8 @@ sub plandata_output_all () {
 
     oods('ui_plan_data',
         "const PlanData $gvarname= {\n".
-        "  $backgd->{X}{Max}-$backgd->{X}{Min},".
-        "  $backgd->{Y}{Max}-$backgd->{Y}{Min},".
+        "  $overall{X}{Max}-$overall{X}{Min},".
+        "  $overall{Y}{Max}-$overall{Y}{Min},".
         "  p_background_,\n".
         "  ".scalar(@segnames).", segments\n".
         "};\n");