From 1c9789f6141c5eca9ae73e2e1f3888d1e63a0ec3 Mon Sep 17 00:00:00 2001 From: ellson Date: Mon, 6 Oct 2008 20:50:13 +0000 Subject: [PATCH] working code again --- lib/inkpot/Makefile.am | 33 +++++++++------- lib/inkpot/inkpot_lib.tcl | 58 +++++++++++++-------------- lib/inkpot/inkpot_lib_brewer.tcl | 9 +++-- lib/inkpot/inkpot_lib_procs.tcl | 68 +------------------------------- 4 files changed, 54 insertions(+), 114 deletions(-) diff --git a/lib/inkpot/Makefile.am b/lib/inkpot/Makefile.am index a257fa2b2..e19ac42d8 100644 --- a/lib/inkpot/Makefile.am +++ b/lib/inkpot/Makefile.am @@ -4,17 +4,18 @@ pdfdir = $(pkgdatadir)/doc/pdf pkgconfigdir = $(libdir)/pkgconfig -#pkginclude_HEADERS = inkpot.h -#lib_LTLIBRARIES = libinkpot.la -#pkgconfig_DATA = libinkpot.pc -#bin_PROGRAMS = inkpot -# -#noinst_HEADERS = inkpot_scheme.h inkpot_xlate.h inkpot_value.h \ -# inkpot_lib_define.h inkpot_lib_value.h inkpot_lib_scheme.h -#noinst_LTLIBRARIES = libinkpot_C.la -# -#man_MANS = inkpot.3 inkpot.1 -#pdf_DATA = inkpot.3.pdf inkpot.1.pdf + +pkginclude_HEADERS = inkpot.h +lib_LTLIBRARIES = libinkpot.la +pkgconfig_DATA = libinkpot.pc +bin_PROGRAMS = inkpot + +noinst_HEADERS = inkpot_scheme.h inkpot_xlate.h inkpot_value.h \ + inkpot_lib_define.h inkpot_lib_value.h inkpot_lib_scheme.h +noinst_LTLIBRARIES = libinkpot_C.la + +man_MANS = inkpot.3 inkpot.1 +pdf_DATA = inkpot.3.pdf inkpot.1.pdf inkpot_SOURCES = inkpot.c inkpot_LDADD = $(builddir)/libinkpot.la @@ -24,11 +25,15 @@ libinkpot_C_la_LIBADD = $(top_builddir)/lib/rbtree/librbtree_C.la libinkpot_la_SOURCES = $(libinkpot_C_la_SOURCES) libinkpot_la_LIBADD = $(libinkpot_C_la_LIBADD) -libinkpot_la_LDFLAGS = -version-info $(VERSION_INFO) -no-undefined +libinkpot_la_LDFLAGS = -version-info $(VERSION_INFO) -no-undefined + +inkpot_scheme.o inkpot_scheme.lo: inkpot_lib_define.h inkpot_lib_scheme.h + +inkpot_value.o inkpot_value.lo: inkpot_lib_define.h inkpot_lib_value.h -inkpot_lib_value.h: $(builddir)/inkpot_lib_define.h +inkpot_lib_value.h: inkpot_lib_define.h -inkpot_lib_scheme.h: $(builddir)/inkpot_lib_define.h +inkpot_lib_scheme.h: inkpot_lib_define.h inkpot_lib_define.h: inkpot_lib.tcl inkpot_lib_procs.tcl \ $(builddir)/inkpot_lib_tk.dat \ diff --git a/lib/inkpot/inkpot_lib.tcl b/lib/inkpot/inkpot_lib.tcl index 5d629e78f..b8f5b4c44 100755 --- a/lib/inkpot/inkpot_lib.tcl +++ b/lib/inkpot/inkpot_lib.tcl @@ -212,56 +212,54 @@ foreach {scheme} [lsort -ascii [array names ALL_SCHEMES]] { tab_finalize "};\n" -if {0} { -foreach {m2} [lsort -dictionary [mapm2 CV]] { - foreach {value schemes} $m2 {break} - foreach {m1} [map2m1 CV $value] { - lappend ALL_ALIASES(m1) $m2 - } -} +foreach {color} [lsort -ascii [map1 CV]] { + set altset [lsort -dictionary [map1m2 CV $color]] + lappend ALL_ALTSETS($altset) $color } - - + # generate TAB_ALTS set SZT_ALTS 0 tab_initialize $f {set first_idx} {set aliases} \ "inkpot_name_t TAB_ALTS\[SZT_ALTS\] = {" -#foreach {m1} [lsort -ascii [array names ALL_ALIASES]] { -# foreach {color schemes} $m1 {break} -foreach {r_set} [map3 CV] { - set scheme_bits 0 - foreach {scheme} $schemes { - foreach {scheme_idx scheme_bit} $ALL_SCHEMES_coded($scheme) {break} - set scheme_bits [expr $scheme_bits | $scheme_bit] - } - set m2s [map3m2 CV $r_set] -# set m2s $ALL_ALIASES($m1) - set cnt [llength $m2s] +foreach {altset} [lsort -dictionary [array names ALL_ALTSETS]] { + set aliases [lsort -ascii -unique $ALL_ALTSETS($altset)] + set cnt [llength $altset] switch $cnt { 0 { - puts stderr "shouldn't happen - zero alts: $color" + puts stderr "shouldn't happen - has to be at least one alt in an altset" } 1 { - foreach {m2} $m2s {break} - foreach {value schemeset} $m2 {break} - set ALL_ALTSETS_coded($color) "$ALL_VALUES_coded($value),[format {0x%x} $scheme_bits]" + foreach {value_schemes} $altset {break} + foreach {value schemes} $value_schemes {break} + set scheme_bits 0 + foreach {scheme} $schemes { + foreach {scheme_idx scheme_bit} $ALL_SCHEMES_coded($scheme) {break} + set scheme_bits [expr $scheme_bits | $scheme_bit] + } + foreach {color} $aliases { + set ALL_ALTS_coded($color) "$ALL_VALUES_coded($value),[format {0x%x} $scheme_bits]" + } # don't need entry in TAB_ALTS for this case } default { set first_idx $SZT_ALTS - foreach {m2} $m2s { - foreach {value schemeset} $m2 {break} + foreach {value_schemes} $altset { + foreach {value schemes} $value_schemes {break} + set scheme_bits 0 + foreach {scheme} $schemes { + foreach {scheme_idx scheme_bit} $ALL_SCHEMES_coded($scheme) {break} + set scheme_bits [expr $scheme_bits | $scheme_bit] + } tab_elem "{[incr cnt -1],$ALL_VALUES_coded($value),[format {0x%x} $scheme_bits]}," incr SZT_ALTS - set aliases [mapm21 CV $m2] foreach {color} $aliases { - set ALL_ALTSETS_coded($color) "$first_idx,0" + set ALL_ALTS_coded($color) "$first_idx,0" } } } } tab_row -#} +} tab_finalize "};\n" @@ -270,7 +268,7 @@ set SZT_NAMES 0 tab_initialize $f {set SZT_NAMES} {set color} \ "inkpot_name_t TAB_NAMES\[SZT_NAMES\] = {" foreach {color} [map1 CV] { - tab_elem "{$ALL_COLOR_STRINGS_coded($color),$ALL_ALTSETS_coded($color)}," + tab_elem "{$ALL_COLOR_STRINGS_coded($color),$ALL_ALTS_coded($color)}," tab_row set ALL_NAMES_coded($color) $SZT_NAMES incr SZT_NAMES diff --git a/lib/inkpot/inkpot_lib_brewer.tcl b/lib/inkpot/inkpot_lib_brewer.tcl index 140c37642..084f3e5e6 100755 --- a/lib/inkpot/inkpot_lib_brewer.tcl +++ b/lib/inkpot/inkpot_lib_brewer.tcl @@ -49,10 +49,13 @@ if {1} { if {[info exists COLORS($nam_ixn)]} { foreach {rr gg bb} $COLORS($nam_ixn) {break} if {$r != $rr || $g != $gg || $b != $bb} { - puts stderr "\"$nam_ixn\" is not unique and rgb doesn't match: $r $g $b != $rr $gg $bb" - puts stderr $rec + puts stderr "" + puts stderr "\"$nam $ixa\" is not unique and rgb doesn't match: $r $g $b != $rr $gg $bb" + puts stderr "In record: [string trim $rec :]" + puts stderr "Retaining first value found, discarding second." + puts stderr "" } { - # puts "$nam_ixn is not unique" + # puts "$nam ixa is not unique" } } set COLORS($nam_ixn) [list $r $g $b] diff --git a/lib/inkpot/inkpot_lib_procs.tcl b/lib/inkpot/inkpot_lib_procs.tcl index 67ce20bf1..e3b9c88cd 100755 --- a/lib/inkpot/inkpot_lib_procs.tcl +++ b/lib/inkpot/inkpot_lib_procs.tcl @@ -114,13 +114,10 @@ proc print_first {a} { # # map1 {M} : get {x...} # map2 {M} : get {y...} -# map3 {M} : get {r...} # mapm1 {M} : get {{x {r...}}...} # mapm2 {M} : get {{y {r...}}...} # map1m2 {M x} : from x get {y {r...}} # map2m1 {M y} : from y get {x {r...}} -# map3m1 {M r_set} : from r_set get {{x {r...}}...} -# map3m2 {M r_set} : from r_set get {{y {r...}}...} # mapm21 {M m2} : from m2 get {x...} # mapm12 {M m1} : from m1 get {y...} # map12 {M x} : from x get {y...} @@ -134,18 +131,10 @@ proc map {M x y r} { if {[info exists MAP_m2_1]} { puts stderr "flushing crunched MAP data for new values" upvar #0 MAP_[set M]_m1_2 MAP_m1_2 - upvar #0 MAP_[set M]_m2_3 MAP_m2_3 - upvar #0 MAP_[set M]_m1_3 MAP_m1_3 - upvar #0 MAP_[set M]_3_m1 MAP_3_m1 - upvar #0 MAP_[set M]_3_m2 MAP_3_m2 upvar #0 MAP_[set M]_2_m1 MAP_2_m1 upvar #0 MAP_[set M]_1_m2 MAP_1_m2 array unset MAP_m2_1 array unset MAP_m1_2 - array unset MAP_m2_3 - array unset MAP_m1_3 - array unset MAP_3_m1 - array unset MAP_3_m2 array unset MAP_2_m1 array unset MAP_1_m2 } @@ -161,13 +150,10 @@ proc mapc {M map} { puts stderr "MAP_[set M]_12_3 doesn't exist. Use the "map" proc to create and populate." } } - m2_1 - m1_2 - m2_3 - m1_3 { + m2_1 - m1_2 { upvar #0 MAP_[set M]_12_3 MAP_12_3 upvar #0 MAP_[set M]_m2_1 MAP_m2_1 upvar #0 MAP_[set M]_m1_2 MAP_m1_2 - upvar #0 MAP_[set M]_m2_3 MAP_m2_3 - upvar #0 MAP_[set M]_m1_3 MAP_m1_3 - #obtain sorted r_set's and use them as keys to the map foreach {xy} [array names MAP_12_3] { foreach {x y} $xy {break} set r_set [lsort -unique $MAP_12_3($xy)] @@ -175,15 +161,12 @@ proc mapc {M map} { set m2 [list $y $r_set] lappend MAP_m2_1($m2) $x lappend MAP_m1_2($m1) $y - lappend MAP_m2_3($m2) $r_set - lappend MAP_m1_3($m1) $r_set } } 1_m2 { upvar #0 MAP_[set M]_m2_1 MAP_m2_1 upvar #0 MAP_[set M]_1_m2 MAP_1_m2 if {! [info exists MAP_m2_1]} {mapc $M m2_1} - #set up for finding m2 from x, and for listing x foreach {m2} [lsort [array names MAP_m2_1]] { foreach {x} $MAP_m2_1($m2) { lappend MAP_1_m2($x) $m2 @@ -195,35 +178,12 @@ proc mapc {M map} { upvar #0 MAP_[set M]_2_m1 MAP_2_m1 if {! [info exists MAP_m2_1]} {mapc $M m2_1} if {! [info exists MAP_m1_2]} {mapc $M m1_2} - #set up for finding m1 from y, and for listing y foreach {m1} [lsort [array names MAP_m1_2]] { foreach {y} $MAP_m1_2($m1) { lappend MAP_2_m1($y) $m1 } } } - 3_m2 { - upvar #0 MAP_[set M]_m2_3 MAP_m2_3 - upvar #0 MAP_[set M]_3_m2 MAP_3_m2 - if {! [info exists MAP_m2_3]} {mapc $M m2_3} - #set up for finding m2 from r_sets, and for listing r_sets - foreach {m2} [lsort [array names MAP_m2_3]] { - foreach {r_set} [lsort -unique $MAP_m2_3($m2)] { - lappend MAP_3_m2($r_set) $m2 - } - } - } - 3_m1 { - upvar #0 MAP_[set M]_m1_3 MAP_m1_3 - upvar #0 MAP_[set M]_3_m1 MAP_3_m1 - if {! [info exists MAP_m1_3]} {mapc $M m1_3} - #set up for finding m1 from r_sets, and for listing r_sets - foreach {m1} [lsort [array names MAP_m1_3]] { - foreach {r_set} [lsort -unique $MAP_m1_3($m1)] { - lappend MAP_3_m1($r_set) $m1 - } - } - } } } @@ -237,12 +197,6 @@ proc map2 {M} { ;#get {y...} if {! [info exists MAP_2_m1]} {mapc $M 2_m1} lsort [array names MAP_2_m1] } -proc map3 {M} { ;#get {r...} - # the set of r is the same in both MAP_3_m1 and MAP_3_m2, so just use one - upvar #0 MAP_[set M]_3_m1 MAP_3_m1 - if {! [info exists MAP_3_m1]} {mapc $M 3_m1} - lsort [array names MAP_3_m1] -} proc mapm1 {M} { ;#get {{x {r...}}...} upvar #0 MAP_[set M]_m1_2 MAP_m1_2 if {! [info exists MAP_m1_2]} {mapc $M m1_2} @@ -263,16 +217,6 @@ proc map2m1 {M y} { ;#from y get {x {r...}} if {! [info exists MAP_2_m1]} {mapc $M 2_m1} set MAP_2_m1($y) } -proc map3m1 {M r_set} { ;#from r_set get {{x {r...}}...} - upvar #0 MAP_[set M]_3_m1 MAP_3_m1 - if {! [info exists MAP_3_m1]} {mapc $M 3_m1} - set MAP_3_m1($r_set) -} -proc map3m2 {M r_set} { ;#from r_set get {{y {r...}}...} - upvar #0 MAP_[set M]_3_m2 MAP_3_m2 - if {! [info exists MAP_3_m2]} {mapc $M 3_m2} - set MAP_3_m2($r_set) -} proc mapm21 {M m2} { ;#from m2 get {x...} upvar #0 MAP_[set M]_m2_1 MAP_m2_1 if {! [info exists MAP_m2_1]} {mapc $M m2_1} @@ -333,25 +277,15 @@ if {0} { ;# for testing puts "" map_debug CV puts "" -puts "m1_3 : [array get MAP_CV_m1_3]" -puts "3_m1 : [array get MAP_CV_3_m1]" puts "map1 CV : [map1 CV]" puts " expected : black green grey0 lime noir vert" puts "map2 CV : [map2 CV]" puts " expected : 0 1 2" - puts "map3 CV : [map3 CV]" - puts " expected : french svg {svg tk x11} {tk x11}" puts "map1m2 CV green : [map1m2 CV green]" puts " expected : {1 {tk x11}} {2 svg}" puts "map2m1 CV 2 : [map2m1 CV 2]" puts " expected : {green svg}" - puts "map3m1 CV {svg tk x11} : [map3m1 CV {svg tk x11}]" - puts " expected : {black {svg tk x11}} {grey0 {svg tk x11}} {lime {svg tk x11}}" - puts "map3m2 CV {svg tk x11} : [map3m2 CV {svg tk x11}]" - puts " expected : {0 {svg tk x11}} {1 {svg tk x11}}" - puts "map3m2 CV {svg} : [map3m2 CV {svg}]" - puts " expected : {2 {svg}}" puts "map12 CV green : [map12 CV green]" puts " expected : 1 2" puts "map21 CV 1 : [map21 CV 1]" -- 2.40.0