Viewing contents of file '../idllib/contrib/windt/greek.pro'
;+
; NAME:
; 
;	GREEK
;
; PURPOSE:
; 
;       This function returns the string needed to draw the specified
;       greek character using either the vector graphics font no. 4,
;       or PostScript font 9.
;
;       If (!d.name eq 'PS') and (!p.font eq 0), then the PostScript
;       font will be used.  Otherwise, the vector font will be used.
;
; CALLING SEQUENCE:
; 
;	Result = GREEK(Name)
;
; INPUTS:
; 
;       Name - String specifying the greek character name. Valid
;              inputs are:
;
;              alpha, beta, gamma, delta, epsilon, zeta, eta, theta
;              iota, kappa, lambda, mu, nu, xi, omicron, pi, rho,
;              sigma, tau, upsilon, phi, chi, psi, omega
;
;              Alpha, Beta, Gamma, Delta, Epsilon, Zeta, Eta, Theta
;              Iota, Kappa, Lambda, Mu, Nu, Xi, Omicron, Pi, Rho,
;              Sigma, Tau, Upsilon, Phi, Chi, Psi, Omega
;
;              Although not greek, the following characters are also
;              valid (but will only work with the 'default' font !3):
;
;              angstrom, Angstrom, degrees, plus_minus
;
; KEYWORDS:
;
;       FORCE_PS - Set to use PostScript font, regardless of the value
;                  of !d.name and !p.font.
;
;       PLAIN - Set to just return Name in plain text.
;
;       APPEND_FONT - Set to append the characters specifying a
;                     'default' font: !3. That is, if this keyword is
;                     set, then the command
;
;                     Result=GREEK(theta,/APPEND_FONT)
;
;                     will return the string
;
;                     '!9q!3' for PostScript and '!4h!3' for vector
;                     fonts.
; 
;
; OUTPUTS:
; 
;       Result - The string containing the specified greek character.
;
; EXAMPLE:
;
;	Result=GREEK(theta)
;	
;       In this case, Result='!9q' if !d.name is 'PS' and !p.font is
;       0; otherwise, Result='!4h'
;
; MODIFICATION HISTORY:
; 
; 	David L. Windt, Bell Labs, September 1998.
;       windt@bell-labs.com
;                    
;-

function greek,input,plain=plain,force_ps=force_ps,append_font=append_font

case 1 of
    ;; postscript:
    keyword_set(force_ps) or  $
      ((!d.name eq 'PS') and (!p.font eq 0)): begin 
        default_font='!3'
        case input of
            'alpha': name='!9a'
            'beta': name='!9b'
            'gamma': name='!9g'
            'delta': name='!9d'
            'epsilon': name='!9e'
            'zeta': name='!9z'
            'eta': name='!9h'
            'theta': name='!9q'
            'iota': name='!9i'
            'kappa': name='!9k'
            'lambda': name='!9l'
            'mu': name='!9m'
            'nu': name='!9n'
            'xi': name='!9x'
            'omicron': name='!9o'
            'pi': name='!9p'
            'rho': name='!9r'
            'sigma': name='!9s'
            'tau': name='!9t'
            'upsilon': name='!9u'
            'phi': name='!9f'
            'chi': name='!9c'
            'psi': name='!9y'
            'omega': name='!9w'
            'Alpha': name='!9A'
            'Beta': name='!9B'
            'Gamma': name='!9G'
            'Delta': name='!9D'
            'Epsilon': name='!9E'
            'Zeta': name='!9Z'
            'Eta': name='!9H'
            'Theta': name='!9Q'
            'Iota': name='!9I'
            'Kappa': name='!9K'
            'Lambda': name='!9L'
            'Mu': name='!9M'
            'Nu': name='!9N'
            'Xi': name='!9X'
            'Omicron': name='!9O'
            'Pi': name='!9P'
            'Rho': name='!9R'
            'Sigma': name='!9S'
            'Tau': name='!9T'
            'Upsilon': name='!9U'
            'Phi': name='!9F'
            'Chi': name='!9C'
            'Psi': name='!9Y'
            'Omega': name='!9W'
            'Angstroms': name=string(197b)
            'angstroms': name=string(229b)
            'plus_minus': name=string(177b)
            'degrees': name=string(176b)
            else: name=''
        endcase
    end

    ;; vector fonts:
    else: begin     
        default_font='!3'
        case input of 
            'alpha': name='!4a'
            'beta': name='!4b'
            'gamma': name='!4c'
            'delta': name='!4d'
            'epsilon': name='!4e'
            'zeta': name='!4f'
            'eta': name='!4g'
            'theta': name='!4h'
            'iota': name='!4i'
            'kappa': name='!4j'
            'lambda': name='!4k'
            'mu': name='!4l'
            'nu': name='!4m'
            'xi': name='!4n'
            'omicron': name='!4o'
            'pi': name='!4p'
            'rho': name='!4q'
            'sigma': name='!4r'
            'tau': name='!4s'
            'upsilon': name='!4t'
            'phi': name='!4u'
            'chi': name='!4v'
            'psi': name='!4w'
            'omega': name='!4x'
            'Alpha': name='!4A'
            'Beta': name='!4B'
            'Gamma': name='!4C'
            'Delta': name='!4D'
            'Epsilon': name='!4E'
            'Zeta': name='!4F'
            'Eta': name='!4G'
            'Theta': name='!4H'
            'Iota': name='!4I'
            'Kappa': name='!4J'
            'Lambda': name='!4K'
            'Mu': name='!4L'
            'Nu': name='!4M'
            'Xi': name='!4N'
            'Omicron': name='!4O'
            'Pi': name='!4P'
            'Rho': name='!4Q'
            'Sigma': name='!4R'
            'Tau': name='!4S'
            'Upsilon': name='!4T'
            'Phi': name='!4U'
            'Chi': name='!4V'
            'Psi': name='!4W'
            'Omega': name='!4X'
            'Angstroms': name=string(197b)
            'angstroms': name=string(229b)
            'plus_minus': name=string(177b)
            'degrees': name=string(176b)
           else: name=''
        endcase
    end
endcase

if keyword_set(plain) then return,input else begin
    if keyword_set(append_font) then $
      return,name+default_font else $
      return,name
endelse
end