chiark / gitweb /
gui, etc.: provide gui with sensible info about concrete vs. actual movfeat posns
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 2 Jan 2011 03:32:35 +0000 (03:32 +0000)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Sun, 2 Jan 2011 03:32:35 +0000 (03:32 +0000)
hostside/gui
layout/.gitignore
layout/data2safety

index 66c441621f7e6712e0805a7135f160eef1c0a246..79444577a00e5a80ab56034f96aaaa590985d078 100755 (executable)
@@ -248,8 +248,20 @@ proc movpos-bindkey-1 {cpage key seg feat} {
 
 #---------- computation of movpos button locations
 
+proc layout-subseg-featmap {seg concfeatpos args} {
+    global subsegfeatmap
+    set subsegfeatmap($concfeatpos) $args
+}
+    
 proc layout-subseg-end {seg feat posn x y} {
     global cpage
+    upvar #0 subsegfeatmap($feat$posn) mapped
+    if {[info exists mapped]} {
+       foreach {feat posn} $mapped {
+           layout-subseg-end $seg $feat $posn $x $y
+       }
+       return
+    }
     upvar #0 ld_sse/${cpage}($seg/$feat$posn) sse
     if {![info exists sse]} { set sse {0 0 0} }
     manyset $sse n sx sy
@@ -274,8 +286,8 @@ proc layout-data {} {
     global cpage
     upvar #0 ld_sse/$cpage sse
     catch { unset sse }
-    set f ../layout/ours.dgram-$cpage.overlay-info
-    source $f
+    source ../layout/ours.dgram.segmap-info
+    source ../layout/ours.dgram-$cpage.overlay-info
 
     upvar #0 movpos_bindings($cpage) bindings
     if {![info exists bindings]} {
index df2fe79e8a410c78e8f501e5ba3c22482492de92..79980fe92a2e27408fe2e47f648387f489bfecad 100644 (file)
@@ -1,6 +1,7 @@
 *.d4
 ours-*.ps
 testphys-*.ps
+*.dgram.segmap-info
 *.dgram-*.p*.segenco.ps
 *.dgram-*.p*.segenco.ppm
 *.dgram-*.plandata.c
index e073149ab60ec4014bf5ee0f8b1512aa25dd5834..22966c72a45556dfd830270485925383804a1248 100755 (executable)
@@ -1032,9 +1032,29 @@ sub writeasm () {
     }
     o("\n  end\n");
 }
+
+sub writeforui () {
+    close STDOUT or die $!;
+    open STDOUT, ">$basename.dgram.segmap-info" or die $!;
+    o("# autogenerated - do not edit\n");
+    foreach my $seg (keys %segs) {
+       my $segr= $segs{$seg};
+       my $featmap= $segr->{FeatMap};
+       next unless $featmap;
+       foreach my $mapent (@$featmap) {
+           o("layout-subseg-featmap $seg $mapent->{Abstract}");
+           local ($_) = $mapent->{Concrete};
+           s/([A-Z]+)(\d+)/  o(" $1 $2"); "";  /ge;
+           die "$seg $_ ?" if length;
+           o("\n");
+       }
+    }
+}
+
 mainread();
 redaction();
 writeout();
 writeasm();
+writeforui();
 movfeatposmap_checks();
 exit 1 if $mistakes;