;+
;PROCEDURE loadct2, colortable
; By default LOADCT2 uses the same color table used by LOADCT
; This can be changed in 3 ways:
; 1) Use the FILE keyword to define a new file
; 2) Define the environment variable IDL_CT_FILE to point to a new file
; 3) Place a new color table file in the same directory as LOADCT2 that matches
; the name: 'colors*.tbl'. (The last file found with file_search is used).
;
;KEYWORDS:
; FILE: (string) Color table file
; If FILE is not provided then LOADCT2
; Uses the environment variable IDL_CT_FILE to determine
; the color table file if FILE is not set.
;common blocks:
; colors: IDL color common block. Many IDL routines rely on this.
; colors_com:
;See also:
; "get_colors","colors_com","bytescale"
;
;Created by Davin Larson; August 1996
;Version: 1.4
;File: 00/07/05
;Last Modification: loadct2.pro
;-
pro loadct2,ct,invert=invert,reverse=revrse,file=file,previous_ct=previous_ct
COMMON colors, r_orig, g_orig, b_orig, r_curr, g_curr, b_curr
@colors_com
deffile = getenv('IDL_CT_FILE')
if not keyword_set(deffile) then begin ; looks for color table file in same directory
stack = scope_traceback(/structure)
filename = stack[scope_level()-1].filename
dir = file_dirname(filename)
deffile = file_search(dir+'/'+'colors*.tbl',count=nf)
if nf gt 0 then deffile=deffile[nf-1] ; Use last one found
;dprint,'Using color table: ',deffile,dlevel=3
endif
if not keyword_set(file) and keyword_set(deffile) then file=deffile
black = 0
magenta=1
blue = 2
cyan = 3
green = 4
yellow = 5
red = 6
bottom_c = 7
if n_elements(color_table) eq 0 then color_table=ct
previous_ct = color_table
if !d.name eq 'NULL' or !d.name eq 'HP' then begin ; NULL device and HP device do not support loadct
dprint,'Device ',!d.name,' does not support color tables. Command Ignored'
return
endif
loadct,ct,bottom=bottom_c,file=file
color_table = ct
top_c = !d.table_size-2
white =top_c+1
cols = [black,magenta,blue,cyan,green,yellow,red,white]
primary = cols[1:6]
tvlct,r,g,b,/get
if keyword_set(revrse) then begin
r[bottom_c:top_c] = reverse(r[bottom_c:top_c])
g[bottom_c:top_c] = reverse(g[bottom_c:top_c])
b[bottom_c:top_c] = reverse(b[bottom_c:top_c])
endif
r[cols] = [0,1,0,0,0,1,1,1]*255b
g[cols] = [0,0,0,1,1,1,0,1]*255b
b[cols] = [0,1,1,1,0,0,0,1]*255b
tvlct,r,g,b
r_curr = r ;Important! Update the colors common block.
g_curr = g
b_curr = b
;force end colors 0 is black max is white
;tvlct,r,g,b,/get
;n = n_elements(r)
;lc = n-1
;black = 0
;white = 255
;if keyword_set(revrse) then begin
; r = reverse(r)
; g = reverse(g)
; b = reverse(b)
;endif
;if keyword_set(invert) then begin
; black = 255
; white = 0
;endif
;r(0) = black & g(0)=black & b(0)=black
;r(lc)=white & g(lc)=white & b(lc)=white
;tvlct,r,g,b
end