OUTPUT BUFFER:
package require Tk package require Img catch {destroy .b} catch {destroy .f} foreach i [image names] { if {[regexp {^img\_} $i]} { image delete $i } } proc FillCanvas {} { global Ltmp cW cH set size [font configure SeqFont -size] set y 0 foreach l $Ltmp { set x 0 foreach c $l { ::.f.c create image $x $y \ -anchor nw \ -image CN_${size}_$c incr x $cW } incr y $cH } return } ### DATA ############### # Create mapping set Lignes "I white magenta J white magenta L white magenta M white magenta V white magenta R white blue K white blue F white red Y white red W white red D white forestgreen B white forestgreen E white forestgreen Z black green Q black green P white black G black orange H black cyan N black cyan S white darkviolet T white darkviolet A white darkviolet U white darkviolet C white darkviolet X black dimgrey . black dimgrey 0 black white 1 black white 2 black white 3 black white 4 black white 5 black white 6 black white 7 black white 8 black white 9 black white Space white white" set Lmap [list] foreach l [split $Lignes \n] { lassign [split [string trim $l] " "] n f b if {$n eq "Space"} {set n " "} lappend Lmap [list $n $f $b] } # Create random data set a ".A.CDEFGH.I.KLMN.PQRST.VW.Y.A.CDEFGH.I.KLMN.PQRST.VW.Y..........." set la [string length $a] set nlines 300 set len 1000 for {set i 0} {$i < $nlines} {incr i} { set s [list] for {set j 0} {$j < $len} {incr j} { set x [expr {int($la*rand())}] lappend s [string index $a $x] } lappend Ltmp $s } # DATA DONE ####################### ################################### proc CreeImages {w} { global Lmap set size [font configure SeqFont -size] foreach e $Lmap { lassign $e n f b puts "traite $e" $w configure -bg $b -fg $f -text "$n" update idletasks after 500 puts "config done " set img "CN_${size}_$n" image create photo $img \ -format window -data $w update idletasks set f [file join CN $size $img.png] $img write $f -format png } return } proc Setup {} { global cH cW set w ".b" label $w -font SeqFont \ -bd 0 \ -padx 0 -pady 0 \ -width 1 -height 1 \ -anchor center pack $w update idletasks puts "label cree" foreach size {8 10 12 14 16 18 20} { font configure SeqFont -size $size file mkdir [file join CN $size] CreeImages $w } destroy $w } proc LoadingImages {} { global Lmap set size [font configure SeqFont -size] set Lf [glob [file join CN $size *.png]] foreach f $Lf { set img [file rootname [file tail $f]] image create photo $img -file $f } toplevel .lib set c ".lib.c" canvas $c \ -width 400 -height 400 pack $c set x 0 ; set y 0 ; set cmp 0 foreach e $Lmap { lassign $e n f b if {! ($cmp % 10)} { set x 0 incr y 30 } $c create image $x $y -image CN_${size}_$n incr x 30 incr cmp } return } if {"SeqFont" ni [font names]} { font create SeqFont -family CourierNew -size 20 set cH [font configure SeqFont -size] set cW [font measure SeqFont "Z"] } if {1} { LoadingImages grid columnconfig . 0 -weight 1 grid rowconfig . 0 -weight 1 frame .f grid .f -row 0 -column 0 -sticky news set canH [expr {$nlines * $cH}] set canW [expr {$len * $cW}] set nCol [expr {int(0.5+400/$cW)}] set nRow [expr {int(0.5+400/$cH)}] puts "canW $canW canH $canH nCol $nCol nRow $nRow" canvas .f.c \ -yscrollcommand ".f.sv set" \ -xscrollcommand ".f.sh set" \ -width 400 -height 400 \ -scrollregion [list 0 0 $canW $canH] scrollbar .f.sh \ -orient horiz \ -command ".f.c xview " scrollbar .f.sv \ -command ".f.c yview " grid columnconfig .f 0 -weight 1 grid rowconfig .f 0 -weight 1 grid .f.c -row 0 -column 0 -sticky news grid .f.sv -row 0 -column 1 -sticky ns grid .f.sh -row 1 -column 0 -sticky ew FillCanvas update idletasks }