;+ ;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