dstmwrp_exp.pro 1.88 KB
FUNCTION dstmwrp_exp, axis, index, number

;+
; NAME:
;   dstmwrp_exp
;  
; PURPOSE:
;   Returns formatted string for exponents in graphical output
;  
; CATEGORY:
;    DustEMWrap, Distributed, LowLevel, Plotting
;  
; CALLING SEQUENCE:
;    dstmwrp_exp, axis, index, number
;
; INPUTS:
;    axis : deprecated but kept for backwards compatibility
;    index : deprecated but kept for backwards compatibility
;    number : value to be converted to exponential as formatted string  
;
; OPTIONAL INPUT PARAMETERS:
;    None
;
; OUTPUTS:
;    exponential as formatted string 
;
; OPTIONAL OUTPUT PARAMETERS:
;
; ACCEPTED KEY-WORDS:
;
; COMMON BLOCKS:
;    None
;
; SIDE EFFECTS:
;
; RESTRICTIONS:
;    The DustEMWrap IDL code must be installed
;
; PROCEDURES AND SUBROUTINES USED:
;   
; EXAMPLES
;    expstr=dstmwrp_exp(axis, index, 15000.)
;
; MODIFICATION HISTORY:
;    Written by IC
;    Evolution details on the DustEMWrap gitlab.
;    See http://dustemwrap.irap.omp.eu/ for FAQ and help.  
;-
   
  ;A special case.
  IF number EQ 0 THEN RETURN, '0'
 
  ; Assuming multiples of 10 with format.
  ex = String(number, Format='(e8.0)')
  pt = StrPos(ex, '.')
 
  first = StrMid(ex, 0, pt)
  sign = StrMid(ex, pt+2, 1)
  thisExponent = StrMid(ex, pt+3)
 
  ; Shave off leading zero in exponent
  WHILE StrMid(thisExponent, 0, 1) EQ '0' DO thisExponent = StrMid(thisExponent, 1)
 
  ; Fix for sign and missing zero problem.
  IF (Long(thisExponent) EQ 0) THEN BEGIN
     sign = ''
     thisExponent = '0'
  ENDIF
  
     
  frmt = '10!U'
  IF !dustem_mlog then frmt='-'+frmt
  ; Make the exponent a superscript.
  IF sign EQ '-' THEN BEGIN
     IF first EQ 1 then RETURN, frmt + sign + thisExponent + '!N' ELSE RETURN, first + 'x' + frmt + sign + thisExponent + '!N'
  ENDIF ELSE BEGIN
     IF first EQ 1 then RETURN, frmt + thisExponent + '!N' ELSE RETURN, first + 'x' + frmt + thisExponent + '!N'
  ENDELSE
  
the_end:
  
END