gamma.tk
author viric@llimona
Tue, 24 Oct 2006 10:18:01 +0200
changeset 4 f8ce867298a9
parent 3 2bdd3f8b7864
permissions -rwxr-xr-x
Fixed the behaviour for refining the points.
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
4
f8ce867298a9 Fixed the behaviour for refining the points.
viric@llimona
parents: 3
diff changeset
   143
	prepare_colors_center $type $nxmin $nxmax
f8ce867298a9 Fixed the behaviour for refining the points.
viric@llimona
parents: 3
diff changeset
   144
	prepare_colors_margins $type $nxmin $nxmax
2
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
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   147
4
f8ce867298a9 Fixed the behaviour for refining the points.
viric@llimona
parents: 3
diff changeset
   148
proc prepare_colors_margins { type nxmin nxmax } {
2
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
4
f8ce867298a9 Fixed the behaviour for refining the points.
viric@llimona
parents: 3
diff changeset
   166
}
f8ce867298a9 Fixed the behaviour for refining the points.
viric@llimona
parents: 3
diff changeset
   167
f8ce867298a9 Fixed the behaviour for refining the points.
viric@llimona
parents: 3
diff changeset
   168
proc prepare_colors_center { type nxmin nxmax } {
f8ce867298a9 Fixed the behaviour for refining the points.
viric@llimona
parents: 3
diff changeset
   169
	global gradient
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   170
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   171
	# Prepare the colors of the middle buttons
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   172
	for {set i 0} {$i < $gradient} {incr i} {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   173
		set x [stepvalue $nxmin $nxmax $i]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   174
		switch -- $type {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   175
			r { set c [color $x 0 0] }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   176
			g { set c [color 0 $x 0] }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   177
			b { set c [color 0 0 $x] }
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
		.centercol.b$i configure -background $c -foreground $c
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   180
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   181
}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   182
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   183
proc padd { point } {
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   184
}
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   185
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   186
proc selection { i } {
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   187
	global rpoints gpoints bpoints nxmin nxmax gradient type th_prec
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   188
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   189
	upvar 0 ${type}points points
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   190
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   191
	set nstep_min [expr {$i - 1}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   192
	set nstep_max [expr {$i + 1}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   193
	if {$nstep_min < 0} { set nstep_min 0 }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   194
	if {$nstep_max >= $gradient} { set nstep_max [expr {$gradient - 1}] }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   195
	set nvalue_min [stepvalue $nxmin $nxmax $nstep_min]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   196
	set nvalue_max [stepvalue $nxmin $nxmax $nstep_max]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   197
	puts "$type - nvalue_min: $nvalue_min, nvalue_max: $nvalue_max"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   198
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   199
	set nxmin $nvalue_min
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   200
	set nxmax $nvalue_max
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   201
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   202
	if {[expr {$nxmax - $nxmin}] > $th_prec} {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   203
		puts "$type - More precision needed"
4
f8ce867298a9 Fixed the behaviour for refining the points.
viric@llimona
parents: 3
diff changeset
   204
		prepare_colors_center $type $nxmin $nxmax
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   205
	} else {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   206
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   207
		puts "$type - New point!"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   208
		# Add the point - middle range
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   209
		set middle [expr {$nxmin + ($nxmax - $nxmin)/2}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   210
		set i 0
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   211
		while { [lindex [lindex $points $i] 0] < $middle } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   212
			incr i 1
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   213
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   214
		# Get the middle of the light intesity
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   215
		set vmin [lindex [lindex $points [expr {$i - 1}]] 1]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   216
		set vmax [lindex [lindex $points $i] 1]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   217
		set nval [expr {$vmin + ($vmax - $vmin)/2.0}]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   218
		set points [linsert $points $i [list $middle $nval]] 
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   219
		puts "$type - $points"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   220
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   221
		prepare_colors_newpoint
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   222
	}
1
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   223
}
c36976fd28f3 More changes.
viric@llimona
parents: 0
diff changeset
   224
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   225
proc save_file { } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   226
	global rpoints gpoints bpoints
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 file [tk_getSaveFile]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   229
	if { $file == "" } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   230
		return
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
	set fd [open $file w]
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   233
	puts $fd "# plot for gnuplot"
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   234
	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
   235
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   236
	foreach t { rpoints gpoints bpoints } {
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   237
		puts $fd "# $t"
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   238
		foreach i [set $t] {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   239
			puts -nonewline $fd [join $i " "]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   240
			puts $fd ""
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
		if { $t != "bpoints"} {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   243
			puts $fd ""
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   244
			puts $fd ""
2
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
	close $fd
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   249
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
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   252
proc load_file { } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   253
	global rpoints gpoints bpoints
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 file [tk_getOpenFile]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   256
	if { $file == "" } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   257
		return
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   258
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   259
	set fd [open $file r]
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 rpoints {}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   262
	set gpoints {}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   263
	set bpoints {}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   264
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   265
	set type r
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   266
	while { [eof $fd] != 1 } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   267
		set line [gets $fd]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   268
		if { $line == "" } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   269
			set line [gets $fd]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   270
			if { $line == "" } {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   271
				switch -- $type {
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   272
					r { set type g }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   273
					g { set type b }
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   274
				}
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
		} else {
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   277
			if { [string index $line 0] != "#" } {
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   278
				lappend ${type}points [split $line " "]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   279
			}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   280
		}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   281
	}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   282
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   283
	close $fd 
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   284
	# Debug
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   285
	set nrp [llength $rpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   286
	set ngp [llength $gpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   287
	set nbp [llength $bpoints]
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   288
	puts "Read nrp: $nrp, ngp: $ngp, nbp: $nbp"
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   289
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   290
	prepare_colors_newpoint
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   291
}
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   292
3
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   293
proc new_points { } {
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   294
        global rpoints gpoints bpoints
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   295
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   296
        set rpoints {{0 0.} {65535 1.}}
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   297
        set gpoints {{0 0.} {65535 1.}}
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   298
        set bpoints {{0 0.} {65535 1.}}
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   299
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   300
        prepare_colors_newpoint
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   301
}
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   302
2bdd3f8b7864 Diverses millores: New, gnuplots, ...
viric@llimona
parents: 2
diff changeset
   303
2
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   304
# Prepare the colors for the user, for the first time!
9aa865195c24 Finished the R G B range.
viric@mandarina
parents: 1
diff changeset
   305
prepare_colors_newpoint