Error processing request

Parameters

CONTENT_LENGTH0
REQUEST_METHODGET
REQUEST_URI/revision/colorChooser+for+pocketPC%2Fetcl?V=25
QUERY_STRINGV=25
CONTENT_TYPE
DOCUMENT_URI/revision/colorChooser+for+pocketPC/etcl
DOCUMENT_ROOT/var/www/nikit/nikit/nginx/../docroot
SCGI1
SERVER_PROTOCOLHTTP/1.1
HTTPSon
REMOTE_ADDR172.70.100.225
REMOTE_PORT54510
SERVER_PORT4443
SERVER_NAMEwiki.tcl-lang.org
HTTP_HOSTwiki.tcl-lang.org
HTTP_CONNECTIONKeep-Alive
HTTP_ACCEPT_ENCODINGgzip, br
HTTP_X_FORWARDED_FOR18.117.216.36
HTTP_CF_RAY87a7e3d76feee26c-ORD
HTTP_X_FORWARDED_PROTOhttps
HTTP_CF_VISITOR{"scheme":"https"}
HTTP_ACCEPT*/*
HTTP_USER_AGENTMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
HTTP_CF_CONNECTING_IP18.117.216.36
HTTP_CDN_LOOPcloudflare
HTTP_CF_IPCOUNTRYUS

Body


Error

Unknow state transition: LINE -> END

-code

1

-level

0

-errorstack

INNER {returnImm {Unknow state transition: LINE -> END} {}} CALL {my render_wikit {colorChooser for pocketPC/etcl} 2006-03-13\ \[HE\]\ An\ alternative\ to\ the\ old-fashioned\ Unix\ colorchooser.\nDeveloped\ for\ the\ use\ in\ \[eTcl\],\ you\ can\ use\ it\ together\ with\ the\ \[Alternative\ dialogs\ for\ pocketPC/etcl\].\nThere\ I\ also\ describe\ how\ to\ replace\ tk_chooseColor.\n\n\[WikiDbImage\ colorchooser.jpg\]\n\nWith\ some\ changes\ you\ can\ use\ it\ in\ other\ enviroments\ than\ etcl\ (Remove\ windowfit\ is\ the\ first\ step)\n\n======\n\ #\ colorBox.tcl\ (wiki\ version)\n\ #\ Version\ 0.2\n\n\ #\ inspired\ by\ the\ book\ 'Effektiv\ Tcl/Tk\ programmieren'.\ Used\ their\ code\ to\ begin\ the\ project.\n\ #\ \ \ \ \ \ \ \ Mark\ Harrison,\ DSC\ Communications\ Corp.\n\ #\ \ \ \ \ \ \ \ Michael\ McLennan,\ Bell\ Labs\ Innovations\ for\ Lucent\ Technologies\n\ #\ based\ on\ informationen\ from\ http://de.wikipedia.org/wiki/HSV-Farbraum\n\n\ #\ Names:\n\ #\ HE\ =\ Holger\ Ewert\n\ #\ EH\ =\ Eric\ Hassold\n\ #\ RS\ =\ Richard\ Suchenwirth\n\n\ #\ Histo:\n\ #\ Version\ 0.0\ started\ at\ 22.02.2006\n\ #\ Version\ 0.1\ started\ at\ 14.03.2006\n\ #\ \ \ \ \ \ HE:\ removed\ array\ ::he::dialog::colors\ and\ procedure\ ::he::dialog::colorname2color\ \n\ #\ \ \ \ \ \ \ \ \ \ \ \ \ \ RS\ shows\ me\ a\ way\ to\ avoid\ them.\n\ #\ Version\ 0.2\ started\ at\ 17.03.2006\n\ #\ \ \ \ \ \ HE:\ Bugfix\ (found\ by\ EH):\ checkAndSetInitialcolor\ used\ fixed\ colorname.\ Fixed.\n\ #\ \ \ \ \ \ \ \ \ \ \ \ \ \ Put\ all\ expr\ expression\ inside\ of\ \{\}\n\n\ #\ Function:\n\ #\ A\ color\ chooser\ (a\ replacement\ for\ tk_chooseColor)\n\ \n\ namespace\ eval\ ::he::dialog\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ array\ set\ colordialog\ \"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c00\ #000019\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c01\ #000033\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c02\ #00004c\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c03\ #000066\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c04\ #00007f\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c05\ #000099\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c06\ #0000b2\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c07\ #0000cc\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c08\ #0000e5\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c09\ #0000ff\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c10\ #001900\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c11\ #003300\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c12\ #004c00\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c13\ #006600\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c14\ #007f00\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c15\ #009900\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c16\ #00b200\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c17\ #00cc00\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c18\ #00e500\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c19\ #00ff00\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c20\ #190000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c21\ #330000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c22\ #4c0000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c23\ #660000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c24\ #7f0000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c25\ #990000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c26\ #b20000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c27\ #cc0000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c28\ #e50000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c29\ #ff0000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c30\ #191919\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c31\ #333333\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c32\ #4c4c4c\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c33\ #666666\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c34\ #7f7f7f\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c35\ #999999\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c36\ #b2b2b2\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c37\ #cccccc\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c38\ #e5e5e5\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c39\ #ffffff\n\ \ \ \ \ \ \ \ \"\n\n\ \ \ \ \ \ \ \ package\ require\ msgcat\n\ \ \ \ \ \ \ \ namespace\ import\ ::msgcat::mc\n\ \}\n\n\ #\ de.msg\n\ namespace\ eval\ ::he::dialog\ \{\n\ \ \ \ \ \ \ \ msgcat::mcmset\ de\ \"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Color\}\ \{Farbe\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bad\ option\ %1\\\$s:\}\ \{Falscher\ Parameter:\ %1\\\$s:\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Must\ be\ -initialcolor,\ -parent,\ or\ -title\ .\}\ \{Erlaubt:\ -initialcolor,\ -parent,\ oder\ -title\ .\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bad\ window\ path\ name\ %1\\\$s\}\ \{Fenster\ %1\\\$s\ existiert\ nicht.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Ok\}\ \{OK\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Cancel\}\ \{Abbrechen\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Add\ color\}\ \{Farbe\ hinzufügen\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Red\}\ \{Rot\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Green\}\ \{Grün\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Blue\}\ \{Blau\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Hue\}\ \{Farbt.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Sat.\}\ \{Sätt.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bright.\}\ \{Hell.\}\n\ \ \ \ \ \ \ \ \"\n\ \}\n\n\ #\ en.msg\n\ namespace\ eval\ ::he::dialog\ \{\n\ \ \ \ \ \ \ \ msgcat::mcmset\ en\ \"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Color\}\ \{Color\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bad\ option\ %1\\\$s:\}\ \{Bad\ option\ %1\\\$s:\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Must\ be\ -initialcolor,\ -parent,\ or\ -title.\}\ \{Must\ be\ -initialcolor,\ -parent,\ or\ -title.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bad\ window\ path\ name\ %1\\\$s\}\ \{Bad\ window\ path\ name\ %1\\\$s\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Ok\}\ \{Ok\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Cancel\}\ \{Cancel\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Add\ color\}\ \{Add\ color\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Red\}\ \{Red\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Green\}\ \{Green\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Blue\}\ \{Blue\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Hue\}\ \{Hue\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Sat.\}\ \{Sat.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bright.\}\ \{Bright.\}\n\n\ \ \ \ \ \ \ \ \"\n\ \}\n\n\ proc\ ::he::dialog::windowFit\ \{top\}\ \{\n\ \ \ \ \ \ \ \ if\ \{\$::tcl_platform(os)\ eq\ \{Windows\ CE\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\[info\ exists\ ::etcl::etcl\]\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ bind\ \$top\ \ <ConfigureRequest>\ \{::etcl::autofit\ %W\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ bind\ \$top\ <Expose>\ \{::etcl::autofit\ %W\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::etcl::autofit\ \$top\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ wm\ geometry\ \$top\ 240x\[expr\ \{320\ -\ 51\}\]+0+0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ wm\ geometry\ \$top\ 240x\[expr\ \{320\ -\ 51\}\]+\[expr\ \{\[winfo\ pointerx\ .\]\ -\ 120\}\]+\[expr\ \{\[winfo\ pointery\ .\]\ -\ 135\}\]\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog\ \{args\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ set\ colordialog(-initialcolor)\ #408080\n\ \ \ \ \ \ \ \ set\ colordialog(-parent)\ \ \ \ \ \ \ \{.\}\n\ \ \ \ \ \ \ \ set\ colordialog(-title)\ \ \ \ \ \ \ \ \[mc\ \"Color\"\]\n\ \ \ \ \ \ \ \ #\ First\ we\ check\ the\ parameter\n\ \ \ \ \ \ \ \ foreach\ \{para\ value\}\ \$args\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ switch\ -exact\ --\ \$para\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -initialcolor\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_checkAndSetInitialcolor\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -parent\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{!\[winfo\ exists\ \$value\]\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ error\ \[mc\ \"Bad\ window\ path\ name\ %1\\\$s\"\ \$value\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(-parent)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -title\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(-title)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ default\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ error\ \"\[mc\ \"Bad\ option\ %1\\\$s.\"\ \$value\]\ \[mc\ \"Must\ be\ -initialcolor,\ -parent,\ or\ -title\ .\"\]\"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ scan\ \$colordialog(-initialcolor)\ \"#%2x%2x%2x\"\ colordialog(red)\ colordialog(green)\ colordialog(blue)\n\ \ \ \ \ \ \ \ colordialog_set_hsb\n\n\ \ \ \ \ \ \ \ #\ create\ the\ windowname\ for\ the\ dialogbox\n\ \ \ \ \ \ \ \ if\ \{\$colordialog(-parent)\ \ eq\ \{.\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(w)\ ._colordialog\n\ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(w)\ \[set\ colordialog(-parent)\]._colordialog\n\ \ \ \ \ \ \ \ \}\n\n\ \ \ \ \ \ \ \ set\ w\ \$colordialog(w)\n\ \ \ \ \ \ \ \ if\ \{\[winfo\ exists\ \$w\]\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_destroy\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ colordialog_create\n\ \ \ \ \ \ \ \ set\ colordialog(selected)\ \{\}\n\ \ \ \ \ \ \ \ vwait\ ::he::dialog::colordialog(selected)\n\n\ \ \ \ \ \ \ \ return\ \$colordialog(selected)\ \n\ \}\n\n\ proc\ ::he::dialog::colordialog_create\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ dir\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ set\ w\ \$colordialog(w)\n\n\ \ \ \ \ \ \ \ toplevel\ \$w\ -class\ colordialog\n\ \ \ \ \ \ \ \ wm\ protocol\ \$w\ WM_DELETE_WINDOW\ ::he::dialog::colordialog_cancel\n\ \ \ \ \ \ \ \ wm\ minsize\ \$w\ 216\ 65\ \;#220\n\ \ \ \ \ \ \ \ wm\ maxsize\ \$w\ 240\ \[expr\ \{320\ -\ 52\}\]\n\ \ \ \ \ \ \ \ wm\ title\ \$w\ \$colordialog(-title)\n\n\ \ \ \ \ \ \ \ frame\ \$w.e\ \ \ \;#\ frame\ with\ the\ entries\n\ \ \ \ \ \ \ \ frame\ \$w.c\ \ \ \;#\ frame\ with\ HSB-chooser\n\ \ \ \ \ \ \ \ frame\ \$w.c.s\ \;#\ frame\ with\ the\ user\ defined\ colors\n\ \ \ \ \ \ \ \ frame\ \$w.b\ \ \ \;#\ frame\ with\ buttons\n\n\ \ \ \ \ \ \ \ #\ frame\ with\ HSB-chooser\n\ \ \ \ \ \ \ \ canvas\ \$w.c.dial\n\ \ \ \ \ \ \ \ frame\ \$w.c.sample\ -width\ 10\ -height\ 101\n\n\ \ \ \ \ \ \ \ grid\ \$w.c.dial\ \ \ -row\ 0\ -column\ 0\n\ \ \ \ \ \ \ \ grid\ \$w.c.sample\ -row\ 0\ -column\ 1\n\ \ \ \ \ \ \ \ grid\ \$w.c.s\ \ \ \ \ \ -row\ 1\ -column\ 0\ -columnspan\ 2\n\ \ \ \ \ \ \ \ grid\ rowconfigure\ \$w.c\ 0\ -weight\ 0\n\ \ \ \ \ \ \ \ grid\ rowconfigure\ \$w.c\ 1\ -weight\ 1\n\ \ \ \ \ \ \ \ grid\ columnconfigure\ \$w.c\ 0\ -weight\ 1\n\ \ \ \ \ \ \ \ grid\ columnconfigure\ \$w.c\ 1\ -weight\ 0\n\n\ \ \ \ \ \ \ \ #\ frame\ with\ the\ entries\n\ \ \ \ \ \ \ \ label\ \$w.e.lr\ -text\ \"\[mc\ \"Red\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.lg\ -text\ \"\[mc\ \"Green\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.lb\ -text\ \"\[mc\ \"Blue\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.lh\ -text\ \"\[mc\ \"Hue\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.ls\ -text\ \"\[mc\ \"Sat.\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.lv\ -text\ \"\[mc\ \"Bright.\"\]:\"\n\ \ \ \ \ \ \ \ entry\ \$w.e.er\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdRGB\ %P\ %V\ red\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.eg\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdRGB\ %P\ %V\ green\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.eb\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdRGB\ %P\ %V\ blue\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.eh\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdH\ %P\ %V\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.es\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdS\ %P\ %V\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.ev\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdB\ %P\ %V\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .e.ev\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdB\ %P\ %V\}\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lr\ -column\ 0\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lg\ -column\ 2\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lb\ -column\ 4\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lh\ -column\ 0\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.ls\ -column\ 2\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lv\ -column\ 4\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.er\ -column\ 1\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.eg\ -column\ 3\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.eb\ -column\ 5\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.eh\ -column\ 1\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.es\ -column\ 3\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.ev\ -column\ 5\ -row\ 1\n\n\ \ \ \ \ \ \ \ \$w.c.dial\ create\ image\ \ \ 5\ \ \ 5\ -anchor\ nw\ -image\ \$colordialog(img_hs)\ -tags\ hsmap\n\ \ \ \ \ \ \ \ \$w.c.dial\ create\ image\ 190\ \ \ 5\ -anchor\ nw\ -image\ \$colordialog(img_v)\ \ -tags\ bmap\n\ \ \ \ \ \ \ \ \$w.c.dial\ create\ oval\ \ \ \ 0\ \ \ 0\ \ \ 5\ 5\ -fill\ black\ -tags\ hsval\ -width\ 3\ -fill\ \{\}\n\ \ \ \ \ \ \ \ \$w.c.dial\ create\ line\ \ 189\ \ \ 5\ 201\ 5\ -fill\ black\ -tags\ bval\ \ -width\ 3\n\ \ \ \ \ \ \ \ \$w.c.dial\ configure\ -width\ 201\ -height\ 107\n\n\ \ \ \ \ \ \ \ \$w.c.dial\ bind\ hsmap\ <1>\ \ \ \ \ \ \ \ \ \"::he::dialog::colordialog_set_hs\ %x\ %y\"\n\ \ \ \ \ \ \ \ \$w.c.dial\ bind\ hsmap\ <B1-Motion>\ \"::he::dialog::colordialog_set_hs\ %x\ %y\"\n\ \ \ \ \ \ \ \ \$w.c.dial\ bind\ bmap\ \ <1>\ \ \ \ \ \ \ \ \ \"::he::dialog::colordialog_set_b\ \ %y\"\n\ \ \ \ \ \ \ \ \$w.c.dial\ bind\ bmap\ \ <B1-Motion>\ \"::he::dialog::colordialog_set_b\ \ %y\"\n\n\ \ \ \ \ \ \ \ #\ frame\ with\ the\ user\ defined\ colors\n\ \ \ \ \ \ \ \ for\ \{set\ n\ 0\}\ \{\$n\ <=\ 3\}\ \{incr\ n\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ for\ \{set\ m\ 0\}\ \{\$m\ <=\ 9\}\ \{incr\ m\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ radiobutton\ \$w.c.s.c\$n\$m\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -indicatoron\ 0\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -bg\ \$colordialog(c\$n\$m)\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -selectcolor\ \$colordialog(c\$n\$m)\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -value\ c\$n\$m\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -variable\ ::he::dialog::colordialog(c)\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -width\ 2\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -command\ \"::he::dialog::colordialog_sel\ \$w.c.s.c\$n\$m\"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ grid\ configure\ \$w.c.s.c\$n\$m\ -row\ \$n\ -column\ \$m\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ #\ frame\ with\ buttons\n\n\ \ \ \ \ \ \ \ button\ \$w.b.ok\ \ \ \ \ -text\ \[mc\ \"Ok\"\]\ \ \ \ \ \ \ \ -command\ ::he::dialog::colordialog_ok\n\ \ \ \ \ \ \ \ button\ \$w.b.cancel\ -text\ \[mc\ \"Cancel\"\]\ \ \ \ -command\ ::he::dialog::colordialog_cancel\n\ \ \ \ \ \ \ \ button\ \$w.b.add\ \ \ \ -text\ \[mc\ \"Add\ color\"\]\ -command\ ::he::dialog::colordialog_add\n\n\ \ \ \ \ \ \ \ pack\ \$w.b.ok\ \$w.b.cancel\ -side\ left\n\ \ \ \ \ \ \ \ pack\ \$w.b.add\ -side\ right\n\n\ \ \ \ \ \ \ \ #\ Frames\ darstellen\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e\ -row\ 0\ -sticky\ nsew\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.c\ -row\ 1\ -sticky\ ew\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.b\ -row\ 2\ -sticky\ nsew\n\n\ \ \ \ \ \ \ \ grid\ rowconfigure\ \$w\ \{0\ 2\}\ -weight\ 0\n\ \ \ \ \ \ \ \ grid\ rowconfigure\ \$w\ 1\ -weight\ 1\n\n\ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ windowFit\ \$w\n\ \ \ \ \ \ \ \ grab\ set\ \$w\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ \ proc\ ::he::dialog::colordialog_checkAndSetInitialcolor\ \{value\}\ \{\n\ \ \ variable\ colordialog\n\n\ \ \ foreach\ \{r\ g\ b\}\ \[winfo\ rgb\ .\ \$value\]\ break\n\ \ \ set\ colordialog(-initialcolor)\ \[format\ \"#%02x%02x%02x\"\ \[expr\ \{\$r/256\}\]\ \[expr\ \{\$g/256\}\]\ \[expr\ \{\$b/256\}\]\]\n\ \n\ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_refresh\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ set\ w\ \$colordialog(w)\n\ \ \ \ \ \ \ \ set\ h\ \$colordialog(hue)\n\ \ \ \ \ \ \ \ set\ s\ \$colordialog(saturation)\n\n\ \ \ \ \ \ \ \ if\ \{\$h\ eq\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ 180\n\ \ \ \ \ \ \ \ \}\n\n\ \ \ \ \ \ \ \ set\ x0\ \[expr\ \{(\$h\ /\ 2)\ +\ 5\}\]\n\ \ \ \ \ \ \ \ set\ y0\ \[expr\ \{(100\ -\ \$s)\ +\ 5\}\]\n\n\ \ \ \ \ \ \ \ \$w.c.dial\ coords\ hsval\ \[expr\ \{\$x0-4\}\]\ \[expr\ \{\$y0-4\}\]\ \[expr\ \{\$x0+4\}\]\ \[expr\ \{\$y0+4\}\]\n\n\ \ \ \ \ \ \ \ set\ b\ \$colordialog(brightness)\n\ \ \ \ \ \ \ \ set\ y1\ \[expr\ \{(100\ -\ \$b)\ +\ 5\}\]\n\n\ \ \ \ \ \ \ \ \$w.c.dial\ coords\ bval\ 189\ \$y1\ 201\ \$y1\n\ \ \ \ \ \ \ \ \$w.c.sample\ configure\ -background\ \[colordialog_hsb2rgb1\ \$colordialog(hue)\ \$colordialog(saturation)\ \$colordialog(brightness)\]\n\n\ \ \ \ \ \ \ \ foreach\ \{win\ index\}\ \[list\ \$w.e.er\ red\ \$w.e.eg\ green\ \$w.e.eb\ blue\ \$w.e.eh\ hue\ \$w.e.es\ saturation\ \$w.e.ev\ brightness\]\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$win\ configure\ -validate\ none\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$win\ delete\ 0\ end\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$win\ insert\ end\ \$colordialog(\$index)\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$win\ configure\ -validate\ all\n\ \ \ \ \ \ \ \ \}\n\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_vcmdRGB\ \{value\ type\ name2\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ state\ 0\n\ \ \ \ \ \ \ \ switch\ -exact\ --\ \$type\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ key\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 255)\ ||\ (\$value\ eq\ \{\})\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ focusout\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 255)\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(\$name2)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$value\ ne\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ puts\ \"A2\ \$value\ \$type\ \$name2\"\;update\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_hsb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \$state\n\ \}\n\n\ proc\ ::he::dialog::colordialog_vcmdH\ \{value\ type\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ state\ 0\n\ \ \ \ \ \ \ \ switch\ -exact\ --\ \$type\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ key\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 359)\ ||\ (\$value\ eq\ \{\})\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ focusout\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$value\ >=\ 0\ &&\ \$value\ <=\ 359\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(hue)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$value\ eq\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(hue)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(saturation)\ 0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \$state\n\ \}\n\n\ proc\ ::he::dialog::colordialog_vcmdS\ \{value\ type\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ state\ 0\n\ \ \ \ \ \ \ \ switch\ -exact\ --\ \$type\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ key\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 100)\ ||\ (\$value\ eq\ \{\})\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ focusout\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 100)\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(saturation)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$value\ ne\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$colordialog(hue)\ eq\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(hue)\ 0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \$state\n\ \}\n\n\ proc\ ::he::dialog::colordialog_vcmdB\ \{value\ type\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ state\ 0\n\ \ \ \ \ \ \ \ switch\ -exact\ --\ \$type\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ key\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 100)\ ||\ (\$value\ eq\ \{\})\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ focusout\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 100)\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(hue)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$value\ ne\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \$state\n\ \}\n\n\ proc\ ::he::dialog::colordialog_destroy\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ grab\ release\ \$colordialog(w)\n\ \ \ \ \ \ \ \ destroy\ \$colordialog(w)\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ command\ of\ ok\ button\n\ proc\ ::he::dialog::colordialog_ok\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ colordialog(selected)\ \[format\ \"#%02x%02x%02x\"\ \$colordialog(red)\ \$colordialog(green)\ \$colordialog(blue)\]\n\ \ \ \ \ \ \ \ colordialog_destroy\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ command\ of\ cancel\ button\n\ proc\ ::he::dialog::colordialog_cancel\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ colordialog(selected)\ \{\}\n\ \ \ \ \ \ \ \ colordialog_destroy\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ add\ user\ defined\ color\n\ proc\ ::he::dialog::colordialog_add\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ if\ \{\$colordialog(c)\ eq\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ tk_messageBox\ -icon\ error\ -type\ ok\ -message\ \"No\ color\ button\ selcted!\"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ set\ w\ \$colordialog(w)\n\ \ \ \ \ \ \ \ set\ color\ \[\$w.c.sample\ cget\ -background\]\n\ \ \ \ \ \ \ \ set\ colordialog(\$colordialog(c))\ \$color\n\ \ \ \ \ \ \ \ \$w.c.s.\$colordialog(c)\ configure\ -bg\ \$color\ -selectcolor\ \$color\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ choose\ user\ defined\ color\n\ proc\ ::he::dialog::colordialog_sel\ \{win\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ color\ \[\$win\ cget\ -background\]\n\ \ \ \ \ \ \ \ scan\ \$color\ \"#%2x%2x%2x\"\ \ colordialog(red)\ colordialog(green)\ colordialog(blue)\n\n\ \ \ \ \ \ \ \ colordialog_set_hsb\n\ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ calculate\ Brightness\ from\ y-coordinate\n\ proc\ ::he::dialog::colordialog_set_b\ \{y\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ if\ \{\$y\ <\ 5\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ y\ 5\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$y\ >\ 105\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ y\ 105\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ set\ colordialog(brightness)\ \[expr\ \{100\ -\ (\$y\ -\ 5)\}\]\n\n\ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ calculate\ hue\ and\ saturation\ from\ x-\ and\ y-coordinate\n\ proc\ ::he::dialog::colordialog_set_hs\ \{x\ y\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ if\ \{\$y\ <\ 5\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ y\ 5\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$y\ >\ 105\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ y\ 105\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ if\ \{\$x\ <\ 5\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ x\ 5\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$x\ >\ 184\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ x\ 184\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ set\ colordialog(hue)\ \ \ \ \ \ \ \ \[expr\ \{(\$x\ -\ 5)\ *\ 2\}\]\n\ \ \ \ \ \ \ \ set\ colordialog(saturation)\ \[expr\ \{100\ -\ (\$y\ -\ 5)\}\]\n\n\ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_set_rgb\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ rgb\ \[colordialog_hsb2rgb\ \$colordialog(hue)\ \$colordialog(saturation)\ \$colordialog(brightness)\]\n\ \ \ \ \ \ \ \ set\ colordialog(red)\ \ \ \[lindex\ \$rgb\ 0\]\n\ \ \ \ \ \ \ \ set\ colordialog(green)\ \[lindex\ \$rgb\ 1\]\n\ \ \ \ \ \ \ \ set\ colordialog(blue)\ \ \[lindex\ \$rgb\ 2\]\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_set_hsb\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ hsb\ \[colordialog_rgb2hsb\ \ \$colordialog(red)\ \$colordialog(green)\ \$colordialog(blue)\]\n\ \ \ \ \ \ \ \ set\ colordialog(hue)\ \ \ \ \ \ \ \ \[lindex\ \$hsb\ 0\]\n\ \ \ \ \ \ \ \ set\ colordialog(saturation)\ \[lindex\ \$hsb\ 1\]\n\ \ \ \ \ \ \ \ set\ colordialog(brightness)\ \[lindex\ \$hsb\ 2\]\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_hsb2rgb\ \{h\ s\ v\}\ \{\n\ \ \ \ \ \ \ \ set\ s\ \[expr\ \{\$s\ /\ 100.0\}\]\n\ \ \ \ \ \ \ \ set\ v\ \[expr\ \{\$v\ /\ 100.0\}\]\n\n\ \ \ \ \ \ \ \ if\ \{\$s\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ v\ \[expr\ \{round(255*\$v)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ r\ \$v\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ g\ \$v\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ b\ \$v\n\ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ hi\ \[expr\ \{fmod(floor(\$h\ /\ 60.0),\ 6)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ f\ \ \[expr\ \{\$h\ /\ 60.0\ -\ \$hi\}\]\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ p\ \[expr\ \{round(255\ *\ \$v\ *\ (1.0\ -\ \$s))\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ q\ \[expr\ \{round(255\ *\ \$v\ *\ (1.0\ -\ \$s\ *\ \$f))\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ t\ \[expr\ \{round(255\ *\ \$v\ *\ (1.0\ -\ \$s\ *\ (1.0\ -\ \$f)))\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ v\ \[expr\ \{round(255\ *\ \$v)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ switch\ \[expr\ \{int(\$hi)\}\]\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \{set\ r\ \$v\;\ set\ g\ \$t\;\ set\ b\ \$p\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1\ \{set\ r\ \$q\;\ set\ g\ \$v\;\ set\ b\ \$p\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ \{set\ r\ \$p\;\ set\ g\ \$v\;\ set\ b\ \$t\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 3\ \{set\ r\ \$p\;\ set\ g\ \$q\;\ set\ b\ \$v\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4\ \{set\ r\ \$t\;\ set\ g\ \$p\;\ set\ b\ \$v\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 5\ \{set\ r\ \$v\;\ set\ g\ \$p\;\ set\ b\ \$q\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \[list\ \$r\ \$g\ \$b\]\n\ \}\n\n\ proc\ ::he::dialog::colordialog_hsb2rgb1\ \{h\ s\ v\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ rgb\ \[colordialog_hsb2rgb\ \$h\ \$s\ \$v\]\n\ \ \ \ \ \ \ \ return\ \[format\ \"#%02x%02x%02x\"\ \[lindex\ \$rgb\ 0\]\ \[lindex\ \$rgb\ 1\]\ \[lindex\ \$rgb\ 2\]\]\n\ \}\n\n\ proc\ ::he::dialog::colordialog_rgb2hsb\ \{r\ g\ b\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ if\ \{\$r\ ==\ 0\ &&\ \$g\ ==\ 0\ &&\ \$b\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ 0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ s\ 0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ v\ 0\n\ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ r\ \[expr\ \{\$r\ /\ 255.0\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ g\ \[expr\ \{\$g\ /\ 255.0\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ b\ \[expr\ \{\$b\ /\ 255.0\}\]\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ l\ \[list\ \$r\ \$g\ \$b\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ max\ \[lindex\ \[lsort\ -real\ \$l\]\ end\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ min\ \[lindex\ \[lsort\ -real\ \$l\]\ 0\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ maxColor\ \[lindex\ \[lindex\ \[lsort\ -index\ 0\ -real\ \[list\ \[list\ \$r\ r\]\ \[list\ \$g\ g\]\ \[list\ \$b\ b\]\]\]\ end\]\ 1\]\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ maxColor\ \[lindex\ \[lindex\ \[lsort\ -index\ 0\ -real\ \[list\ \[list\ \$r\ r\]\ \[list\ \$g\ g\]\ \[list\ \$b\ b\]\]\]\ end\]\ 1\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ s\ \[expr\ \{int((\$max\ -\ \$min)\ /\ \$max\ *\ 100)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ v\ \[expr\ \{int(\$max\ *\ 100)\}\]\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$s\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \{\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ switch\ -exact\ --\ \$maxColor\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ r\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \[expr\ \{int((0.0\ +\ (\$g\ -\ \$b)\ /\ (\$max\ -\ \$min))\ *\ 60)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ g\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \[expr\ \{int((2.0\ +\ (\$b\ -\ \$r)\ /\ (\$max\ -\ \$min))\ *\ 60)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ b\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \[expr\ \{int((4.0\ +\ (\$r\ -\ \$g)\ /\ (\$max\ -\ \$min))\ *\ 60)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$h\ <\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \[expr\ \{\$h\ +\ 360\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \[list\ \$h\ \$s\ \$v\]\n\ \}\n\n\ set\ ::he::dialog::colordialog(img_hs)\ \[image\ create\ photo\ -data\ \{\n\ \ \ \ \ \ \ \ R0lGODlhtQBlAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/\n\ \ \ \ \ \ \ \ AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBm\n\ \ \ \ \ \ \ \ mQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/\n\ \ \ \ \ \ \ \ AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMz\n\ \ \ \ \ \ \ \ mTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPM\n\ \ \ \ \ \ \ \ ADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYA\n\ \ \ \ \ \ \ \ mWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ\n\ \ \ \ \ \ \ \ AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/\n\ \ \ \ \ \ \ \ mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lm\n\ \ \ \ \ \ \ \ AJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnM\n\ \ \ \ \ \ \ \ mZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wz\n\ \ \ \ \ \ \ \ AMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZ\n\ \ \ \ \ \ \ \ mcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8A\n\ \ \ \ \ \ \ \ AP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9m\n\ \ \ \ \ \ \ \ mf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////\n\ \ \ \ \ \ \ \ AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAC1AGUAAAj/ALlxEzdQnEF0\n\ \ \ \ \ \ \ \ 4tApROeOobuH9NzRm0hPX0V9GPVZ02itoyxrskLKcjTSkUk1jtSoVGOEpREj\n\ \ \ \ \ \ \ \ R2AemYnkCJKbSJLkTMJTSRIlQJUsEbqk6JIiR4so/VHkh9MfOaDmmDojx4yr\n\ \ \ \ \ \ \ \ M1pkbdEiStcoYOtEqUO2TiazmdL2ytSrba9wb8PJDQeOLri738B92/vNW19v\n\ \ \ \ \ \ \ \ gLt560a4GzfDAgUSNHgw4cKGDyFKpGgx48aOHkGKJGnyZMqVLV+KjjmTpk2c\n\ \ \ \ \ \ \ \ Onn2/Bl0qFGkSpc2fRp1KlWrWLVy3e0VbNixZc+mVcvWLdy5de/i1cvXL+DA\n\ \ \ \ \ \ \ \ gwsfTixwHOPG6R47fCdx8sR9Fy3v/8MMEuSskJxNPkK5kuWa0TLZ2Dx9s83O\n\ \ \ \ \ \ \ \ 1W5aE31TFLbSNEw9BdUYtlllVRdX6cbVFb79tkdwaH3CVnFtnRMXcucop5de\n\ \ \ \ \ \ \ \ 5ezlHGDkCFaYYeNQN1BBjS3EkEOSUVRReJdh9pFII5XkWXuhiQaTTKbhlNN9\n\ \ \ \ \ \ \ \ P7EGlGv9JSWbgLXZVhVWWW3F21e/lWUWWsS59daFySmXF199/QXdiNNVx02J\n\ \ \ \ \ \ \ \ 1qUjTnbZvYOOmtxxVw89b74J3j760DnendZcI4ue5/XpyCyOrCeoGmsQasR7\n\ \ \ \ \ \ \ \ axyRaKJsINGofZAm0UYS+eX3hhKX8qdpEW8UkYanPwA4xg+jEkggggheMYOq\n\ \ \ \ \ \ \ \ V7TQ6qtR7P8Rax0PflKHrRJKOEwvu+5q4TnhAJvhsOCY842xHSbrTTnehOhs\n\ \ \ \ \ \ \ \ N+NAO+aJ16W4ImSRReRiZRjFmBmN6HXG3mcqwVdaaTXdlJpqqwUlFFFHGdnU\n\ \ \ \ \ \ \ \ bE4leduSuWXVW4NjAScclRNaeZxcWS7HpYfPiRgdYYmRKU6ZZ56JTprutOlO\n\ \ \ \ \ \ \ \ PRfDSc+cddZpzXjX5LmnLH4C+kiggaqxXqGIHqroEfLF7CgSk07qBqWUKmEp\n\ \ \ \ \ \ \ \ pkts2umnAAZNag6n5tCF0TOkuqqrrkbBoKxQ03prJrlmMozVvPbya7DBgpOh\n\ \ \ \ \ \ \ \ OcUe+42yzJLTbLPdhBgtmdQWZKaKCqkZWXdvTsTteBx5pOdmIwH/Kq5K77HE\n\ \ \ \ \ \ \ \ Ukzv9TizujtN6pO7l7521KfzPkWgVLYhmC/TvX0lq5Rk2TrchLu2NXCGduFl\n\ \ \ \ \ \ \ \ bHN9MZswYSUaRuLDsJuJ5pprVnxxxnJuvHHHdn4ssp58kvwnyoOu7DKjMMM8\n\ \ \ \ \ \ \ \ c6Q157xzpj1H3+nPoZJqvalGI600rAw+PWutU+uKta9aa821sF6HbSyyYy97\n\ \ \ \ \ \ \ \ 9rNqT+swxLOzabubuOveO8i/j1wy8SojlKFatqjkNepRNJOUAm9WKUzxbHqe\n\ \ \ \ \ \ \ \ ApXQSkW07KFqVUt7VdO89yDwVU18vSof+r6mPrGR7X1pg5a02GYd+k2MdhbD\n\ \ \ \ \ \ \ \ mAw1xrH95emGwCOZ8EyWspUJEFEvkxkC/5vHQOc5UFM941QEgVY9ChbtgqzK\n\ \ \ \ \ \ \ \ oNNi9b1bhc9qWAzh1kZYrC6ub2ztKxva1KbC+cVOYvWrnQzzV0PfhSyH/+Ph\n\ \ \ \ \ \ \ \ oFg2wOMZcHk0S2ARGwg9CDJRVEPD3tGgmMENTjFqHbQiCMcnwq6R8IsnFOOz\n\ \ \ \ \ \ \ \ 1rbCcZRpHLJLR5rS0aZ3yLAecqrHnPZhJ1J+7BpvnAWfZgGoWTziZK8U1BpY\n\ \ \ \ \ \ \ \ NkuYrSFmbHgUG2rWBga6wVJuyNQbNDVMTqUhaGMQ1RhM1YVBNjNpV2BVNGN1\n\ \ \ \ \ \ \ \ BajtoVZ7yNUnrjaMbmptGL86h7DE6TVzgM0c5UBWOZhVDnKYzZ3OsuQKzyi7\n\ \ \ \ \ \ \ \ F9ovhmzcHZ7eOP+y4LWSeCmjIxCRd0A8EhFnfHygEv/YxEBaMGkYZJUhoVZF\n\ \ \ \ \ \ \ \ XFHtotzM2hbTd06xsY+d70MbJeeHyTNpck2cXNM73OTJi4FyY6Kskyn3gco8\n\ \ \ \ \ \ \ \ oXJPrCTZI1r5SpWtYWW1nCUudQmpNtisl5T6JaaC2bNivuGYnjpmqJZJqi4w\n\ \ \ \ \ \ \ \ E1VXSNU0o2lNbOLqE7raptW8eQ5wBouc5zBnscx5rHWOjRzsdGfaxqE2S44J\n\ \ \ \ \ \ \ \ di5MU+3wFyca6tONONTh/2AZQB8ONIjKG+ICEaqzIybxZxK8nkMHCdHtGZKD\n\ \ \ \ \ \ \ \ UrMoCLNGPi6eM2zJCiMKJ1lJS6YDk5rkJCdX6snWghKU+xClKElJW5r/0hSV\n\ \ \ \ \ \ \ \ 11AlK1m5097G8qezDK5Qb5nLXe7SqMh1Qy9/GczmDvO5w0zDU4+ZhmRadwxW\n\ \ \ \ \ \ \ \ zW4zu5DVaHqXq9W8ZjazCdZtmreb3SyresXJ3rSm1ZzoROc620lfeJKDrpbM\n\ \ \ \ \ \ \ \ bwtLmtqJpZS1F2spbGFqp2uA7Ka5XSVPTdbTR/yUUEG9Jcxy6ahd0syolOql\n\ \ \ \ \ \ \ \ zoK5VE1JN6pASyaplkk0qxrtmdyVZveqGatr0iqbtwKr1cSa3m8KyxxfY2t8\n\ \ \ \ \ \ \ \ x7bOZcG1WXK9b11Ni0nUavIdqmWta18L29qS0sC4xa1ud8tbV/7WwQ4eLhuI\n\ \ \ \ \ \ \ \ m8s2GBe5vVwuc50LXelSl7rXXeYytbtd7qa4/5pwFu94P0FesA5jm+hNb3vF\n\ \ \ \ \ \ \ \ iWP4wjed850vXO2L3/uSib+Y9C+bOFkxAb90wLQ95YGBl1NXMhiWDw7uoWq5\n\ \ \ \ \ \ \ \ 5QNaGLmSQipzNyzM6UGVulMtFYm3a7SsriqarmLxHqr5Ylxlk2o09maN2VvO\n\ \ \ \ \ \ \ \ HK/PrfQF8jvpCi27Ejm1qUWykuuxZNjK1slPvi0qdZvb3fbWyq8ErpaL6+Vu\n\ \ \ \ \ \ \ \ JzfMY34DmaH71Oke07rVVTOb3dxd8Mr5mnQu73nxnF5wgnPP7vUzoOW7zkG3\n\ \ \ \ \ \ \ \ E5741e9pB57sJLOW2UyOrcKjHeVpV7vKvs02loV7y4oX98vHVa7GmSvujkfX\n\ \ \ \ \ \ \ \ 3GhO95qxi93tdvfN7v8OL7znXN4751m99863n+MbaH8TWsj6LbIm1VHwlcLj\n\ \ \ \ \ \ \ \ 4J6shz1eu3B+MByV2HD4bmkB8VdCQuLBhYTFixuJ44JZEmJm7iTI/dRJnPnc\n\ \ \ \ \ \ \ \ jVCzug/R5mZeIRDenfU1AyHeeH+iFC3HczLQu9528Pm95mCHOQG9znX0+9/k\n\ \ \ \ \ \ \ \ UIc7A55fgiNb2UpuNtFna9uGJ5jKTY/lxIXb6Yt/GczgHvO4zQzyNKu75G1u\n\ \ \ \ \ \ \ \ d9pV3vY6xz3P9WZvn2fO95oDHuCGHoc6ZC/7dPAcHunA/c9/bo939H7oQ+dH\n\ \ \ \ \ \ \ \ PYRv9OLvgx/XQH7Slz8LbMyC6dB/BC0e8fTqr0Hq2GcDJNhQ9e63IRJtwLr/\n\ \ \ \ \ \ \ \ +N0gCTdMwvzmf8PW158GrzciDe8Pe9gPMQb6k53sgehC/tHO/7Pvge2lsAcB\n\ \ \ \ \ \ \ \ CHdwlwyfYIBzN3ftMAwLaHcOeA7tYA4RqHcUWA7sUA5+l4HksA6B14GzN3sD\n\ \ \ \ \ \ \ \ Z2RJtlorhXBB52wL13gNN2VUFnFXFlydxmUYB2Yal3UdF0wf93XVJXKfV3bs\n\ \ \ \ \ \ \ \ lnJyFm+m53L0Zm/rJXP6xm+C9nqDF3sfaHtQqHvvsHu+53tCd4XEd3xaiHxc\n\ \ \ \ \ \ \ \ eA3M53zOF33TN33Wh33Xp31o6H3gB37jV37ld37rp37q1350GH9jIH/1V39d\n\ \ \ \ \ \ \ \ cH/6p39n94dsF4gCKIBvV4gIOAwJyIAMCIGMGIGO/5h3eWeBkqiBHMiBgveB\n\ \ \ \ \ \ \ \ tHdaIIhsuUeCrNV7TAZKwkdbUIZ8UpZbzmdtrjR9Lyh127Z9XXZc4GdUG1d+\n\ \ \ \ \ \ \ \ v+RxXldu1BV2O6hmZEdy24V27DZraPdugyhvYGWAqKeIqpdWEfhn6HSBS7iB\n\ \ \ \ \ \ \ \ N0d7T8hzt5d7U7iNv2eFwTd8w7eFx5d8XliOYPh86DiG1LeOZrh97sh93Pd9\n\ \ \ \ \ \ \ \ 8tiG5Id+cCiH7Od+8Ad/d5iH9reHfbh/gPh/BDmAhViAB3iAiKiIDdiIECiB\n\ \ \ \ \ \ \ \ kFiBF5iBGEiNlxh41lh72NiJVMh73oiF4Fh85Lh85th86fh80seO1Hd9LPmO\n\ \ \ \ \ \ \ \ 26eG8xh+9fiG9jiHXqePdv84f/4IkPvnh/0niABIiASYkImogAz5kBMYkZE4\n\ \ \ \ \ \ \ \ kRhYkZbogRm5kbqnjR75e1f4jcYnkl34hSYZhiipjmV4hi8Jj2sYfmbphvV4\n\ \ \ \ \ \ \ \ j3F4k3W4j3iok3yIfwHpf0FpkAh5iInYkA/4iEl5gX45iU5pkRiJiVLJkVRZ\n\ \ \ \ \ \ \ \ hVYJfCE5jlvphV2ZjilJhuzYkmKZhmQZk/RIk/nYlm+5k3zYkz9Jl4M4gEJJ\n\ \ \ \ \ \ \ \ lAqZl4vIlxEpiUxZiYJ5idaoDrenDroHD7sHD79nD8Cnm8NnD8XHD7/Jhdiw\n\ \ \ \ \ \ \ \ fMPZfLQQhrQwhpCgnNUHCS8JCd0XCWsYCeJHneQnCW8oCXA4CevHne3XCPEH\n\ \ \ \ \ \ \ \ nnf/eAjzdwj3FwjnuX+BAICBMIClQIClgIDJkIDzyYDJ4IDtgJ+OyA4UyJ8W\n\ \ \ \ \ \ \ \ uA4TuQ6VqA4DCpvXaJgdiZhXGZLhqJXm6JjnKIYpGZbZN5YwyYYyiZZqaZOc\n\ \ \ \ \ \ \ \ yY94+I+f6ZMDWZeleZcLaZR6iZRK+ZetSY1PSZiyKZu5R5u0aZu+h5u4yZv8\n\ \ \ \ \ \ \ \ 4Ju+CZzHB5zYwA9BmnzDOZzHaZzJmaTS55xM6o5MGgnQyX3SSZ3UGX7YqZ3a\n\ \ \ \ \ \ \ \ aX7cuaU32QiT4KXgCX/kOab2Z57ouZ76t55qyp6l0J7veYDxGZ/12Q73eZ/5\n\ \ \ \ \ \ \ \ CYH5yQ7toKcSyJ/8CaD/KaCCuoExGqMaGYUcyY2I+ZFY/8mYIwmhJgl9Xzmh\n\ \ \ \ \ \ \ \ k+mSZBmPGCp+GZqW6ceWONmPcKmHISqQQDmapYmARHmiR6maEgmYlPiagxmj\n\ \ \ \ \ \ \ \ 8ECjtmmb9oCjupmrubqjvAqcviqkQlqkRooNx1msSZqcy9mkTwqd0DmlkkCl\n\ \ \ \ \ \ \ \ VxqtWMql1Aqm4HmtY9oIZGqmh3Cma7qebRqu7xmnySCn83mudUqn+bmuebqn\n\ \ \ \ \ \ \ \ fvqn7ACg8iqoAkqghSqjsql7tJl7NnqrubmbxOejwEqkxAmGR6qktLCc1Oec\n\ \ \ \ \ \ \ \ C+uk3RelU/p9VXql1wmH2ql+3vml4Sl/5Fl/5rmH6Jmm6hmI7SmAJTuucCqf\n\ \ \ \ \ \ \ \ 9NmAd7qn+9mffgmog7oOBBp4sv9ps4U6q7W6s7iao7rJqz36q8AapEQrrMRK\n\ \ \ \ \ \ \ \ rMeasEqrrFDatFP6tM8atVc6CdNKrV96tdZ6rdqqrebZtWfard26puI6ruNa\n\ \ \ \ \ \ \ \ rmZ7rupqp+zqsnratu8ar/FKrzQ7t4Uqe/i6r7U6hbh5o7sJsMMHnESqfMV5\n\ \ \ \ \ \ \ \ tEj6fMm5pGTonNfnnNoHsdIpsdUpfthpflm6pd/pfmG6tR5bpueJf+t5duv5\n\ \ \ \ \ \ \ \ fyf7pu+JgPGJiPU5nyy7nxPon3AbqBgooIRqibJptzpbozvrrz67qzwqtL9K\n\ \ \ \ \ \ \ \ tMEqrMWKtMearAnrnE3brFALrdJKtc5rtdwJphqrtdnatV4Ltmoarm5KtmZr\n\ \ \ \ \ \ \ \ rmibrmv/u65t667vKq9xS6/2SrP3Sqs8q7v+qqu967vAK7xHm7RJarzKirzK\n\ \ \ \ \ \ \ \ 66zQSp3Nq51WK73Uu7XWa71f+63gur1lS67eq7pqy67jW75wK7eCmr73Gg/s\n\ \ \ \ \ \ \ \ a5vx0LO6eQ+8u6P94Lv80A/zO5zZMKzFWgvFm7C1sKxQWgtPS6W24L/RegtV\n\ \ \ \ \ \ \ \ y523EL1YewtaC56HEAvbap6rwK1qugrtqcCrwMDz+QzfS6fzEL7tMA8RzJ/y\n\ \ \ \ \ \ \ \ AK/yGg/oS7MYnLO0iru1+r7w27tBW8JGW7/Eu7THy7TM6rTLK63TesMC3MM+\n\ \ \ \ \ \ \ \ TMDX663fqr1ju8Doiq5pK75s+7ZWfL50q74xisGGDA8bnMjw/3APi7zI9uDB\n\ \ \ \ \ \ \ \ /WAPkTzJI1zJIUzCmIwNJ7zJmkwL2UALKhzKoAwJLVzKpBwJMJzKkTDDrCwJ\n\ \ \ \ \ \ \ \ tuDKkmDDsjwJOVzLtNwIPJzLjRALu7zLP3wIQxzMgWDExDzMw1wKSZzMpfAM\n\ \ \ \ \ \ \ \ y7zMycDE85AM0TzNUVzNTyzF2MwOVbzN2rwO8rAOWBzO4KwOhtzFOtu+HAy/\n\ \ \ \ \ \ \ \ vSq0ZGzGxrrCyaq/yRvD/Su10fq81Yq12ErAXGvA2JvAeEy2StzA4Lu2UxzI\n\ \ \ \ \ \ \ \ 85rF9iqb5azIG8zIEP3IEg3JkizJljzC2JDJJMzJn9zRngzKIG3KIn3KMMzK\n\ \ \ \ \ \ \ \ qwzLr/zKshzLtNzStYzLMM3LMv3LQP8MxMEMzMZczMqcxMzc08/809AszdJs\n\ \ \ \ \ \ \ \ zVHMDtksxdz8zUrtzeDc1A0tqzW6wbnbyGEcyUALnCQ8tCZMvx9tvy28tM7Z\n\ \ \ \ \ \ \ \ wvQMw9Ipta98z7EMwDssx75Mx8Dsz8YM0Mgs0OXKzHss1H1c1H+szRLM1BSM\n\ \ \ \ \ \ \ \ wXR7yIoM0Y3swYZd0ZR8yRet0RmtyY7t0R4tyiOtyiad0iid1rNsy5oN07os\n\ \ \ \ \ \ \ \ 075c07980zo91zzdzD7NxEFNzddM1Edt1Hy9zUy91OL81IKNyIXtyId92Ilt\n\ \ \ \ \ \ \ \ yY290Y/dyZEd0qMs0qhc3JR90pat0pjt0rfc2b0806At2jk93Ttt2s6M2kAt\n\ \ \ \ \ \ \ \ 1Kt9za6N1K//3c2y7dTj3NC2PdiFPdESPckWrdjs3dgcDdwfLdkhTdLGvcr2\n\ \ \ \ \ \ \ \ ndywvNKa7dKc/dz+Hd1vLczETNpz3dPXnd3TPNTbbc2undTgzdSz7dTkPOEO\n\ \ \ \ \ \ \ \ fdsRrduIvd69/dub/NGfLN+TTcr0XdL3jdz5jdksrcs87NnQHdoBjtM6ndME\n\ \ \ \ \ \ \ \ buCn/dMJrtrd/d2wHd6zTeHkHA+JDOSLHA8QfQ+GbeSSfA+T3A+XzOQjzOQZ\n\ \ \ \ \ \ \ \ nQ2YnA2bTOWeXAsdXQuhrOWkrOWo7OW2UAusbAspTeaxbAuyfAu1rOa0rOa4\n\ \ \ \ \ \ \ \ HAu5HAsyLec/vAo1vQrBjOfAjOfIzOfPsAo9/QyoLejS/AzTPA/X/4zoUYzo\n\ \ \ \ \ \ \ \ Ri0P2CwP2wzp3hwPSg3k4AzkPl7hhH3h6Z3h7I3RmfzekC3coSzipVzflW3i\n\ \ \ \ \ \ \ \ lq3fzK3i//3ZLi7do63MNH7gqa3drJ3jDr7U3xzh5A3kD03kQ17kRz7JSi7J\n\ \ \ \ \ \ \ \ Ts7klyzlUV7lzn7lWb7lqQzmYr7K1U7mZa7SaB7LbK7max7nKy7nu0znsWDn\n\ \ \ \ \ \ \ \ dZ7nyezngL7M6y7ogz7Nhi7Nio7o1+zojR7p+D7plR7OmF7h5r3p6K3eib3h\n\ \ \ \ \ \ \ \ vt3ho/7hpD7iqF7i+K3fKd7fLA7roG3TLz7g1V3aNI7g2q3gOe7dOx7bEC7e\n\ \ \ \ \ \ \ \ hgzs90DkJl/yRp7yKd8PSq7kyv7yyi7lMv/fD1Re8zafDVie8ziv5Twv5j4f\n\ \ \ \ \ \ \ \ 5kCP7UJ/C2iO5t5+9N4O50p/C3Le9E5f7lBv53g+9Xj+51YP6IDu7lo/D4Zu\n\ \ \ \ \ \ \ \ 6PT+9fTu6GI/D5Be9mYvD5Se9mgP7EIO7Igs7Ci/yEhu5Ma+5E0+5RtN5Zps\n\ \ \ \ \ \ \ \ 5Tif5R+u5aDs5Tz/5ax87WZO5rK87d7e5uA+7nN+55C/5+je5+ne0+1O6IIO\n\ \ \ \ \ \ \ \ 74ee6I+O1JCuzZKO9pXe65bO9myP8kSu8ivf8izf+jAP8zMv8zev8znf87b/\n\ \ \ \ \ \ \ \ 82Iu9NhO9Lxf9Ej/+0uv9E8v9VFP9caP9Vav9e7O9czf9WD//GMv9mev9mlv\n\ \ \ \ \ \ \ \ +j8e5BAN93O//XX/j+x4H+V5/+x9H/jS3uXTXvhjnu2urPiK7+ZM3/hN7/h1\n\ \ \ \ \ \ \ \ btN6PvXDzOdVz+6BPujvXuib3+gAMY/dPHkC5R1kd1DeOnnxFsaDuA5iPHUT\n\ \ \ \ \ \ \ \ 4927ePHeRo4c+937GLLfSJIls/U7mRIlymwtW9bKBlNmLZo1bdW6aUvnTp23\n\ \ \ \ \ \ \ \ bPkE+vPWUKJFh8a6hVRpLKZNY616GnXVVKqrnlm1+kzr1q3znnkFO0/sWLIF\n\ \ \ \ \ \ \ \ zRJEq1ChQ7YNLVrEGFdjx44hQYIsOVJlSpd9X8aMWVOwTZyFeR7+mRio0aSN\n\ \ \ \ \ \ \ \ myZ12hTq5KqVsV7FzFUz2K9fyYo9a1bt6LZv4WbEl7EjPo93/d0t6S8v/0p/\n\ \ \ \ \ \ \ \ e1tq8xtTm8zAtXbnLKwNsa1tihNvY3wLueOk2yIzrcZ08tNqVDGvqp5Za7Wu\n\ \ \ \ \ \ \ \ nfN1JpvvM8F8oQ/iG90wdUO3plWrplsXNt6Ve1nm5p1/8GDgOYf3NI4opZh7\n\ \ \ \ \ \ \ \ TjqppLKsquu000wrzsJKK8L0DiqNvbdSwzAeDO9hrcN7XgPxww/7ka1EEk8s\n\ \ \ \ \ \ \ \ MZvaVswGNxdbbNE3GXejcUZbhMOROB2L41E5H5ED8sdYnCMyluiONNJI7Jas\n\ \ \ \ \ \ \ \ rkkmn+Euyme+o3LKKecRL0sst8xSnvK+lAc9McMMU0MzU5Mrzbnim0+kvOzj\n\ \ \ \ \ \ \ \ Cz/A9DOsTv/+C2oxowbks8Dp/pxqwcuyatBB8P88+yy0tCaskC2IMtzQQw9D\n\ \ \ \ \ \ \ \ pBRFS1NksbYXN52x0xpzzLE44XgkTrlSg0R1SFWLdA5JV5mEVUpZraySSi5v\n\ \ \ \ \ \ \ \ 7RLM8sbk9UxfH31vI9bie82uj4rVizbbYMxttzl1I+ym3w4TDkCfistTOT6b\n\ \ \ \ \ \ \ \ KzA6yagDdMkFoSz0uwetHMus8hYlM731SoNUQw7nZe21ekWs1ER9UVSxX01h\n\ \ \ \ \ \ \ \ 3BRgT28kGNQdD0b1R4VZVTW6VpNsUkknZ+Xuu4pppRVXjXX1kkxePS4z3kjp\n\ \ \ \ \ \ \ \ nddefPG91F+VA+b0U099KzhmUmc+VUiGH3YV4lh3pphcizG2VUuOwfy4V5Hl\n\ \ \ \ \ \ \ \ lZRkSlEG8VJ+M10ZYIH/P70RZoNp7jFhrVflGmeIJX6y54trvTLojTseGmSj\n\ \ \ \ \ \ \ \ fRWZ5ElPzldlFlme+mWXaYw5VIR31PZmrnOemOdYyZ2V7FqxRDvxoj1m+0x8\n\ \ \ \ \ \ \ \ Onycw8j9wQfEyj/0B8TMSdw88xIzV1GbFUUP3UVtTEf9xtNVH1UbHl0nbhsg\n\ \ \ \ \ \ \ \ ZVeOdtlnJ7Ka3HM/sprem/QdyuB9r7gaKo2fMh8qlceSeeWzVN5LfL6cXnox\n\ \ \ \ \ \ \ \ Hw8Te0g5RNptuOFOGWqoWfYtRqoNvnrvrG3uOkmvAR+8ScLnNzxjoRNPu2gN\n\ \ \ \ \ \ \ \ Q9bw8cj9r9zkAkg5zXmucwYEnT9Et8DRKVCBqDvd6iI4QeK4zoKv24brbHe7\n\ \ \ \ \ \ \ \ /9vVjoO7053vhkQ84hmJhMMjXj6Cp0IWIu95L2zeC6mXj+lVj4Y31B4AH4e0\n\ \ \ \ \ \ \ \ 7iXNZEsr0YhWRCK59YtuLirf3fJGMFGpj29+YxjgdDYxKGFnflL6meGwVDYv\n\ \ \ \ \ \ \ \ IS5/amOcmPqnwwGWkYCVQ2Aa1Si6zDHQjQ+cYBwnmEE6XvCCH8RjHnUnuxBu\n\ \ \ \ \ \ \ \ o48hPGEgU2g8QraQhTJEZCKnp7wa4hCHZPTfGCUHOctV8kOX8xznGhi6TUaw\n\ \ \ \ \ \ \ \ Raf7JI0kOEocwe50GKwgjza4uxGysoSvFCHxsIPCKLnQlsdbHvRmKL1d+i97\n\ \ \ \ \ \ \ \ 18MQJCn3uDMWc4BqRKbn3ujG08FRjnKsYzTvmEc87v/Rj9f8ox8FKUgV+s6Q\n\ \ \ \ \ \ \ \ hSxkIsX5vEaWk4aPOycAJem/SUrOkgS8ZAE5OU8HztOT9zydb0jJOtWhko6x\n\ \ \ \ \ \ \ \ UyWRZNdKgvquVbFEKPBquVDh4XJKt0zeLm/IS4r60qI7BKAxNZo5NCbTo210\n\ \ \ \ \ \ \ \ 4DJDCk07SvN2GqRmSjmYTZZq84TfhKnyjDdOmpLTkeasISR1qFEzdrSjBmRj\n\ \ \ \ \ \ \ \ SIXKzGcW9ZQRNOk0UbrS27X0jwbdJjfBCdOZHlKGi7xpVnWqw3/474xdNeY/\n\ \ \ \ \ \ \ \ OGpAsaaxrEAtqxv/scy1HjWDa5UmXJf6jzzSFY92/eM/WKpXqPqOr+DU6zf/\n\ \ \ \ \ \ \ \ IdMXDhaRhn0hPgxbzq7etKv/W/VqTzdKQJCCVKTLNGocM+jWkpZUdii1plOx\n\ \ \ \ \ \ \ \ 2deobpOqMbUqVnGq1XSSsauvVWxsX+uP2YrVtrTF7W11m1vaasO2vgXuWoUb\n\ \ \ \ \ \ \ \ XOIO17i+3QZdlZtc5i7Xuc1NbjWUK13q6tW61cXuda2bj+0O1rvcBe93xRte\n\ \ \ \ \ \ \ \ 7iq2vLBFr2x3Kln2eu6nyoTvZYfazGdutrNJPakem4pN/rKUtCQ87VTDadXE\n\ \ \ \ \ \ \ \ 2nS1OEWn/9K7YMXStsG7hTBvfzvh3h7XwsUtbnKR+1wOQ5fD2QWxdkNcXe5K\n\ \ \ \ \ \ \ \ l7zjRXF4zfva86o3vcRUcE/BWkawjrW38V3rUHOs1me21Y5yrSOQNQhXPspO\n\ \ \ \ \ \ \ \ r/09/3Jen0pdbxIvsIAVcGAJW14DN5axOH1sjBfs4Ah3WcJf1q1vK1xhDBtX\n\ \ \ \ \ \ \ \ wx1Gs4fVjGbpRlfEby5xiuV8YjqLd8V3ZnCeXfzgB4M5t2K+cKDLPGgzC/fM\n\ \ \ \ \ \ \ \ Hm6zdd084jczmtFxrvOJ8bxnPVeay372cqb/PGFCb3jDawZ1mtk8XVI72rsm\n\ \ \ \ \ \ \ \ nnOqI+3dSVea0pS+dG03TWZB17rTFj60cxO960b32tSmhnR3VcxqV+f5H689\n\ \ \ \ \ \ \ \ Nm2TfWzbLtvZzYa2sqPNbGlXm9m+PTa2hXvs5HKb2d1WrrfFHW5yg9vczJbu\n\ \ \ \ \ \ \ \ sdNt3WNzt93Mdrd33z1vedc73veGd76P/Wr0xprPmqawcPBpfWuCK9fTom4u\n\ \ \ \ \ \ \ \ r928aF/3OtioRvWqzzvxYrv42da+OLU1nnGOTzvb1wb5uM8t8m+XnOQnLze6\n\ \ \ \ \ \ \ \ 9W3vleOb3i5n+cuZrdh9F9vftu1zwAG9c07b2ucHz/WnSb3whv8azt2FOIrx\n\ \ \ \ \ \ \ \ TPFW85vZT4d61KU+dapX3epXx3rWtb51rnc96zRHNrTBjnGPl13a2j57yLe9\n\ \ \ \ \ \ \ \ dm2PPOUodzu41z13lat75euGed5bPvOVgx3sXgd84AU/eMIX3vB+33jYpT32\n\ \ \ \ \ \ \ \ xKf92WhXu+PJ3Xa1g5vyKF+33E3Obs7jve719rzMa05vsMe79Hw3fOpVv3rW\n\ \ \ \ \ \ \ \ t57qAQEAOw==\n\ \}\]\n\ set\ ::he::dialog::colordialog(img_v)\ \[image\ create\ photo\ -data\ \{\n\ \ \ \ \ \ \ \ R0lGODlhCgBlAPcAAP////z8/Pr6+vf39/X19fLy8vDw8O3t7evr6+jo6Obm\n\ \ \ \ \ \ \ \ 5uPj4+Dg4N7e3tvb29nZ2dbW1tTU1NHR0c/Pz8zMzMnJycfHx8TExMLCwr+/\n\ \ \ \ \ \ \ \ v729vbq6uri4uLW1tbOzs7CwsK2traurq6ioqKampqOjo6GhoZ6enpycnJmZ\n\ \ \ \ \ \ \ \ mZaWlpSUlJGRkY+Pj4yMjIqKioeHh4WFhYKCgoCAgH19fXp6enh4eHV1dXNz\n\ \ \ \ \ \ \ \ c3BwcG5ubmtra2lpaWZmZmNjY2FhYV5eXlxcXFlZWVdXV1RUVFJSUk9PT01N\n\ \ \ \ \ \ \ \ TUpKSkdHR0VFRUJCQkBAQD09PTs7Ozg4ODY2NjMzMzAwMC4uLisrKykpKSYm\n\ \ \ \ \ \ \ \ JiQkJCEhIR8fHxwcHBoaGhcXFxQUFBISEg8PDw0NDQoKCggICAUFBQMDAwAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAACwAAAAACgBlAAAI/wABCBxIMIDBgwgFKFzIcIDD\n\ \ \ \ \ \ \ \ hxAJSJxIsYDFixgNaNzI8YDHjyARiBxJMoHJkygVqFzJcoHLlzAZyJxJs4HN\n\ \ \ \ \ \ \ \ mzgd6NzJ84HPn0AhCB1KNILRo0glKF3KdILTp1ApSJ1KtYLVq1gtaN3K9YLX\n\ \ \ \ \ \ \ \ r2AxiB1LNoPZs2g1qF3LdoPbt3A5yJ1Lt4Pdu3g96N3L94Pfv4BBCB5MOITh\n\ \ \ \ \ \ \ \ w4hFKF7MeITjx5BJSJ5MuYTly5hNaN7M+YTnz6BRiB5NOoXp06hVqF7NeoXr\n\ \ \ \ \ \ \ \ 17BZyJ5Nu4Xt27hd6N7N+4Xv38BhCB9OPIbx48hlKF/OfIbz59BpSJ9OvYb1\n\ \ \ \ \ \ \ \ 69htaN/O/Yb37+BxiN0fTz6H+fPodahfz36H+/fwecifT7+H/fv4fejfz/+H\n\ \ \ \ \ \ \ \ //8AAiHggAQGYeCBCAqh4IIMDuHggxASIeGEFBZh4YUYGqHhhhwe4eGHICIh\n\ \ \ \ \ \ \ \ 4ogkJmHiiSgqoeKKLC7h4oswMiHjjDQ2YeONODqh4448PuHjj0BCIeSQREZh\n\ \ \ \ \ \ \ \ 5JFISqHkkkxO4eSTUFIh5ZRUVmHllVhaoeWWXF7h5ZdgYiHmmGRmYeaZaGqh\n\ \ \ \ \ \ \ \ 5ppsbuHmm3ByIeecdHZh5514eqHnnnx+4eefgIIh6KCEhmHooYiKoeiijI7h\n\ \ \ \ \ \ \ \ 6KOQkiHppJQGBAA7\n\ \}\]\n======\n\n----\n\[RS\]:\ \"There\ is\ no\ way\"?\ Look\ at\ this:-)\n\ %\ winfo\ rgb\ .\ yellowgreen\n\ 39578\ 52685\ 12850\n\ %\ foreach\ \{r\ g\ b\}\ \[winfo\ rgb\ .\ yellowgreen\]\ break\n\ %\ format\ #%02x%02x%02x\ \[expr\ \{\$r/256\}\]\ \[expr\ \{\$g/256\}\]\ \[expr\ \{\$b/256\}\]\n\ #9acd32\n\n\[HE\]\ Thank\ you!\ Have\ this\ command\ completely\ forget.\ \nChanged\ it\ above.\ Know\ the\ file\ size\ is\ more\ pocketPC\ like\ :-)\n----\n\[EH\]\ Let's\ make\ the\ file\ size\ even\ smaller,\ but\ also\ display\ a\ truecolor\ Hue-Saturation\ palette\ instead\ of\ the\ dithered\ GIF\ one,\ and\ last\ but\ not\ least,\ allow\ the\ dialog\ to\ be\ resizable.\ This\ code\ replace\ the\ inlined\ images\ by\ dynamic\ ones,\ generated\ on\ the\ fly.\ Let's\ add\ a\ binding\ to\ <Configure>\ to\ have\ the\ dialog\ regenerate\ the\ images,\ and\ now\ this\ dialog\ will\ also\ display\ fine\ on\ true-VGA\ (640x480)\ PDA.\ \n\[HE\]\ Very\ good\ idea.\ I\ have\ tried\ an\ own\ solution\ in\ the\ very\ beginning.\ I\ tested\ your\ solution\ but\ got\ the\ same\ result.\ Calculating\ an\ truecolor\ palette\ creates\ two\ problems\ (at\ least\ on\ my\ pocketPCs):\n\ \ \ *\ I\ test\ it\ on\ two\ packetPC.\ The\ first\ try\ on\ an\ pda\ with\ windows\ mobile\ 2003\ se:\ the\ truecolor\ Hue-Saturation\ palette\ looks\ ugly.\ The\ second\ try\ on\ windows\ mobile\ 5.0\ looks\ great.\ I\ think\ it\ depends\ on\ \ the\ quality\ of\ the\ display.\ To\ use\ the\ code\ on\ both\ pocketPCs\ I\ need\ to\ use\ the\ gifs\ :-(\n\ \ \ *\ The\ startup\ time\ grows\ unacceptable\ for\ me\ on\ both\ pocketPC\ (+15\ -\ +20\ seconds).\ This\ is\ also\ a\ reason\ to\ use\ the\ gifs\ :-(\n\n'''2006-03-18'''\ I\ agree\ GIF\ is\ not\ so\ bad,\ but\ I\ can't\ help\ getting\ into\ the\ challenge\ when\ a\ Tcl\ code\ is\ supposed\ to\ be\ too\ slow\ \;-)\ So\ below\ is\ an\ updated\ version\ of\ hsmap\ generator,\ which\ now\ take\ less\ than\ 0.2s\ (vs.\ 15-20s\ you\ mentionned)\ to\ generate\ a\ 180x100\ Hue\ -Saturation\ palette.\ \[HE\]This\ is\ really\ fast.\ I\ use\ this\ for\ my\ PDAs.\ Even\ with\ the\ ugly\ truecolor.\[HE\]-end\ I\ don't\ understand\ how\ a\ truecolor\ image\ can\ look\ more\ ugly\ than\ an\ indexed\ one,\ even\ when\ displayed\ on\ \"older\"\ 4096\ colors\ screen\ \[HE\]It\ looks\ like\ a\ shaded\ 255\ color\ image.\[HE\]-end.\ Also,\ not\ related,\ but:\ I\ believe\ that\ adding\ a\ binding\ to\ <1>\ and\ not\ only\ <B1-Motion>\ to\ change\ color\ and\ brightness\ make\ the\ dialog\ more\ usable.\ \[HE\]\ To\ change\ the\ bindings\ is\ a\ good\ idea.\ But\ the\ tags\ hsmap\ and\ bmap\ doesn't\ exist.\ I\ add\ them\ to\ the\ images\ and\ \ I\ removed\ the\ binding\ to\ hsval\ and\ bval.\ all\ changes\ in\ the\ code\ above.\ \[HE\]-end\n\n\ \$w.c.dial\ bind\ hsmap\ <1>\ \"::he::dialog::colordialog_set_hs\ %x\ %y\"\n\ \$w.c.dial\ bind\ hsmap\ <B1-Motion>\ \"::he::dialog::colordialog_set_hs\ %x\ %y\"\n\n\ \$w.c.dial\ bind\ bmap\ \ <1>\ \"::he::dialog::colordialog_set_b\ \ %y\"\n\ \$w.c.dial\ bind\ bmap\ \ <B1-Motion>\ \"::he::dialog::colordialog_set_b\ \ %y\"\n\nBy\ the\ way.\ We\ need\ not\ only\ a\ binding\ to\ <Configure>\ to\ make\ the\ dialog\ resizable.\ colordialog_set_hs\ and\ colordialog_set_b\ are\ based\ on\ the\ geometry\ of\ the\ pictures.\ Changing\ this\ geometry\ needs\ changing\ this\ procs.\n\n\[EH\]\ Some\ other\ comments:\n\ \ \ *\ I\ suggest\ to\ add\ \{\}\ around\ your\ expr,\ especially\ in\ hsb2rgb/rgb2hsb\ procedures.\ This\ make\ a\ huge\ difference\ in\ performance\ (and\ since\ the\ dynamic\ image\ generator\ use\ them\ for\ each\ pixel...).\ \[HE\]\ I\ changed\ it\ in\ the\ code\ above.\ Testing\ the\ procedures\ shows\ great\ performance.\ But\ on\ my\ acer\ n50\ it\ doesn't\ look\ faster\ :-(\n\ \ \ *\ In\ checkAndSetInitialColor,\ you\ left\ the\ \"yellowgreen\"\ value\ given\ by\ Richard\ as\ an\ example.\ It\ should\ be\ \$value\ instead.\ Actually,\ the\ whole\ procedure\ is\ useless,\ since\ winfo\ rgb\ parse\ all\ valid\ color\ formats,\ so\ it\ should\ be:\ \[HE\]\ Fixed\ it\ in\ the\ code\ above\ and\ deleted\ it\ below.\n\ \ \ *\ Not\ specific\ to\ this\ dialog,\ but\ more\ generally\ to\ eTcl\ on\ PocketPC:\ ::etcl::autofit\ should\ be\ bind\ to\ <Expose>\ event\ too\ (together\ with\ <ConfigureRequest>).\ This\ is\ because\ if\ SIP\ state\ change\ when\ eTcl\ doesn't\ have\ the\ focus,\ it\ won't\ notice\ it.\ Not\ that\ important,\ but\ better.\ (I\ really\ have\ to\ release\ some\ documentation\ soon.\ Shame\ on\ me!).\ \[HE\]Thanks\ for\ the\ hint.\ Added\ it\ (Added\ it\ in\ \[Alternative\ dialogs\ for\ pocketPC/etcl\]\ too).\n\nI\ didn't\ want\ to\ edit/delete/break\ your\ code,\ so\ I\ let\ you\ apply\ the\ changes\ to\ it\ if\ you\ like\ this\ approach.\n\n======\n\ #\ Generate\ a\ vertical\ gradient\n\ proc\ ::he::dialog::vgradient\ \{width\ height\}\ \{\n\ \ \ set\ c0\ 0xff\n\ \ \ set\ c1\ 0x00\n\ \n\ \ \ set\ img\ \[image\ create\ photo\ -width\ \$width\ -height\ \$height\]\n\ \ \ if\ \{\$width<=0\ ||\ \$height<=0\}\ \{\n\ \ \ \ \ return\ \$img\n\ \ \ \}\n\ \n\ \ \ for\ \{set\ y\ 0\}\ \{\$y<\$height\}\ \{incr\ y\}\ \{\n\ \ \ \ \ if\ \{\$height<=1\}\ \{\n\ \ \ \ \ \ \ set\ gs\ \$c0\n\ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ set\ gs\ \[expr\ \{\$c0+((\$c1-\$c0)*\$y)/(\$height-1)\}\]\n\ \ \ \ \ \}\n\ \n\ \ \ \ \ set\ color\ \[format\ \"#%02x%02x%02x\"\ \$gs\ \$gs\ \$gs\]\n\ \ \ \ \ \$img\ put\ \[list\ \[list\ \$color\]\]\ -to\ 0\ \$y\ \$width\ \[expr\ \{\$y+1\}\]\n\ \ \ \}\n\ \n\ \ \ return\ \$img\n\ \}\n\ \n\ #\ Generate\ Hue-Saturation\ map\n\ proc\ ::he::dialog::hsmap\ \{reqwidth\ reqheight\ \{img\ \"\"\}\}\ \{\n\ \ \ if\ \{!\[string\ compare\ \"\"\ \$img\]\}\ \{\n\ \ \ \ \ set\ img\ \[image\ create\ photo\ -width\ \$reqwidth\ -height\ \$reqheight\]\n\ \ \ \}\ else\ \{\n\ \ \ \ \ \$img\ configure\ -width\ \$reqwidth\ -height\ \$reqheight\n\ \ \ \ \ \$img\ blank\n\ \ \ \}\n\ \n\ \ \ if\ \{\$reqwidth<=0\ ||\ \$reqheight<=0\}\ \{\n\ \ \ \ \ return\ \$img\n\ \ \ \}\n\ \ \ \n\ \ \ #\ Max\ brightness\n\ \ \ #\ set\ v\ 100.0\n\ \ \ set\ v\ 255\n\ \ \n\ \ \ #\ make\ code\ run\ \$rx*\$ry\ times\ faster.\ rx=ry=3\ still\ produces\ a\ nice\n\ \ \ #\ map\ with\ no\ visible\ artefact,\ while\ taking\ lest\ than\ 0.2s\ on\ \n\ \ \ #\ an\ ipaq\ 4150\ to\ generate\ a\ 180x100\ image\n\ \ \ if\ \{\$::tcl_platform(os)\ eq\ \{Windows\ CE\}\}\ \{\n\ \ \ \ \ set\ rx\ 3\n\ \ \ \ \ set\ ry\ 3\n\ \ \ \}\ else\ \{\n\ \ \ \ \ set\ rx\ 1\n\ \ \ \ \ set\ ry\ 1\n\ \ \ \}\n\ \n\ \ \ set\ width\ \[expr\ \{\$reqwidth/\$rx\}\]\n\ \ \ set\ height\ \[expr\ \{\$reqheight/\$ry\}\]\n\n\ \ \ set\ fmax\ \[expr\ \{\$width/6\}\]\n\ \ \ set\ pixels\ \[list\]\n\n\ \ \ for\ \{set\ y\ 0\}\ \{\$y<\$height\}\ \{incr\ y\}\ \{\n\ \ \ \ \ if\ \{\$height<=1\}\ \{\n\ \ \ \ \ \ \ set\ s\ 255\n\ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ set\ s\ \[expr\ \{(255*(\$height-1-\$y))/(\$height-1)\}\]\n\ \ \ \ \ \ \ if\ \{\$s<=0\}\ \{\n\ \ \ \ \ \ \ \ \ set\ s\ 0\n\ \ \ \ \ \ \ \}\n\ \ \ \ \ \}\n\ \ \ \ \n\ \ \ \ \ if\ \{\$s<=0\}\ \{\n\ \ \ \ \ \ \ #\ White\n\ \ \ \ \ \ \ for\ \{set\ x\ 0\}\ \{\$x<\$width\}\ \{incr\ x\}\ \{\n\ \ \ \ \ \ \ \ lappend\ pixels\ 0xff\ 0xff\ 0xff\n\ \ \ \ \ \ \ \}\n\ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ set\ x\ 0\n\ \ \ \ \ \ \ set\ p\ \[expr\ \{255-\$s\}\]\n\n\ \ \ \ \ \ \ foreach\ h\ \{0\ 1\ 2\ 3\ 4\ 5\}\ \{\n\ \ \ \ \ \ \ \ \ set\ f\ 0\n\ \ \ \ \ \ \ \ \ set\ xmax\ \[expr\ \{((\$h+1)*\$width)/6\}\]\n\ \ \ \ \ \ \ \ \ while\ \{\$x<\$xmax\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ set\ q\ \[expr\ \{255-(\$s*\$f)/\$fmax\}\]\n\ \ \ \ \ \ \ \ \ \ \ set\ t\ \[expr\ \{255-(\$s*(\$fmax-\$f))/\$fmax\}\]\n\ \ \ \ \ \ \ \ \ \ \n\ \ \ \ \ \ \ \ \ \ if\ \{\$h==0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$v\ \$t\ \$p\n\ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$h==1\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$q\ \$v\ \$p\n\ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$h==2\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$p\ \$v\ \$t\n\ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$h==3\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$p\ \$q\ \$v\n\ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$h==4\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$t\ \$p\ \$v\n\ \ \ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$v\ \$p\ \$q\n\ \ \ \ \ \ \ \ \ \ \}\n\n\ \ \ \ \ \ \ \ \ \ incr\ x\n\ \ \ \ \ \ \ \ \ \ incr\ f\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \}\n\ \ \ \ \ \}\n\ \ \ \}\n\n\ \ \ set\ header\ \"P6\\n\\#\ PPM\ data\\n\$\{width\}\ \$\{height\}\\n255\\n\"\n\ \ \ append\ tkdata\ \[binary\ format\ \{a*c*\}\ \$header\ \$pixels\]\n\n\ \ \ if\ \{\$rx!=1\ ||\ \$ry!=1\}\ \{\n\ \ \ \ \ set\ tmp\ \[image\ create\ photo\]\n\ \ \ \ \ \$tmp\ put\ \$tkdata\ -to\ 0\ 0\ \$width\ \$height\ -format\ PPM\ \ \ \ \n\ \ \ \ \ \$img\ copy\ \$tmp\ -zoom\ \$rx\ \$ry\ -compositingrule\ set\ \ \ \ \n\ \ \ \ \ image\ delete\ \$tmp\n\ \ \ \}\ else\ \{\n\ \ \ \ \ \$img\ put\ \$tkdata\ -to\ 0\ 0\ \$width\ \$height\ -format\ PPM\ \ \ \ \n\ \ \ \}\n\n\ \ \ return\ \$img\n\ \}\n\n\ set\ ::he::dialog::colordialog(img_hs)\ \[::he::dialog::hsmap\ 181\ 100\]\n\ set\ ::he::dialog::colordialog(img_v)\ \[::he::dialog::vgradient\ 10\ 101\]\nv\n----\n'''2006-05-12'''\ \[HE\]\ Some\ startup\ and\ file\ size\ improvements:\ Changing\ multiple\ 'set\ colordialog()\ ...'\ to\ one\ 'array\ set'\ and\ the\ multiple\ 'msgcat::mcset'\ to\ one\ 'msgcat::mcmset'\ for\ every\ locale.\n\n\n<<categories>>\ GUI regexp2} CALL {my render {colorChooser for pocketPC/etcl} 2006-03-13\ \[HE\]\ An\ alternative\ to\ the\ old-fashioned\ Unix\ colorchooser.\nDeveloped\ for\ the\ use\ in\ \[eTcl\],\ you\ can\ use\ it\ together\ with\ the\ \[Alternative\ dialogs\ for\ pocketPC/etcl\].\nThere\ I\ also\ describe\ how\ to\ replace\ tk_chooseColor.\n\n\[WikiDbImage\ colorchooser.jpg\]\n\nWith\ some\ changes\ you\ can\ use\ it\ in\ other\ enviroments\ than\ etcl\ (Remove\ windowfit\ is\ the\ first\ step)\n\n======\n\ #\ colorBox.tcl\ (wiki\ version)\n\ #\ Version\ 0.2\n\n\ #\ inspired\ by\ the\ book\ 'Effektiv\ Tcl/Tk\ programmieren'.\ Used\ their\ code\ to\ begin\ the\ project.\n\ #\ \ \ \ \ \ \ \ Mark\ Harrison,\ DSC\ Communications\ Corp.\n\ #\ \ \ \ \ \ \ \ Michael\ McLennan,\ Bell\ Labs\ Innovations\ for\ Lucent\ Technologies\n\ #\ based\ on\ informationen\ from\ http://de.wikipedia.org/wiki/HSV-Farbraum\n\n\ #\ Names:\n\ #\ HE\ =\ Holger\ Ewert\n\ #\ EH\ =\ Eric\ Hassold\n\ #\ RS\ =\ Richard\ Suchenwirth\n\n\ #\ Histo:\n\ #\ Version\ 0.0\ started\ at\ 22.02.2006\n\ #\ Version\ 0.1\ started\ at\ 14.03.2006\n\ #\ \ \ \ \ \ HE:\ removed\ array\ ::he::dialog::colors\ and\ procedure\ ::he::dialog::colorname2color\ \n\ #\ \ \ \ \ \ \ \ \ \ \ \ \ \ RS\ shows\ me\ a\ way\ to\ avoid\ them.\n\ #\ Version\ 0.2\ started\ at\ 17.03.2006\n\ #\ \ \ \ \ \ HE:\ Bugfix\ (found\ by\ EH):\ checkAndSetInitialcolor\ used\ fixed\ colorname.\ Fixed.\n\ #\ \ \ \ \ \ \ \ \ \ \ \ \ \ Put\ all\ expr\ expression\ inside\ of\ \{\}\n\n\ #\ Function:\n\ #\ A\ color\ chooser\ (a\ replacement\ for\ tk_chooseColor)\n\ \n\ namespace\ eval\ ::he::dialog\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ array\ set\ colordialog\ \"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c00\ #000019\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c01\ #000033\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c02\ #00004c\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c03\ #000066\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c04\ #00007f\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c05\ #000099\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c06\ #0000b2\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c07\ #0000cc\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c08\ #0000e5\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c09\ #0000ff\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c10\ #001900\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c11\ #003300\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c12\ #004c00\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c13\ #006600\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c14\ #007f00\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c15\ #009900\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c16\ #00b200\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c17\ #00cc00\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c18\ #00e500\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c19\ #00ff00\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c20\ #190000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c21\ #330000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c22\ #4c0000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c23\ #660000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c24\ #7f0000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c25\ #990000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c26\ #b20000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c27\ #cc0000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c28\ #e50000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c29\ #ff0000\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c30\ #191919\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c31\ #333333\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c32\ #4c4c4c\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c33\ #666666\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c34\ #7f7f7f\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c35\ #999999\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c36\ #b2b2b2\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c37\ #cccccc\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c38\ #e5e5e5\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c39\ #ffffff\n\ \ \ \ \ \ \ \ \"\n\n\ \ \ \ \ \ \ \ package\ require\ msgcat\n\ \ \ \ \ \ \ \ namespace\ import\ ::msgcat::mc\n\ \}\n\n\ #\ de.msg\n\ namespace\ eval\ ::he::dialog\ \{\n\ \ \ \ \ \ \ \ msgcat::mcmset\ de\ \"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Color\}\ \{Farbe\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bad\ option\ %1\\\$s:\}\ \{Falscher\ Parameter:\ %1\\\$s:\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Must\ be\ -initialcolor,\ -parent,\ or\ -title\ .\}\ \{Erlaubt:\ -initialcolor,\ -parent,\ oder\ -title\ .\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bad\ window\ path\ name\ %1\\\$s\}\ \{Fenster\ %1\\\$s\ existiert\ nicht.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Ok\}\ \{OK\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Cancel\}\ \{Abbrechen\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Add\ color\}\ \{Farbe\ hinzufügen\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Red\}\ \{Rot\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Green\}\ \{Grün\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Blue\}\ \{Blau\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Hue\}\ \{Farbt.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Sat.\}\ \{Sätt.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bright.\}\ \{Hell.\}\n\ \ \ \ \ \ \ \ \"\n\ \}\n\n\ #\ en.msg\n\ namespace\ eval\ ::he::dialog\ \{\n\ \ \ \ \ \ \ \ msgcat::mcmset\ en\ \"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Color\}\ \{Color\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bad\ option\ %1\\\$s:\}\ \{Bad\ option\ %1\\\$s:\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Must\ be\ -initialcolor,\ -parent,\ or\ -title.\}\ \{Must\ be\ -initialcolor,\ -parent,\ or\ -title.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bad\ window\ path\ name\ %1\\\$s\}\ \{Bad\ window\ path\ name\ %1\\\$s\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Ok\}\ \{Ok\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Cancel\}\ \{Cancel\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Add\ color\}\ \{Add\ color\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Red\}\ \{Red\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Green\}\ \{Green\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Blue\}\ \{Blue\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Hue\}\ \{Hue\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Sat.\}\ \{Sat.\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{Bright.\}\ \{Bright.\}\n\n\ \ \ \ \ \ \ \ \"\n\ \}\n\n\ proc\ ::he::dialog::windowFit\ \{top\}\ \{\n\ \ \ \ \ \ \ \ if\ \{\$::tcl_platform(os)\ eq\ \{Windows\ CE\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\[info\ exists\ ::etcl::etcl\]\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ bind\ \$top\ \ <ConfigureRequest>\ \{::etcl::autofit\ %W\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ bind\ \$top\ <Expose>\ \{::etcl::autofit\ %W\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ::etcl::autofit\ \$top\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ wm\ geometry\ \$top\ 240x\[expr\ \{320\ -\ 51\}\]+0+0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ wm\ geometry\ \$top\ 240x\[expr\ \{320\ -\ 51\}\]+\[expr\ \{\[winfo\ pointerx\ .\]\ -\ 120\}\]+\[expr\ \{\[winfo\ pointery\ .\]\ -\ 135\}\]\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog\ \{args\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ set\ colordialog(-initialcolor)\ #408080\n\ \ \ \ \ \ \ \ set\ colordialog(-parent)\ \ \ \ \ \ \ \{.\}\n\ \ \ \ \ \ \ \ set\ colordialog(-title)\ \ \ \ \ \ \ \ \[mc\ \"Color\"\]\n\ \ \ \ \ \ \ \ #\ First\ we\ check\ the\ parameter\n\ \ \ \ \ \ \ \ foreach\ \{para\ value\}\ \$args\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ switch\ -exact\ --\ \$para\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -initialcolor\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_checkAndSetInitialcolor\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -parent\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{!\[winfo\ exists\ \$value\]\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ error\ \[mc\ \"Bad\ window\ path\ name\ %1\\\$s\"\ \$value\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(-parent)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -title\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(-title)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ default\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ error\ \"\[mc\ \"Bad\ option\ %1\\\$s.\"\ \$value\]\ \[mc\ \"Must\ be\ -initialcolor,\ -parent,\ or\ -title\ .\"\]\"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ scan\ \$colordialog(-initialcolor)\ \"#%2x%2x%2x\"\ colordialog(red)\ colordialog(green)\ colordialog(blue)\n\ \ \ \ \ \ \ \ colordialog_set_hsb\n\n\ \ \ \ \ \ \ \ #\ create\ the\ windowname\ for\ the\ dialogbox\n\ \ \ \ \ \ \ \ if\ \{\$colordialog(-parent)\ \ eq\ \{.\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(w)\ ._colordialog\n\ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(w)\ \[set\ colordialog(-parent)\]._colordialog\n\ \ \ \ \ \ \ \ \}\n\n\ \ \ \ \ \ \ \ set\ w\ \$colordialog(w)\n\ \ \ \ \ \ \ \ if\ \{\[winfo\ exists\ \$w\]\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_destroy\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ colordialog_create\n\ \ \ \ \ \ \ \ set\ colordialog(selected)\ \{\}\n\ \ \ \ \ \ \ \ vwait\ ::he::dialog::colordialog(selected)\n\n\ \ \ \ \ \ \ \ return\ \$colordialog(selected)\ \n\ \}\n\n\ proc\ ::he::dialog::colordialog_create\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ dir\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ set\ w\ \$colordialog(w)\n\n\ \ \ \ \ \ \ \ toplevel\ \$w\ -class\ colordialog\n\ \ \ \ \ \ \ \ wm\ protocol\ \$w\ WM_DELETE_WINDOW\ ::he::dialog::colordialog_cancel\n\ \ \ \ \ \ \ \ wm\ minsize\ \$w\ 216\ 65\ \;#220\n\ \ \ \ \ \ \ \ wm\ maxsize\ \$w\ 240\ \[expr\ \{320\ -\ 52\}\]\n\ \ \ \ \ \ \ \ wm\ title\ \$w\ \$colordialog(-title)\n\n\ \ \ \ \ \ \ \ frame\ \$w.e\ \ \ \;#\ frame\ with\ the\ entries\n\ \ \ \ \ \ \ \ frame\ \$w.c\ \ \ \;#\ frame\ with\ HSB-chooser\n\ \ \ \ \ \ \ \ frame\ \$w.c.s\ \;#\ frame\ with\ the\ user\ defined\ colors\n\ \ \ \ \ \ \ \ frame\ \$w.b\ \ \ \;#\ frame\ with\ buttons\n\n\ \ \ \ \ \ \ \ #\ frame\ with\ HSB-chooser\n\ \ \ \ \ \ \ \ canvas\ \$w.c.dial\n\ \ \ \ \ \ \ \ frame\ \$w.c.sample\ -width\ 10\ -height\ 101\n\n\ \ \ \ \ \ \ \ grid\ \$w.c.dial\ \ \ -row\ 0\ -column\ 0\n\ \ \ \ \ \ \ \ grid\ \$w.c.sample\ -row\ 0\ -column\ 1\n\ \ \ \ \ \ \ \ grid\ \$w.c.s\ \ \ \ \ \ -row\ 1\ -column\ 0\ -columnspan\ 2\n\ \ \ \ \ \ \ \ grid\ rowconfigure\ \$w.c\ 0\ -weight\ 0\n\ \ \ \ \ \ \ \ grid\ rowconfigure\ \$w.c\ 1\ -weight\ 1\n\ \ \ \ \ \ \ \ grid\ columnconfigure\ \$w.c\ 0\ -weight\ 1\n\ \ \ \ \ \ \ \ grid\ columnconfigure\ \$w.c\ 1\ -weight\ 0\n\n\ \ \ \ \ \ \ \ #\ frame\ with\ the\ entries\n\ \ \ \ \ \ \ \ label\ \$w.e.lr\ -text\ \"\[mc\ \"Red\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.lg\ -text\ \"\[mc\ \"Green\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.lb\ -text\ \"\[mc\ \"Blue\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.lh\ -text\ \"\[mc\ \"Hue\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.ls\ -text\ \"\[mc\ \"Sat.\"\]:\"\n\ \ \ \ \ \ \ \ label\ \$w.e.lv\ -text\ \"\[mc\ \"Bright.\"\]:\"\n\ \ \ \ \ \ \ \ entry\ \$w.e.er\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdRGB\ %P\ %V\ red\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.eg\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdRGB\ %P\ %V\ green\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.eb\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdRGB\ %P\ %V\ blue\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.eh\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdH\ %P\ %V\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.es\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdS\ %P\ %V\}\n\ \ \ \ \ \ \ \ entry\ \$w.e.ev\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdB\ %P\ %V\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ .e.ev\ -width\ 5\ -validate\ all\ -vcmd\ \{::he::dialog::colordialog_vcmdB\ %P\ %V\}\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lr\ -column\ 0\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lg\ -column\ 2\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lb\ -column\ 4\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lh\ -column\ 0\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.ls\ -column\ 2\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.lv\ -column\ 4\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.er\ -column\ 1\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.eg\ -column\ 3\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.eb\ -column\ 5\ -row\ 0\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.eh\ -column\ 1\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.es\ -column\ 3\ -row\ 1\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e.ev\ -column\ 5\ -row\ 1\n\n\ \ \ \ \ \ \ \ \$w.c.dial\ create\ image\ \ \ 5\ \ \ 5\ -anchor\ nw\ -image\ \$colordialog(img_hs)\ -tags\ hsmap\n\ \ \ \ \ \ \ \ \$w.c.dial\ create\ image\ 190\ \ \ 5\ -anchor\ nw\ -image\ \$colordialog(img_v)\ \ -tags\ bmap\n\ \ \ \ \ \ \ \ \$w.c.dial\ create\ oval\ \ \ \ 0\ \ \ 0\ \ \ 5\ 5\ -fill\ black\ -tags\ hsval\ -width\ 3\ -fill\ \{\}\n\ \ \ \ \ \ \ \ \$w.c.dial\ create\ line\ \ 189\ \ \ 5\ 201\ 5\ -fill\ black\ -tags\ bval\ \ -width\ 3\n\ \ \ \ \ \ \ \ \$w.c.dial\ configure\ -width\ 201\ -height\ 107\n\n\ \ \ \ \ \ \ \ \$w.c.dial\ bind\ hsmap\ <1>\ \ \ \ \ \ \ \ \ \"::he::dialog::colordialog_set_hs\ %x\ %y\"\n\ \ \ \ \ \ \ \ \$w.c.dial\ bind\ hsmap\ <B1-Motion>\ \"::he::dialog::colordialog_set_hs\ %x\ %y\"\n\ \ \ \ \ \ \ \ \$w.c.dial\ bind\ bmap\ \ <1>\ \ \ \ \ \ \ \ \ \"::he::dialog::colordialog_set_b\ \ %y\"\n\ \ \ \ \ \ \ \ \$w.c.dial\ bind\ bmap\ \ <B1-Motion>\ \"::he::dialog::colordialog_set_b\ \ %y\"\n\n\ \ \ \ \ \ \ \ #\ frame\ with\ the\ user\ defined\ colors\n\ \ \ \ \ \ \ \ for\ \{set\ n\ 0\}\ \{\$n\ <=\ 3\}\ \{incr\ n\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ for\ \{set\ m\ 0\}\ \{\$m\ <=\ 9\}\ \{incr\ m\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ radiobutton\ \$w.c.s.c\$n\$m\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -indicatoron\ 0\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -bg\ \$colordialog(c\$n\$m)\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -selectcolor\ \$colordialog(c\$n\$m)\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -value\ c\$n\$m\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -variable\ ::he::dialog::colordialog(c)\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -width\ 2\ \\\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -command\ \"::he::dialog::colordialog_sel\ \$w.c.s.c\$n\$m\"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ grid\ configure\ \$w.c.s.c\$n\$m\ -row\ \$n\ -column\ \$m\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ #\ frame\ with\ buttons\n\n\ \ \ \ \ \ \ \ button\ \$w.b.ok\ \ \ \ \ -text\ \[mc\ \"Ok\"\]\ \ \ \ \ \ \ \ -command\ ::he::dialog::colordialog_ok\n\ \ \ \ \ \ \ \ button\ \$w.b.cancel\ -text\ \[mc\ \"Cancel\"\]\ \ \ \ -command\ ::he::dialog::colordialog_cancel\n\ \ \ \ \ \ \ \ button\ \$w.b.add\ \ \ \ -text\ \[mc\ \"Add\ color\"\]\ -command\ ::he::dialog::colordialog_add\n\n\ \ \ \ \ \ \ \ pack\ \$w.b.ok\ \$w.b.cancel\ -side\ left\n\ \ \ \ \ \ \ \ pack\ \$w.b.add\ -side\ right\n\n\ \ \ \ \ \ \ \ #\ Frames\ darstellen\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.e\ -row\ 0\ -sticky\ nsew\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.c\ -row\ 1\ -sticky\ ew\n\ \ \ \ \ \ \ \ grid\ configure\ \$w.b\ -row\ 2\ -sticky\ nsew\n\n\ \ \ \ \ \ \ \ grid\ rowconfigure\ \$w\ \{0\ 2\}\ -weight\ 0\n\ \ \ \ \ \ \ \ grid\ rowconfigure\ \$w\ 1\ -weight\ 1\n\n\ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ windowFit\ \$w\n\ \ \ \ \ \ \ \ grab\ set\ \$w\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ \ proc\ ::he::dialog::colordialog_checkAndSetInitialcolor\ \{value\}\ \{\n\ \ \ variable\ colordialog\n\n\ \ \ foreach\ \{r\ g\ b\}\ \[winfo\ rgb\ .\ \$value\]\ break\n\ \ \ set\ colordialog(-initialcolor)\ \[format\ \"#%02x%02x%02x\"\ \[expr\ \{\$r/256\}\]\ \[expr\ \{\$g/256\}\]\ \[expr\ \{\$b/256\}\]\]\n\ \n\ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_refresh\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ set\ w\ \$colordialog(w)\n\ \ \ \ \ \ \ \ set\ h\ \$colordialog(hue)\n\ \ \ \ \ \ \ \ set\ s\ \$colordialog(saturation)\n\n\ \ \ \ \ \ \ \ if\ \{\$h\ eq\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ 180\n\ \ \ \ \ \ \ \ \}\n\n\ \ \ \ \ \ \ \ set\ x0\ \[expr\ \{(\$h\ /\ 2)\ +\ 5\}\]\n\ \ \ \ \ \ \ \ set\ y0\ \[expr\ \{(100\ -\ \$s)\ +\ 5\}\]\n\n\ \ \ \ \ \ \ \ \$w.c.dial\ coords\ hsval\ \[expr\ \{\$x0-4\}\]\ \[expr\ \{\$y0-4\}\]\ \[expr\ \{\$x0+4\}\]\ \[expr\ \{\$y0+4\}\]\n\n\ \ \ \ \ \ \ \ set\ b\ \$colordialog(brightness)\n\ \ \ \ \ \ \ \ set\ y1\ \[expr\ \{(100\ -\ \$b)\ +\ 5\}\]\n\n\ \ \ \ \ \ \ \ \$w.c.dial\ coords\ bval\ 189\ \$y1\ 201\ \$y1\n\ \ \ \ \ \ \ \ \$w.c.sample\ configure\ -background\ \[colordialog_hsb2rgb1\ \$colordialog(hue)\ \$colordialog(saturation)\ \$colordialog(brightness)\]\n\n\ \ \ \ \ \ \ \ foreach\ \{win\ index\}\ \[list\ \$w.e.er\ red\ \$w.e.eg\ green\ \$w.e.eb\ blue\ \$w.e.eh\ hue\ \$w.e.es\ saturation\ \$w.e.ev\ brightness\]\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$win\ configure\ -validate\ none\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$win\ delete\ 0\ end\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$win\ insert\ end\ \$colordialog(\$index)\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \$win\ configure\ -validate\ all\n\ \ \ \ \ \ \ \ \}\n\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_vcmdRGB\ \{value\ type\ name2\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ state\ 0\n\ \ \ \ \ \ \ \ switch\ -exact\ --\ \$type\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ key\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 255)\ ||\ (\$value\ eq\ \{\})\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ focusout\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 255)\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(\$name2)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$value\ ne\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ puts\ \"A2\ \$value\ \$type\ \$name2\"\;update\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_hsb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \$state\n\ \}\n\n\ proc\ ::he::dialog::colordialog_vcmdH\ \{value\ type\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ state\ 0\n\ \ \ \ \ \ \ \ switch\ -exact\ --\ \$type\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ key\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 359)\ ||\ (\$value\ eq\ \{\})\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ focusout\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$value\ >=\ 0\ &&\ \$value\ <=\ 359\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(hue)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$value\ eq\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(hue)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(saturation)\ 0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \$state\n\ \}\n\n\ proc\ ::he::dialog::colordialog_vcmdS\ \{value\ type\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ state\ 0\n\ \ \ \ \ \ \ \ switch\ -exact\ --\ \$type\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ key\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 100)\ ||\ (\$value\ eq\ \{\})\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ focusout\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 100)\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(saturation)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$value\ ne\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$colordialog(hue)\ eq\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(hue)\ 0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \$state\n\ \}\n\n\ proc\ ::he::dialog::colordialog_vcmdB\ \{value\ type\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ state\ 0\n\ \ \ \ \ \ \ \ switch\ -exact\ --\ \$type\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ key\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 100)\ ||\ (\$value\ eq\ \{\})\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ focusout\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{(\$value\ >=\ 0\ &&\ \$value\ <=\ 100)\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ colordialog(hue)\ \$value\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ state\ 1\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$value\ ne\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \$state\n\ \}\n\n\ proc\ ::he::dialog::colordialog_destroy\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ grab\ release\ \$colordialog(w)\n\ \ \ \ \ \ \ \ destroy\ \$colordialog(w)\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ command\ of\ ok\ button\n\ proc\ ::he::dialog::colordialog_ok\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ colordialog(selected)\ \[format\ \"#%02x%02x%02x\"\ \$colordialog(red)\ \$colordialog(green)\ \$colordialog(blue)\]\n\ \ \ \ \ \ \ \ colordialog_destroy\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ command\ of\ cancel\ button\n\ proc\ ::he::dialog::colordialog_cancel\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ colordialog(selected)\ \{\}\n\ \ \ \ \ \ \ \ colordialog_destroy\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ add\ user\ defined\ color\n\ proc\ ::he::dialog::colordialog_add\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ if\ \{\$colordialog(c)\ eq\ \{\}\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ tk_messageBox\ -icon\ error\ -type\ ok\ -message\ \"No\ color\ button\ selcted!\"\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ return\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ set\ w\ \$colordialog(w)\n\ \ \ \ \ \ \ \ set\ color\ \[\$w.c.sample\ cget\ -background\]\n\ \ \ \ \ \ \ \ set\ colordialog(\$colordialog(c))\ \$color\n\ \ \ \ \ \ \ \ \$w.c.s.\$colordialog(c)\ configure\ -bg\ \$color\ -selectcolor\ \$color\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ choose\ user\ defined\ color\n\ proc\ ::he::dialog::colordialog_sel\ \{win\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ color\ \[\$win\ cget\ -background\]\n\ \ \ \ \ \ \ \ scan\ \$color\ \"#%2x%2x%2x\"\ \ colordialog(red)\ colordialog(green)\ colordialog(blue)\n\n\ \ \ \ \ \ \ \ colordialog_set_hsb\n\ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ calculate\ Brightness\ from\ y-coordinate\n\ proc\ ::he::dialog::colordialog_set_b\ \{y\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ if\ \{\$y\ <\ 5\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ y\ 5\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$y\ >\ 105\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ y\ 105\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ set\ colordialog(brightness)\ \[expr\ \{100\ -\ (\$y\ -\ 5)\}\]\n\n\ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ #\ calculate\ hue\ and\ saturation\ from\ x-\ and\ y-coordinate\n\ proc\ ::he::dialog::colordialog_set_hs\ \{x\ y\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\n\ \ \ \ \ \ \ \ if\ \{\$y\ <\ 5\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ y\ 5\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$y\ >\ 105\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ y\ 105\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ if\ \{\$x\ <\ 5\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ x\ 5\n\ \ \ \ \ \ \ \ \}\ elseif\ \{\$x\ >\ 184\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ x\ 184\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ set\ colordialog(hue)\ \ \ \ \ \ \ \ \[expr\ \{(\$x\ -\ 5)\ *\ 2\}\]\n\ \ \ \ \ \ \ \ set\ colordialog(saturation)\ \[expr\ \{100\ -\ (\$y\ -\ 5)\}\]\n\n\ \ \ \ \ \ \ \ colordialog_set_rgb\n\ \ \ \ \ \ \ \ colordialog_refresh\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_set_rgb\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ rgb\ \[colordialog_hsb2rgb\ \$colordialog(hue)\ \$colordialog(saturation)\ \$colordialog(brightness)\]\n\ \ \ \ \ \ \ \ set\ colordialog(red)\ \ \ \[lindex\ \$rgb\ 0\]\n\ \ \ \ \ \ \ \ set\ colordialog(green)\ \[lindex\ \$rgb\ 1\]\n\ \ \ \ \ \ \ \ set\ colordialog(blue)\ \ \[lindex\ \$rgb\ 2\]\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_set_hsb\ \{\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ hsb\ \[colordialog_rgb2hsb\ \ \$colordialog(red)\ \$colordialog(green)\ \$colordialog(blue)\]\n\ \ \ \ \ \ \ \ set\ colordialog(hue)\ \ \ \ \ \ \ \ \[lindex\ \$hsb\ 0\]\n\ \ \ \ \ \ \ \ set\ colordialog(saturation)\ \[lindex\ \$hsb\ 1\]\n\ \ \ \ \ \ \ \ set\ colordialog(brightness)\ \[lindex\ \$hsb\ 2\]\n\ \ \ \ \ \ \ \ return\n\ \}\n\n\ proc\ ::he::dialog::colordialog_hsb2rgb\ \{h\ s\ v\}\ \{\n\ \ \ \ \ \ \ \ set\ s\ \[expr\ \{\$s\ /\ 100.0\}\]\n\ \ \ \ \ \ \ \ set\ v\ \[expr\ \{\$v\ /\ 100.0\}\]\n\n\ \ \ \ \ \ \ \ if\ \{\$s\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ v\ \[expr\ \{round(255*\$v)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ r\ \$v\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ g\ \$v\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ b\ \$v\n\ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ hi\ \[expr\ \{fmod(floor(\$h\ /\ 60.0),\ 6)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ f\ \ \[expr\ \{\$h\ /\ 60.0\ -\ \$hi\}\]\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ p\ \[expr\ \{round(255\ *\ \$v\ *\ (1.0\ -\ \$s))\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ q\ \[expr\ \{round(255\ *\ \$v\ *\ (1.0\ -\ \$s\ *\ \$f))\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ t\ \[expr\ \{round(255\ *\ \$v\ *\ (1.0\ -\ \$s\ *\ (1.0\ -\ \$f)))\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ v\ \[expr\ \{round(255\ *\ \$v)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ switch\ \[expr\ \{int(\$hi)\}\]\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 0\ \{set\ r\ \$v\;\ set\ g\ \$t\;\ set\ b\ \$p\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1\ \{set\ r\ \$q\;\ set\ g\ \$v\;\ set\ b\ \$p\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 2\ \{set\ r\ \$p\;\ set\ g\ \$v\;\ set\ b\ \$t\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 3\ \{set\ r\ \$p\;\ set\ g\ \$q\;\ set\ b\ \$v\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4\ \{set\ r\ \$t\;\ set\ g\ \$p\;\ set\ b\ \$v\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 5\ \{set\ r\ \$v\;\ set\ g\ \$p\;\ set\ b\ \$q\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \[list\ \$r\ \$g\ \$b\]\n\ \}\n\n\ proc\ ::he::dialog::colordialog_hsb2rgb1\ \{h\ s\ v\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ set\ rgb\ \[colordialog_hsb2rgb\ \$h\ \$s\ \$v\]\n\ \ \ \ \ \ \ \ return\ \[format\ \"#%02x%02x%02x\"\ \[lindex\ \$rgb\ 0\]\ \[lindex\ \$rgb\ 1\]\ \[lindex\ \$rgb\ 2\]\]\n\ \}\n\n\ proc\ ::he::dialog::colordialog_rgb2hsb\ \{r\ g\ b\}\ \{\n\ \ \ \ \ \ \ \ variable\ colordialog\n\ \ \ \ \ \ \ \ if\ \{\$r\ ==\ 0\ &&\ \$g\ ==\ 0\ &&\ \$b\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ 0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ s\ 0\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ v\ 0\n\ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ r\ \[expr\ \{\$r\ /\ 255.0\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ g\ \[expr\ \{\$g\ /\ 255.0\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ b\ \[expr\ \{\$b\ /\ 255.0\}\]\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ l\ \[list\ \$r\ \$g\ \$b\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ max\ \[lindex\ \[lsort\ -real\ \$l\]\ end\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ min\ \[lindex\ \[lsort\ -real\ \$l\]\ 0\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ maxColor\ \[lindex\ \[lindex\ \[lsort\ -index\ 0\ -real\ \[list\ \[list\ \$r\ r\]\ \[list\ \$g\ g\]\ \[list\ \$b\ b\]\]\]\ end\]\ 1\]\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ maxColor\ \[lindex\ \[lindex\ \[lsort\ -index\ 0\ -real\ \[list\ \[list\ \$r\ r\]\ \[list\ \$g\ g\]\ \[list\ \$b\ b\]\]\]\ end\]\ 1\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ s\ \[expr\ \{int((\$max\ -\ \$min)\ /\ \$max\ *\ 100)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ v\ \[expr\ \{int(\$max\ *\ 100)\}\]\n\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$s\ ==\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \{\}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ switch\ -exact\ --\ \$maxColor\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ r\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \[expr\ \{int((0.0\ +\ (\$g\ -\ \$b)\ /\ (\$max\ -\ \$min))\ *\ 60)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ g\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \[expr\ \{int((2.0\ +\ (\$b\ -\ \$r)\ /\ (\$max\ -\ \$min))\ *\ 60)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ b\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \[expr\ \{int((4.0\ +\ (\$r\ -\ \$g)\ /\ (\$max\ -\ \$min))\ *\ 60)\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ \{\$h\ <\ 0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ set\ h\ \[expr\ \{\$h\ +\ 360\}\]\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \ return\ \[list\ \$h\ \$s\ \$v\]\n\ \}\n\n\ set\ ::he::dialog::colordialog(img_hs)\ \[image\ create\ photo\ -data\ \{\n\ \ \ \ \ \ \ \ R0lGODlhtQBlAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/\n\ \ \ \ \ \ \ \ AP//AAAA//8A/wD//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBmZgBm\n\ \ \ \ \ \ \ \ mQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/\n\ \ \ \ \ \ \ \ AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMz\n\ \ \ \ \ \ \ \ mTMzzDMz/zNmADNmMzNmZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPM\n\ \ \ \ \ \ \ \ ADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYA\n\ \ \ \ \ \ \ \ mWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ\n\ \ \ \ \ \ \ \ AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/\n\ \ \ \ \ \ \ \ mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lm\n\ \ \ \ \ \ \ \ AJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnM\n\ \ \ \ \ \ \ \ mZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wz\n\ \ \ \ \ \ \ \ AMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZ\n\ \ \ \ \ \ \ \ mcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8A\n\ \ \ \ \ \ \ \ AP8AM/8AZv8Amf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9m\n\ \ \ \ \ \ \ \ mf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///MAP/MM//MZv/Mmf/MzP/M////\n\ \ \ \ \ \ \ \ AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAC1AGUAAAj/ALlxEzdQnEF0\n\ \ \ \ \ \ \ \ 4tApROeOobuH9NzRm0hPX0V9GPVZ02itoyxrskLKcjTSkUk1jtSoVGOEpREj\n\ \ \ \ \ \ \ \ R2AemYnkCJKbSJLkTMJTSRIlQJUsEbqk6JIiR4so/VHkh9MfOaDmmDojx4yr\n\ \ \ \ \ \ \ \ M1pkbdEiStcoYOtEqUO2TiazmdL2ytSrba9wb8PJDQeOLri738B92/vNW19v\n\ \ \ \ \ \ \ \ gLt560a4GzfDAgUSNHgw4cKGDyFKpGgx48aOHkGKJGnyZMqVLV+KjjmTpk2c\n\ \ \ \ \ \ \ \ Onn2/Bl0qFGkSpc2fRp1KlWrWLVy3e0VbNixZc+mVcvWLdy5de/i1cvXL+DA\n\ \ \ \ \ \ \ \ gwsfTixwHOPG6R47fCdx8sR9Fy3v/8MMEuSskJxNPkK5kuWa0TLZ2Dx9s83O\n\ \ \ \ \ \ \ \ 1W5aE31TFLbSNEw9BdUYtlllVRdX6cbVFb79tkdwaH3CVnFtnRMXcucop5de\n\ \ \ \ \ \ \ \ 5ezlHGDkCFaYYeNQN1BBjS3EkEOSUVRReJdh9pFII5XkWXuhiQaTTKbhlNN9\n\ \ \ \ \ \ \ \ P7EGlGv9JSWbgLXZVhVWWW3F21e/lWUWWsS59daFySmXF199/QXdiNNVx02J\n\ \ \ \ \ \ \ \ 1qUjTnbZvYOOmtxxVw89b74J3j760DnendZcI4ue5/XpyCyOrCeoGmsQasR7\n\ \ \ \ \ \ \ \ axyRaKJsINGofZAm0UYS+eX3hhKX8qdpEW8UkYanPwA4xg+jEkggggheMYOq\n\ \ \ \ \ \ \ \ V7TQ6qtR7P8Rax0PflKHrRJKOEwvu+5q4TnhAJvhsOCY842xHSbrTTnehOhs\n\ \ \ \ \ \ \ \ N+NAO+aJ16W4ImSRReRiZRjFmBmN6HXG3mcqwVdaaTXdlJpqqwUlFFFHGdnU\n\ \ \ \ \ \ \ \ bE4leduSuWXVW4NjAScclRNaeZxcWS7HpYfPiRgdYYmRKU6ZZ56JTprutOlO\n\ \ \ \ \ \ \ \ PRfDSc+cddZpzXjX5LmnLH4C+kiggaqxXqGIHqroEfLF7CgSk07qBqWUKmEp\n\ \ \ \ \ \ \ \ pkts2umnAAZNag6n5tCF0TOkuqqrrkbBoKxQ03prJrlmMozVvPbya7DBgpOh\n\ \ \ \ \ \ \ \ OcUe+42yzJLTbLPdhBgtmdQWZKaKCqkZWXdvTsTteBx5pOdmIwH/Kq5K77HE\n\ \ \ \ \ \ \ \ Ukzv9TizujtN6pO7l7521KfzPkWgVLYhmC/TvX0lq5Rk2TrchLu2NXCGduFl\n\ \ \ \ \ \ \ \ bHN9MZswYSUaRuLDsJuJ5pprVnxxxnJuvHHHdn4ssp58kvwnyoOu7DKjMMM8\n\ \ \ \ \ \ \ \ c6Q157xzpj1H3+nPoZJqvalGI600rAw+PWutU+uKta9aa821sF6HbSyyYy97\n\ \ \ \ \ \ \ \ 9rNqT+swxLOzabubuOveO8i/j1wy8SojlKFatqjkNepRNJOUAm9WKUzxbHqe\n\ \ \ \ \ \ \ \ ApXQSkW07KFqVUt7VdO89yDwVU18vSof+r6mPrGR7X1pg5a02GYd+k2MdhbD\n\ \ \ \ \ \ \ \ mAw1xrH95emGwCOZ8EyWspUJEFEvkxkC/5vHQOc5UFM941QEgVY9ChbtgqzK\n\ \ \ \ \ \ \ \ oNNi9b1bhc9qWAzh1kZYrC6ub2ztKxva1KbC+cVOYvWrnQzzV0PfhSyH/+Ph\n\ \ \ \ \ \ \ \ oFg2wOMZcHk0S2ARGwg9CDJRVEPD3tGgmMENTjFqHbQiCMcnwq6R8IsnFOOz\n\ \ \ \ \ \ \ \ 1rbCcZRpHLJLR5rS0aZ3yLAecqrHnPZhJ1J+7BpvnAWfZgGoWTziZK8U1BpY\n\ \ \ \ \ \ \ \ NkuYrSFmbHgUG2rWBga6wVJuyNQbNDVMTqUhaGMQ1RhM1YVBNjNpV2BVNGN1\n\ \ \ \ \ \ \ \ BajtoVZ7yNUnrjaMbmptGL86h7DE6TVzgM0c5UBWOZhVDnKYzZ3OsuQKzyi7\n\ \ \ \ \ \ \ \ F9ovhmzcHZ7eOP+y4LWSeCmjIxCRd0A8EhFnfHygEv/YxEBaMGkYZJUhoVZF\n\ \ \ \ \ \ \ \ XFHtotzM2hbTd06xsY+d70MbJeeHyTNpck2cXNM73OTJi4FyY6Kskyn3gco8\n\ \ \ \ \ \ \ \ oXJPrCTZI1r5SpWtYWW1nCUudQmpNtisl5T6JaaC2bNivuGYnjpmqJZJqi4w\n\ \ \ \ \ \ \ \ E1VXSNU0o2lNbOLqE7raptW8eQ5wBouc5zBnscx5rHWOjRzsdGfaxqE2S44J\n\ \ \ \ \ \ \ \ di5MU+3wFyca6tONONTh/2AZQB8ONIjKG+ICEaqzIybxZxK8nkMHCdHtGZKD\n\ \ \ \ \ \ \ \ UrMoCLNGPi6eM2zJCiMKJ1lJS6YDk5rkJCdX6snWghKU+xClKElJW5r/0hSV\n\ \ \ \ \ \ \ \ 11AlK1m5097G8qezDK5Qb5nLXe7SqMh1Qy9/GczmDvO5w0zDU4+ZhmRadwxW\n\ \ \ \ \ \ \ \ zW4zu5DVaHqXq9W8ZjazCdZtmreb3SyresXJ3rSm1ZzoROc620lfeJKDrpbM\n\ \ \ \ \ \ \ \ bwtLmtqJpZS1F2spbGFqp2uA7Ka5XSVPTdbTR/yUUEG9Jcxy6ahd0syolOql\n\ \ \ \ \ \ \ \ zoK5VE1JN6pASyaplkk0qxrtmdyVZveqGatr0iqbtwKr1cSa3m8KyxxfY2t8\n\ \ \ \ \ \ \ \ x7bOZcG1WXK9b11Ni0nUavIdqmWta18L29qS0sC4xa1ud8tbV/7WwQ4eLhuI\n\ \ \ \ \ \ \ \ m8s2GBe5vVwuc50LXelSl7rXXeYytbtd7qa4/5pwFu94P0FesA5jm+hNb3vF\n\ \ \ \ \ \ \ \ iWP4wjed850vXO2L3/uSib+Y9C+bOFkxAb90wLQ95YGBl1NXMhiWDw7uoWq5\n\ \ \ \ \ \ \ \ 5QNaGLmSQipzNyzM6UGVulMtFYm3a7SsriqarmLxHqr5Ylxlk2o09maN2VvO\n\ \ \ \ \ \ \ \ HK/PrfQF8jvpCi27Ejm1qUWykuuxZNjK1slPvi0qdZvb3fbWyq8ErpaL6+Vu\n\ \ \ \ \ \ \ \ JzfMY34DmaH71Oke07rVVTOb3dxd8Mr5mnQu73nxnF5wgnPP7vUzoOW7zkG3\n\ \ \ \ \ \ \ \ E5741e9pB57sJLOW2UyOrcKjHeVpV7vKvs02loV7y4oX98vHVa7GmSvujkfX\n\ \ \ \ \ \ \ \ 3GhO95qxi93tdvfN7v8OL7znXN4751m99863n+MbaH8TWsj6LbIm1VHwlcLj\n\ \ \ \ \ \ \ \ 4J6shz1eu3B+MByV2HD4bmkB8VdCQuLBhYTFixuJ44JZEmJm7iTI/dRJnPnc\n\ \ \ \ \ \ \ \ jVCzug/R5mZeIRDenfU1AyHeeH+iFC3HczLQu9528Pm95mCHOQG9znX0+9/k\n\ \ \ \ \ \ \ \ UIc7A55fgiNb2UpuNtFna9uGJ5jKTY/lxIXb6Yt/GczgHvO4zQzyNKu75G1u\n\ \ \ \ \ \ \ \ d9pV3vY6xz3P9WZvn2fO95oDHuCGHoc6ZC/7dPAcHunA/c9/bo939H7oQ+dH\n\ \ \ \ \ \ \ \ PYRv9OLvgx/XQH7Slz8LbMyC6dB/BC0e8fTqr0Hq2GcDJNhQ9e63IRJtwLr/\n\ \ \ \ \ \ \ \ +N0gCTdMwvzmf8PW158GrzciDe8Pe9gPMQb6k53sgehC/tHO/7Pvge2lsAcB\n\ \ \ \ \ \ \ \ CHdwlwyfYIBzN3ftMAwLaHcOeA7tYA4RqHcUWA7sUA5+l4HksA6B14GzN3sD\n\ \ \ \ \ \ \ \ Z2RJtlorhXBB52wL13gNN2VUFnFXFlydxmUYB2Yal3UdF0wf93XVJXKfV3bs\n\ \ \ \ \ \ \ \ lnJyFm+m53L0Zm/rJXP6xm+C9nqDF3sfaHtQqHvvsHu+53tCd4XEd3xaiHxc\n\ \ \ \ \ \ \ \ eA3M53zOF33TN33Wh33Xp31o6H3gB37jV37ld37rp37q1350GH9jIH/1V39d\n\ \ \ \ \ \ \ \ cH/6p39n94dsF4gCKIBvV4gIOAwJyIAMCIGMGIGO/5h3eWeBkqiBHMiBgveB\n\ \ \ \ \ \ \ \ tHdaIIhsuUeCrNV7TAZKwkdbUIZ8UpZbzmdtrjR9Lyh127Z9XXZc4GdUG1d+\n\ \ \ \ \ \ \ \ v+RxXldu1BV2O6hmZEdy24V27DZraPdugyhvYGWAqKeIqpdWEfhn6HSBS7iB\n\ \ \ \ \ \ \ \ N0d7T8hzt5d7U7iNv2eFwTd8w7eFx5d8XliOYPh86DiG1LeOZrh97sh93Pd9\n\ \ \ \ \ \ \ \ 8tiG5Id+cCiH7Od+8Ad/d5iH9reHfbh/gPh/BDmAhViAB3iAiKiIDdiIECiB\n\ \ \ \ \ \ \ \ kFiBF5iBGEiNlxh41lh72NiJVMh73oiF4Fh85Lh85th86fh80seO1Hd9LPmO\n\ \ \ \ \ \ \ \ 26eG8xh+9fiG9jiHXqePdv84f/4IkPvnh/0niABIiASYkImogAz5kBMYkZE4\n\ \ \ \ \ \ \ \ kRhYkZbogRm5kbqnjR75e1f4jcYnkl34hSYZhiipjmV4hi8Jj2sYfmbphvV4\n\ \ \ \ \ \ \ \ j3F4k3W4j3iok3yIfwHpf0FpkAh5iInYkA/4iEl5gX45iU5pkRiJiVLJkVRZ\n\ \ \ \ \ \ \ \ hVYJfCE5jlvphV2ZjilJhuzYkmKZhmQZk/RIk/nYlm+5k3zYkz9Jl4M4gEJJ\n\ \ \ \ \ \ \ \ lAqZl4vIlxEpiUxZiYJ5idaoDrenDroHD7sHD79nD8Cnm8NnD8XHD7/Jhdiw\n\ \ \ \ \ \ \ \ fMPZfLQQhrQwhpCgnNUHCS8JCd0XCWsYCeJHneQnCW8oCXA4CevHne3XCPEH\n\ \ \ \ \ \ \ \ nnf/eAjzdwj3FwjnuX+BAICBMIClQIClgIDJkIDzyYDJ4IDtgJ+OyA4UyJ8W\n\ \ \ \ \ \ \ \ uA4TuQ6VqA4DCpvXaJgdiZhXGZLhqJXm6JjnKIYpGZbZN5YwyYYyiZZqaZOc\n\ \ \ \ \ \ \ \ yY94+I+f6ZMDWZeleZcLaZR6iZRK+ZetSY1PSZiyKZu5R5u0aZu+h5u4yZv8\n\ \ \ \ \ \ \ \ 4Ju+CZzHB5zYwA9BmnzDOZzHaZzJmaTS55xM6o5MGgnQyX3SSZ3UGX7YqZ3a\n\ \ \ \ \ \ \ \ aX7cuaU32QiT4KXgCX/kOab2Z57ouZ76t55qyp6l0J7veYDxGZ/12Q73eZ/5\n\ \ \ \ \ \ \ \ CYH5yQ7toKcSyJ/8CaD/KaCCuoExGqMaGYUcyY2I+ZFY/8mYIwmhJgl9Xzmh\n\ \ \ \ \ \ \ \ k+mSZBmPGCp+GZqW6ceWONmPcKmHISqQQDmapYmARHmiR6maEgmYlPiagxmj\n\ \ \ \ \ \ \ \ 8ECjtmmb9oCjupmrubqjvAqcviqkQlqkRooNx1msSZqcy9mkTwqd0DmlkkCl\n\ \ \ \ \ \ \ \ VxqtWMql1Aqm4HmtY9oIZGqmh3Cma7qebRqu7xmnySCn83mudUqn+bmuebqn\n\ \ \ \ \ \ \ \ fvqn7ACg8iqoAkqghSqjsql7tJl7NnqrubmbxOejwEqkxAmGR6qktLCc1Oec\n\ \ \ \ \ \ \ \ C+uk3RelU/p9VXql1wmH2ql+3vml4Sl/5Fl/5rmH6Jmm6hmI7SmAJTuucCqf\n\ \ \ \ \ \ \ \ 9NmAd7qn+9mffgmog7oOBBp4sv9ps4U6q7W6s7iao7rJqz36q8AapEQrrMRK\n\ \ \ \ \ \ \ \ rMeasEqrrFDatFP6tM8atVc6CdNKrV96tdZ6rdqqrebZtWfard26puI6ruNa\n\ \ \ \ \ \ \ \ rmZ7rupqp+zqsnratu8ar/FKrzQ7t4Uqe/i6r7U6hbh5o7sJsMMHnESqfMV5\n\ \ \ \ \ \ \ \ tEj6fMm5pGTonNfnnNoHsdIpsdUpfthpflm6pd/pfmG6tR5bpueJf+t5duv5\n\ \ \ \ \ \ \ \ fyf7pu+JgPGJiPU5nyy7nxPon3AbqBgooIRqibJptzpbozvrrz67qzwqtL9K\n\ \ \ \ \ \ \ \ tMEqrMWKtMearAnrnE3brFALrdJKtc5rtdwJphqrtdnatV4Ltmoarm5KtmZr\n\ \ \ \ \ \ \ \ rmibrmv/u65t667vKq9xS6/2SrP3Sqs8q7v+qqu967vAK7xHm7RJarzKirzK\n\ \ \ \ \ \ \ \ 66zQSp3Nq51WK73Uu7XWa71f+63gur1lS67eq7pqy67jW75wK7eCmr73Gg/s\n\ \ \ \ \ \ \ \ a5vx0LO6eQ+8u6P94Lv80A/zO5zZMKzFWgvFm7C1sKxQWgtPS6W24L/RegtV\n\ \ \ \ \ \ \ \ y523EL1YewtaC56HEAvbap6rwK1qugrtqcCrwMDz+QzfS6fzEL7tMA8RzJ/y\n\ \ \ \ \ \ \ \ AK/yGg/oS7MYnLO0iru1+r7w27tBW8JGW7/Eu7THy7TM6rTLK63TesMC3MM+\n\ \ \ \ \ \ \ \ TMDX663fqr1ju8Doiq5pK75s+7ZWfL50q74xisGGDA8bnMjw/3APi7zI9uDB\n\ \ \ \ \ \ \ \ /WAPkTzJI1zJIUzCmIwNJ7zJmkwL2UALKhzKoAwJLVzKpBwJMJzKkTDDrCwJ\n\ \ \ \ \ \ \ \ tuDKkmDDsjwJOVzLtNwIPJzLjRALu7zLP3wIQxzMgWDExDzMw1wKSZzMpfAM\n\ \ \ \ \ \ \ \ y7zMycDE85AM0TzNUVzNTyzF2MwOVbzN2rwO8rAOWBzO4KwOhtzFOtu+HAy/\n\ \ \ \ \ \ \ \ vSq0ZGzGxrrCyaq/yRvD/Su10fq81Yq12ErAXGvA2JvAeEy2StzA4Lu2UxzI\n\ \ \ \ \ \ \ \ 85rF9iqb5azIG8zIEP3IEg3JkizJljzC2JDJJMzJn9zRngzKIG3KIn3KMMzK\n\ \ \ \ \ \ \ \ qwzLr/zKshzLtNzStYzLMM3LMv3LQP8MxMEMzMZczMqcxMzc08/809AszdJs\n\ \ \ \ \ \ \ \ zVHMDtksxdz8zUrtzeDc1A0tqzW6wbnbyGEcyUALnCQ8tCZMvx9tvy28tM7Z\n\ \ \ \ \ \ \ \ wvQMw9Ipta98z7EMwDssx75Mx8Dsz8YM0Mgs0OXKzHss1H1c1H+szRLM1BSM\n\ \ \ \ \ \ \ \ wXR7yIoM0Y3swYZd0ZR8yRet0RmtyY7t0R4tyiOtyiad0iid1rNsy5oN07os\n\ \ \ \ \ \ \ \ 075c07980zo91zzdzD7NxEFNzddM1Edt1Hy9zUy91OL81IKNyIXtyId92Ilt\n\ \ \ \ \ \ \ \ yY290Y/dyZEd0qMs0qhc3JR90pat0pjt0rfc2b0806At2jk93Ttt2s6M2kAt\n\ \ \ \ \ \ \ \ 1Kt9za6N1K//3c2y7dTj3NC2PdiFPdESPckWrdjs3dgcDdwfLdkhTdLGvcr2\n\ \ \ \ \ \ \ \ ndywvNKa7dKc/dz+Hd1vLczETNpz3dPXnd3TPNTbbc2undTgzdSz7dTkPOEO\n\ \ \ \ \ \ \ \ fdsRrduIvd69/dub/NGfLN+TTcr0XdL3jdz5jdksrcs87NnQHdoBjtM6ndME\n\ \ \ \ \ \ \ \ buCn/dMJrtrd/d2wHd6zTeHkHA+JDOSLHA8QfQ+GbeSSfA+T3A+XzOQjzOQZ\n\ \ \ \ \ \ \ \ nQ2YnA2bTOWeXAsdXQuhrOWkrOWo7OW2UAusbAspTeaxbAuyfAu1rOa0rOa4\n\ \ \ \ \ \ \ \ HAu5HAsyLec/vAo1vQrBjOfAjOfIzOfPsAo9/QyoLejS/AzTPA/X/4zoUYzo\n\ \ \ \ \ \ \ \ Ri0P2CwP2wzp3hwPSg3k4AzkPl7hhH3h6Z3h7I3RmfzekC3coSzipVzflW3i\n\ \ \ \ \ \ \ \ lq3fzK3i//3ZLi7do63MNH7gqa3drJ3jDr7U3xzh5A3kD03kQ17kRz7JSi7J\n\ \ \ \ \ \ \ \ Ts7klyzlUV7lzn7lWb7lqQzmYr7K1U7mZa7SaB7LbK7max7nKy7nu0znsWDn\n\ \ \ \ \ \ \ \ dZ7nyezngL7M6y7ogz7Nhi7Nio7o1+zojR7p+D7plR7OmF7h5r3p6K3eib3h\n\ \ \ \ \ \ \ \ vt3ho/7hpD7iqF7i+K3fKd7fLA7roG3TLz7g1V3aNI7g2q3gOe7dOx7bEC7e\n\ \ \ \ \ \ \ \ hgzs90DkJl/yRp7yKd8PSq7kyv7yyi7lMv/fD1Re8zafDVie8ziv5Twv5j4f\n\ \ \ \ \ \ \ \ 5kCP7UJ/C2iO5t5+9N4O50p/C3Le9E5f7lBv53g+9Xj+51YP6IDu7lo/D4Zu\n\ \ \ \ \ \ \ \ 6PT+9fTu6GI/D5Be9mYvD5Se9mgP7EIO7Igs7Ci/yEhu5Ma+5E0+5RtN5Zps\n\ \ \ \ \ \ \ \ 5Tif5R+u5aDs5Tz/5ax87WZO5rK87d7e5uA+7nN+55C/5+je5+ne0+1O6IIO\n\ \ \ \ \ \ \ \ 74ee6I+O1JCuzZKO9pXe65bO9myP8kSu8ivf8izf+jAP8zMv8zev8znf87b/\n\ \ \ \ \ \ \ \ 82Iu9NhO9Lxf9Ej/+0uv9E8v9VFP9caP9Vav9e7O9czf9WD//GMv9mev9mlv\n\ \ \ \ \ \ \ \ +j8e5BAN93O//XX/j+x4H+V5/+x9H/jS3uXTXvhjnu2urPiK7+ZM3/hN7/h1\n\ \ \ \ \ \ \ \ btN6PvXDzOdVz+6BPujvXuib3+gAMY/dPHkC5R1kd1DeOnnxFsaDuA5iPHUT\n\ \ \ \ \ \ \ \ 4927ePHeRo4c+937GLLfSJIls/U7mRIlymwtW9bKBlNmLZo1bdW6aUvnTp23\n\ \ \ \ \ \ \ \ bPkE+vPWUKJFh8a6hVRpLKZNY616GnXVVKqrnlm1+kzr1q3znnkFO0/sWLIF\n\ \ \ \ \ \ \ \ zRJEq1ChQ7YNLVrEGFdjx44hQYIsOVJlSpd9X8aMWVOwTZyFeR7+mRio0aSN\n\ \ \ \ \ \ \ \ myZ12hTq5KqVsV7FzFUz2K9fyYo9a1bt6LZv4WbEl7EjPo93/d0t6S8v/0p/\n\ \ \ \ \ \ \ \ e1tq8xtTm8zAtXbnLKwNsa1tihNvY3wLueOk2yIzrcZ08tNqVDGvqp5Za7Wu\n\ \ \ \ \ \ \ \ nfN1JpvvM8F8oQ/iG90wdUO3plWrplsXNt6Ve1nm5p1/8GDgOYf3NI4opZh7\n\ \ \ \ \ \ \ \ TjqppLKsquu000wrzsJKK8L0DiqNvbdSwzAeDO9hrcN7XgPxww/7ka1EEk8s\n\ \ \ \ \ \ \ \ MZvaVswGNxdbbNE3GXejcUZbhMOROB2L41E5H5ED8sdYnCMyluiONNJI7Jas\n\ \ \ \ \ \ \ \ rkkmn+Euyme+o3LKKecRL0sst8xSnvK+lAc9McMMU0MzU5Mrzbnim0+kvOzj\n\ \ \ \ \ \ \ \ Cz/A9DOsTv/+C2oxowbks8Dp/pxqwcuyatBB8P88+yy0tCaskC2IMtzQQw9D\n\ \ \ \ \ \ \ \ pBRFS1NksbYXN52x0xpzzLE44XgkTrlSg0R1SFWLdA5JV5mEVUpZraySSi5v\n\ \ \ \ \ \ \ \ 7RLM8sbk9UxfH31vI9bie82uj4rVizbbYMxttzl1I+ym3w4TDkCfistTOT6b\n\ \ \ \ \ \ \ \ KzA6yagDdMkFoSz0uwetHMus8hYlM731SoNUQw7nZe21ekWs1ER9UVSxX01h\n\ \ \ \ \ \ \ \ 3BRgT28kGNQdD0b1R4VZVTW6VpNsUkknZ+Xuu4pppRVXjXX1kkxePS4z3kjp\n\ \ \ \ \ \ \ \ nddefPG91F+VA+b0U099KzhmUmc+VUiGH3YV4lh3pphcizG2VUuOwfy4V5Hl\n\ \ \ \ \ \ \ \ lZRkSlEG8VJ+M10ZYIH/P70RZoNp7jFhrVflGmeIJX6y54trvTLojTseGmSj\n\ \ \ \ \ \ \ \ fRWZ5ElPzldlFlme+mWXaYw5VIR31PZmrnOemOdYyZ2V7FqxRDvxoj1m+0x8\n\ \ \ \ \ \ \ \ Onycw8j9wQfEyj/0B8TMSdw88xIzV1GbFUUP3UVtTEf9xtNVH1UbHl0nbhsg\n\ \ \ \ \ \ \ \ ZVeOdtlnJ7Ka3HM/sprem/QdyuB9r7gaKo2fMh8qlceSeeWzVN5LfL6cXnox\n\ \ \ \ \ \ \ \ Hw8Te0g5RNptuOFOGWqoWfYtRqoNvnrvrG3uOkmvAR+8ScLnNzxjoRNPu2gN\n\ \ \ \ \ \ \ \ Q9bw8cj9r9zkAkg5zXmucwYEnT9Et8DRKVCBqDvd6iI4QeK4zoKv24brbHe7\n\ \ \ \ \ \ \ \ /9vVjoO7053vhkQ84hmJhMMjXj6Cp0IWIu95L2zeC6mXj+lVj4Y31B4AH4e0\n\ \ \ \ \ \ \ \ 7iXNZEsr0YhWRCK59YtuLirf3fJGMFGpj29+YxjgdDYxKGFnflL6meGwVDYv\n\ \ \ \ \ \ \ \ IS5/amOcmPqnwwGWkYCVQ2Aa1Si6zDHQjQ+cYBwnmEE6XvCCH8RjHnUnuxBu\n\ \ \ \ \ \ \ \ o48hPGEgU2g8QraQhTJEZCKnp7wa4hCHZPTfGCUHOctV8kOX8xznGhi6TUaw\n\ \ \ \ \ \ \ \ Raf7JI0kOEocwe50GKwgjza4uxGysoSvFCHxsIPCKLnQlsdbHvRmKL1d+i97\n\ \ \ \ \ \ \ \ 18MQJCn3uDMWc4BqRKbn3ujG08FRjnKsYzTvmEc87v/Rj9f8ox8FKUgV+s6Q\n\ \ \ \ \ \ \ \ hSxkIsX5vEaWk4aPOycAJem/SUrOkgS8ZAE5OU8HztOT9zydb0jJOtWhko6x\n\ \ \ \ \ \ \ \ UyWRZNdKgvquVbFEKPBquVDh4XJKt0zeLm/IS4r60qI7BKAxNZo5NCbTo210\n\ \ \ \ \ \ \ \ 4DJDCk07SvN2GqRmSjmYTZZq84TfhKnyjDdOmpLTkeasISR1qFEzdrSjBmRj\n\ \ \ \ \ \ \ \ SIXKzGcW9ZQRNOk0UbrS27X0jwbdJjfBCdOZHlKGi7xpVnWqw3/474xdNeY/\n\ \ \ \ \ \ \ \ OGpAsaaxrEAtqxv/scy1HjWDa5UmXJf6jzzSFY92/eM/WKpXqPqOr+DU6zf/\n\ \ \ \ \ \ \ \ IdMXDhaRhn0hPgxbzq7etKv/W/VqTzdKQJCCVKTLNGocM+jWkpZUdii1plOx\n\ \ \ \ \ \ \ \ 2deobpOqMbUqVnGq1XSSsauvVWxsX+uP2YrVtrTF7W11m1vaasO2vgXuWoUb\n\ \ \ \ \ \ \ \ XOIO17i+3QZdlZtc5i7Xuc1NbjWUK13q6tW61cXuda2bj+0O1rvcBe93xRte\n\ \ \ \ \ \ \ \ 7iq2vLBFr2x3Kln2eu6nyoTvZYfazGdutrNJPakem4pN/rKUtCQ87VTDadXE\n\ \ \ \ \ \ \ \ 2nS1OEWn/9K7YMXStsG7hTBvfzvh3h7XwsUtbnKR+1wOQ5fD2QWxdkNcXe5K\n\ \ \ \ \ \ \ \ l7zjRXF4zfva86o3vcRUcE/BWkawjrW38V3rUHOs1me21Y5yrSOQNQhXPspO\n\ \ \ \ \ \ \ \ r/09/3Jen0pdbxIvsIAVcGAJW14DN5axOH1sjBfs4Ah3WcJf1q1vK1xhDBtX\n\ \ \ \ \ \ \ \ wx1Gs4fVjGbpRlfEby5xiuV8YjqLd8V3ZnCeXfzgB4M5t2K+cKDLPGgzC/fM\n\ \ \ \ \ \ \ \ Hm6zdd084jczmtFxrvOJ8bxnPVeay372cqb/PGFCb3jDawZ1mtk8XVI72rsm\n\ \ \ \ \ \ \ \ nnOqI+3dSVea0pS+dG03TWZB17rTFj60cxO960b32tSmhnR3VcxqV+f5H689\n\ \ \ \ \ \ \ \ Nm2TfWzbLtvZzYa2sqPNbGlXm9m+PTa2hXvs5HKb2d1WrrfFHW5yg9vczJbu\n\ \ \ \ \ \ \ \ sdNt3WNzt93Mdrd33z1vedc73veGd76P/Wr0xprPmqawcPBpfWuCK9fTom4u\n\ \ \ \ \ \ \ \ r928aF/3OtioRvWqzzvxYrv42da+OLU1nnGOTzvb1wb5uM8t8m+XnOQnLze6\n\ \ \ \ \ \ \ \ 9W3vleOb3i5n+cuZrdh9F9vftu1zwAG9c07b2ucHz/WnSb3whv8azt2FOIrx\n\ \ \ \ \ \ \ \ TPFW85vZT4d61KU+dapX3epXx3rWtb51rnc96zRHNrTBjnGPl13a2j57yLe9\n\ \ \ \ \ \ \ \ dm2PPOUodzu41z13lat75euGed5bPvOVgx3sXgd84AU/eMIX3vB+33jYpT32\n\ \ \ \ \ \ \ \ xKf92WhXu+PJ3Xa1g5vyKF+33E3Obs7jve719rzMa05vsMe79Hw3fOpVv3rW\n\ \ \ \ \ \ \ \ t57qAQEAOw==\n\ \}\]\n\ set\ ::he::dialog::colordialog(img_v)\ \[image\ create\ photo\ -data\ \{\n\ \ \ \ \ \ \ \ R0lGODlhCgBlAPcAAP////z8/Pr6+vf39/X19fLy8vDw8O3t7evr6+jo6Obm\n\ \ \ \ \ \ \ \ 5uPj4+Dg4N7e3tvb29nZ2dbW1tTU1NHR0c/Pz8zMzMnJycfHx8TExMLCwr+/\n\ \ \ \ \ \ \ \ v729vbq6uri4uLW1tbOzs7CwsK2traurq6ioqKampqOjo6GhoZ6enpycnJmZ\n\ \ \ \ \ \ \ \ mZaWlpSUlJGRkY+Pj4yMjIqKioeHh4WFhYKCgoCAgH19fXp6enh4eHV1dXNz\n\ \ \ \ \ \ \ \ c3BwcG5ubmtra2lpaWZmZmNjY2FhYV5eXlxcXFlZWVdXV1RUVFJSUk9PT01N\n\ \ \ \ \ \ \ \ TUpKSkdHR0VFRUJCQkBAQD09PTs7Ozg4ODY2NjMzMzAwMC4uLisrKykpKSYm\n\ \ \ \ \ \ \ \ JiQkJCEhIR8fHxwcHBoaGhcXFxQUFBISEg8PDw0NDQoKCggICAUFBQMDAwAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n\ \ \ \ \ \ \ \ AAAAAAAAAAAAAAAAAAAAACwAAAAACgBlAAAI/wABCBxIMIDBgwgFKFzIcIDD\n\ \ \ \ \ \ \ \ hxAJSJxIsYDFixgNaNzI8YDHjyARiBxJMoHJkygVqFzJcoHLlzAZyJxJs4HN\n\ \ \ \ \ \ \ \ mzgd6NzJ84HPn0AhCB1KNILRo0glKF3KdILTp1ApSJ1KtYLVq1gtaN3K9YLX\n\ \ \ \ \ \ \ \ r2AxiB1LNoPZs2g1qF3LdoPbt3A5yJ1Lt4Pdu3g96N3L94Pfv4BBCB5MOITh\n\ \ \ \ \ \ \ \ w4hFKF7MeITjx5BJSJ5MuYTly5hNaN7M+YTnz6BRiB5NOoXp06hVqF7NeoXr\n\ \ \ \ \ \ \ \ 17BZyJ5Nu4Xt27hd6N7N+4Xv38BhCB9OPIbx48hlKF/OfIbz59BpSJ9OvYb1\n\ \ \ \ \ \ \ \ 69htaN/O/Yb37+BxiN0fTz6H+fPodahfz36H+/fwecifT7+H/fv4fejfz/+H\n\ \ \ \ \ \ \ \ //8AAiHggAQGYeCBCAqh4IIMDuHggxASIeGEFBZh4YUYGqHhhhwe4eGHICIh\n\ \ \ \ \ \ \ \ 4ogkJmHiiSgqoeKKLC7h4oswMiHjjDQ2YeONODqh4448PuHjj0BCIeSQREZh\n\ \ \ \ \ \ \ \ 5JFISqHkkkxO4eSTUFIh5ZRUVmHllVhaoeWWXF7h5ZdgYiHmmGRmYeaZaGqh\n\ \ \ \ \ \ \ \ 5ppsbuHmm3ByIeecdHZh5514eqHnnnx+4eefgIIh6KCEhmHooYiKoeiijI7h\n\ \ \ \ \ \ \ \ 6KOQkiHppJQGBAA7\n\ \}\]\n======\n\n----\n\[RS\]:\ \"There\ is\ no\ way\"?\ Look\ at\ this:-)\n\ %\ winfo\ rgb\ .\ yellowgreen\n\ 39578\ 52685\ 12850\n\ %\ foreach\ \{r\ g\ b\}\ \[winfo\ rgb\ .\ yellowgreen\]\ break\n\ %\ format\ #%02x%02x%02x\ \[expr\ \{\$r/256\}\]\ \[expr\ \{\$g/256\}\]\ \[expr\ \{\$b/256\}\]\n\ #9acd32\n\n\[HE\]\ Thank\ you!\ Have\ this\ command\ completely\ forget.\ \nChanged\ it\ above.\ Know\ the\ file\ size\ is\ more\ pocketPC\ like\ :-)\n----\n\[EH\]\ Let's\ make\ the\ file\ size\ even\ smaller,\ but\ also\ display\ a\ truecolor\ Hue-Saturation\ palette\ instead\ of\ the\ dithered\ GIF\ one,\ and\ last\ but\ not\ least,\ allow\ the\ dialog\ to\ be\ resizable.\ This\ code\ replace\ the\ inlined\ images\ by\ dynamic\ ones,\ generated\ on\ the\ fly.\ Let's\ add\ a\ binding\ to\ <Configure>\ to\ have\ the\ dialog\ regenerate\ the\ images,\ and\ now\ this\ dialog\ will\ also\ display\ fine\ on\ true-VGA\ (640x480)\ PDA.\ \n\[HE\]\ Very\ good\ idea.\ I\ have\ tried\ an\ own\ solution\ in\ the\ very\ beginning.\ I\ tested\ your\ solution\ but\ got\ the\ same\ result.\ Calculating\ an\ truecolor\ palette\ creates\ two\ problems\ (at\ least\ on\ my\ pocketPCs):\n\ \ \ *\ I\ test\ it\ on\ two\ packetPC.\ The\ first\ try\ on\ an\ pda\ with\ windows\ mobile\ 2003\ se:\ the\ truecolor\ Hue-Saturation\ palette\ looks\ ugly.\ The\ second\ try\ on\ windows\ mobile\ 5.0\ looks\ great.\ I\ think\ it\ depends\ on\ \ the\ quality\ of\ the\ display.\ To\ use\ the\ code\ on\ both\ pocketPCs\ I\ need\ to\ use\ the\ gifs\ :-(\n\ \ \ *\ The\ startup\ time\ grows\ unacceptable\ for\ me\ on\ both\ pocketPC\ (+15\ -\ +20\ seconds).\ This\ is\ also\ a\ reason\ to\ use\ the\ gifs\ :-(\n\n'''2006-03-18'''\ I\ agree\ GIF\ is\ not\ so\ bad,\ but\ I\ can't\ help\ getting\ into\ the\ challenge\ when\ a\ Tcl\ code\ is\ supposed\ to\ be\ too\ slow\ \;-)\ So\ below\ is\ an\ updated\ version\ of\ hsmap\ generator,\ which\ now\ take\ less\ than\ 0.2s\ (vs.\ 15-20s\ you\ mentionned)\ to\ generate\ a\ 180x100\ Hue\ -Saturation\ palette.\ \[HE\]This\ is\ really\ fast.\ I\ use\ this\ for\ my\ PDAs.\ Even\ with\ the\ ugly\ truecolor.\[HE\]-end\ I\ don't\ understand\ how\ a\ truecolor\ image\ can\ look\ more\ ugly\ than\ an\ indexed\ one,\ even\ when\ displayed\ on\ \"older\"\ 4096\ colors\ screen\ \[HE\]It\ looks\ like\ a\ shaded\ 255\ color\ image.\[HE\]-end.\ Also,\ not\ related,\ but:\ I\ believe\ that\ adding\ a\ binding\ to\ <1>\ and\ not\ only\ <B1-Motion>\ to\ change\ color\ and\ brightness\ make\ the\ dialog\ more\ usable.\ \[HE\]\ To\ change\ the\ bindings\ is\ a\ good\ idea.\ But\ the\ tags\ hsmap\ and\ bmap\ doesn't\ exist.\ I\ add\ them\ to\ the\ images\ and\ \ I\ removed\ the\ binding\ to\ hsval\ and\ bval.\ all\ changes\ in\ the\ code\ above.\ \[HE\]-end\n\n\ \$w.c.dial\ bind\ hsmap\ <1>\ \"::he::dialog::colordialog_set_hs\ %x\ %y\"\n\ \$w.c.dial\ bind\ hsmap\ <B1-Motion>\ \"::he::dialog::colordialog_set_hs\ %x\ %y\"\n\n\ \$w.c.dial\ bind\ bmap\ \ <1>\ \"::he::dialog::colordialog_set_b\ \ %y\"\n\ \$w.c.dial\ bind\ bmap\ \ <B1-Motion>\ \"::he::dialog::colordialog_set_b\ \ %y\"\n\nBy\ the\ way.\ We\ need\ not\ only\ a\ binding\ to\ <Configure>\ to\ make\ the\ dialog\ resizable.\ colordialog_set_hs\ and\ colordialog_set_b\ are\ based\ on\ the\ geometry\ of\ the\ pictures.\ Changing\ this\ geometry\ needs\ changing\ this\ procs.\n\n\[EH\]\ Some\ other\ comments:\n\ \ \ *\ I\ suggest\ to\ add\ \{\}\ around\ your\ expr,\ especially\ in\ hsb2rgb/rgb2hsb\ procedures.\ This\ make\ a\ huge\ difference\ in\ performance\ (and\ since\ the\ dynamic\ image\ generator\ use\ them\ for\ each\ pixel...).\ \[HE\]\ I\ changed\ it\ in\ the\ code\ above.\ Testing\ the\ procedures\ shows\ great\ performance.\ But\ on\ my\ acer\ n50\ it\ doesn't\ look\ faster\ :-(\n\ \ \ *\ In\ checkAndSetInitialColor,\ you\ left\ the\ \"yellowgreen\"\ value\ given\ by\ Richard\ as\ an\ example.\ It\ should\ be\ \$value\ instead.\ Actually,\ the\ whole\ procedure\ is\ useless,\ since\ winfo\ rgb\ parse\ all\ valid\ color\ formats,\ so\ it\ should\ be:\ \[HE\]\ Fixed\ it\ in\ the\ code\ above\ and\ deleted\ it\ below.\n\ \ \ *\ Not\ specific\ to\ this\ dialog,\ but\ more\ generally\ to\ eTcl\ on\ PocketPC:\ ::etcl::autofit\ should\ be\ bind\ to\ <Expose>\ event\ too\ (together\ with\ <ConfigureRequest>).\ This\ is\ because\ if\ SIP\ state\ change\ when\ eTcl\ doesn't\ have\ the\ focus,\ it\ won't\ notice\ it.\ Not\ that\ important,\ but\ better.\ (I\ really\ have\ to\ release\ some\ documentation\ soon.\ Shame\ on\ me!).\ \[HE\]Thanks\ for\ the\ hint.\ Added\ it\ (Added\ it\ in\ \[Alternative\ dialogs\ for\ pocketPC/etcl\]\ too).\n\nI\ didn't\ want\ to\ edit/delete/break\ your\ code,\ so\ I\ let\ you\ apply\ the\ changes\ to\ it\ if\ you\ like\ this\ approach.\n\n======\n\ #\ Generate\ a\ vertical\ gradient\n\ proc\ ::he::dialog::vgradient\ \{width\ height\}\ \{\n\ \ \ set\ c0\ 0xff\n\ \ \ set\ c1\ 0x00\n\ \n\ \ \ set\ img\ \[image\ create\ photo\ -width\ \$width\ -height\ \$height\]\n\ \ \ if\ \{\$width<=0\ ||\ \$height<=0\}\ \{\n\ \ \ \ \ return\ \$img\n\ \ \ \}\n\ \n\ \ \ for\ \{set\ y\ 0\}\ \{\$y<\$height\}\ \{incr\ y\}\ \{\n\ \ \ \ \ if\ \{\$height<=1\}\ \{\n\ \ \ \ \ \ \ set\ gs\ \$c0\n\ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ set\ gs\ \[expr\ \{\$c0+((\$c1-\$c0)*\$y)/(\$height-1)\}\]\n\ \ \ \ \ \}\n\ \n\ \ \ \ \ set\ color\ \[format\ \"#%02x%02x%02x\"\ \$gs\ \$gs\ \$gs\]\n\ \ \ \ \ \$img\ put\ \[list\ \[list\ \$color\]\]\ -to\ 0\ \$y\ \$width\ \[expr\ \{\$y+1\}\]\n\ \ \ \}\n\ \n\ \ \ return\ \$img\n\ \}\n\ \n\ #\ Generate\ Hue-Saturation\ map\n\ proc\ ::he::dialog::hsmap\ \{reqwidth\ reqheight\ \{img\ \"\"\}\}\ \{\n\ \ \ if\ \{!\[string\ compare\ \"\"\ \$img\]\}\ \{\n\ \ \ \ \ set\ img\ \[image\ create\ photo\ -width\ \$reqwidth\ -height\ \$reqheight\]\n\ \ \ \}\ else\ \{\n\ \ \ \ \ \$img\ configure\ -width\ \$reqwidth\ -height\ \$reqheight\n\ \ \ \ \ \$img\ blank\n\ \ \ \}\n\ \n\ \ \ if\ \{\$reqwidth<=0\ ||\ \$reqheight<=0\}\ \{\n\ \ \ \ \ return\ \$img\n\ \ \ \}\n\ \ \ \n\ \ \ #\ Max\ brightness\n\ \ \ #\ set\ v\ 100.0\n\ \ \ set\ v\ 255\n\ \ \n\ \ \ #\ make\ code\ run\ \$rx*\$ry\ times\ faster.\ rx=ry=3\ still\ produces\ a\ nice\n\ \ \ #\ map\ with\ no\ visible\ artefact,\ while\ taking\ lest\ than\ 0.2s\ on\ \n\ \ \ #\ an\ ipaq\ 4150\ to\ generate\ a\ 180x100\ image\n\ \ \ if\ \{\$::tcl_platform(os)\ eq\ \{Windows\ CE\}\}\ \{\n\ \ \ \ \ set\ rx\ 3\n\ \ \ \ \ set\ ry\ 3\n\ \ \ \}\ else\ \{\n\ \ \ \ \ set\ rx\ 1\n\ \ \ \ \ set\ ry\ 1\n\ \ \ \}\n\ \n\ \ \ set\ width\ \[expr\ \{\$reqwidth/\$rx\}\]\n\ \ \ set\ height\ \[expr\ \{\$reqheight/\$ry\}\]\n\n\ \ \ set\ fmax\ \[expr\ \{\$width/6\}\]\n\ \ \ set\ pixels\ \[list\]\n\n\ \ \ for\ \{set\ y\ 0\}\ \{\$y<\$height\}\ \{incr\ y\}\ \{\n\ \ \ \ \ if\ \{\$height<=1\}\ \{\n\ \ \ \ \ \ \ set\ s\ 255\n\ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ set\ s\ \[expr\ \{(255*(\$height-1-\$y))/(\$height-1)\}\]\n\ \ \ \ \ \ \ if\ \{\$s<=0\}\ \{\n\ \ \ \ \ \ \ \ \ set\ s\ 0\n\ \ \ \ \ \ \ \}\n\ \ \ \ \ \}\n\ \ \ \ \n\ \ \ \ \ if\ \{\$s<=0\}\ \{\n\ \ \ \ \ \ \ #\ White\n\ \ \ \ \ \ \ for\ \{set\ x\ 0\}\ \{\$x<\$width\}\ \{incr\ x\}\ \{\n\ \ \ \ \ \ \ \ lappend\ pixels\ 0xff\ 0xff\ 0xff\n\ \ \ \ \ \ \ \}\n\ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ set\ x\ 0\n\ \ \ \ \ \ \ set\ p\ \[expr\ \{255-\$s\}\]\n\n\ \ \ \ \ \ \ foreach\ h\ \{0\ 1\ 2\ 3\ 4\ 5\}\ \{\n\ \ \ \ \ \ \ \ \ set\ f\ 0\n\ \ \ \ \ \ \ \ \ set\ xmax\ \[expr\ \{((\$h+1)*\$width)/6\}\]\n\ \ \ \ \ \ \ \ \ while\ \{\$x<\$xmax\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ set\ q\ \[expr\ \{255-(\$s*\$f)/\$fmax\}\]\n\ \ \ \ \ \ \ \ \ \ \ set\ t\ \[expr\ \{255-(\$s*(\$fmax-\$f))/\$fmax\}\]\n\ \ \ \ \ \ \ \ \ \ \n\ \ \ \ \ \ \ \ \ \ if\ \{\$h==0\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$v\ \$t\ \$p\n\ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$h==1\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$q\ \$v\ \$p\n\ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$h==2\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$p\ \$v\ \$t\n\ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$h==3\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$p\ \$q\ \$v\n\ \ \ \ \ \ \ \ \ \ \}\ elseif\ \{\$h==4\}\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$t\ \$p\ \$v\n\ \ \ \ \ \ \ \ \ \ \}\ else\ \{\n\ \ \ \ \ \ \ \ \ \ \ \ lappend\ pixels\ \$v\ \$p\ \$q\n\ \ \ \ \ \ \ \ \ \ \}\n\n\ \ \ \ \ \ \ \ \ \ incr\ x\n\ \ \ \ \ \ \ \ \ \ incr\ f\n\ \ \ \ \ \ \ \ \}\n\ \ \ \ \ \ \ \}\n\ \ \ \ \ \}\n\ \ \ \}\n\n\ \ \ set\ header\ \"P6\\n\\#\ PPM\ data\\n\$\{width\}\ \$\{height\}\\n255\\n\"\n\ \ \ append\ tkdata\ \[binary\ format\ \{a*c*\}\ \$header\ \$pixels\]\n\n\ \ \ if\ \{\$rx!=1\ ||\ \$ry!=1\}\ \{\n\ \ \ \ \ set\ tmp\ \[image\ create\ photo\]\n\ \ \ \ \ \$tmp\ put\ \$tkdata\ -to\ 0\ 0\ \$width\ \$height\ -format\ PPM\ \ \ \ \n\ \ \ \ \ \$img\ copy\ \$tmp\ -zoom\ \$rx\ \$ry\ -compositingrule\ set\ \ \ \ \n\ \ \ \ \ image\ delete\ \$tmp\n\ \ \ \}\ else\ \{\n\ \ \ \ \ \$img\ put\ \$tkdata\ -to\ 0\ 0\ \$width\ \$height\ -format\ PPM\ \ \ \ \n\ \ \ \}\n\n\ \ \ return\ \$img\n\ \}\n\n\ set\ ::he::dialog::colordialog(img_hs)\ \[::he::dialog::hsmap\ 181\ 100\]\n\ set\ ::he::dialog::colordialog(img_v)\ \[::he::dialog::vgradient\ 10\ 101\]\nv\n----\n'''2006-05-12'''\ \[HE\]\ Some\ startup\ and\ file\ size\ improvements:\ Changing\ multiple\ 'set\ colordialog()\ ...'\ to\ one\ 'array\ set'\ and\ the\ multiple\ 'msgcat::mcset'\ to\ one\ 'msgcat::mcmset'\ for\ every\ locale.\n\n\n<<categories>>\ GUI} CALL {my revision {colorChooser for pocketPC/etcl}} CALL {::oo::Obj1700007 process revision/colorChooser+for+pocketPC%2Fetcl} CALL {::oo::Obj1700005 process}

-errorcode

NONE

-errorinfo

Unknow state transition: LINE -> END
    while executing
"error $msg"
    (class "::Wiki" method "render_wikit" line 6)
    invoked from within
"my render_$default_markup $N $C $mkup_rendering_engine"
    (class "::Wiki" method "render" line 8)
    invoked from within
"my render $name $C"
    (class "::Wiki" method "revision" line 31)
    invoked from within
"my revision $page"
    (class "::Wiki" method "process" line 56)
    invoked from within
"$server process [string trim $uri /]"

-errorline

4