;+ ; @hidden_file ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ; PREPPS v. 3.1, 11 May 2013. ; ; Jesús Maíz Apellániz, IAA ; ; ; ; This procedure prepares a Postscript file for a plot. LANDSCAPE, psxsize, ; ; psysize, psxoffset, and psyoffset have their logical meaning, not the ; ; weird (but standard) IDL one. ; ; ; ; Positional parameters: ; ; psname: Postscript file name. ; ; plot: Plot structure. ; ; cfile Color table structure. ; ; ; ; Keyword parameters: ; ; QUIET: Flag to supress color table informational messages. ; ; ; ; Version history: ; ; v0.1: LANDSCAPE and COLOR are introduced. ; ; v0.2: The option of having psxsize as an input variable is introduced. ; ; v1.0: General clean up. ; ; v2.0: English version. ; ; v2.1: IDLdoc documentation. ; ; v2.5: Version system update. ; ; QUIET flag added. ; ; v3.0: Complete remodeling to incorporate structures ; ; v3.1: Only version change. ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;- PRO PREPPS, psname, plot, cfile, QUIET=quiet ON_ERROR, 1 ; ; Inicializamos las variables PostScript ; IF N_ELEMENTS(psname) EQ 0 THEN psname = 'idl.ps' IF N_ELEMENTS(plot) EQ 0 THEN plot = {psxsize:19.0} IF TAG_EXIST(plot,'psxsize') EQ 0 THEN plot = CREATE_STRUCT(plot, { psxsize:19.0}) IF TAG_EXIST(plot,'landscape') EQ 0 THEN plot = CREATE_STRUCT(plot, {landscape: 0}) IF TAG_EXIST(plot,'psaspect') EQ 0 THEN plot = CREATE_STRUCT(plot, { psaspect: 0.0}) IF TAG_EXIST(plot,'cmyk') EQ 0 THEN plot = CREATE_STRUCT(plot, { cmyk: 0}) COPY_STRUC, plot, plot, EXCEPT_TAGS='cmyk', STRUC_ADD={ cmyk:1*(plot.cmyk NE 0)} COPY_STRUC, plot, plot, $ EXCEPT_TAGS=['psxsize','psysize','psxoffset','psyoffset','landscape','psaspect'], $ STRUC_ADD={ psxsize:FLOAT(plot.psxsize ), $ psysize: 0.0, $ psxoffset: 1.0, $ psyoffset: 1.0, $ landscape: FIX(plot.landscape), $ psaspect:FLOAT(plot.psaspect )} IF plot.psxsize EQ 0 THEN plot.psxsize = 19.0 plot.landscape = 1*(plot.landscape NE 0) COPY_STRUC, plot, plot, EXCEPT_TAGS='portrait', STRUC_ADD={portrait:1-plot.landscape} psxsize0 = plot.psxsize IF plot.landscape EQ 0 THEN BEGIN IF plot.psaspect EQ 0.0 THEN BEGIN plot.psaspect = 1.0 plot.psysize = plot.psxsize ENDIF ELSE BEGIN IF plot.psaspect LE 26.0/19.0 THEN BEGIN plot.psysize = plot.psxsize*plot.psaspect ENDIF ELSE BEGIN plot.psysize = 26.0/19.0*psxsize0 plot.psxsize = plot.psysize/plot.psaspect plot.psxoffset = 1.0 + 0.5*(psxsize0-plot.psxsize) ENDELSE ENDELSE ENDIF ELSE BEGIN IF plot.psaspect EQ 0.0 THEN BEGIN plot.psaspect = 1.0 plot.psysize = plot.psxsize ENDIF ELSE BEGIN IF plot.psaspect LE 19.0/26.0 THEN BEGIN plot.psxsize = 26.0/19.0*psxsize0 plot.psysize = plot.psxsize*plot.psaspect plot.psxoffset = 1.0 + 0.5*(psxsize0-plot.psysize) ENDIF ELSE BEGIN plot.psysize = psxsize0 plot.psxsize = plot.psysize/plot.psaspect plot.psyoffset = 1.0 + 0.5*(psxsize0*26.0/19.0-plot.psxsize) ENDELSE ENDELSE ; ; La siguiente línea se añade por la curiosa forma que tiene IDL de tratar los ; ficheros apaisados: xsize y ysize se miden con la hoja en disposición ; apaisada mientras que xoffset y yoffset se hacen en disposición de retrato ; (o sea que xoffset y yoffset están intercambiados respecto a lo que uno se ; imaginaría). Además xoffset y yoffset se miden con respecto a la esquina ; inferior izquierda REAL de la gráfica por lo que sus valores típicos son ; xoffset = 1-5 cm, yoffset = 20-28 cm. ; plot.psyoffset = plot.psyoffset + plot.psxsize ENDELSE ; ; Inicializamos el PostScript ; OPENPS, psname, plot, cfile, QUIET=quiet END ;IF KEYWORD_SET(COLOR) EQ 0 THEN color = 0 ;OPENPS, psname, CFILE=cfile, CTABLE=ctable, COLOR=color, $ ; XOFFSET=psxoffset, YOFFSET=psyoffset, XSIZE=psxsize, YSIZE=psysize, $ ; LANDSCAPE=landscape, QUIET=quiet