GRAPHICS routines in *

All GAMAP Routines

List routines by category:
Atmospheric Sciences | Benchmarking | Color | Date/Time | Doc | File & I/O | BPCH Format | Scientific Data Formats | GAMAP Examples | GAMAP Internals | GAMAP Utilities | GAMAP Data Manipulation | GAMAP Models & Grids | GAMAP Plotting | General | Graphics | Math & Units | Plotting | Regridding | Strings | Structures | Time Series

List routines by alphabetical order:
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

Last modified: Tue Apr 4 10:50:22 2017.


List of Routines


Routine Descriptions

CLOSE_DEVICE

[Next Routine] [List of Routines]
 NAME:
        CLOSE_DEVICE

 PURPOSE:
        CLOSE_DEVICE closes the PostScript device and spawns
        a print job to the printer specified by the user or
        it can be used to close a graphics window.

 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        CLOSE_DEVICE [,OLD_DEVICE] [, Keywords ]

 INPUTS:
        OLD_DEVICE -> Name of device that shall become the active
             plotting device. If omitted, "X", "WIN" or "MAC" will
             be set depending on !VERSION.OS_FAMILY.  Hence, 
             specification of OLD_DEVICE is only rarely needed.
             This parameter works together with the OLD_DEVICE 
             parameter of OPEN_DEVICE which returns the device name 
             before the postscript device (or a graphics device) is 
             opened.  The OLD_DEVICE parameter can be misused to set 
             the output device to anything! Therefore, it's probably 
             safest to not use it and stick with the operating system 
             dependent default.

 KEYWORD PARAMETERS:
        LABEL -> a string that contains an annotation for a postscript
             plot (usually a user name and/or filename). The current 
             data and time will be appended if TIMESTAMP is set. 
             NOTE: TIMESTAMP will produce an annotation even if LABEL
             is not provided. The annotation is only added to 
             postscript plots and only if the ps file is actually 
             open.

        /TIMESTAMP  -> add date and time to the LABEL on the plot.
             If no LABEL is provided, the username and filename 
             (value of FILENAME will be used or the filename of the 
             current postscript file will be added). The timestamp 
             is only added to postscript plots and only on the last 
             page.

        PRINTER -> Name of the printer queue to send output to.
             Default is 'none', i.e. the postscript file will only 
             be closed and can then be manually printed e.g. using 
             the Unix lpr command.  Direct printing only works in 
             Unix environments.

        WINDOW -> window number to be closed (or -1 if current)

        _EXTRA=e -> any additional keywords to CLOSE_DEVICE will 
             be passed on to STRDATE which is used to format the 
             date and time string.  Possible values are: /SHORT, 
             /SORTABLE, /EUROPEAN.

        LCOLOR -> the color value for the LABEL (default 1).

        LPOSITION -> the position of the LABEL in normalized 
             coordinates (a two-element vector with default 
             [0.98,0.007]).

        LSIZE -> the charcter size of the LABEL (default 0.7).

        LALIGN -> the alignment of the LABEL (default 1).

        FILENAME -> name of the PostScript file.  This is actaully
             obsolete now because the PostScript filename is 
             determined at the time the file is opened (e.g. in
             routine OPEN_DEVICE)

 OUTPUTS:
        If postscript device is active, a *.ps file will be closed 
        and optionally sent to the printer.

 SUBROUTINES:
        External Subroutines Required:
        ================================
        STRDATE (function)

 REQUIREMENTS:
        Requires routines in the 

 NOTES: 
        The WINDOW keyword is only evaluated if the current device 
        supports windows [!D.FLAGS AND 256) GT 0]. If you only want 
        to close a postscript file and don't fuss around with your 
        screen windows then simply don't set this keyword.

 EXAMPLES:
        (1)
        CLOSE_DEVICE

            ; Closes a postscript file (if opened) and resets the 
            ; current plotting device to 'X', 'WIN', or 'MAC' 
            ; depending on the OS_FAMILY.

        (2) 
        CLOSE_DEVICE, PRINTER='hplj4', LABEL='mgs', /TIMESTAMP

            ; If current device name is PS then the postscript 
            ; file will be closed, a user, date and time label will 
            ; be added and the file will be spooled to the printer 
            ; queue 'hplj4'. NOTE: Printing of the file fails if you 
            ; specified FILENAME as a relative path in the OPEN_DEVICE 
            ; command and you changed your working directory while
            ; the device was opened.
  
        (3)
        CLOSE_DEVICE, WIN=-1

            ; If current device name is PS then the postscript file 
            ; will be closed. If the current device is a screen 
            ; device (that supports windows), then the active window
            ;  will be deleted.
 
 MODIFICATION HISTORY:
        bmy, 18 Aug 1997: VERSION 1.00
        bmy, 19 Aug 1997: VERSION 1.01
        mgs, 20 Aug 1997: VERSION 1.02
        mgs, 08 Apr 1998: VERSION 2.00 
                          - automatic filename detection
                          - default device depending on OS_FAMILY
        mgs, 21 May 1998: 
                          - added L.. keywords to control label 
                            and timestamp output
        mgs, 18 Nov 1998:
                          - added output of username as default in timestamp
        bmy, 28 Jul 2000: TOOLS VERSION 1.46
                          - cleaned up a few things
        bmy, 24 May 2007: TOOLS VERSION 2.06
                          - Updated comments
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10

(See /n/home09/ryantosca/IDL/gamap2/graphics/close_device.pro)


GIF2PS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        GIF2PS

 PURPOSE:
        Translates GIF images to PostScript format.

 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        GIF2PS [, FILENAME [, Keywords ] ]

 INPUTS:
        FILENAME (optional) -> Name of the input GIF file.  
             If FILENAME is omitted then GIF2PS will prompt
             the user to supply a file name via a dialog box.
             FILENAME may contain wild card characters.

 KEYWORD PARAMETERS:
        OUTFILENAME -> Name of the output PostScript file.
             Default is "idl.ps".

        /FLIP_BW -> Set this keyword to turn black pixels into
             white pixels and vice-versa.  This is useful for
             creating PostScript files of GIF images that have a 
             dark background color. 

        XOFFSET, YOFFSET (optional) -> Set these keywords to specify
             the X and Y Margins in inches.  Defaults are 
             XMARGIN = 0.5 inches and YMARGIN = 0.5 inches.
 
        _EXTRA=e -> Picks up extra keywords for OPEN_DEVICE,
             TVIMAGE, and CLOSE_DEVICE.

 OUTPUTS:
        Sends output to a PostScript file, whose name is given
        by the OUTFILENAME keyword.

 SUBROUTINES:
        External Subroutines Required:
        ==============================
        EXTRACT_FILEPATH (function)
        DIALOG_PICKFILE  (function)
        TVIMAGE

 REQUIREMENTS:
        None

 NOTES:
        (1) Image processing options are limited to flipping the
            black and white pixels.  This should be good enough
            for most purposes.

        (2) XMARGIN and YMARGIN assume that we are printing out for
            standard USA 8.5 x 11" page.  Device sizes listed below
            are also in inches.  

 EXAMPLE:
        (1)
        GIF2PS, 'my_gif.gif', OUTFILENAME='my_ps.ps'

             ; Translates the image in "my_gif.gif" to 
             ; the PostScript file "my_ps.ps".

        (2)
        GIF2PS, 'my_gif.gif', OUTFILENAME='my_ps.ps', /FLIP_BW
        
             ; Same as in (1), but also changes all black
             ; pixels to white and vice-versa.  

        (3)
        GIF2PS, 'my_gif.gif', OUTFILENAME='my_ps.ps', /FLIP_BW, $
             XMARGIN=0.5, YMARGIN=0.5
        
             ; Same as in (2), but also will "pad" the image with
             ; 0.5" of white space around each side.

 MODIFICATION HISTORY:
        bmy, 28 Jan 2000: VERSION 1.45
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10

(See /n/home09/ryantosca/IDL/gamap2/graphics/gif2ps.pro)


JPEG2PS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        JPEG2PS

 PURPOSE:
        Translates JPEG images to PostScript format.

 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        JPEG2PS [, FILENAME [, Keywords ] ]

 INPUTS:
        FILENAME (optional) -> Name of the input JPEG file.  
             If FILENAME is omitted then JPEG2PS will prompt
             the user to supply a file name via a dialog box.
             FILENAME may contain wild card characters.

 KEYWORD PARAMETERS:
        OUTFILENAME -> Name of the output PostScript file.
             Default is "idl.ps".

        /FLIP_BW -> Set this keyword to turn black pixels into
             white pixels and vice-versa.  This is useful for
             creating PostScript files of JPEG images that have a 
             dark background color. 

        XOFFSET, YOFFSET (optional) -> Set these keywords to specify
             the X and Y Margins in inches.  Defaults are 
             XMARGIN = 0.5 inches and YMARGIN = 0.5 inches.
 
        _EXTRA=e -> Picks up extra keywords for OPEN_DEVICE,
             TVIMAGE, and CLOSE_DEVICE.

 OUTPUTS:
        Sends output to a PostScript file, whose name is given
        by the OUTFILENAME keyword.

 SUBROUTINES:
        External subroutines required:
        ------------------------------
        EXTRACT_FILEPATH (function)
        DIALOG_PICKFILE  (function)
        TVIMAGE

 REQUIREMENTS:
        References routines from the TOOLS package.

 NOTES:
        (1) Image processing options are limited to flipping the
            black and white pixels.  This should be good enough
            for most purposes.

        (2) XMARGIN and YMARGIN assume that we are printing out for
            standard USA 8.5 x 11" page.  Device sizes listed below
            are also in inches. 
 
        (3) Refer to the READ_JPEG procedure manual pages for
            JPEG image handling options. 

 EXAMPLE:
        (1)
        JPEG2PS, 'my_jpg.jpg', OUTFILENAME='my_ps.ps'

             ; Translates the image in "my_jpg.jpg" to 
             ; the PostScript file "my_ps.ps".

        (2)
        JPEG2PS, 'my_jpg.jpg', OUTFILENAME='my_ps.ps', /FLIP_BW
        
             ; Same as in (1), but also changes all black
             ; pixels to white and vice-versa.  

        (3)
        JPEG2PS, 'my_jpg.jpg', OUTFILENAME='my_ps.ps', /FLIP_BW, $
             XMARGIN=0.5, YMARGIN=0.5
        
             ; Same as in (2), but also will "pad" the image with
             ; 0.5" of white space around each side.

 MODIFICATION HISTORY:
        bmy, 28 Jan 2000: VERSION 1.45
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10

(See /n/home09/ryantosca/IDL/gamap2/graphics/jpeg2ps.pro)


OPEN_DEVICE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        OPEN_DEVICE

 PURPOSE:
        If hard copy is to be generated, OPEN_DEVICE opens the 
        PostScript device.  Otherwise OPEN_DEVICE opens an Xwindow. 

 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        OPEN_DEVICE [,OLD_DEVICE] [,keywords]

 INPUTS:
        OLD_DEVICE -> This is now obsolete, and is only maintained
             for backwards compatibility.

 KEYWORD PARAMETERS:
        /PS -> will send PostScript file to printer

        FILENAME -> The name to be given the PostScript file.
             Default: idl.ps

        /LANDSCAPE  -> will enable PostScript landscape mode

        /PORTRAIT -> will enable PostScript portrait mode

        XOFFSET, YOFFSET -> Keywords for the DEVICE command.  XSIZE
             specifies the horizontal offset (in inches) of the page,
             and YSIZE specifies the vertical offset (in inches) of
             the page.  Defaults are as follows:

             Plot type         XOFFSET          YOFFSET

             -------------------------------------------------
             Portrait           0.25             0.25
             Landscape          0.75             0.75
             
        XSIZE, YSIZE -> Keywords for the DEVICE command.  XSIZE
             specifies the horizontal size (in inches) of the page,
             and YSIZE specifies the vertical size (in inches) of
             the page.  Defaults are as follows:
             
             Plot type         XSIZE            YSIZE
             -------------------------------------------------
             Portrait           8.0              10.0
             Landscape      11 - 2*XOFFSET   8.5 - 2*YOFFSET


        /COLOR -> will enable PostScript color mode

        WINPARAM -> An integer vector with up to 5 elements:
             WINPARAM(0) = window number  (if negative, a window
                          will be opened with the /FREE option.
             WINPARAM(1) = X dimension of window in pixels (width)
             WINPARAM(2) = Y dimension of window in pixels (height)
             WINPARAM(3) = X offset of window (XPOS)
             WINPARAM(4) = Y offset of window (YPOS)

        TITLE -> window title

        /Z -> If set, will initialize the Z-buffer device.  If WINPARAM
             is specified, then the size of the Z-buffer region will be
             WINPARAM[1] x WINPARAM[2] pixels.  If WINPARAM is not 
             specified, then the size of the Z-buffer region will be 
             set to a default size of 640 x 512 pixels.

        NCOLORS -> If /Z is set, NCOLORS specifies the number of colors
             that will be made available to the Z-buffer device.
         
        _EXTRA=e -> additional keywords that are passed to the call to
             the DEVICE routine (e.g. /ENCAPSULATED)

 OUTPUTS:
        OLD_DEVICE -> stores the previous value of !D.NAME for
             use in CLOSE_DEVICE. Note that CLOSE_DEVICE will automatically
             set the default screen device if OLD_DEVICE is not provided,
             hence it will only rarely be used.

 SUBROUTINES:
        None

 REQUIREMENTS:
        None

 NOTES:
        If PS=0 then  
            Open Xwindow WINPARAM(0), which is WINPARAM(1) pixels wide
            in the X-direction, and WINPARAM(2) pixels wide in the
            Y-direction. 

        If PS=1 then 
           depending on /PORTRAIT or /LANDSCAPE and /COLOR
           postscript is enabled in either portrait or landscape
           mode as color or b/w plot

        The key parameter which determines whether to open a postscript
        file or a screen window is PS. Therefore, e.g. in a widget 
        application, you can pass a standard set of parameters for both,
        postscript and screen, to this routine, and determine the device
        to be chosen by a button state or checkbox which is passed into PS.
              
        Also is currently hardwired for 8.5 x 11 inch paper (US
        format).  Need to extend this to European A4 paper soon.
        

 EXAMPLES:
        (1)
        OPEN_DEVICE, WINPARAM=[0,800,800]  

             ; opens a screen window of size 800x800 
             ; pixels at the default position

        (2)
        OPEN_DEVICE, /LANDSCAPE, FILENAME='myplot.ps'

             ; opens a postscript file named myplot.ps in 
             ; b/w and landscape orientation

        (3)
        OPEN_DEVICE, PS=PS, /PORTRAIT, /COLOR, WIN=2

             ; depending on the value of PS either a color 
             ; postscript file named idl.ps is opened or screen 
             ; window number 2 in default size.

        (4)
        OPEN_DEVICE, /Z

             ; Opens the IDL Z-buffer device.  The current 
             ; color table will be preserved in the Z-buffer device.

 MODIFICATION HISTORY:
        bmy  15 Aug 1997: VERSION 1.00
        bmy, 19 Aug 1997: VERSION 1.01
        mgs, 20 Aug 1997: VERSION 1.02
        mgs, 09 Apr 1998: VERSION 1.10 
                          - added 2 more parameters for WINPARAM
                            and TITLE keyword
        bmy, 28 Jul 2000: VERSION 1.46   
                          - now make XSIZE, XOFFSET, YSIZE, YOFFSET keywords
                          - cosmetic changes, updated comments
        bmy, 30 Jan 2001: VERSION 1.47
                          - added /Z and NCOLORS keywords for the Z-buffer
                          - updated comments
        bmy, 26 Jul 2001: VERSION 1.48
                          - use default window size of 640 x 512 for
                            the Z-buffer, if WINPARAM isn't specified.
        bmy, 27 Aug 2001: - now call DEVICE with XSIZE, YSIZE,
                            XOFFSET, YOFFSET for /LANDSCAPE plots
                          - Updatedd comments
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10

(See /n/home09/ryantosca/IDL/gamap2/graphics/open_device.pro)


SCREEN2BMP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        SCREEN2BMP

 PURPOSE:
        Captures an image from the X-window or Z-buffer device and 
        saves the image to a BMP file.  Handles 8-bit and TRUE
        COLOR displays correctly.
  
 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        SCREEN2BMP, FILENAME [ , Keywords ]

 INPUTS:
        FILENAME -> Name of the BMP file that will be created.
             FILENAME may be omitted if you wish to only return
             the image (via the THISFRAME keyword).

 KEYWORD PARAMETERS:
        THISFRAME -> If FILENAME is not specified, then the byte
             image returned from the screen capture will be passed
             back to the calling program via THISFRAME.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ==============================
        TVREAD (function)

 REQUIREMENTS:
        None

 NOTES:
        (1) Should work for Unix/Linux, Macintosh, and Windows.
        (2) SCREEN2TIFF is just a convenience wrapper for TVREAD.

 EXAMPLES:
        PLOT, X, Y
        SCREEN2TIFF, 'myplot.bmp'

             ; Creates a simple plot and writes it to a TIFF file
             ; via capture from the screen (X-window device).

        PLOT, X, Y
        SCREEN2TIFF, THISFRAME=THISFRAME

             ; Creates a simple plot and saves the screen 
             ; capture image to the byte array THISFRAME. 

        OPEN_DEVICE, /Z
        PLOT, X, Y
        SCREEN2TIFF, 'myplot.bmp'
        CLOSE_DEVICE

             ; Creates a simple plot and writes it to a TIFF file
             ; via capture from the Z-buffer device.


 MODIFICATION HISTORY:
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
                          - adapted from SCREEN2GIF
        phs,  3 Feb 2009: GAMAP VERSION 2.13
                          - Use the NoDialog keyword in call to
                            TVREAD

(See /n/home09/ryantosca/IDL/gamap2/graphics/screen2bmp.pro)


SCREEN2GIF

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        SCREEN2GIF

 PURPOSE:
        Captures an image from the X-window or Z-buffer device and 
        saves the image to a GIF file.  Handles 8-bit and TRUE
        COLOR displays correctly.
  
 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        SCREEN2GIF, FILENAME [ , Keywords ]

 INPUTS:
        FILENAME -> Name of the GIF file that will be created.
             FILENAME may be omitted if you wish to only return
             the image (via the THISFRAME keyword).

 KEYWORD PARAMETERS:
        THISFRAME -> Returns to the calling program the 
             byte image captured from the screen.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ===============================
        TVREAD (function)   

 REQUIREMENTS:
        Requires routines from the TOOLS package.

 NOTES:
        (1) Should work for Unix/Linux, Macintosh, and Windows.
   
        (2) SCREEN2GIF is now a wrapper for TVREAD.  David Fanning's 
            TVREAD function does the screen capture better than 
            the algorithm in the old SCREEN2GIF.

 EXAMPLES:
        PLOT, X, Y
        SCREEN2GIF, 'myplot.gif'

             ; Creates a simple plot and writes it to a GIF file
             ; via capture from the screen (X-window device).

        PLOT, X, Y
        SCREEN2GIF, THISFRAME=THISFRAME

             ; Creates a simple plot and saves the screen 
             ; capture image to the byte array THISFRAME. 

        OPEN_DEVICE, /Z
        PLOT, X, Y
        SCREEN2GIF, 'myplot.gif'
        CLOSE_DEVICE

             ; Creates a simple plot and writes it to a GIF file
             ; via capture from the Z-buffer device.


 MODIFICATION HISTORY:
        bmy, 24 Jul 2001: TOOLS VERSION 1.49
        bmy, 02 Dec 2002: TOOLS VERSION 1.52
                          - now uses TVREAD function from D. Fanning
                            which works on both PC's & Unix terminals
        bmy, 30 Apr 2003: TOOLS VERSION 1.53
                          - Bug fix in passing file name to TVREAD
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
                          - now pass _EXTRA=e to TVREAD
                          - now call TVREAD correctly if we omit FILENAME
                          - updated comments
        phs,  3 Feb 2009: GAMAP VERSION 2.13
                          - Use the NoDialog keyword in call to
                            TVREAD 

(See /n/home09/ryantosca/IDL/gamap2/graphics/screen2gif.pro)


SCREEN2JPG

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        SCREEN2JPG

 PURPOSE:
        Captures an image from the X-window or Z-buffer device and 
        saves the image to a JPEG file.  Handles 8-bit and TRUE
        COLOR displays correctly.
  
 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        SCREEN2JPG, FILENAME [ , Keywords ]

 INPUTS:
        FILENAME -> Name of the JPEG file that will be created.
             FILENAME may be omitted if you wish to only return
             the image (via the THISFRAME keyword).

 KEYWORD PARAMETERS:
        THISFRAME -> If FILENAME is not specified, then the byte
             image returned from the screen capture will be passed
             back to the calling program via THISFRAME.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ==============================
        TVREAD (function)

 REQUIREMENTS:
        Requires routines from the TOOLS package.

 NOTES:
        (1) Should work for Unix/Linux, Macintosh, and Windows.
        (2) SCREEN2JPG is just a convenience wrapper for TVREAD.

 EXAMPLES:
        PLOT, X, Y
        SCREEN2JPG, 'myplot.jpg'

             ; Creates a simple plot and writes it to a JPG file
             ; via capture from the screen (X-window device).

        PLOT, X, Y
        SCREEN2JPG, THISFRAME=THISFRAME

             ; Creates a simple plot and saves the screen 
             ; capture image to the byte array THISFRAME. 

        OPEN_DEVICE, /Z
        PLOT, X, Y
        SCREEN2JPG, 'myplot.jpg'
        CLOSE_DEVICE

             ; Creates a simple plot and writes it to a JPG file
             ; via capture from the Z-buffer device.


 MODIFICATION HISTORY:
        bmy, 25 Sep 2003: TOOLS VERSION 1.53
                          - Bug fix in passing file name to TVREAD
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
                          - now pass _EXTRA=e to TVREAD
                          - updated comments
        phs,  3 Feb 2009: GAMAP VERSION 2.13
                          - Use the NoDialog keyword in call to
                            TVREAD 

(See /n/home09/ryantosca/IDL/gamap2/graphics/screen2jpg.pro)


SCREEN2PNG

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        SCREEN2PNG

 PURPOSE:
        Captures an image from the X-window or Z-buffer device and 
        saves the image to a PNG file.  Handles 8-bit and TRUE
        COLOR displays correctly.
  
 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        SCREEN2PNG, FILENAME [ , Keywords ]

 INPUTS:
        FILENAME -> Name of the PNG file that will be created.
             FILENAME may be omitted if you wish to only return
             the image (via the THISFRAME keyword).

 KEYWORD PARAMETERS:
        THISFRAME -> Returns to the calling program the 
             byte image captured from the screen.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ==============================
        TVREAD (function)

 REQUIREMENTS:
        None

 NOTES:
        (1) Should work for Unix/Linux, Macintosh, and Windows.
        (2) SCREEN2PNG is just a convenience wrapper for TVREAD.

 EXAMPLES:
        PLOT, X, Y
        SCREEN2PNG, 'myplot.png'

             ; Creates a simple plot and writes it to a PNG file
             ; via capture from the screen (X-window device).

        PLOT, X, Y
        SCREEN2PNG, THISFRAME=THISFRAME

             ; Creates a simple plot and saves the screen 
             ; capture image to the byte array THISFRAME. 

        OPEN_DEVICE, /Z
        PLOT, X, Y
        SCREEN2PNG, 'myplot.png'
        CLOSE_DEVICE

             ; Creates a simple plot and writes it to a PNG file
             ; via capture from the Z-buffer device.


 MODIFICATION HISTORY:
        bmy, 25 Sep 2003: TOOLS VERSION 1.53
                          - Bug fix in passing file name to TVREAD
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
                          - now pass _EXTRA=e to TVREAD
                          - updated comments
        phs,  3 Feb 2009: GAMAP VERSION 2.13
                          - Use the NoDialog keyword in call to
                            TVREAD 

(See /n/home09/ryantosca/IDL/gamap2/graphics/screen2png.pro)


SCREEN2TIFF

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        SCREEN2TIFF

 PURPOSE:
        Captures an image from the X-window or Z-buffer device and 
        saves the image to a TIFF file.  Handles 8-bit and TRUE
        COLOR displays correctly.
  
 CATEGORY:
        Graphics

 CALLING SEQUENCE:
        SCREEN2TIFF, FILENAME [ , Keywords ]

 INPUTS:
        FILENAME -> Name of the TIFF file that will be created.
             FILENAME may be omitted if you wish to only return
             the image (via the THISFRAME keyword).

 KEYWORD PARAMETERS:
        THISFRAME -> If FILENAME is not specified, then the byte
             image returned from the screen capture will be passed
             back to the calling program via THISFRAME.

 OUTPUTS:
        None

 SUBROUTINES:
        External Subroutines Required:
        ==============================
        TVREAD (function)

 REQUIREMENTS:
        None

 NOTES:
        (1) Should work for Unix/Linux, Macintosh, and Windows.
        (2) SCREEN2TIFF is just a convenience wrapper for TVREAD.

 EXAMPLES:
        PLOT, X, Y
        SCREEN2TIFF, 'myplot.tif'

             ; Creates a simple plot and writes it to a TIFF file
             ; via capture from the screen (X-window device).

        PLOT, X, Y
        SCREEN2TIFF, THISFRAME=THISFRAME

             ; Creates a simple plot and saves the screen 
             ; capture image to the byte array THISFRAME. 

        OPEN_DEVICE, /Z
        PLOT, X, Y
        SCREEN2TIFF, 'myplot.tif'
        CLOSE_DEVICE

             ; Creates a simple plot and writes it to a TIFF file
             ; via capture from the Z-buffer device.


 MODIFICATION HISTORY:
        bmy, 25 Sep 2003: TOOLS VERSION 1.53
                          - Bug fix in passing file name to TVREAD
  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
                          - now pass _EXTRA=e to TVREAD
                          - updated comments
        phs,  3 Feb 2009: GAMAP VERSION 2.13
                          - Use the NoDialog keyword in call to
                            TVREAD 

(See /n/home09/ryantosca/IDL/gamap2/graphics/screen2tiff.pro)


STR_SIZE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
  STR_SIZE

 PURPOSE:

  The purpose of this function is to return the proper
  character size to make a specified string a specifed
  width in a window. The width is specified in normalized
  coordinates. The function is extremely useful for sizing
  strings and labels in resizeable graphics windows.

 CATEGORY:
  Strings, Graphics

 CALLING SEQUENCE:

  thisCharSize = STR_SIZE(thisSting, targetWidth)

 INPUTS:

  thisString:  This is the string that you want to make a specifed
     target size or width.

 OPTIONAL INPUTS:

  targetWidth:  This is the target width of the string in normalized
     coordinates in the current graphics window. The character
     size of the string (returned as thisCharSize) will be
     calculated to get the string width as close as possible to
     the target width. The default is 0.25.

 KEYWORD PARAMETERS:

  INITSIZE:  This is the initial size of the string. Default is 1.0.

  STEP:   This is the amount the string size will change in each step
     of the interative process of calculating the string size.
     The default value is 0.05.

 OUTPUTS:

  thisCharSize:  This is the size the specified string should be set
     to if you want to produce output of the specified target
     width. The value is in standard character size units where
     1.0 is the standard character size.

 EXAMPLE:

  To make the string "Happy Holidays" take up 30% of the width of
  the current graphics window, type this:

               XYOUTS, 0.5, 0.5, ALIGN=0.5, "Happy Holidays", $
        CHARSIZE=STR_SIZE("Happy Holidays", 0.3)

 MODIFICATION HISTORY:

  Written by: David Fanning, 17 DEC 96.
  Added a scaling factor to take into account the aspect ratio
     of the window in determing the character size. 28 Oct 97. DWF

(See /n/home09/ryantosca/IDL/gamap2/strings/str_size.pro)


TVIMAGE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
     TVIMAGE

 PURPOSE:
     This purpose of TVIMAGE is to enable the TV command in IDL
     to be a completely device-independent and color-decomposition-
     state independent command. On 24-bit displays color decomposition
     is always turned off for 8-bit images and on for 24-bit images.
     The color decomposition state is restored for those versions of
     IDL that support it (> 5.2). Moreover, TVIMAGE adds features
     that TV lacks. For example, images can be positioned in windows
     using the POSITION keyword like other IDL graphics commands.
     TVIMAGE also supports the !P.MULTI system variable, unlike the
     TV command. TVIMAGE was written to work especially well in
     resizeable graphics windows. Note that if you wish to preserve
     the aspect ratio of images in resizeable windows, you should set
     the KEEP_ASPECT_RATIO keyword, described below. TVIMAGE works
     equally well on the display, in the PostScript device, and in
     the Printer and Z-Graphics Buffer devices. The TRUE keyword is
     set automatically to the correct value for 24-bit images, so you
     don't need to specify it when using TVIMAGE.

 AUTHOR:
       FANNING SOFTWARE CONSULTING:
       David Fanning, Ph.D.
       1645 Sheely Drive
       Fort Collins, CO 80526 USA
       Phone: 970-221-0438
       E-mail: davidf@dfanning.com
       Coyote's Guide to IDL Programming: http://www.dfanning.com/

 CATEGORY:
     GAMAP Internals, Graphics

 CALLING SEQUENCE:

     TVIMAGE, image

 INPUTS:
     image:    A 2D or 3D image array. It should be byte data.

       x  :    The X position of the lower-left corner of the image.
               This parameter is only recognized if the TV keyword is set.
               If the Y position is not used, X is taken to be the image
               "position" in the window. See the TV command documenation
               for details.

       y  :    The Y position of the lower-left corner of the image.
               This parameter is only recognized if the TV keyword is set.

 KEYWORD PARAMETERS:

     BACKGROUND:   This keyword specifies the background color. Note that
               the keyword ONLY has effect if the ERASE keyword is also
               set or !P.MULTI is set to multiple plots and TVIMAGE is
               used to place the *first* plot.

     ERASE:    If this keyword is set an ERASE command is issued
               before the image is displayed. Note that the ERASE
               command puts the image on a new page in PostScript
               output.

     _EXTRA:   This keyword picks up any TV keywords you wish to use.

     HALF_HALF: If set, will tell CONGRID to extrapolate a *half* row
               and column on either side, rather than the default of
               one full row/column at the ends of the array.  If you
               are interpolating images with few rows, then the
               output will be more consistent with this technique.
               This keyword is intended as a replacement for
               MINUS_ONE, and both keywords probably should not be
               used in the same call to CONGRID.

     KEEP_ASPECT_RATIO: Normally, the image will be resized to fit the
               specified position in the window. If you prefer, you can
               force the image to maintain its aspect ratio in the window
               (although not its natural size) by setting this keyword.
               The image width is fitted first. If, after setting the
               image width, the image height is too big for the window,
               then the image height is fitted into the window. The
               appropriate values of the POSITION keyword are honored
               during this fitting process. Once a fit is made, the
               POSITION coordiates are re-calculated to center the image
               in the window. You can recover these new position coordinates
               as the output from the POSITION keyword.

     MARGIN:   A single value, expressed as a normalized coordinate, that
               can easily be used to calculate a position in the window.
               The margin is used to calculate a POSITION that gives
               the image an equal margin around the edge of the window.
               The margin must be a number in the range 0.0 to 0.333. This
               keyword is ignored if the POSITION or OVERPLOT keywords are
               used. It is also ignored when TVImage is executed in a
               multi-plot window, EXCEPT if it's value is zero. In this
               special case, the image will be drawn into its position in
               the multi-plot window with no margins whatsoever. (The
               default is to have a slight margin about the image to separate
               it from other images or graphics.

     MINUS_ONE: The value of this keyword is passed along to the CONGRID
               command. It prevents CONGRID from adding an extra row and
               column to the resulting array, which can be a problem with
               small image arrays.

     NOINTERPOLATION: Setting this keyword disables the default bilinear
               interpolation done to the image when it is resized. Nearest
               neighbor interpolation is done instead. This is preferred
               when you do not wish to change the pixel values of the image.
               This keyword must be set, for example, when you are displaying
               GIF files that come with their own non-IDL color table vectors.

     NORMAL:   Setting this keyword means image position coordinates x and y
               are interpreted as being in normalized coordinates. This keyword
               is only valid if the TV keyword is set.

     OVERPLOT: Setting this keyword causes the POSITION keyword to be ignored
               and the image is positioned in the location established by the
               last graphics command. For example:

                    Plot, Findgen(11), Position=[0.1, 0.3, 0.8, 0.95]
                    TVImage, image, /Overplot

     POSITION: The location of the image in the output window. This is
               a four-element floating array of normalized coordinates of
               the type given by !P.POSITION or the POSITION keyword to
               other IDL graphics commands. The form is [x0, y0, x1, y1].
               The default is [0.0, 0.0, 1.0, 1.0]. Note that this keyword is ALSO
               an output keyword. That is to say, upon return from TVIMAGE
               this keyword (if passed by reference) contains the actual
               position in the window where the image was displayed. This
               may be different from the input values if the KEEP_ASPECT_RATIO
               keyword is set, or if you are using TVIMAGE with the POSITION
               keyword when !P.MULTI is set to something other than a single
               plot. One use for the output values might be to position other
               graphics (e.g., a colorbar) in relation to the image.

               Note that the POSITION keyword should not, normally, be used
               when displaying multiple images with !P.MULTI. If it *is* used,
               its meaning differs slightly from its normal meaning. !P.MULTI
               is responsible for calculating the position of graphics in the
               display window. Normally, it would be a mistake to use a POSITION
               graphics keyword on a graphics command that was being drawn with
               !P.MULTI. But in this special case, TVIMAGE will use the POSITION
               coordinates to calculate an image position in the actual position
               calculated for the image by !P.MULTI. The main purpose of this
               functionality is to allow the user to display images along with
               colorbars when using !P.MULTI. See the example below.

     TV:       Setting this keyword makes the TVIMAGE command work much
               like the TV command, although better. That is to say, it
               will still set the correct DECOMPOSED state depending upon
               the kind of image to be displayed (8-bit or 24-bit). It will
               also allow the image to be "positioned" in the window by
               specifying the coordinates of the lower-left corner of the
               image. The NORMAL keyword is activated when the TV keyword
               is set, which will indicate that the position coordinates
               are given in normalized coordinates rather than device
               coordinates.

               Setting this keyword will ensure that the keywords
               KEEP_ASPECT_RATIO, MARGIN, MINUS_ONE, MULTI, and POSITION
               are ignored.

 OUTPUTS:
     None.

 SIDE EFFECTS:
     Unless the KEEP_ASPECT_RATIO keyword is set, the displayed image
     may not have the same aspect ratio as the input data set.

 RESTRICTIONS:
     If the POSITION keyword and the KEEP_ASPECT_RATIO keyword are
     used together, there is an excellent chance the POSITION
     parameters will change. If the POSITION is passed in as a
     variable, the new positions will be returned in the same variable
     as an output parameter.

     If a 24-bit image is displayed on an 8-bit display, the
     24-bit image must be converted to an 8-bit image and the
     appropriate color table vectors. This is done with the COLOR_QUAN
     function. The TVIMAGE command will load the color table vectors
     and set the NOINTERPOLATION keyword if this is done. Note that the
     resulting color table vectors are normally incompatible with other
     IDL-supplied color tables. Hence, other graphics windows open at
     the time the image is display are likely to look strange.

 EXAMPLE:
     To display an image with a contour plot on top of it, type:

        filename = FILEPATH(SUBDIR=['examples','data'], 'worldelv.dat')
        image = BYTARR(360,360)
        OPENR, lun, filename, /GET_LUN
        READU, lun, image
        FREE_LUN, lun

        TVIMAGE, image, POSITION=thisPosition, /KEEP_ASPECT_RATIO
        CONTOUR, image, POSITION=thisPosition, /NOERASE, XSTYLE=1, $
            YSTYLE=1, XRANGE=[0,360], YRANGE=[0,360], NLEVELS=10

     To display four images in a window without spacing between them:

     !P.Multi=[0,2,2]
     TVImage, image, Margin=0
     TVImage, image, Margin=0
     TVImage, image, Margin=0
     TVImage, image, Margin=0
     !P.Multi = 0

     To display four image in a window with associated color bars:

     !P.Multi=[0,2,2]
     p = [0.02, 0.3, 0.98, 0.98]
     LoadCT, 0
     TVImage, image, Position=p
     Colorbar, Position=[p[0], p[1]-0.1, p[2], p[1]-0.05]
     p = [0.02, 0.3, 0.98, 0.98]
     LoadCT, 2
     TVImage, image, Position=p
     Colorbar, Position=[p[0], p[1]-0.1, p[2], p[1]-0.05]
     p = [0.02, 0.3, 0.98, 0.98]
     LoadCT, 3
     TVImage, image, Position=p
     Colorbar, Position=[p[0], p[1]-0.1, p[2], p[1]-0.05]
     p = [0.02, 0.3, 0.98, 0.98]
     LoadCT, 5
     TVImage, image, Position=p
     Colorbar, Position=[p[0], p[1]-0.1, p[2], p[1]-0.05]
     !P.Multi =0

 MODIFICATION HISTORY:
      Written by:     David Fanning, 20 NOV 1996.
      Fixed a small bug with the resizing of the image. 17 Feb 1997. DWF.
      Removed BOTTOM and NCOLORS keywords. This reflects my growing belief
         that this program should act more like TV and less like a "color
         aware" application. I leave "color awareness" to the program
         using TVIMAGE. Added 24-bit image capability. 15 April 1997. DWF.
      Fixed a small bug that prevented this program from working in the
          Z-buffer. 17 April 1997. DWF.
      Fixed a subtle bug that caused me to think I was going crazy!
          Lession learned: Be sure you know the *current* graphics
          window! 17 April 1997. DWF.
      Added support for the PRINTER device. 25 June 1997. DWF.
      Extensive modifications. 27 Oct 1997. DWF
          1) Removed PRINTER support, which didn't work as expected.
          2) Modified Keep_Aspect_Ratio code to work with POSITION keyword.
          3) Added check for window-able devices (!D.Flags AND 256).
          4) Modified PostScript color handling.
      Craig Markwart points out that Congrid adds an extra row and column
          onto an array. When viewing small images (e.g., 20x20) this can be
          a problem. Added a Minus_One keyword whose value can be passed
          along to the Congrid keyword of the same name. 28 Oct 1997. DWF
      Changed default POSITION to fill entire window. 30 July 1998. DWF.
      Made sure color decomposition is OFF for 2D images. 6 Aug 1998. DWF.
      Added limited PRINTER portrait mode support. The correct aspect ratio
          of the image is always maintained when outputting to the
          PRINTER device and POSITION coordinates are ignored. 6 Aug 1998. DWF
      Removed 6 August 98 fixes (Device, Decomposed=0) after realizing that
          they interfere with operation in the Z-graphics buffer. 9 Oct 1998. DWF
      Added a MARGIN keyword. 18 Oct 1998. DWF.
      Re-established Device, Decomposed=0 keyword for devices that
         support it. 18 Oct 1998. DWF.
      Added support for the !P.Multi system variable. 3 March 99. DWF
      Added DEVICE, DECOMPOSED=1 command for all 24-bit images. 2 April 99. DWF.
      Added ability to preserve DECOMPOSED state for IDL 5.2 and higher. 4 April 99. DWF.
      Added TV keyword to allow TVIMAGE to work like the TV command. 11 May 99. DWF.
      Added the OVERPLOT keyword to allow plotting on POSITION coordinates
         estabished by the preceding graphics command. 11 Oct 99. DWF.
      Added automatic recognition of !P.Multi. Setting MULTI keyword is no
         longer required. 18 Nov 99. DWF.
      Added NOINTERPOLATION keyword so that nearest neighbor interpolation
         is performed rather than bilinear. 3 Dec 99. DWF
      Changed ON_ERROR condition from 1 to 2. 19 Dec 99. DWF.
      Added Craig Markwardt's CMCongrid program and removed RSI's. 24 Feb 2000. DWF.
      Added HALF_HALF keyword to support CMCONGRID. 24 Feb 2000. DWF.
      Fixed a small problem with image start position by adding ROUND function. 19 March 2000. DWF.
      Updated the PRINTER device code to take advantage of available keywords. 2 April 2000. DWF.
      Reorganized the code to handle 24-bit images on 8-bit displays better. 2 April 2000. DWF.
      Added BACKGROUND keyword. 20 April 2000. DWF.
      Fixed a small problem in where the ERASE was occuring. 6 May 2000. DWF.
      Rearranged the PLOT part of code to occur before decomposition state
         is changed to fix Background color bug in multiple plots. 23 Sept 2000. DWF.
      Removed MULTI keyword, which is no longer needed. 23 Sept 2000. DWF.
      Fixed a small problem with handling images that are slices from 3D image cubes. 5 Oct 2000. DWF.
      Added fix for brain-dead Macs from Ben Tupper that restores Macs ability to
         display images. 8 June 2001. DWF.
      Fixed small problem with multiple plots and map projections. 29 June 2003. DWF.
      Converted all array subscripts to square brackets. 29 June 2003. DWF.
      Removed obsolete STR_SEP and replaced with STRSPLIT. 27 Oct 2004. DWF.
      Small modification at suggestion of Karsten Rodenacker to increase size of
         images in !P.MULTI mode. 8 December 2004. DWF.
      Minor modifications on Karsten Rodenacker's own account concerning margination
         and TV behaviour. 8 December 2004. KaRo
      There was a small inconsistency in how the image was resized for PostScript as
         opposed to the display, which could occasionally result in a small black line
         to the right of the image. This is now handled consistently. 3 January 2007. DWF.
      Made a small change to CMCONGRID to permit nearest-neighbor interpolation for 3D arrays.
         Previously, any 24-bit image was interpolated, no matter the setting of the NOINTERP
         keyword. 22 April 2007. DWF.
      Updated the program for the 24-bit Z-buffer in IDL 6.4. 11 June 2007. DWF.
      Added new POSITION keyword functionality for !P.MULTI display. 9 Sept 2007. DWF.

(See /n/home09/ryantosca/IDL/gamap2/internals/tvimage.pro)


TVREAD

[Previous Routine] [List of Routines]
 NAME:
       TVREAD

 PURPOSE:

       To get accurate screen dumps with the IDL command TVRD on 24-bit
       PC and Macintosh computers, you have to be sure to set color
       decomposition on. This program adds that capability automatically.
       In addition, the program will optionally write BMP, GIF, JPEG,
       PICT, PNG, and TIFF color image files of the screen dump.

 AUTHOR:

       FANNING SOFTWARE CONSULTING
       David Fanning, Ph.D.
       1645 Sheely Drive
       Fort Collins, CO 80526 USA
       Phone: 970-221-0438
       E-mail: davidf@dfanning.com
       Coyote's Guide to IDL Programming: http://www.dfanning.com

 CATEGORY:
       Graphics

 CALLING SEQUENCE:

       image = TVREAD(xstart, ystart, ncols, nrows)

       The returned image will be a 2D image on 8-bit systems and
       a 24-bit pixel interleaved true-color image on 24-bit systems.
       A -1 will be returned if a file output keyword is used (e.g.,
       JPEG, TIFF, etc.).

 OPTIONAL INPUTS:

       XSTART -> The starting column index.  By default, 0.

       YSTART -> The starting row index. By default, 0.

       NCOLS -> The number of columns to read. By default, !D.X_Size - XSTART

       NROWS -> The number of rows to read. By default, !D.Y_Size - YSTART.

 KEYWORD PARAMETERS:

       BMP -> Set this keyword to write the screen dump as a color BMP file.

       CANCEL -> An output keyword set to 1 if the user cancels out of a
             filename dialog. Set to 0 otherwise.

       COLORS -- If a 24-bit image has to be quantized, this will set
             the number of colors in the output image. Set to 256 by 
             default. Applies to BMP, GIF, PICT, and PNG formats
             written from 24-bit displays.  (See the COLOR_QUAN 
             documentation for details.)

       CUBE -> If this keyword is set to a value between 2 and 6 the 
             color quantization will use a cubic method of
             quantization. Applies to BMP, GIF, PICT, and PNG formats 
             written from 24-bit displays.  (See the  COLOR_QUAN 
             documentation for details.)

       DITHER -> If this keyword is set the quantized image will be 
             dithered.  Applies to BMP, GIF, PICT, and PNG formats 
             written from 24-bit displays.  (See the COLOR_QUAN 
             documentation for details.)

       FILENAME -> The base name of the output file. (No file extensions;
             they will be added automatically.) This name may be
             changed by the user.

                image = TVREAD(Filename='myfile', /JPEG)

             No file will be written unless a file output keyword is 
             used (e.g., JPEG, TIFF, etc.) in the call. By default
             the FILENAME is set to "idl". The file extension will be 
             set automatically to match the type of file created.

       GIF -> Set this keyword to write the screen dump as a color 
             GIF file.

       JPEG -> Set this keyword to write the screen dump as a color 
             JPEG file.

       ORDER -> Set this keyword to determine the image order for 
           reading the display. Corresponds to !Order and set to such 
           as the default.

       PICT -> Set this keyword to write the screen dump as a color 
            PICT file.

       PNG -> Set this keyword to write the screen dump as a color 
            PNG file.

       TIFF -> Set this keyword to write the screen dump as a color 
            TIFF file.

       TRUE -> Set this keyword to the type of interleaving you
            want. 1 = Pixel interleaved, 2 = row interleaved, 
            3 = band interleaved.

       TYPE -> Can be set to the type of file to write. Use this 
            instead of setting BMP, GIF, JPEG, PICT, PNG, or TIFF 
            keywords: TYPE='JPEG'.  The primary purpose of this is to 
            make event handlers easier to write.

       QUALITY -> This keyword sets the amount of compression for 
           JPEG images.  It should be set to a value between 0 and
           100.  It is set to 75 by default.  (See the WRITE_JPEG 
           documentation for details.)

       WID -> The index number of the window to read from. The
           current graphics window (!D.Window) is selected by 
           default. An error is issued if no windows are
           currently open on a device that supports windows.

       _EXTRA -> Any keywords that are appropriate for the 
           WRITE_*** routines are also accepted via keyword 
           inheritance.

 COMMON BLOCKS:

       None

 RESTRICTIONS:   Requires IDL 5.2 and higher.

 MODIFICATION HISTORY:

       Written by David W. Fanning, 9 AUG 2000.
       Added changes to make the program more device independent. 16 SEP 2000. DWF.
       Removed GIF file support for IDL 5.4 and above. 18 JAN 2001. DWF.
       Added NODIALOG keyword. 28 MAR 2001. DWF.
       Added an output CANCEL keyword. 29 AUG 2001. DWF.
       Added ERROR_MESSAGE code to file. 17 DEC 2001. DWF.
       Added ORDER keyword. 25 March 2002. DWF.
       Now create 24-bit PNG files if reading from a 24-bit display. 11 May 2002. DWF.
       Now create 24-bit BMP files if reading from a 24-bit display. 23 May 2002. DWF.
       Removed obsolete STR_SEP and replaced with STRSPLIT. 27 Oct 2004. DWF.
       Unleashed the GIF code for IDL 6.2 and above. 10 Nov 2005. DWF.
       Rolled back previous change to IDL 6.1. 24 Jan 2006. DWF.
       Fixed a problem in which 16-bit displays were treated as 24-bit displays,
         and as a result could not produce WHITE colors. Now all 16-bit displays
         are treated as 8-bit displays. It is an ugly trade-off. 24 Jan 2006. DWF.
       Added TYPE keyword 27 Sep 2006. DWF.

  bmy & phs, 13 Jul 2007: GAMAP VERSION 2.10
                          - Removed /NODIALOG keyword
                          - Only pop up a dialog box if FILENAME
                            isn't passed and we are writing a file
                          - Updated comments, cosmetic changes
        phs, 13 Feb 2009: GAMAP VERSION 2.13
                          - Restored the /NODIALOG keyword

(See /n/home09/ryantosca/IDL/gamap2/graphics/tvread.pro)