;+

;PROCEDURE: print_options

;PURPOSE:  controls postscript printing options

;KEYWORDS:

;  PORT:   print pages in portrait format (default)

;  LAND:   print pages in landscape format

;  BW:     Use black and white mode  (untested)

;  COLOR:  Use Color postscript (default)

;  XSIZE:  plot size dimension in the x direction

;  YSIZE:  plot size dimension in the y direction

;  UNITS:  plot size units (inches or cm)

;FUTURE OPTIONS:

;  Ecapsulated postscript format

;  changing plotting area

;HISOTRY:

; 4-apr-2008   cg, added optional keywords for postscript

;                  file size and file size units

;SEE ALSO:	"popen","pclose"

;

;CREATED BY:	Davin Larson

;LAST MODIFICATION:	@(#)print_options.pro	1.16 97/05/30

;-





pro print_options,      $

  PORTRAIT=port,   $

  LANDSCAPE=land,   $

  BW = bw,     $

  COLOR=col,   $

  ASPECT=aspect,  $

  XSIZE=xsize, $

  YSIZE=ysize, $

  UNITS=units, $

  FONT= font,  $

  PRINTER=printer, $

  DIRECTORY=printdir



@popen_com.pro

; Set defaults:

if n_elements(portrait) eq 0 then portrait=1

if n_elements(in_color) eq 0 then in_color=1

if n_elements(printer_name) eq 0 then printer_name=''

if n_elements(print_directory) eq 0 then print_directory=''

if n_elements(print_font) eq 0 then print_font = 0

if n_elements(print_aspect) eq 0 then print_aspect = 0

inches = 1

x_papersize = 8.5

y_papersize = 11.

x_aspect = 8.

y_aspect = 10.5




if keyword_set(units) then Begin

  units = strcompress(/remove_all, units)

  if (units ne 'inches') then Begin

    inches=0

    x_papersize = x_papersize*2.54

    y_papersize = y_papersize*2.54

    if keyword_set(aspect) then Begin

      aspect = aspect*2.54

      x_aspect = x_aspect*2.54

      y_aspect = y_aspect*2.54

    endif

  endif

endif



if keyword_set(land)    then  portrait= 0

if keyword_set(port)    then  portrait= 1

if keyword_set(col)     then  in_color= 1

if keyword_set(bw)      then  in_color= 0

if n_elements(printer)  ne 0 then  printer_name=printer

if n_elements(printdir) ne 0 then  print_directory=printdir

if n_elements(font)     ne 0 then  print_font = font

if n_elements(aspect)   ne 0 then  print_aspect=aspect


if !d.name eq 'PS' then begin

  aspect = print_aspect
  if keyword_set(aspect) then begin

    if portrait then scale=(x_aspect < y_aspect/aspect) else scale=(y_aspect < x_aspect/aspect)

    s = [1.0,aspect] * scale

    if portrait then offs =[(x_papersize-s(0))/2,y_papersize-.5-s(1)] $

    else offs=[(x_papersize-s(1))/2,y_papersize-(y_papersize-s(0))/2]

    if inches then begin

      device,port=portrait,/inch,ysize=s(1),xsize=s(0),yoff=offs(1),xoff=offs(0)

    endif else begin

      device,port=portrait,ysize=s(1),xsize=s(0),yoff=offs(1),xoff=offs(0)

    endelse

  endif else begin
    if portrait then begin

      if not keyword_set(xsize) then xsize = 7.0

      if not keyword_set(ysize) then ysize = 9.5

      xoff= (x_papersize - xsize)/2

      yoff= (y_papersize - ysize)/2

    endif else begin

      if not keyword_set(xsize) then xsize = 9.5

      if not keyword_set(ysize) then ysize = 7.0

; The following lines were incorrect and gave the wrong margins for landscape plots
;      xoff= (x_papersize - xsize)/2

;      yoff= y_papersize - (y_papersize-ysize)/2
; Here are the corrected lines - mcfadden, 08-10-11
      xoff= (y_papersize - xsize)/2

      yoff= y_papersize - (x_papersize - ysize)/2


      if not(inches) then Begin

        xoff= (x_papersize - xsize)/2

        yoff= y_papersize - (y_papersize-ysize)/2

      endif

    endelse



    if inches then begin

      device,port=portrait,/inches,ysize=ysize,yoff=yoff,xsize=xsize,xoff=xoff

    endif else begin

      device,port=portrait,ysize=ysize,yoff=yoff,xsize=xsize,xoff=xoff

    endelse

  endelse

  if in_color then device,/color,bits=8  $

  else   device,color=0

  !p.font = print_font

endif



return

end







