chiark / gitweb /
makes ui-plan-bot.c
authorian <ian>
Wed, 15 Jun 2005 23:22:07 +0000 (23:22 +0000)
committerian <ian>
Wed, 15 Jun 2005 23:22:07 +0000 (23:22 +0000)
layout/.cvsignore
layout/Makefile
layout/plan-data-format.h
layout/plan-to-gui-data

index 82c848f7bd5561bb82634ceb128ab2f59e93e42d..111d749a092bf154eac1cc4b77a055a21c9e2440 100644 (file)
@@ -2,6 +2,7 @@
 ours-*.ps
 *.dgram-*.p*.segenco.ps
 *.dgram-*.p*.segenco.ppm
+ui-plan-*.c
 *.new
 *.segcmapreq
 *.segcmap
index a2865983ab75f81a40d0fc23e06ff6f317daf9e6..3d64645663ee544db8bc30f7e37b937ee53c2349 100644 (file)
@@ -68,6 +68,9 @@ compose-segenco: compose-segenco.o
 %-pindata.asm: %.layout-data.c
                @:
 
+ui-plan-%.c:   plan-to-gui-data ours.dgram-%.segcmap ui-plan-%.ppm
+               ./$+ $o
+
 %.pin-info:    pin-info-gen ../pcb/%.net
                ./$< $* $o
 
index dde5ee92d38b82bb2bc8b79812b176f77367d9b4..c5f9081a20eac244dd73c13582da877473643a36 100644 (file)
@@ -3,20 +3,22 @@
 #ifndef PLAN_DATA_FORMAT_H
 #define PLAN_DATA_FORMAT_H
 
+typedef const char *const *PlanPixmapDataRef;
+
 typedef struct {
   PlanPixmapDataRef a[2/*i*/][2/*det*/];
 } PlanPixmapOnData;
 
 typedef struct {
   unsigned long code;
+  PlanPixmapDataRef off;
   int n_posns;
   const PlanPixmapOnData *posns;
 } PlanSegmovfeatData;
 
 typedef struct {
-  PlanPixmapDataRef off;
   int n_movfeats;
-  PlanSegmovfeatData *movfeats;
+  const PlanSegmovfeatData *movfeats;
 } PlanSegmentData;
 
 typedef struct {
index ed38b03f66dcc825ee30e8e7116a17d83513c3d2..391334f933d59636a59c714df5d6d79064bcdf43 100755 (executable)
@@ -191,7 +191,7 @@ sub in_pixel () {
        xpmdata_pixel('background','','+');
        return;
     } elsif (!$t{Segnum}) {
-       xpmdata_pixel('background','','?');
+       xpmdata_pixel('background','',':');
        return;
     } else {
        xpmdata_pixel('background','','!');
@@ -321,7 +321,7 @@ sub cmaps_define () {
     xpm_cmap("background","background");
     xpm_cmap_rgbpermil("background",qw(- 100 100 100
                                       + 999 0 999
-                                      ? 75 75 75
+                                      : 75 75 75
                                       ! 999 0 999));
     xpm_cmap("off","off");
     xpm_cmap_fixedbitmap("off",'*');
@@ -347,7 +347,7 @@ sub cmapdata_output_all () {
        $cmap= $cmap{$cmapname};
        foreach $pixchars (sort keys %$cmap) {
            $sname= "m_${cmapname}_". unpack "H*", $pixchars;
-           printf("static const char %s= \"%s %s\";\n",
+           printf("static const char %s[]= \"%s %s\";\n",
                   $sname, $pixchars, $cmap->{$pixchars})
                or die $!;
            push @$stuff, $sname;
@@ -371,7 +371,7 @@ die "$pp ?" if $xp->{X}{Max} >= 642;
                $header_data .= " ";
            }
            for ($p{Y}=$xp->{Y}{Min}; $p{Y}<=$xp->{Y}{Max}; $p{Y}++) {
-               printf "static const char d%04d_%s%s= \"",
+               printf "static const char d%04d_%s%s[]= \"",
                    $p{Y}, $style, $namerhs or die $!;
                $row= $xp->{Pixels}{$p{Y}};
                $pp= "$style $namerhs $p{X} $p{Y}";
@@ -431,53 +431,55 @@ sub plandata_output_all () {
                $n_posns= $movfeat_configbits{$xpmname};
                $code= $movfeat_prefix{$xpmname};
            }
-           printf("const PlanPixmapOnData pon_%s[]= {\n",
+           printf("static const PlanPixmapOnData pon_%s[]= {\n",
                   $xpmname)
                or die $!;
            for ($posn=0; $posn < $n_posns; $posn++) {
                if ($movfeat eq '') {
-                   $dname= sprintf "_%s", $segname;
+                   $dname= $segname;
                } else {
-                   $dname= sprintf "_%s_%s_%d", $segname, $movfeat, $posn;
+                   $dname= sprintf "%s_%s_%d", $segname, $movfeat, $posn;
                }
-               printf("  { on_$dname, det_$dname,".
-                      " ion_$dname, idet_$dname },\n")
+               printf("  { { { p_on_$dname, p_det_$dname },".
+                      " { p_ion_$dname, p_idet_$dname } } },\n")
                    or die $!;
            }
-           printf("  0\n".
-                  "};\n")
+           printf("};\n")
                or die $!;
-           $mfd .= sprintf("  { 0x%x, %d, pon_%s },\n",
-                           $code, $n_posns, $xpmname);
+           $mfd .= sprintf("  { 0x%x, p_off_%s, %d, pon_%s },\n",
+                           $code, $xpmname, $n_posns, $xpmname);
        }
-       printf("const PlanSegmovfeatData mf_%s[]= {\n".
+       printf("static const PlanSegmovfeatData mf_%s[]= {\n".
               "%s".
-              "  0\n".
               "};\n",
               $segname, $mfd)
            or die $!;
     }
+    printf("static const PlanSegmentData segments[]= {\n")
+       or die $!;
     for $segname (@segnames) {
        if (exists $movfeats{$segname}) {
            printf("  { %d, mf_%s },\n",
-                  scalar(@{ $movfeats{$segname} })+1, $segname)
+                  scalar(@{ $movfeats{$segname} })+1,
+                  $segname)
                or die $!;
        } else {
-           printf("  { 1, mf_%s },\n", $segname)
+           printf("  { 1, mf_%s },\n",
+                  $segname)
                or die $!;
        }
     }
-    printf("  { -1, 0 }\n".
-          "};\n")
+    printf("};\n")
        or die $!;
     printf("const PlanData ui_plan_data= {\n".
           "  p_background,\n".
           "  %d, segments\n".
-          "}\n",
+          "};\n",
           scalar(@segnames))
        or die $!;
 }
 
+print "#include \"plan-data-format.h\"\n" or die $!;
 cmapdata_output_all();
 xpmdata_output_all();
 plandata_output_all();