coyote: CGPS_OPEN

Description
The purpose of cgPS_Open and `cgPS_Close` is to make it easy to set-up
and close a PostScript file. These programs are used extensively
in all Coyote Graphics routines.
If `ImageMagick  ` is installed 
on your computer, you can easily convert PostScript output to GIF, JPEG, PNG, and TIFF
raster output. If `Ghostscript ` is installed
you can convert PostScript output to PDF files. See the appropriate keywords to
`cgPS_Close`.
When cgPS_Open is called, the current graphics device is set to "PS" (the PostScript 
device). When cgPS_Close is called the current graphics device is returned to the device
in effect when cgPS_Open was called.
cgPS_Open uses the current display window as a template for the Postscript
file. Thus, if the display window is wider than it is higher, output is
in Landscape mode. To set the size of the PostScript "window" yourself, be
sure to set the NOMATCH keyword to 1.
To display surface plots correctly the FONT keyword should be set to 1.
Otherwise, the default font is 0, or hardware fonts when outputting to 
PostScript.
You can easily configure any modifications you like for your PostScript output
by setting fields in the plot and axis system variables (!P, !X, !Y, and !Z).
The modifications currently made by default in this program are these::
    !P.Thick = 3
    !P.CharThick = 3
    !X.Thick = 3
    !Y.Thick = 3
    !Z.Thick = 3
    !P.Font = 0
The !P.Charsize variable is set differently on Windows computers, and depending
on whether !P.MULTI is being used. On Windows the default is 1.25, or 1.00 for
multiple plots. On other computers, the default is 1.5, or 1.25 for multiple plots.
If true-type fonts are being used (FONT=1), the default is 1.5, or 1.25 for 
multiple plots.
The cgPS_Open program contains the common block, _$FSC_PS_START_. See the FSC_PS_SETUP__DEFINE 
program in the Coyote Library for its definition.
Categories
Utilities, Graphics
Params
filename: in, optional, type=string, default='idl.ps'
   The name of the PostScript file to be created. This can also be the name of a raster 
   file (e.g., PNG, JPEG, TIFF, PDF, etc.) that you would like to have created from a PostScript 
   intermediate file. This requires that ImageMagick is installed correctly on your 
   machine. If you choose this kind of filename, the intermediate PostScript file is
   automatically deleted.
Keywords
cancel: out, optional, type=boolean, default=0
    An output keyword that is set to 1 if the user cancelled from
    PS_Config. Otherwise, set to 0.
charsize: in, optional, type=float
    If this keyword is set, the !P.Charsize variable is set to this value until cgPS_Close is called.
default_thickness: in, optional, type=integer, default=3
    Sets the following system variables to this value while creating PostScript output:
    !P.Thick, !P.CharThick, !X.Thick, !Y.Thick, !Z.Thick. These variables are returned to
    their original values by `cgPS_Close`. A system variable is set to this value only if it 
    currently contains the IDL default value of 0.0. If it is set to anything else, this 
    default thickness value is ignored.
dejavusans: in, optional, type=boolean, default=0
    Set this keyword to select the DejaVuSans true-type font for PostScript output.
    This option is ONLY available in IDL 8.2 or higher and/or you have installed the
    DejaVuSans true-type font in your font directory.
filename: in, optional, type=string, default='idl.ps'
    The name of the PostScript file created. An alternative, and older, way of setting
    the `filename` parameter.
font: in, optional, type=integer, default=0                
    Set this to the type of font you want. A -1 selects Hershey fonts, a 0 selects hardware 
    fonts (Helvetica, normally), and a 1 selects a True-Type font. Set to 0 by default.
encapsulated: in, optional, type=boolean, default=0
    Set this keyword to produce encapsulated PostScript output.
gui: in, optional, type=boolean, default=0
    The default behavior is to use cgPS_Config to configure the PostScript device silently. 
    If you wish to allow the user to interatively configure the PostScript device, set this
    keyword.
keywords: out, optional, type=structure                
    This output keyword contains the keyword structure returned from PS_Config.
landscape: in, optional, type=boolean, default=0
    Set this keyword to produce landscape PostScript output.
nomatch: in, optional, type=boolean, default=0                
    Normally, cgPS_Open will try to "match" the aspect ratio of the PostScript file "window" 
    to the current display window. If this keyword is set, then this doesn't occur, giving 
    the user the option of specifying the size and offsets of the PostScript window directly 
    though appropriate keywords.
quiet: in, optional, type=boolean, default=0
    If set, informational messages are not set. 
scale_factor: in, optional, type=float, default=1.0
    Set this to the PostScript scale factor. By default: 1.
tt_font: in, optional, type=string
    The name of a true-type font to use. Using this keyword sets `Font` to 1.
_ref_extra: in, optional
    Any keyword appropriate for the PostScript configuration program cgPS_Config, from
    the Coyote Library can be used with cgPS_Open.
Examples
To create a line plot in a PostScript file named lineplot.ps and
also create a PNG file named lineplot.png for display in a browser,
type these commands::
    cgPS_Open, 'lineplot.ps'
    cgPlot, Findgen(11), COLOR='navy', /NODATA, XTITLE='Time', YTITLE='Signal'
    cgPlot, Findgen(11), COLOR='indian red', /OVERPLOT
    cgPlot, Findgen(11), COLOR='olive', PSYM=2, /OVERPLOT
    cgPS_Close, /PNG
Or, alternatively, without also creating a PostScript file, like this. Simply pass
cgPS_Open the name of the raster file you want to create::
    cgPS_Open, 'lineplot.png'
    cgPlot, Findgen(11), COLOR='navy', /NODATA, XTITLE='Time', YTITLE='Signal'
    cgPlot, Findgen(11), COLOR='indian red', /OVERPLOT
    cgPlot, Findgen(11), COLOR='olive', PSYM=2, /OVERPLOT
    cgPS_Close
Author
FANNING SOFTWARE CONSULTING::
    David W. Fanning 
    1645 Sheely Drive
    Fort Collins, CO 80526 USA
    Phone: 970-221-0438
    E-mail: david@idlcoyote.com
    Coyote's Guide to IDL Programming: http://www.idlcoyote.com
History
Change History::
  Written by: David W. Fanning, 20 May 2008.
  Slight modification to allow filenames with spaces in them.
  Added NoMatch keyword. 17 March 2009. DWF.
  Added a number of keywords to make these commands more configurable. 19 March 2009. DWF.
  Only set thickness system variables if starting system variables are set to their
      default values (namely, 0). This allows users to set their own system variables
      before they call PS_START, rather than after. 23 March  2009. DWF.
  Moved PS_END to its own file to allow the IDLExBr_Assistant to work properly. 7 April 2009. DWF.
  Modified to allow PostScript page type to be stored for future processing with cgFixPS. 9 August 2009. DWF.
  Added NoFix keyword to PS_END calls to repair previous, but unused set-ups. 1 Nov 2010. DWF.
  Added Charsize keyword to PS_START. 14 Nov 2010. DWF.
  Changed the way default character sizes are set. 19 Nov 2010. DWF.
  Added CANCEL and KEYWORDS output keywords. 16 Jan 2011. DWF.
  Changes to handle inability to create raster files from PS encapsulated files in 
      landscape mode. 26 Aug 2011. DWF.
  The SCALE_FACTOR is called at the time the PostScript file is opened to avoid problems
      with the bounding box not being set to the correct values. 26 October 2011. DWF.
  Created a DEFAULT_THICKNESS keyword to set the default thicknesses of PostScript 
      system variables. 14 Dec 2011. DWF.
  Moved the true-type font set-up to *after* changing the graphics device to PostScript. 10 Jan 2012. DWF.
  Added DejaVuSans keyword to allow this true-type font to be used in PostScript Output. 21 Dec 2012. DWF.
  Modified so that the PostScript device can keep a consistent interface when using True-Type
     fonts. Requires using cgSet_TTFont to select True-Type fonts. 22 May 2013. DWF.
  Changed name to cgPS_Open from PS_Start. 4 November 2013. DWF. Retired PS_Start.
  Added ability to specify the name of the output raster file desired as the filename. If this is done,
     and ImageMagick is installed, the PostScript intermediate file is deleted and the raster file is
     created automatically without setting a raster output keyword on cgPS_Close. 29 Nov 2013. DWF.
  Moved the check for Charsize to after setting to the PostScript device. 14 Jan 2014. DWF.
  The program wasn't picking up default values from cgWindow_GetDefs. 22 Jan 2014. DWF.
  Modified the program so that the PostScript file location is printed only if the PostScript file 
     is being retrained. 17 March 2014. DWF.
  Fixed a problem that prevented setting FONT=0 when setting cgPS_Open parameters with cgControl. 3 Mar 2015. DWF.
Copyright
Copyright (c) 2008-2014, Fanning Software Consulting, Inc.