|
|
|
|
@ -1497,7 +1497,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
} elseif {$span > 0} { |
|
|
|
|
#ok to reset to higher val immediately or after an any and any number of following zeros |
|
|
|
|
if {$span > ($numcols - $sidx)} { |
|
|
|
|
lset spanview $sidx [a+ web-red]$span[a] |
|
|
|
|
lset spanview $sidx [a+ term-red]$span[a] |
|
|
|
|
error "textblock::table::configure_header -colspans sequence incorrect at span '$span'. Require span <= [expr {$numcols-$sidx}] or \"any\".[a] $spanview" |
|
|
|
|
} |
|
|
|
|
set remaining $span |
|
|
|
|
@ -1508,7 +1508,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
} else { |
|
|
|
|
if {$span eq "0"} { |
|
|
|
|
if {$remaining eq "0"} { |
|
|
|
|
lset spanview $sidx [a+ web-red]$span[a] |
|
|
|
|
lset spanview $sidx [a+ term-red]$span[a] |
|
|
|
|
error "textblock::table::configure_header -colspans sequence incorrect at span '$span' remaining is $remaining. Require positive or \"any\" value.[a] $spanview" |
|
|
|
|
} else { |
|
|
|
|
incr remaining -1 |
|
|
|
|
@ -1517,7 +1517,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
if {$remaining eq "0"} { |
|
|
|
|
#ok for new span value of any or > 0 |
|
|
|
|
if {$span ne "any" && $span > ($numcols - $sidx)} { |
|
|
|
|
lset spanview $sidx [a+ web-red]$span[a] |
|
|
|
|
lset spanview $sidx [a+ term-red]$span[a] |
|
|
|
|
error "textblock::table::configure_header -colspans sequence incorrect at span '$span'. Require span <= [expr {$numcols-$sidx}] or \"any\".[a] $spanview" |
|
|
|
|
} |
|
|
|
|
set remaining $span |
|
|
|
|
@ -1525,7 +1525,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
incr remaining -1 |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
lset spanview $sidx [a+ web-red]$span[a] |
|
|
|
|
lset spanview $sidx [a+ term-red]$span[a] |
|
|
|
|
error "textblock::table::configure_header -colspans sequence incorrect at span '$span' remaining is $remaining. Require zero value span.[a] $spanview" |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -2926,7 +2926,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
$htable add_row [list "$hnum " $h "${width}x${height}" $s] |
|
|
|
|
incr hnum |
|
|
|
|
} |
|
|
|
|
$htable configure_column 0 -ansibase [a+ web-dimgray] |
|
|
|
|
$htable configure_column 0 -ansibase [a+ term-grey] |
|
|
|
|
tcl::dict::set col_header_tables $col $htable |
|
|
|
|
set colwidths [$htable column_widths] |
|
|
|
|
set icol 0 |
|
|
|
|
@ -4294,7 +4294,8 @@ tcl::namespace::eval textblock {
|
|
|
|
|
set ecat [tcl::dict::create] |
|
|
|
|
|
|
|
|
|
set cat_alkaline_earth [list Be Mg Ca Sr Ba Ra] |
|
|
|
|
set ansi [a+ {*}$fc web-black Web-gold] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-gold] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-gold1] |
|
|
|
|
set val [list ansi $ansi cat alkaline_earth] |
|
|
|
|
foreach e $cat_alkaline_earth { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
@ -4302,7 +4303,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
|
|
|
|
|
set cat_reactive_nonmetal [list H C N O F P S Cl Se Br I] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-lightgreen] |
|
|
|
|
set ansi [a+ {*}$fc black Term-113] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-113] |
|
|
|
|
set val [list ansi $ansi cat reactive_nonmetal] |
|
|
|
|
foreach e $cat_reactive_nonmetal { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
@ -4310,7 +4311,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
|
|
|
|
|
set cat [list Li Na K Rb Cs Fr] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-Khaki] |
|
|
|
|
set ansi [a+ {*}$fc black Term-lightgoldenrod2] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-lightgoldenrod2] |
|
|
|
|
set val [list ansi $ansi cat alkali_metals] |
|
|
|
|
foreach e $cat { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
@ -4318,14 +4319,16 @@ tcl::namespace::eval textblock {
|
|
|
|
|
|
|
|
|
|
set cat [list Sc Ti V Cr Mn Fe Co Ni Cu Zn Y Zr Nb Mo Tc Ru Rh Pd Ag Cd Hf Ta W Re Os Ir Pt Au Hg Rf Db Sg Bh Hs] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-lightsalmon] |
|
|
|
|
set ansi [a+ {*}$fc black Term-orange1] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-salmon1] |
|
|
|
|
|
|
|
|
|
set val [list ansi $ansi cat transition_metals] |
|
|
|
|
foreach e $cat { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
set cat [list Al Ga In Sn Tl Pb Bi Po] |
|
|
|
|
set ansi [a+ {*}$fc web-black Web-lightskyblue] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-lightskyblue] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-lightsteelblue] |
|
|
|
|
set val [list ansi $ansi cat post_transition_metals] |
|
|
|
|
foreach e $cat { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
@ -4333,21 +4336,25 @@ tcl::namespace::eval textblock {
|
|
|
|
|
|
|
|
|
|
set cat [list B Si Ge As Sb Te At] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-turquoise] |
|
|
|
|
set ansi [a+ {*}$fc black Brightcyan] |
|
|
|
|
#set ansi [a+ {*}$fc black Brightcyan] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-skyblue1] |
|
|
|
|
|
|
|
|
|
set val [list ansi $ansi cat metalloids] |
|
|
|
|
foreach e $cat { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
set cat [list He Ne Ar Kr Xe Rn] |
|
|
|
|
set ansi [a+ {*}$fc web-black Web-orchid] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-orchid] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-purple-c] |
|
|
|
|
set val [list ansi $ansi cat noble_gases] |
|
|
|
|
foreach e $cat { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
set cat [list Ac Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr] |
|
|
|
|
set ansi [a+ {*}$fc web-black Web-plum] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-plum] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-plum1] |
|
|
|
|
set val [list ansi $ansi cat actinoids] |
|
|
|
|
foreach e $cat { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
@ -4361,7 +4368,8 @@ tcl::namespace::eval textblock {
|
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
set ansi [a+ {*}$fc web-black Web-whitesmoke] |
|
|
|
|
#set ansi [a+ {*}$fc web-black Web-whitesmoke] |
|
|
|
|
set ansi [a+ {*}$fc term-black Term-silver] |
|
|
|
|
set val [list ansi $ansi cat other] |
|
|
|
|
foreach e [list Mt Ds Rg Cn Nh Fl Mc Lv Ts Og] { |
|
|
|
|
tcl::dict::set ecat $e $val |
|
|
|
|
@ -4818,6 +4826,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
the colour stripes will be oriented |
|
|
|
|
in this direction. |
|
|
|
|
" |
|
|
|
|
-noreset -type none |
|
|
|
|
@values -min 0 -max 1 |
|
|
|
|
colour -type list -default {} -optional 1 -help\ |
|
|
|
|
"List of Ansi colour names |
|
|
|
|
@ -4832,8 +4841,10 @@ tcl::namespace::eval textblock {
|
|
|
|
|
|
|
|
|
|
proc testblock {args} { |
|
|
|
|
set argd [punk::args::parse $args withid ::textblock::testblock] |
|
|
|
|
set colour [dict get $argd values colour] |
|
|
|
|
set size [dict get $argd opts -size] |
|
|
|
|
lassign [dict values $argd] leaders opts values received |
|
|
|
|
set colour [dict get $values colour] |
|
|
|
|
set size [dict get $opts -size] |
|
|
|
|
set noreset [dict exists $received -noreset] |
|
|
|
|
|
|
|
|
|
set rainbow_list [list] |
|
|
|
|
lappend rainbow_list {30 47} ;#black White |
|
|
|
|
@ -4879,7 +4890,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
set longbows [concat {*}[lrepeat $numsets $rainbow_list]] |
|
|
|
|
set rainbow_list [lrange $longbows 0 $size-1] |
|
|
|
|
} |
|
|
|
|
if {"noreset" in $colour} { |
|
|
|
|
if {$noreset} { |
|
|
|
|
set RST "" |
|
|
|
|
} else { |
|
|
|
|
set RST [a] |
|
|
|
|
@ -4896,7 +4907,7 @@ tcl::namespace::eval textblock {
|
|
|
|
|
set ansicode [punk::ansi::codetype::sgr_merge_list "" $ansi] |
|
|
|
|
lappend clist ${ansicode}$c$RST |
|
|
|
|
} |
|
|
|
|
if {"noreset" in $colour} { |
|
|
|
|
if {$noreset} { |
|
|
|
|
return [textblock::join_basic -ansiresets 0 -- {*}$clist] |
|
|
|
|
} else { |
|
|
|
|
#return [textblock::join_basic -- {*}$clist] |
|
|
|
|
@ -5642,22 +5653,22 @@ tcl::namespace::eval textblock {
|
|
|
|
|
set headers [list] |
|
|
|
|
set blocks [list] |
|
|
|
|
|
|
|
|
|
lappend blocks "[textblock::testblock 4 rainbow]" |
|
|
|
|
lappend blocks "[textblock::testblock -size 4 rainbow]" |
|
|
|
|
lappend headers "rainbow 4x4\nresets at line extremes\nnothing trailing" |
|
|
|
|
|
|
|
|
|
lappend blocks "[textblock::testblock 4 rainbow][a]" |
|
|
|
|
lappend blocks "[textblock::testblock -size 4 rainbow][a]" |
|
|
|
|
lappend headers "rainbow 4x4\nresets at line extremes\ntrailing reset" |
|
|
|
|
|
|
|
|
|
lappend blocks "[textblock::testblock 4 rainbow]\n[a+ Web-Green]" |
|
|
|
|
lappend blocks "[textblock::testblock -size 4 rainbow]\n[a+ Term-green]" |
|
|
|
|
lappend headers "rainbow 4x4\nresets at line extremes\ntrailing nl&green bg" |
|
|
|
|
|
|
|
|
|
lappend blocks "[textblock::testblock 4 {rainbow noreset}]" |
|
|
|
|
lappend blocks "[textblock::testblock -size 4 -noreset {rainbow}]" |
|
|
|
|
lappend headers "rainbow 4x4\nno line resets\nnothing trailing" |
|
|
|
|
|
|
|
|
|
lappend blocks "[textblock::testblock 4 {rainbow noreset}][a]" |
|
|
|
|
lappend blocks "[textblock::testblock -size 4 -noreset {rainbow}][a]" |
|
|
|
|
lappend headers "rainbow 4x4\nno line resets\ntrailing reset" |
|
|
|
|
|
|
|
|
|
lappend blocks "[textblock::testblock 4 {rainbow noreset}]\n[a+ Web-Green]" |
|
|
|
|
lappend blocks "[textblock::testblock -size 4 -noreset {rainbow}]\n[a+ Term-green]" |
|
|
|
|
lappend headers "rainbow 4x4\nno line resets\ntrailing nl&green bg" |
|
|
|
|
|
|
|
|
|
set t [textblock::pad_test_blocklist $blocks -description "trailing\nbg/reset\ntests" -blockheaders $headers] |
|
|
|
|
@ -5665,13 +5676,13 @@ tcl::namespace::eval textblock {
|
|
|
|
|
proc pad_example2 {} { |
|
|
|
|
set headers [list] |
|
|
|
|
set blocks [list] |
|
|
|
|
lappend blocks "[a+ web-red Web-steelblue][textblock::block 4 4 x]\n" |
|
|
|
|
lappend blocks "[a+ term-red Term-cornflowerblue][textblock::block 4 4 x]\n" |
|
|
|
|
lappend headers "red on blue 4x4\nno inner resets\ntrailing nl" |
|
|
|
|
|
|
|
|
|
lappend blocks "[a+ web-red Web-steelblue][textblock::block 4 4 x]\n[a]" |
|
|
|
|
lappend blocks "[a+ term-red Term-cornflowerblue][textblock::block 4 4 x]\n[a]" |
|
|
|
|
lappend headers "red on blue 4x4\nno inner resets\ntrailing nl&reset" |
|
|
|
|
|
|
|
|
|
lappend blocks "[a+ web-red Web-steelblue][textblock::block 4 4 x]\n[a+ Web-Green]" |
|
|
|
|
lappend blocks "[a+ term-red Term-cornflowerblue][textblock::block 4 4 x]\n[a+ Term-green]" |
|
|
|
|
lappend headers "red on blue 4x4\nno inner resets\ntrailing nl&green bg" |
|
|
|
|
|
|
|
|
|
set t [textblock::pad_test_blocklist $blocks -description "trailing\nbg/reset\ntests" -blockheaders $headers] |
|
|
|
|
@ -6113,14 +6124,14 @@ tcl::namespace::eval textblock {
|
|
|
|
|
proc welcome_test {} { |
|
|
|
|
package require punk::ansi |
|
|
|
|
package require patternpunk |
|
|
|
|
set ansi [textblock::join -- " " [punk::ansi::ansicat src/testansi/publicdomain/roysac/ROY-WELC.ANS 80x8]] |
|
|
|
|
set ansi [textblock::join -- " " [punk::ansi::ansicat -dimensions 80x8 src/testansi/publicdomain/roysac/ROY-WELC.ANS]] |
|
|
|
|
# Ansi art courtesy of Carsten Cumbrowski aka Roy/SAC - roysac.com |
|
|
|
|
set table [[textblock::spantest] print] |
|
|
|
|
set punks [a+ web-lawngreen][>punk . lhs][a]\n\n[a+ rgb#FFFF00][>punk . rhs][a] |
|
|
|
|
set punks [a+ term-lime][>punk . lhs][a]\n\n[a+ rgb#FFFF00][>punk . rhs][a] |
|
|
|
|
set ipunks [overtype::renderspace -width [textblock::width $punks] [punk::ansi::enable_inverse]$punks] |
|
|
|
|
set testblock [textblock::testblock -size 15 rainbow] |
|
|
|
|
set contents $ansi\n[textblock::join -- " " $table " " $punks " " $testblock " " $ipunks " " $punks] |
|
|
|
|
set framed [textblock::frame -checkargs 0 -type arc -title [a+ cyan]Compositing[a] -subtitle [a+ red]ANSI[a] -ansiborder [a+ web-orange] $contents] |
|
|
|
|
set framed [textblock::frame -checkargs 0 -type arc -title [a+ cyan]Compositing[a] -subtitle [a+ red]ANSI[a] -ansiborder [a+ term-orange1] $contents] |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -8350,13 +8361,14 @@ tcl::namespace::eval textblock {
|
|
|
|
|
set usecache 0 |
|
|
|
|
#set buildcache 0 ;#comment out for debug/analysis so we can see |
|
|
|
|
#puts "--->> frame_inner_width:$frame_inner_width actual_contentwidth:$actual_contentwidth contents: '$contents'" |
|
|
|
|
set cache_key [a+ Web-red web-white]$cache_key[a] |
|
|
|
|
set cache_key [a+ Term-red term-white]$cache_key[a] |
|
|
|
|
} |
|
|
|
|
if {$buildcache && ($actual_contentwidth < $frame_inner_width)} { |
|
|
|
|
#colourise cache_key to warn |
|
|
|
|
if {$actual_contentwidth == 0} { |
|
|
|
|
#we can still substitute with right length |
|
|
|
|
set cache_key [a+ Web-steelblue web-black]$cache_key[a] |
|
|
|
|
#set cache_key [a+ Web-steelblue term-black]$cache_key[a] |
|
|
|
|
set cache_key [a+ Term-cornflowerblue term-black]$cache_key[a] |
|
|
|
|
} else { |
|
|
|
|
#actual_contentwidth is narrower than frame - check template's patternwidth |
|
|
|
|
if {[tcl::dict::exists $frame_cache $cache_key]} { |
|
|
|
|
@ -8366,13 +8378,13 @@ tcl::namespace::eval textblock {
|
|
|
|
|
} |
|
|
|
|
if {$actual_contentwidth < $cache_patternwidth} { |
|
|
|
|
set usecache 0 |
|
|
|
|
set cache_key [a+ Web-orange web-black]$cache_key[a] |
|
|
|
|
set cache_key [a+ Term-orange1 term-black]$cache_key[a] |
|
|
|
|
} elseif {$actual_contentwidth == $cache_patternwidth} { |
|
|
|
|
#set usecache 1 |
|
|
|
|
} else { |
|
|
|
|
#actual_contentwidth > pattern |
|
|
|
|
set usecache 0 |
|
|
|
|
set cache_key [a+ Web-red web-black]$cache_key[a] |
|
|
|
|
set cache_key [a+ Term-red term-black]$cache_key[a] |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|