Viewing contents of file '../idllib/contrib/mallozzi/get_axis_range.pro'
; * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
;+
; NAME:
;    GET_AXIS_RANGE
;
; PURPOSE:
;    Returns range of a line that spans the full plotted range.  
;    Handles both linear and log scales transparently.
;
; CATEGORY:
;    Plotting
;
; CALLING SEQUENCE:
;    RANGE = GET_AXIS_RANGE(AXIS)
;
; INPUTS:
;    AXIS: single character string denoting the axis to span 
;          ('x' or 'y' or 'z')
; 
; KEYWORDS:
;    NONE
;
; OUTPUTS:
;    RANGE: two element FLTARR of the range of the line
;    Returns -1 on error
;
; COMMON BLOCKS:
;    NONE
;
; SIDE EFFECTS:
;    NONE
;
; RESTRICTIONS:
;    NONE
;
; DEPENDENCIES:
;    NONE
;
; EXAMPLE:
;   
;    ; Overplot a line at x0 that spans the plotted y-range
;    OPLOT, [1, 1] * x0, GET_AXIS_RANGE('y'), LINESTYLE = 1
;
; MODIFICATION HISTORY:
;    v1.0: Written, 1997 September, Robert.Mallozzi@msfc.nasa.gov 
;-

FUNCTION GET_AXIS_RANGE, AXIS


IF (N_PARAMS() NE 1) THEN BEGIN
   MESSAGE, /INFO, 'AXIS parameter not supplied'
   RETURN, -1
ENDIF

IF (STRTRIM(STRUPCASE(AXIS), 2) EQ 'X') THEN $
   RETURN, (!X.CRANGE * (!X.TYPE EQ 0)) + $
        (10.0^(!X.CRANGE * (!X.TYPE EQ 1)) * (!X.TYPE EQ 1))

IF (STRTRIM(STRUPCASE(AXIS), 2) EQ 'Y') THEN $
   RETURN, (!Y.CRANGE * (!Y.TYPE EQ 0)) + $
        (10.0^(!Y.CRANGE * (!Y.TYPE EQ 1)) * (!Y.TYPE EQ 1))

IF (STRTRIM(STRUPCASE(AXIS), 2) EQ 'Z') THEN $
   RETURN, (!Z.CRANGE * (!Z.TYPE EQ 0)) + $
        (10.0^(!Z.CRANGE * (!Z.TYPE EQ 1)) * (!Z.TYPE EQ 1))


RETURN, -1

END