gamma.tk
author viric@llimona
Mon, 23 Oct 2006 00:35:20 +0200
changeset 3 2bdd3f8b7864
parent 2 9aa865195c24
child 4 f8ce867298a9
permissions -rwxr-xr-x
Diverses millores: New, gnuplots, ...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
     1
#!/usr/bin/wish
0
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
     2
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
     3
set wheight 400
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
     4
set wwidth 800
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
     5
set wwidthsingle [expr $wwidth / 3 ]
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
     6
set gradient 10
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
     7
# Precision on color selection
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
     8
set th_prec 2000
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
     9
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    10
# Aquest -2 és perque els butons, per alguna raó, són 2 pixels més alts i
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    11
# amples.
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    12
set wheightsingle [expr $wheight / $gradient - 2]
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    13
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    14
proc stepvalue { min max step } {
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    15
	global gradient
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    16
	return [expr $min + ( ( $max - $min ) * $step / ($gradient - 1) )]
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    17
}
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    18
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    19
proc color { r g b } {
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    20
	return [format "#%04x%04x%04x" $r $g $b]
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    21
}
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    22
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    23
# Build the labels
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    24
frame .c
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    25
pack .c -side bottom
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    26
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    27
# Left
0
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    28
frame .leftcol
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    29
label .leftcol.c -height $wheight -width $wwidthsingle -bg #12f \
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    30
	-bitmap @gray50.xbm -borderwidth 0
0
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    31
pack .leftcol.c
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    32
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    33
# Center
0
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    34
frame .centercol
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    35
for {set i 0} {$i < $gradient} {incr i} {
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    36
	set r [stepvalue 0 65535 $i]
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    37
	set g $r 
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    38
	set b $r 
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    39
	button .centercol.b$i -height $wheightsingle -width $wwidthsingle \
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    40
		-bg [color $r $g $b]  -bitmap gray50 -borderwidth 0 \
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    41
		-highlightthickness 0 -command "selection $i"
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    42
	pack .centercol.b$i -side top
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    43
}
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    44
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    45
# Right
0
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    46
frame .rightcol
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    47
label .rightcol.c -height $wheight -width $wwidthsingle -bg #f12 \
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    48
	-bitmap @gray50.xbm -borderwidth 0
0
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    49
pack .rightcol.c
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    50
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    51
pack .leftcol -side left
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    52
pack .centercol -side left
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    53
pack .rightcol -side left
2b12eedda295 Made program to create gray50 bitmaps.
viric@llimona
parents:
diff changeset
    54
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    55
# Menu
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    56
menu .mb
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    57
. config -menu .mb
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    58
set mFile [menu .mb.mFile]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    59
.mb add cascade -label File -menu .mb.mFile
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    60
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
    61
$mFile add command -label New -command new_points
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    62
$mFile add command -label Load -command load_file
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    63
$mFile add command -label Save -command save_file
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    64
$mFile add separator
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    65
$mFile add cascade -label Export -menu ${mFile}.mExport
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    66
$mFile add command -label Quit -command exit
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    67
set mExport [menu ${mFile}.mExport]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    68
$mExport add command -label "GNUPlot data" -command export_gnuplotdata
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    69
$mExport add command -label ICC -command export_icc
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    70
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    71
# Globals
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    72
set rpoints {{0 0.} {65535 1.}}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    73
set gpoints {{0 0.} {65535 1.}}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    74
set bpoints {{0 0.} {65535 1.}}
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    75
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    76
# Loop functions
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
    77
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    78
# Returns { type }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    79
proc get_next_ptype { } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    80
	global rpoints gpoints bpoints
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    81
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    82
	set nrp [llength $rpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    83
	set ngp [llength $gpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    84
	set nbp [llength $bpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    85
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    86
	puts "nrp: $nrp"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    87
	puts "ngp: $ngp"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    88
	puts "nbp: $nbp"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    89
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    90
	if { $nrp > $ngp } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    91
		set type g
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    92
	} else {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    93
		set type r
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    94
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    95
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    96
	if { [set n${type}p] > $nbp } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    97
		set type b
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    98
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
    99
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   100
	return $type
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   101
}
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   102
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   103
proc get_next_point { type } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   104
	global ${type}points
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   105
	upvar 0 ${type}points points
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   106
	
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   107
	set np [llength $points]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   108
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   109
	set last [lindex [lindex $points 0] 0 ]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   110
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   111
	set maxdist 0
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   112
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   113
	set imin 0
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   114
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   115
	for {set i 1} {$i < $np} {incr i 1} {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   116
		set actual [lindex [lindex $points $i] 0]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   117
		set dist [expr {abs($last - $actual)}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   118
		puts "dist: $dist"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   119
		if { $dist > $maxdist } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   120
			set imin [expr {$i - 1}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   121
			puts "New imin"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   122
			set maxdist $dist
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   123
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   124
		set last $actual
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   125
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   126
	return $imin
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   127
}
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   128
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   129
proc prepare_colors_newpoint { } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   130
	global icolors rpoints gpoints bpoints gradient type xmin xmax nxmin nxmax
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   131
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   132
	set type [get_next_ptype]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   133
	set icolors [get_next_point $type]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   134
	upvar 0 ${type}points points
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   135
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   136
	puts "type: $type"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   137
	puts "icolors: $icolors"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   138
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   139
	set xmin [lindex [lindex $points $icolors] 0]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   140
	set xmax [lindex [lindex $points [expr {$icolors + 1}]] 0]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   141
	set nxmin $xmin
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   142
	set nxmax $xmax
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   143
	prepare_colors $type $nxmin $nxmax
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   144
}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   145
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   146
proc prepare_colors { type nxmin nxmax } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   147
	global gradient
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   148
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   149
	switch -- $type {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   150
		r {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   151
			set cmin [color $nxmin 0 0]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   152
			set cmax [color $nxmax 0 0]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   153
		} g {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   154
			set cmin [color 0 $nxmin 0]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   155
			set cmax [color 0 $nxmax 0]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   156
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   157
		b {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   158
			set cmin [color 0 0 $nxmin]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   159
			set cmax [color 0 0 $nxmax]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   160
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   161
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   162
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   163
	# Set the bg and fg color to xmin and xmax
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   164
	.leftcol.c configure -background $cmin -foreground $cmax
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   165
	.rightcol.c configure -background $cmin -foreground $cmax
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   166
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   167
	# Prepare the colors of the middle buttons
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   168
	for {set i 0} {$i < $gradient} {incr i} {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   169
		set x [stepvalue $nxmin $nxmax $i]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   170
		switch -- $type {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   171
			r { set c [color $x 0 0] }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   172
			g { set c [color 0 $x 0] }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   173
			b { set c [color 0 0 $x] }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   174
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   175
		.centercol.b$i configure -background $c -foreground $c
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   176
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   177
}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   178
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   179
proc padd { point } {
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   180
}
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   181
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   182
proc selection { i } {
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   183
	global rpoints gpoints bpoints nxmin nxmax gradient type th_prec
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   184
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   185
	upvar 0 ${type}points points
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   186
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   187
	set nstep_min [expr {$i - 1}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   188
	set nstep_max [expr {$i + 1}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   189
	if {$nstep_min < 0} { set nstep_min 0 }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   190
	if {$nstep_max >= $gradient} { set nstep_max [expr {$gradient - 1}] }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   191
	set nvalue_min [stepvalue $nxmin $nxmax $nstep_min]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   192
	set nvalue_max [stepvalue $nxmin $nxmax $nstep_max]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   193
	puts "$type - nvalue_min: $nvalue_min, nvalue_max: $nvalue_max"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   194
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   195
	set nxmin $nvalue_min
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   196
	set nxmax $nvalue_max
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   197
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   198
	if {[expr {$nxmax - $nxmin}] > $th_prec} {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   199
		puts "$type - More precision needed"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   200
		prepare_colors $type $nxmin $nxmax
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   201
	} else {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   202
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   203
		puts "$type - New point!"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   204
		# Add the point - middle range
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   205
		set middle [expr {$nxmin + ($nxmax - $nxmin)/2}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   206
		set i 0
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   207
		while { [lindex [lindex $points $i] 0] < $middle } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   208
			incr i 1
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   209
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   210
		# Get the middle of the light intesity
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   211
		set vmin [lindex [lindex $points [expr {$i - 1}]] 1]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   212
		set vmax [lindex [lindex $points $i] 1]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   213
		set nval [expr {$vmin + ($vmax - $vmin)/2.0}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   214
		set points [linsert $points $i [list $middle $nval]] 
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   215
		puts "$type - $points"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   216
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   217
		prepare_colors_newpoint
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   218
	}
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   219
}
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   220
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   221
proc save_file { } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   222
	global rpoints gpoints bpoints
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   223
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   224
	set file [tk_getSaveFile]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   225
	if { $file == "" } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   226
		return
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   227
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   228
	set fd [open $file w]
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   229
	puts $fd "# plot for gnuplot"
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   230
	puts $fd "# plot 'data' index 0 title 'vermell', 'data' index 1 title 'verd', 'data' index 2 title 'blau'"
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   231
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   232
	foreach t { rpoints gpoints bpoints } {
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   233
		puts $fd "# $t"
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   234
		foreach i [set $t] {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   235
			puts -nonewline $fd [join $i " "]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   236
			puts $fd ""
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   237
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   238
		if { $t != "bpoints"} {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   239
			puts $fd ""
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   240
			puts $fd ""
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   241
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   242
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   243
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   244
	close $fd
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   245
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   246
}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   247
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   248
proc load_file { } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   249
	global rpoints gpoints bpoints
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   250
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   251
	set file [tk_getOpenFile]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   252
	if { $file == "" } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   253
		return
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   254
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   255
	set fd [open $file r]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   256
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   257
	set rpoints {}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   258
	set gpoints {}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   259
	set bpoints {}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   260
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   261
	set type r
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   262
	while { [eof $fd] != 1 } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   263
		set line [gets $fd]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   264
		if { $line == "" } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   265
			set line [gets $fd]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   266
			if { $line == "" } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   267
				switch -- $type {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   268
					r { set type g }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   269
					g { set type b }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   270
				}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   271
			}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   272
		} else {
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   273
			if { [string index $line 0] != "#" } {
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   274
				lappend ${type}points [split $line " "]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   275
			}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   276
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   277
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   278
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   279
	close $fd 
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   280
	# Debug
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   281
	set nrp [llength $rpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   282
	set ngp [llength $gpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   283
	set nbp [llength $bpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   284
	puts "Read nrp: $nrp, ngp: $ngp, nbp: $nbp"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   285
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   286
	prepare_colors_newpoint
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   287
}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   288
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   289
proc new_points { } {
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   290
        global rpoints gpoints bpoints
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   291
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   292
        set rpoints {{0 0.} {65535 1.}}
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   293
        set gpoints {{0 0.} {65535 1.}}
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   294
        set bpoints {{0 0.} {65535 1.}}
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   295
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   296
        prepare_colors_newpoint
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   297
}
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   298
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   299
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   300
# Prepare the colors for the user, for the first time!
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   301
prepare_colors_newpoint