#!/usr/bin/tclsh proc HSBtoRGB {h s b} { set h [expr $h - int($h)] set h [expr $h * 6] set i [expr int($h)] set f [expr $h - $i] set p [expr $b * (1-$s)] set q [expr $b * (1-$s*$f)] set t [expr $b * (1-$s*(1-$f))] switch $i { 0 {return "$b $t $p"} 1 {return "$q $b $p"} 2 {return "$p $b $t"} 3 {return "$p $q $b"} 4 {return "$t $p $b"} 5 {return "$b $p $q"} } } proc HSBtoSTR {h s b} { set res {} foreach j [HSBtoRGB $h $s $b] { lappend res [expr int($j)] } return [eval format "#%02x%02x%02x" $res] }