Viewing contents of file '../idllib/astron/contrib/varosi/code/allpro/contour_setup.pro'
;+
; NAME:
; contour_setup
; PURPOSE:
; Setup mosaic image arrays for contour display.
; CALLING:
; contour_setup, mosaic_orig, mosaic_spec, mosaic, mos_ps
; INPUTS:
; mosaic_orig = original mosaic data image array (floating point).
; mosaic_spec = structure containing specs. such as coordinate origin,
; rotation angle, smoothing, zoom on subregion, truncation, etc.
; KEYWORDS:
; /COLOR_SCALE : causes display of color bar with scale in own window.
; OUTPUTS:
; mosaic = image array (floating) result of mosaic_spec operations.
; mos_ps = same image array scaled to bytes for display in window or PS.
; EXTERNAL CALLS:
; function N_struct
; function RotMag
; function zoom_mosaic
; function filter_mosaic
; pro color_scale
; HISTORY:
; Written: Frank Varosi NASA/GSFC 1992.
; F.V. 1994, added rotation by any angle (RotMag).
; F.V. 1997, added calibration by factor and offset.
; F.V. 1998, made rotation pivot around selected origin of coordinates.
;-
pro contour_setup, mosaic_orig, mosaic_spec, mosaic, mos_ps, $
COLOR_SCALE=cscal, NO_LOG=no_Log
if N_struct( mosaic_spec ) NE 1 then return
if (mosaic_spec.rot_ang_deg NE 0) then begin
print," Rotating by",mosaic_spec.rot_ang_deg," degrees"
print," around origin:",mosaic_spec.origin
endif
mosaic = RotMag( mosaic_orig, INTERP=2, /PIVOT, $
ANG=mosaic_spec.rot_ang_deg, MISS=mosaic_spec.min, $
XC=mosaic_spec.origin(0), YC=mosaic_spec.origin(1) )
mosaic = Rotate( zoom_mosaic( mosaic_spec, $
filter_mosaic( mosaic, mosaic_spec ) ), $
mosaic_spec.rotation )
mosaic_spec.rot_applied = 1
if (mosaic_spec.factor NE 1) or (mosaic_spec.offset NE 0) then begin
print," applying calibration factor and offset"
mosaic = mosaic * mosaic_spec.factor + mosaic_spec.offset
mosaic_spec.minF = $
mosaic_spec.minF*mosaic_spec.factor + mosaic_spec.offset
mosaic_spec.maxF = $
mosaic_spec.maxF*mosaic_spec.factor + mosaic_spec.offset
endif
if (mosaic_spec.zero_shift NE 0) AND $
(mosaic_spec.scaling EQ "Log10") then begin
print," shifting image values by: ",mosaic_spec.zero_shift
mosaic = mosaic + mosaic_spec.zero_shift
endif
if (mosaic_spec.Truncate) then begin
print," Truncating image values into Range: ",$
mosaic_spec.minT, mosaic_spec.maxT, FORM="(A,2G10.3)"
mosaic = (mosaic > mosaic_spec.minT) < mosaic_spec.maxT
endif else if (mosaic_spec.zoom_enable) then begin
mosaic_spec.maxT = max( mosaic, MIN=minmc)
mosaic_spec.minT = minmc
endif else begin
mosaic_spec.minT = mosaic_spec.minF
mosaic_spec.maxT = mosaic_spec.maxF
endelse
if keyword_set( no_Log ) then return
if (mosaic_spec.scaling EQ "Log10") then begin
print," taking Log of image values >",mosaic_spec.minLog
mosaic = aLog10( mosaic > mosaic_spec.minLog )
minmc = aLog10( mosaic_spec.minT > mosaic_spec.minLog )
maxmc = aLog10( mosaic_spec.maxT )
endif else begin
minmc = mosaic_spec.minT
maxmc = mosaic_spec.maxT
endelse
if N_params() GE 4 then begin
mos_ps = bytscl( mosaic, MIN=minmc, MAX=maxmc,$
TOP=mosaic_spec.topval )
endif else mosaic_spec.options.overlay=0
if keyword_set( cscal ) then $
color_scale, mosaic_spec.minT, mosaic_spec.maxT, $
mosaic_spec.topval, mosaic_spec.scaling, $
mosaic_spec.name, LOGMIN=mosaic_spec.minLog, $
POSITION=[400,100], /LARGE
end