From: ian Date: Wed, 15 Jun 2005 23:22:07 +0000 (+0000) Subject: makes ui-plan-bot.c X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=c1a4cb798095ee991a538bbc55c49f4b43db321b;p=trains.git makes ui-plan-bot.c --- diff --git a/layout/.cvsignore b/layout/.cvsignore index 82c848f..111d749 100644 --- a/layout/.cvsignore +++ b/layout/.cvsignore @@ -2,6 +2,7 @@ ours-*.ps *.dgram-*.p*.segenco.ps *.dgram-*.p*.segenco.ppm +ui-plan-*.c *.new *.segcmapreq *.segcmap diff --git a/layout/Makefile b/layout/Makefile index a286598..3d64645 100644 --- a/layout/Makefile +++ b/layout/Makefile @@ -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 diff --git a/layout/plan-data-format.h b/layout/plan-data-format.h index dde5ee9..c5f9081 100644 --- a/layout/plan-data-format.h +++ b/layout/plan-data-format.h @@ -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 { diff --git a/layout/plan-to-gui-data b/layout/plan-to-gui-data index ed38b03..391334f 100755 --- a/layout/plan-to-gui-data +++ b/layout/plan-to-gui-data @@ -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();