chiark / gitweb /
where-vessels: use icons for lock state
authorIan Jackson <ian@liberator.relativity.greenend.org.uk>
Tue, 15 Dec 2009 19:59:34 +0000 (19:59 +0000)
committerIan Jackson <ian@liberator.relativity.greenend.org.uk>
Tue, 15 Dec 2009 19:59:34 +0000 (19:59 +0000)
yarrg/icons/t.xbm [deleted file]
yarrg/where-vessels

diff --git a/yarrg/icons/t.xbm b/yarrg/icons/t.xbm
deleted file mode 100644 (file)
index 78329ef..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#define noname_width 11
-#define noname_height 9
-static char noname_bits[] = {
- 0x00,0x00,0x0e,0x00,0xd1,0x03,0x51,0x02,0x5f,0x02,0x5f,0x02,0xdb,0x03,0x1f,
- 0x01,0x1f,0x00};
index 8d6de95900fcd15d64f480cac5d05238b78f2945..a99917eecd451dd06f71e3fd2b5cc51b6d6a48c9 100755 (executable)
@@ -275,17 +275,37 @@ proc vesselclasses-init {} {
     load-icon query
     load-icon ours
     load-icon dot
+    foreach a {battle borrow dot} {
+       foreach b {ours dot query} {
+           load-icon-combine $a $b
+       }
+    }
 }
 
 proc load-icon {icon} {
     image create bitmap icon/$icon -file icons/$icon.xbm
 }
 
-proc code2abbrev-lock {lockown} {
+proc load-icon-combine {args} {
+    set cmd {}
+    set delim "pnmcat -lr "
+    foreach icon $args {
+       append cmd $delim " <(xbmtopbm icons/$icon.xbm)"
+       set delim " <(pbmmake -white 1 1)"
+    }
+    append cmd " | pbmtoxbm"
+    debug "load-icon-combine $cmd"
+    image create bitmap icon/[join $args +] -data [exec bash -c $cmd]
+}
+
+proc code-lockown2icon {lockown} {
     manyset [split $lockown ""] lock notown
-    append abbrev [lindex {x u .} $lock]
-    append abbrev [lindex {m . ?} [regsub {\D} $notown 2]]
-}    
+    return icon/[
+                lindex {battle borrow dot} $lock
+               ]+[
+                  lindex {ours dot query} $notown
+                 ]
+}
 
 proc canvas-horiz-stack {xvar xoff y bind type args} {
     upvar 1 $xvar x
@@ -329,15 +349,9 @@ proc code2canvas {code canvas x yvar qty qtylen bind} {
            $subclass
     }
 
-    manyset [split $lockown ""] lock notown
-
-    incr stackx
-    canvas-horiz-stack stackx 0 $imy $bind \
-       image -anchor nw -image icon/[lindex {battle borrow dot} $lock]
     incr stackx
     canvas-horiz-stack stackx 0 $imy $bind \
-       image -anchor nw -image icon/[lindex {ours dot query} \
-                                         [regsub {\D} $notown 2]]
+       image -anchor nw -image [code-lockown2icon $lockown]
     incr stackx
     
     if {[string length $xabbrev]} {
@@ -380,8 +394,7 @@ proc show-report-decode {code} {
     switch -exact $notown {
        0 { report-set own "Yours" }
        1 { report-set own "Other pirate's" }
-       U { report-set own "Owner not known" }
-       M { report-set own "Missing from notes" }
+       2 { report-set own "Owner not specified in notes" }
        default { report-set own "?? $notown" }
     }
 
@@ -410,19 +423,18 @@ proc filter-says-yes/size {codel} {
 
 proc filter-values/lockown {} {
     foreach lv {0 1 2} {
-       foreach ov {0 1 X} {
+       foreach ov {0 1 2} {
            lappend vals "$lv$ov"
        }
     }
     return $vals
 }
-proc filter-map/lockown {lockown} { return [code2abbrev-lock $lockown] }
+proc filter-icon/lockown {lockown} { return [code-lockown2icon $lockown] }
 proc filter-default/lockown {lockown} {
     return [regexp {^[01]|^2[^1]} $lockown]
 }
 proc filter-says-yes/lockown {codel} {
     set lockown [lindex $codel 3]
-    regsub -all {\D} $lockown X lockown
     upvar #0 filter_lockown($lockown) yes
     return $yes
 }
@@ -590,13 +602,13 @@ proc vessel {vin} {
                set notown 1
            }
        } else {
-           set notown U
+           set notown 2
        }
        append abbrev $xabbrev
        set notes_used($vid) 1
 
     } else {
-       set notown M
+       set notown 2
        lappend note_missings [list $island $realname $vid]
     }
 
@@ -1063,9 +1075,8 @@ proc invoke_notes {} {
 
 #---------- main program ----------
 
-vesselclasses-init
-
 parseargs
+vesselclasses-init
 argdefaults
 httpclientsetup where-vessels
 load-chart