Extended IDL Help

This page was created by the IDL library routine mk_html_help. For more information on this routine, refer to the IDL Online Help Navigator or type:

     ? mk_html_help

at the IDL command line prompt.

Last modified: Sun Jan 04 10:33:38 2009.


List of Routines


Routine Descriptions

ANGLETOOL

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

 PURPOSE:

       The purpose of this routine is to create a selectable object for measuring angles
       in a graphics window. This tool is used in an interaction. See the medical
       image tab in the Catalyst example application for an example of its use.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       newObject = Obj_New("ANGLETOOL", ...)
       drawObject -> Add, newObject

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { ANGLETOOL, $
             angle: 0.0, $                 ; The current angle of the tool.
             arrowhead_size: 0L, $         ; The size of the arrowheads used with the tool.
             clockwise: 0L, $              ; If set, positive angle is in clockwise direction.
             insertedObject: Obj_New(), $  ; A reference to the new object created in the CreateNewObject method. (Ignored in CLEANUP.)
             layerObject: Obj_New(), $     ; An optional CATLAYER object for holding the inserted selectable object.
             linestyle: 0L, $              ; The linestyle of the selectable object.
             modemap: Obj_New(), $         ; A pixmap for calculating "mode", or which vertex to move.
             moveVertex: 0L, $             ; The vertex index of the vertex we are moving.
             npoints: 0L, $                ; The  number of points currently in the triangle.
             pointsPixID: Obj_New(), $     ; A pixmap for storing polygon points.
             radians: 0L, $                ; If set, angle is in radians, not degrees.
             statusbar: Obj_New(), $       ; If valid, motion events are reported to this object.
             textcolor: "", $              ; The name of the color for the textual annotation.
             text:Obj_New(), $             ; A TEXTLINE object for displaying AngleTool annotation.
             thickness: 0.0, $             ; The thickness of the line drawing the selectable object.
             sx: 0L, $                     ; The static X location.
             sy: 0L, $                     ; The static Y location.
             xpts: Ptr_New(), $            ; The three X points of the triangle.
             ypts: Ptr_New(), $            ; The three Y points of the triangle.
             INHERITS SELECTABLEOBJECT $
           }

 MESSAGES:

   ANGLETOOL_CHANGED:   This message is sent whenever SetProperty method is called and the NOMESSAGE keyword
                        is NOT set.

 EVENT_STRUCTURE:

       This object will add the following fields to the event structure created by an interaction.
       The fields are defined as:

       ANGLE:      The current angle of the Angle Tool.

       CLOCKWISE:  A flag that if positive indicates the positive angle direction is in the clockwise direction.

       RADIANS:    A flag that if positive indicates the angle is specified in radians rather than degress.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, July 13, 2005.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::ADDTOEVENTSTRUCTURE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::ADDTOEVENTSTRUCTURE

 PURPOSE:

       This method receives an event structure, which it can add information to before being sent
       to some other event handler. Normally, this method is called by an INTERACTION object of
       some kind.

 SYNTAX:

       theObject -> AddToEventStructure, event

 ARGUMENTS:

       event:      The event structure that will be added to.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the extent of a boundary box about the selectable object
       itself. The boundary box (self.box) is always stored in normalized coordinates.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::CLEANUP

 PURPOSE:

       This is the ANGLETOOL object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the selectable object.

 SYNTAX:

       boxObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::COPYPARAMETERS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::COPYPARAMETERS

 PURPOSE:

       This method returns the lower-left corner of the bounary box
       in the DESTINATION keyword, and the number of columns and rows
       in the boundary box in the EXTENT keyword, all in window or pixel
       coordinates. It's purpose is to return a section of a pixmap, for
       example, so that only that section can be copied.

 SYNTAX:

       theObject -> CopyParameters, drawid, DESTINATION=destination, EXTENT=extent

 ARGUMENTS:

       drawID:         The identifier of a draw widget object whose extent will
                       provide the size of the window for calculating device coordinates.
                       This parameter is required.

 KEYWORDS:

       DESTINATION:    A two-element array containing the lower-left corner
                       of the boundary box in device coordinates. An output keyword.

       EXTENT:         A two-element array containing the number of columns and
                       rows in the boundary box in device coordinates. An output keyword.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::CREATENEWOBJECT

 PURPOSE:

       This method creates a new object and adds it to both a draw widget and pixmap container.
       If the object contains a layer object, the new object is instead added to the layer,
       and the layer is added to the draw widget and pixmap containers.

 SYNTAX:

       theObject -> CreateNewObject, drawID

 ARGUMENTS:

       drawID:    The draw widget which will contain the newly created object. Required unless
                  you are calling this method simply to make a copy of the current object.

       pixmapID:  The pixmap which will contain the newly created object. Optional.


 KEYWORDS:

       NEWOBJECT: An output keyword containing the new box object that gets created. If the
                  method is called with just this keyword and no other arguments, the method
                  functions as a object COPY.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::DRAW

 PURPOSE:

       This method draws the selectable object in the current graphics display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       STATUSBAR_ONLY:   If this keyword is set, and there is a valid statusbar object
                         to update, the angle is sent to the statusbar and not displayed
                         in the display window.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the boundary box of the selectable object.

 SYNTAX:

       theObject -> DrawSelectionBox

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the selectable object in. By default, the color of
                 the selectable object (self.color).

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain ANGLETOOL properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     ANGLE:          The angle of the current Angletool object.

     ARROWHEAD_SIZE: The size of the arrowhead in device coordiates. By default 1/50th of the width of
                     the display window (!D.X_Size/50.0).

     CLOCKWISE:      Set to 1 if positive angles in the clockwise direction. To 0 for counterclockwise
                     positive direction.

     HEIGHT:         The height of the polygon boundary box in normalized coordinates.

     INSERTEDOBJECT: The new object that is inserted in the CreateNewObject method.

     LAYER:          The annotation layer associated with this object.

     LINESTYLE:      The type of linestyle required. See PLOT documentation for details.

     NPOINTS:        The number of points in the polygon.

     RADIANS:        Set to 1 if the angle to be reported in radians. Set to 0 for degrees.

     STATUSBAR:      The statusbar object for reporting motion events.

     TEXTCOLOR:      The color of the object's annotation text. By default, the same as the COLOR.

     THICKNESS:      The current thickness of the polygon.

     WIDTH:          The width of the polygon boundary polygon in normalized coordinates.

     XPTS:           The X locations of points making up the polygon.

     YPTS:           The Y locations of points making up the polygon.

     _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::INIT

 PURPOSE:

       This is the ANGLETOOL object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     ANGLE:          The angle. Usually calculated and not set. Used here to create to Angletool objects.

     ARROWHEAD_SIZE: The size of the arrowhead in device coordiates. By default 1/50th of the width of
                     the display window (!D.X_Size/50.0).

     CLOCKWISE:      Normally postitive angles are calculated in a counter-clockwise direction. Setting
                     this keyword causes the positive direction to be calculated in a clockwise direction.

     RADIANS:        Normally the angle is reported in degrees (-180 to 180). Setting this keyword
                     to 1 causes the angle to be reported in radians.

     STATUSBAR:      Set this keyword equal to an object reference of an object with a SETPROPERTY
                     method and a TEXT keyword. The angle will be sent to the statusbar object
                     during the draw motion event handling. If a statusbar is used, the angle will
                     NOT be displayed in the display window.

     LAYER:          A CATLAYER object for holding other objects. Used here only when there is an UP
                     event in INSERT mode. At that time a copy of this object is made and inserted
                     the layer object and this is then inserted into the DrawWidget and/or Pixmap object.

     LINESTYLE:      The linestyle used to draw the selectable object.

     TEXTCOLOR:      The color of the object's annotation text. By default, the same as the COLOR.


     THICKNESS:      Set this to the thickness of the selectable object. By default, 1.0.

     XPTS:           The three X points making up the triangle. The middle point is the apex of the
                     triangle. Expressed in data coordinates.

     YPTS:           The three Y points making up the triangle. The middle point is the apex of the
                     triangle. Expressed in data coordinates.

     _EXTRA:         Any keywords appropriate for the SELECTABLEOBJECT INIT method.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::INTERACTIONEVENTS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from an interaction object of some type. The interaction
       may pre-process events, or send them directly here. You are required to have the
       following modes: SELECT, INSERT, and DRAW. Other modes are optional and are left
       to the programmer to interpret.

       SELECT:   All SELECT mode events are passed to the selectable object for initialization
                 of the object, as needed. If no initialization is necessary, return immediately.

       DRAW:     DRAW mode events are transitory. The object disappears as soon as the drawing of
                 the object is complete and an ACCEPT event is sent to the responsible event handler.

       INSERT:   INSERT mode events result in a new selectable object being created and inserted into
                 the object hierarchy. These objects can be selected and manipulated by other "modes"
                 of your choosing. Include the appropriate modes here.

 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the Interaction
                     object.

 KEYWORDS:

     INTERACTION:    The object reference to a Interaction object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::MOVE

 PURPOSE:

       This method moves the selectable object in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:          The number of pixels to move in the X direction.

       Y:          The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                   contents of the window.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::OUTLINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::OUTLINE

 PURPOSE:

       This method returns a box in normalized coordinates that contains the selectable object
       and all of its parts (labels, text, etc). It is similar to the boundary box of the
       selectable object and, in fact, is often just the boundary box. Like the boundary box,
       the last element in the 2x5 array is the same as the first element.

 SYNTAX:

       outline = theObject -> Outline()

 ARGUMENTS:

     None.

 KEYWORDS:

 RETURN_VALUE:

     outline:    A 2x5 array containing the XY point pairs in normalized coordinates of a rectangle
                 big enough to contain all the parts of the object.

     None.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::SELECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::SELECT

 PURPOSE:

       This method returns the object reference if the requested point is inside
       the bounding box of the object.

 SYNTAX:

       selectedObject = theObject -> Select, x, y

 ARGUMENTS:

       X:   The X location of a point in device or window coordinates.

       Y:   The Y location of a point in device or window coordinates.

 KEYWORDS:

       SUCCESS:   Set to 1 if a selection is made. To 0 otherwise.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::SELECTVERTEX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::SELECTVERTEX

 PURPOSE:

       This method selects a particular vertex for movement.

 SYNTAX:

       theObject -> SelectVertex, x, y

 ARGUMENTS:

       X:          The X location of the selection.

       Y:          The Y location of the selection.

 KEYWORDS:

       DrawID:     A window object that contains the polygon. Required for converting to
                   the proper device coodinate system.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::SETPROPERTY

 PURPOSE:

       This method allows the user to set the ANGLETOOL object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     Usually the same keywords that can be set in the INIT method.

     ANGLE:          The angle. Usually calculated and not set. Used here to create to Angletool objects.

     ARROWHEAD_SIZE: The size of the arrowhead in device coordiates. By default 1/50th of the width of
                     the display window (!D.X_Size/50.0).

     CLOCKWISE:      Normally postitive angles are calculated in a counter-clockwise direction. Setting
                     this keyword causes the positive direction to be calculated in a clockwise direction.

     LAYER:          A CATLAYER object for holding other objects. Used here only when there is an UP
                     event in INSERT mode. At that time a copy of this object is made and inserted
                     the layer object and this is then inserted into the DrawWidget and/or Pixmap object.

     LINESTYLE:      The linestyle used to draw the selectable object.

     RADIANS:        Normally the angle is reported in degrees (-180 to 180). Setting this keyword
                     to 1 causes the angle to be reported in radians.

     STATUSBAR:      Set this keyword equal to an object reference of an object with a SETPROPERTY
                     method and a TEXT keyword. The angle will be sent to the statusbar object
                     during the draw motion event handling.

     TEXTCOLOR:      The color of the object's annotation text. By default, the same as the COLOR.


     THICKNESS:      Set this to the thickness of the selectable object. By default, 1.0.

     XPTS:           The three X points making up the triangle. The middle point is the apex of the
                     triangle. Expressed in data coordinates.

     YPTS:           The three Y points making up the triangle. The middle point is the apex of the
                     triangle. Expressed in data coordinates.

     _EXTRA:       Any keyword appropriate for the superclass SetProperty method.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ANGLETOOL::UPDATE_MODEMAP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ANGLETOOL::UPDATE_MODEMAP

 PURPOSE:

       This method updates the modemap with the latest information.

 SYNTAX:

       self -> Update_Modemap

 ARGUMENTS:

       None.

 KEYWORDS:

      CLEAR:     If this keyword is set, the modemap is cleared of all information.

(See C:\temp\catalyst\source\graphics\angletool__define.pro)


ARROW::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the extent of a box about the arrow.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::CLEANUP

 PURPOSE:

       This is the ARROW object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the ARROW object.

 SYNTAX:

       arrowObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::CREATENEWOBJECT

 PURPOSE:

       This method creates a new object and adds it to both a draw widget and pixmap container.
       If the object contains an annotation layer, the new object is instead added to the layer,
       and the layer is added to the draw widget and pixmap container.

 SYNTAX:

       theObject -> CreateNewObject, drawID, pixmapID

 ARGUMENTS:

       drawID:    The draw widget which will contain the new arrow object. Required in normal operation.

       pixmapID:  The pixmap which will contain the new arrow object. Optional.

 KEYWORDS:

       NEWOBJECT: An output keyword containing the new arrow object that gets created.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::DRAW

 PURPOSE:

       This method draws the arrow in the current direct graphics display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the boundary box of the arrow

 SYNTAX:

       theObject -> DrawSelectionBox

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the box in. By default, the color of the arrow.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain ARROW properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     ARROWHEAD:   Which arrowheads should be drawn? The current state.

     HEADSIZE:    The size of the arrow head in pixel units. But default, !D.X_Size/50.

     HEIGHT:      The height of the arrow boundary box in normalized coordinates.

     LAYER:       The annotation layer associated with this object.

     LENGTH:      The length of the arrow in data coordinates.

     LINESTYLE:   The type of linestyle required. See PLOT documentation for details.

     ROTATION:    The current rotation of the arrow (in degrees).

     THICKNESS:   The current thickness of the arrow.

     WIDTH:       The width of the arrow boundary box in normalized coordinates.

     X1:          The X location of one end of the arrow.

     Y1:          The Y location of one end of the arrow.

     X2:          The X location of the other end of the arrow. (Arrowhead here if ARROWHEAD=1.)

     Y2:          The Y location of the other end of the arrow. (Arrowhead here if ARROWHEAD=1.)

     _REF_EXTRA:  Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::INIT

 PURPOSE:

       This is the ARROW object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     ARROWHEAD:    Set this keyword to 0 to draw no arrowheads on the line. Set to 1 (the default)
                   to draw a single arrowhead at (x2,y2). Set to 2 to draw a double-headed arrow. Set
                   to 3 to draw a single arrowhead at (x1,y1).

     HEADSIZE:     The size of the arrow head in pixel units. But default, !D.X_Size/50. If set
                   to -1, the headsize is calculated at DRAW time. This is preferred for resizeable
                   graphics windows and PostScript output.

     LAYER:        A CATLAYER object for holding annotations.

     LINESTYLE:    The linestyle of the arrow. By default, 1.0 (solid).

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     X1:           The X location of one end of the arrow.

     Y1:           The Y location of one end of the arrow.

     X2:           The X location of the other end of the arrow. (Arrowhead here if ARROWHEAD=1.)

     Y2:           The Y location of the other end of the arrow. (Arrowhead here if ARROWHEAD=1.)

     _EXTRA:       Any keywords appropriate for the SELECTABLEOBJECT INIT method.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::INTERACTIONEVENTS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from the SelectableInteraction object based on the "mode"
       of the SelectableInteraction object. The SelectableInteraction object can process "SELECT"
       and "MOVE" mode events. All other mode events are sent here for processing by a SELECTABLEOBJECT.


 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the SelectableInteraction
                     interaction.

 KEYWORDS:

     INTERACTION:    The object reference to a SELECTABLEINTERACTION object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::MOVE

 PURPOSE:

       This method moves the arrow in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:          The number of pixels to move in the X direction.

       Y:          The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                   contents of the window.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ARROW::SETPROPERTY

 PURPOSE:

       This method allows the user to set the ARROW object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     ARROWHEAD:    Set this keyword to 0 to draw no arrowheads on the line. Set to 1 (the default)
                   to draw a single arrowhead at (x2,y2). Set to 2 to draw a double-headed arrow. Set
                   to 3 to draw a single arrowhead at (x1,y1).

     HEADSIZE:     The size of the arrow head in pixel units. But default, !D.X_Size/50.

     LAYER:        The annotation layer for the object.

     LINESTYLE:    The type of linestyle required. See PLOT documentation for details.

     NOMESSAGE:    Set this keyword to suppress any messaging as a result of going through the
                   SetProperty method. Messaging is essential for PropertySheet widget capability,
                   but causes too many draw methods on occasion. This will prevent going through DRAW
                   methods needlessly.

     NOREFRESH:    Set this keyword if immediate refreshing of the object on the display is not required.

     ROTATION:     Set this keyword to the value of the final rotation (in degrees).

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     X1:           The X location of one end of the arrow.

     Y1:           The Y location of one end of the arrow.

     X2:           The X location of the other end of the arrow. (Arrowhead here if ARROWHEAD=1.)

     Y2:           The Y location of the other end of the arrow. (Arrowhead here if ARROWHEAD=1.)

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


ARROW__DEFINE

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

 PURPOSE:

       The purpose of this routine is to provide an arrow that can be displayed
       in a direct graphics draw widget. The coordinate system of the Arrow
       object is either passed to it (a CatCoord object) or is a normalized
       coordinate system by default.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       arrowObject = Obj_New("ARROW", X1=0.5, Y1=0.5, X2=0.75, Y2=0.75)
       drawObject -> Add, arrowObject

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { ARROW, $
             arrowhead: 0L, $            ; A flag to indicate which arrow heads should be drawn.
             headsize: 0L, $             ; The arrow head size in pixels. By default !D.X_Size / 50.
             layerObject: Obj_New(), $   ; A CATLAYER object for holding the annotation.
             linestyle: 0L, $            ; The linestyle the arrow is drawn in.
             midx: 0.0, $                ; The midpoint of the arrow in X.
             midy: 0.0, $                ; The midpoint of the arrow in Y.
             moveend: 0L, $              ; Indicates which end of arrow (1 or 2) you are moving.
             orientation: 0.0, $         ; The orientation of the arrow
             thickness: 0.0, $           ; The thickness of the arrow.
             x1: 0.0, $                  ; The X location for one end of the arrow.
             y1: 0.0, $                  ; The Y location for one end of the arrow.
             x2: 0.0, $                  ; The X location for the other end of the arrow.
             y2: 0.0, $                  ; The Y location for the other end of the arrow.
             sx: 0L, $                   ; The static end of a moving arrow.
             sy: 0L, $                   ; The static end of a moving arrow.
             INHERITS SelectableObject $
           }

 MESSAGES:

   ARROW_CHANGED:   This message is sent whenever SetProperty method is called and the NOMESSAGE
                    keyword is NOT set.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 Jan 2004.

(See C:\temp\catalyst\source\graphics\arrow__define.pro)


BOX::ADDTOEVENTSTRUCTURE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::ADDTOEVENTSTRUCTURE

 PURPOSE:

       This method receives an event structure, which it can add information to before being sent
       to some other event handler. Normally, this method is called by an INTERACTION object of
       some kind.

 SYNTAX:

       theObject -> AddToEventStructure, event

 ARGUMENTS:

       event:      The event structure that will be added to.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the extent of a boundary box about the box itself. The boundary box
       (self.box) is always stored in normalized coordinates.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::CLEANUP

 PURPOSE:

       This is the BOX object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the BOX object.

 SYNTAX:

       boxObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::CREATENEWOBJECT

 PURPOSE:

       This method creates a new object and adds it to both a draw widget and pixmap container.
       If the object contains a layer object, the new object is instead added to the layer,
       and the layer is added to the draw widget and pixmap containers.

 SYNTAX:

       theObject -> CreateNewObject, drawID

 ARGUMENTS:

       drawID:    The draw widget which will contain the newly created object. Required in normal operation.

       pixmapID:  The pixmap which will contain the newly created object. Optional.


 KEYWORDS:

       NEWOBJECT: An output keyword containing the new box object that gets created. If the
                  method is called with just this keyword and no other arguments, the method
                  functions as a object COPY.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::DRAW

 PURPOSE:

       This method draws the box in the current direct graphics display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the boundary box of the box

 SYNTAX:

       theObject -> DrawSelectionBox

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the box in. By default, the color of the box.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain BOX properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CLIP_TO_DATA:   If set, indicates that the ellipse is clipped to the data coordinate range.

     HEIGHT:         The height of the box boundary box in normalized coordinates.

     INSERTEDOBJECT: The new object that is inserted in the CreateNewObject method.

     LAYER:          The annotation layer associated with this object.

     LINESTYLE:      The type of linestyle required. See PLOT documentation for details.

     LENGTH:         The length of the box in data coordinates.

     THICKNESS:      The current thickness of the box.

     WIDTH:          The width of the box boundary box in normalized coordinates.

     X1:             The X location of lower-left corner of the box.

     Y1:             The Y location of lower-left corner of the box.

     X2:             The X location of upper-right corner of the box.

     Y2:             The Y location of upper-right corner of the box.

     _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::INIT

 PURPOSE:

       This is the BOX object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     CLIP_TO_DATA: The box is draw with PLOTS, which normally does NOT clip to
                   the data range. Set this keyword to put clipping into effect for
                   drawing the box.

     LAYER:        A CATLAYER object for holding other objects. Used here only when there is an UP
                   event in INSERT mode. At that time a copy of this object is made and inserted
                   the layer object and this is then inserted into the DrawWidget and/or Pixmap object.


     LINESTYLE:    The linestyle of the box. By default, 1.0 (solid).

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     X1:           The X location of one corner of the box in data coordinates.

     Y1:           The Y location of one corner of the box in data coordinates.

     X2:           The X location of the corner end of the box in data coordinates.

     Y2:           The Y location of the corner end of the box in data coordinates.

     _EXTRA:       Any keywords appropriate for the SELECTABLEOBJECT INIT method.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::INTERACTIONEVENTS[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from an interaction object of some type. The interaction
       may pre-process events, or send them directly here.

 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the Interaction
                     object.

 KEYWORDS:

     INTERACTION:    The object reference to a Interaction object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::INTERACTIONEVENTS[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from an interaction object of some type. The interaction
       may pre-process events, or send them directly here.

 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the Interaction
                     object.

 KEYWORDS:

     INTERACTION:    The object reference to a Interaction object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


BOX::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::MOVE

 PURPOSE:

       This method moves the box in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:          The number of pixels to move in the X direction.

       Y:          The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                   contents of the window.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::SELECTMODE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::SELECTMODE

 PURPOSE:

       This method selects the movement mode based on which which handle is closest
       to the selection point. The selection point is a location in a draw widget in
       device coordinates.

 SYNTAX:

       theObject -> SelectMode, x, y

 ARGUMENTS:

       X:          The X location of the selection.

       Y:          The Y location of the selection.

 KEYWORDS:

       DrawID:     A window object that contains the box. Required for converting to
                   the proper device coodinate system.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::SETPROPERTY

 PURPOSE:

       This method allows the user to set the BOX object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CLIP_TO_DATA: The ellipse is draw with PLOTS, which normally does NOT clip to
                   the data range. Set this keyword to put clipping into effect for
                   drawing the ellipse.

     DRAW:         If this keyword is set, the DRAW method will be called at the end of the SetProperty method.

     LAYER:        A CATLAYER object for holding annotations.

     LINESTYLE:    The type of linestyle required. See PLOT documentation for details.

     NOMESSAGE:    Set this keyword to suppress any messaging as a result of going through the
                   SetProperty method. Messaging is essential for PropertySheet widget capability,
                   but causes too many draw methods on occasion. This will prevent going through DRAW
                   methods needlessly.

     NOREFRESH:    Set this keyword if immediate refreshing of the object on the display is not required.

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     X1:           The X location of lower-left corner of the box.

     Y1:           The Y location of lower-left corner of the box.

     X2:           The X location of upper-right corner of the box.

     Y2:           The Y location of upper-right corner of the box.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX::UPDATE_MODEMAP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       BOX::UPDATE_MODEMAP

 PURPOSE:

       This method updates the modemap with the latest information.

 SYNTAX:

       self -> Update_Modemap

 ARGUMENTS:

       None.

 KEYWORDS:

      CLEAR:     If this keyword is set, the modemap is cleared of all information.

(See C:\temp\catalyst\source\graphics\box__define.pro)


BOX__DEFINE

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

 PURPOSE:

       The purpose of this routine is to provide a rectangle or box that can be displayed
       in a direct graphics draw widget. The coordinate system of the Box
       object is either passed to it (a CatCoord object) or is a normalized
       coordinate system by default.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       boxObject = Obj_New("BOX", X1=0.5, Y1=0.5, X2=0.75, Y2=0.75)
       drawObject -> Add, boxObject

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { BOX, $
             clip_to_data: 0B, $         ; Flag that if set will allow clipping to data range in DRAW method.
             layerObject: Obj_New(), $   ; A CATLAYER object for holding the annotation.
             linestyle: 0L, $            ; The line style of the box.
             midx: 0.0, $                ; The midpoint of the box in X.
             midy: 0.0, $                ; The midpoint of the box in Y.
             modemap: Obj_New(), $       ; A pixmap for calculating "mode".
             moveend: 0L, $              ; Indicates which end of box you are moving.
             thickness: 0.0, $           ; The thickness of the box.
             x1: 0.0, $                  ; The X location for lower-left corner of the box.
             y1: 0.0, $                  ; The Y location for lower-left corner of the box.
             x2: 0.0, $                  ; The X location for upper-right corner of the box.
             y2: 0.0, $                  ; The Y location for upper-right corner of the box.
             sx: 0L, $                   ; The static X location.
             sy: 0L, $                   ; The static Y location.
             INHERITS SelectableObject $
           }

 MESSAGES:

   BOX_CHANGED:   This message is sent whenever SetProperty method is called and the NOMESSAGE
                  keyword is NOT set.

 EVENT_STRUCTURE:

       This object will add the following fields to the event structure created by an interaction.
       The fields are defined as:

       BOUNDARY_BOX:     A 2x5 element array in normalized coordinates giving the boundary box of
                         the object.

       XPTS:             A two element array giving the X values of the lower-left and upper-right
                         corners of the box in data coordinates.

       YPTS:             A two element array giving the Y values of the lower-left and upper-right
                         corners of the box in data coordinates.


 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 Jan 2004.

(See C:\temp\catalyst\source\graphics\box__define.pro)


CATCOLORBAR

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

 PURPOSE:

       The purpose of this routine is to implement a colorbar object as a selectable object.
       The colors for the color bar can be passed into the program as a COLORTOOL object
       with the COLOR_OBJECT keyword. A gray-scale color table with 256 colors is loaded
       by default.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       newObject = Obj_New("CATCOLORBAR", ...)
       drawObject -> Add, newObject

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { CATCOLORBAR, $
             bar: Obj_New(), $            ; The colorbar image.
             charsize: 0.0, $             ; The character size of the annotation.
             divisions: 0L, $             ; The number of major tick marks.
             extra: Ptr_New(), $          ; Placeholder for extra keywords.
             font: 0L, $                  ; The font to use for annotations.
             format: "", $                ; The annotation formating.
             layerObject: Obj_New(), $    ; An optional CATLAYER object for holding the inserted selectable object.
             minor: 0L, $                 ; The number of minor tick marks.
             ncolors: 0L, $               ; The number of colors in the colorbar.
             range: FltArr(2), $          ; The range of values displayed on the colorbar.
             right: 0L, $                 ; The flag for text on RIGHT of vertical colorbars.
             thickness: 0.0, $            ; The thickness of the selectable object.
             ticklen: 0.0, $              ; The length of the tick marks.
             tickv: Ptr_New(), $          ; Values for the tick marks.
             title: "", $                 ; The title string for the colorbar.
             top: 0L, $                   ; The flag for text on TOP of horizontal colorbars.
             vertical: 0L, $              ; The flag for a vertical colorbar.
             INHERITS SELECTABLEOBJECT $
           }


 MESSAGES:

   CATCOLORBAR_CHANGED:   This message is sent whenever SetProperty method is called and the NOMESSAGE keyword
                          is NOT set.

 MODIFICATION_HISTORY:

    Written by: David W. Fanning, April 17, 2005.
    Added automatic True-Type fonts for PostScript output, if Hershey fonts would otherwise
         be selected. 1 August 2006. DWF.
    Added MATCHPARENT keyword to INIT method. 2 August 2006. DWF.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method is here for completeness. The boundary box is actually
       calculated at the end of the DRAW method.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::CLEANUP

 PURPOSE:

       This is the CATCOLORBAR object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the selectable object.

 SYNTAX:

       boxObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::CREATENEWOBJECT

 PURPOSE:

       This method creates a new object and adds it to both a draw widget and pixmap container.
       If the object contains a layer object, the new object is instead added to the layer,
       and the layer is added to the draw widget and pixmap containers.

 SYNTAX:

       theObject -> CreateNewObject, drawID

 ARGUMENTS:

       drawID:    The draw widget which will contain the newly created object. Required in normal operation.

       pixmapID:  The pixmap which will contain the newly created object. Optional.


 KEYWORDS:

       NEWOBJECT: An output keyword containing the new box object that gets created. If the
                  method is called with just this keyword and no other arguments, the method
                  functions as a object COPY.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::DRAW

 PURPOSE:

       This method draws the box in the current direct graphics display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the colorbar object

 SYNTAX:

       theObject -> DrawSelectionBox

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the box in. By default, the color of the text.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain CATCOLORBAR properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:      The character size of the color bar annotations.

     COLOR:         The name of the color to use for drawing the borders and annotations
                    of the colorbar.
;
     CTINDEX:       The color table index number currently used in the colorbar.

     DIVISIONS:     The number of divisions to divide the bar into.

     FONT:          The type of font used for annotation. Hershey: 0, Hardware:1, True-Type: 2.

     FORMAT:        The format of the bar annotations.

     LAYER:         A CATLAYER object for holding other objects.

     MINOR:         The number of minor tick divisions.

     NCOLORS:       This is the number of colors in the color bar.

     POSITION:      A four-element array of normalized coordinates in the same
                    form as the POSITION keyword on a plot.

     RANGE:         A two-element vector of the form [min, max].

     RIGHT:         Set if the title is on the right of the colorbar.

     THICKNESS:     Set this to the thickness of the line around the colorbar. By default, 1.0.

     TICKNAMES:     A string array of names or values for the tick marks.

     TITLE:         A string used as the title of the colorbar. Set to "" by default.

     TOP:           Set if the title is on the top of the colorbar.

     VERTICAL:      Set if the colorbar is vertical rather than horizontal.

     _REF_EXTRA:    Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::INIT

 PURPOSE:

       This is the CATCOLORBAR object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:      The character size of the color bar annotations. Default is 1.0.

     COLOR:         The name of the color to use for drawing the borders and annotations
                    of the colorbar. By default, "white".

     COLOR_OBJECT:  Use this keyword to load a color object for setting up colors
                    for data display.

     CTINDEX:       The color table index number of the colors to load. Used only if a
                    COLOR_OBJECT is not passed in. Set to 0 (gray-scale) by default.

     DIVISIONS:     The number of divisions to divide the bar into. There will
                    be (divisions + 1) annotations. The default is 6.

     FONT:          Sets the font of the annotation. Hershey: 0, Hardware:1, True-Type: 2.

     FORMAT:        The format of the bar annotations. Default is '(I5)'.

     INVERTCOLORS:  Setting this keyword inverts the colors in the color bar.

     LAYER:         A CATLAYER object for holding other objects. Used here only when there is an UP
                    event in INSERT mode. At that time a copy of this object is made and inserted
                    the layer object and this is then inserted into the DrawWidget and/or Pixmap object.

     MATCHPARENT:   If this keyword is set, and the parent of the CATCOLORBAR is a CATIMAGE, then
                    the position of the colorbar will be matched to the actual position of the image
                    in the window.

     MINOR:         The number of minor tick divisions. Default is 2.

     NCOLORS:       This is the number of colors in the color bar.

     NOINTERP:      Normally the colors are interpolated in the colorbar. Setting this
                    keyword will ensure the colors are replicated by nearest neighbor sampling.

     POSITION:      A four-element array of normalized coordinates in the same
                    form as the POSITION keyword on a plot. Default is
                    [0.88, 0.10, 0.95, 0.90] for a vertical bar and
                    [0.10, 0.88, 0.90, 0.95] for a horizontal bar.
;
     RANGE:         A two-element vector of the form [min, max]. Provides an
                    alternative way of setting the MINRANGE and MAXRANGE keywords.

     RIGHT:         This puts the labels on the right-hand side of a vertical
                    color bar. It applies only to vertical color bars.

     THICKNESS:     Set this to the thickness of the line around the colorbar. By default, 1.0.

     TICKNAMES:     A string array of names or values for the tick marks.

     TITLE:         A string used as the title of the colorbar. Set to "" by default.

     TOP:           This puts the labels on top of the bar rather than under it.
                    The keyword only applies if a horizontal color bar is rendered.

     VERTICAL:      Setting this keyword give a vertical color bar. The default
                    is a horizontal color bar.

     _EXTRA:        Any keywords appropriate for the SELECTABLEOBJECT INIT method or the PLOT
                    procedure for drawing the box around the colorbar image.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::INTERACTIONEVENTS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from an interaction object of some type. The interaction
       may pre-process events, or send them directly here. You are required to have the
       following modes: SELECT, INSERT, and DRAW. Other modes are optional and are left
       to the programmer to interpret.

 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the Interaction
                     object.

 KEYWORDS:

     INTERACTION:    The object reference to a Interaction object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::MESSAGEHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::MESSAGEHANDLER

 PURPOSE:

       This method responds to "messages" sent from other objects. It is called
       automatically by other objects. To receive messages, it is necessary to
       "register" with the messaging object.

 SYNTAX:

       None. Called by other objects.

 ARGUMENTS:

       TITLE:  The message title. This is the "name" of the message indicated when
               the object registered for messages with the messaging object.

 KEYWORDS:

       DATA:   Information from the SENDER that may be relevant in processing the message.
               Typically, an anonymous structure variable, although it could be anything at all.

       SENDER: An output keyword. This is the object reference of the object that is sending
               the message.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::MOVE

 PURPOSE:

       This method moves the selectable object in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:          The number of pixels to move in the X direction.

       Y:          The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                   contents of the window.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::SELECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::SELECT

 PURPOSE:

       This method returns the object reference if the requested point is inside
       the bounding box.

 SYNTAX:

       selectedObject = theObject -> Select, x, y

 ARGUMENTS:

       X:   The X location of a point in device or window coordinates.

       Y:   The Y location of a point in device or window coordinates.

 KEYWORDS:

       SUCCESS:   Set to 1 if a selection is made. To 0 otherwise.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::SELECTMODE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::SELECTMODE

 PURPOSE:

       This method selects the movement mode based on which which handle is closest
       to the selection point. The selection point is a location in a draw widget in
       device coordinates.

 SYNTAX:

       theObject -> SelectMode, x, y

 ARGUMENTS:

       X:          The X location of the selection.

       Y:          The Y location of the selection.

 KEYWORDS:

       DrawID:     A window object that contains the box. Required for converting to
                   the proper device coodinate system.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::SETPROPERTY

 PURPOSE:

       This method allows the user to set the CATCOLORBAR object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:      The character size of the color bar annotations. Default is 1.0.

     COLOR:         The name of the color to use for drawing the borders and annotations
                    of the colorbar. By default, "white".

     COLOR_OBJECT:  Use this keyword to load a color object for setting up colors
                    for data display.

     CTINDEX:       The color table index number of the colors to load. Used only if a
                    COLOR_OBJECT is not passed in. Set to 0 (gray-scale) by default.

     DIVISIONS:     The number of divisions to divide the bar into. There will
                    be (divisions + 1) annotations. The default is 6.

     DRAW:          Set this keyword if you wish to call the DRAW method on SetProperty completion.

     FONT:          Sets the font of the annotation. Hershey: 0, Hardware:1, True-Type: 2.

     FORMAT:        The format of the bar annotations. Default is '(I5)'.

     INVERTCOLORS:  Setting this keyword inverts the colors in the color bar.

     LAYER:         A CATLAYER object for holding other objects. Used here only when there is an UP
                    event in INSERT mode. At that time a copy of this object is made and inserted
                    the layer object and this is then inserted into the DrawWidget and/or Pixmap object.


     MINOR:         The number of minor tick divisions. Default is 2.

     NCOLORS:       This is the number of colors in the color bar.

     NOINTERP:      Normally the colors are interpolated in the colorbar. Setting this
                    keyword will ensure the colors are replicated by nearest neighbor sampling.

     NOMESSAGE:     Set this keyword to suppress normal message sending.

     POSITION:      A four-element array of normalized coordinates in the same
                    form as the POSITION keyword on a plot. Default is
                    [0.88, 0.10, 0.95, 0.90] for a vertical bar and
                    [0.10, 0.88, 0.90, 0.95] for a horizontal bar.
;
     RANGE:         A two-element vector of the form [min, max]. Provides an
                    alternative way of setting the MINRANGE and MAXRANGE keywords.

     RIGHT:         This puts the labels on the right-hand side of a vertical
                    color bar. It applies only to vertical color bars.

     THICKNESS:     Set this to the thickness of the line around the colorbar. By default, 1.0.

     TICKNAMES:     A string array of names or values for the tick marks.

     TITLE:         A string used as the title of the colorbar. Set to "" by default.

     TOP:           This puts the labels on top of the bar rather than under it.
                    The keyword only applies if a horizontal color bar is rendered.

     VERTICAL:      Setting this keyword give a vertical color bar. The default
                    is a horizontal color bar.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATCOLORBAR::UPDATE_MODEMAP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATCOLORBAR::UPDATE_MODEMAP

 PURPOSE:

       This method updates the modemap with the latest information.

 SYNTAX:

       self -> Update_Modemap

 ARGUMENTS:

       None.

 KEYWORDS:

      CLEAR:     If this keyword is set, the modemap is cleared of all information.

(See C:\temp\catalyst\source\graphics\catcolorbar__define.pro)


CATGRAPHICSCMDTOOL::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::CLEANUP

 PURPOSE:

       This is the CATGRAPHICSCMDTOOL object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

       _EXTRA:  Any keyword appropriate for the "TOOLATOM::Cleanup" method.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::DRAW

 PURPOSE:

       This method draws or executes the graphics command.
;
 SYNTAX:

       thisObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::GETPROPERTY

 PURPOSE:

       This method enables the getting of the CATGRAPHICSCMDTOOL object class
       properties.

 SYNTAX:

       aGraphicsCmd -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CAT_COLOR_OBJECT: A colortool object subclassed from COLORTOOL. Sets up the color table for
                       the graphics command.

     CAT_COORD_OBJECT: A coordinates object subclassed from CATCOORD. The coordinates object is
                       automatically updated *after* the DRAW method is completed, which keeps
                       the data coordinate system up to date for subsequent interaction with
                       the graphics output.

     COMMAND:          The current graphics command.

     KEYWORDS:         The keywords associated with the graphics command.

     NPARAMS:          The number of parameters associated with the graphics command.

     P1:               The data associated with the first positional parameter of the graphics command.

     P2:               The data associated with the second positional parameter of the graphics command.

     P3:               The data associated with the third positional parameter of the graphics command.

     _EXTRA:           Any keywords appropriate for the superclass SetProperty methods.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::INIT

 PURPOSE:

       This is the CATGRAPHICSCMDTOOL object class initialization method.

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

       Command:      This is the name of the graphics "command" that is to be executed.
                     It should be a string. For example, "Surface" or "Contour".

       P1:           This is the first positional parameter of the graphics command.

       P2:           This is the second positional parameter of the graphics command.

       P3:           This is the third positional parameter of the graphics command.

 KEYWORDS:

       AUTO_DESTROY: This object keeps track of the number of parents it has (reference counting). When
                     this value changes from 1 to 0, the object will be destroyed unless Auto_Destroy
                     has been set to zero. (Input)

       CAT_COLOR_OBJECT: A colortool object subclassed from COLORTOOL. Sets up the color table for
                     the graphics command.

       CAT_COORD_OBJECT: A coordinates object subclassed from CATCOORD. The coordinates object is
                     automatically updated *after* the DRAW method is completed, which keeps
                     the data coordinate system up to date for subsequent interaction with
                     the graphics output.

       DECOMPOSED:   Set this keyword to 0 to turn color decomposition OFF before executing
                     the graphics command. Default is color decomposition ON (this is also
                     known as "true-color mode".)

       EVENT_OBJECT: This is an object reference to an object that will receive the
                     event from a specific widget event. It is the equivalent (in
                     object terms) of specifying an EVENT_PRO or EVENT_FUNC keyword.
                     In other words, it is a way of deflected an event from the EVENTHANDLER
                     method of the object widget that generated the event to the EVENTHANDLER
                     method of the object specified with this keyword.

       EXCLUSIVE_EVENT_OBJECT: If this keyword is set to a vaid object, events are passed directly
                     and only to this object, ignoring the other event objects. To disable this
                     set this keyword to be a NULL object or zero. This keyword is designed for
                     situations where an object wishes to hog the events for a limited period.

       INDEXED:      If set, the contents of this container will remain at the same index(ie:
                     indices will not automatically be re-used.

       MEMORY_MANAGEMENT: Setting this keyword to zero disables automatic memory management for
                     this container. This means that child objects will not realize that they
                     are children of this container.

       NAME:         The "name" of the object. Used to keep track of the object in the code.
                     You can "GET" an object by its name, for example.  Any string is acceptible. (Input)

       NO_COPY:      Set this keyword to transfer the UVALUE without copying.

       NOCACHE:      Set this keyword to indicate that the input data should not be cached
                     or stored in the storage location.

       PARENT:       A parent container object. Must be subclassed from IDL_CONTAINER. The object
                     will be added to its parent container. (Input)

       POSITION:     This object's position in the parent container. See the IDL_CONTAINER
                     documentation. (Input)

       REPORTLEVEL:  The reporting level for the atom. This is honored only if the reporting
                     level for the atom is higher than the reporting level in the !Smart system
                     variable. It is used primarily for debugging purposes. Values between 0 and 2. (Input)

       TARGET:       Set this keyword to an object reference for the target object. The tool is
                     applied to the data in this target.

       UVALUE:       A user-value pointer. Can be used to store any IDL variable type.

       _EXTRA:       Any keywords appropriate for the graphics command.

  NOTES:

      Note that it is possible to run into ambiguous keyword problems when loading a graphics command
      with the INIT method. For example, if the graphics command you are loading contains any of the
      keywords listed above, then the keyword will be misinterpreted, since the keyword will be applied
      to object properties and not to the graphics command per se. (The POSITION keyword is an obvious
      conflict with many graphics commands.) Rather than prevent you from trying, I've decided to do
      what I can with what I am given. But if you find this unsuccessful, then you can just create the
      object with "object" type keywords, and load the graphics command with the unambiguous LOADCOMMAND
      method.

      It is *always* safer to create the object, and *then* load the command with the LOADCOMMAND method.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL::LOADCOMMAND

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::LoadCommand

 PURPOSE:

       This method allows the user to load a command into the object.

 SYNTAX:

       aGraphicsCmd -> LoadCommand, 'command', p1, p2, p3

 ARGUMENTS:

       Command:      This is the name of the graphics "command" that is to be executed.
                     It should be a string. For example, "Surface" or "Contour".

       P1:           This is the first positional parameter of the graphics command.

       P2:           This is the second positional parameter of the graphics command.

       P3:           This is the third positional parameter of the graphics command.


 KEYWORDS:

     DRAW:          Set this keyword to immediately call the Draw method when the command is loaded.

     _EXTRA:        Any keywords appropriate for command may be used.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL::PIXEL_TO_VALUE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::PIXEL_TO_VALUE

 PURPOSE:

       This method calculates the data value underneath a pixel location
       in the display window. To be accurate, the window that contains the image
       MUST BE the current graphics window or you MUST PASS the window number in
       with the WINDOWINDEX keyword.

 SYNTAX:

       data_value = aGraphicsCmd -> Pixel_to_Value(x, y)

 RETURN_VALUE:

       data_value:  A two element array of the x and y points converted to data coordinates.

 ARGUMENTS:

       X:           The x location in the display window (pixel coordinates).

       Y:           The y location in the display window (pixel coordinates).

 INPUT_KEYWORDS:

       WINDOWINDEX: The window index number of the window containing the image object. Set
                    to !D.Window by default.

 OUTPUT_KEYWORDS:

       INSIDE:      This keyword is set to 1 if the (x,y) value is inside the rectangle formed
                    by [!X.Crange[0], !Y.Crange[0], !X.Crange[1], !Y.Crange[1]]. Otherwise, it
                    is set to 0.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL::REDO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::REDO

 PURPOSE:

       This method attempts to redo the previous command operation.
;
 SYNTAX:

       thisObject -> REDO

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::SETPROPERTY

 PURPOSE:

       This method enables the setting of the CATGRAPHICSCMDTOOL object class
       properties.

 SYNTAX:

       aGraphicsCmd -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CAT_COLOR_OBJECT: A colortool object subclassed from COLORTOOL. Sets up the color table for
                       the graphics command.

     CAT_COORD_OBJECT: A coordinates object subclassed from CATCOORD. The coordinates object is
                       automatically updated *after* the DRAW method is completed, which keeps
                       the data coordinate system up to date for subsequent interaction with
                       the graphics output.

     _EXTRA:           Any keywords appropriate for the superclass SetProperty methods.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL::UNDO

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CATGRAPHICSCMDTOOL::UNDO

 PURPOSE:

       This method attempts to undo the previous command operation by restoring
       the cached graphics window. If the window is no longer available, or there
       is no cache, the method fails silently.
;
 SYNTAX:

       thisObject -> UNDO

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CATGRAPHICSCMDTOOL__DEFINE

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

 PURPOSE:

       The purpose of this routine is to implement any IDL graphics command
       procedure as a tool object, giving the command the ability to be undone. Any
       graphics command can be used as long as it requires no more than three
       positional parameters. Any number of keywords are supported.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       aTool = Obj_New("CATGRAPHICSCMDTOOL", command, p1, p2, p2, Keyword=keyword)

 SUPERCLASSES:

       CATTOOL
       CATATOM
       CATCONTAINER
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { CATGRAPHICSCMDTOOL, $  ; The CATGRAPHICSCMDTOOL object class.
             INHERITS CATTOOL, $    ; Inherits the CATTOOL object class.
             _command: "", $        ; The IDL graphics command.
             _coords: Obj_New(), $  ; A CATCOORD coordinates object.
             _colors: Obj_New(), $  ; A COLORTOOL color object.
             _decomposed: 0L, $     ; The color decomposition state for the command.
             _p1: Ptr_New(), $      ; The first positional parameter of the command.
             _p2: Ptr_New(), $      ; The second positional parameter of the command.
             _p3: Ptr_New(), $      ; The third positional parameter of the command.
             _nparams: 0L, $        ; The number of parameters used in the call.
             _keywords: Ptr_New(),  ; A structure of keywords used with the command.
           }

 MODIFICATION_HISTORY:

       Written by: David Fanning, April 24, 2003.

(See C:\temp\catalyst\source\graphics\catgraphicscmdtool__define.pro)


CONTRASTBOX::ACCEPTBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CONTRASTBOX::ACCEPTBOX

 PURPOSE:

       This method accepts the box on the display and sends an event to the client.

 SYNTAX:

       theObject -> AcceptBox, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


CONTRASTBOX::CANCELBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CONTRASTBOX::CANCELBOX

 PURPOSE:

       This method cancels the box on the display and allows the user to start over
 SYNTAX:

       theObject -> CancelBox, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


CONTRASTBOX::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CONTRASTBOX::CLEANUP

 PURPOSE:

       This is the CONTRASTBOX object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


CONTRASTBOX::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CONTRASTBOX::DRAW

 PURPOSE:

       This method draws the interaction in the display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


CONTRASTBOX::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CONTRASTBOX::INIT

 PURPOSE:

       This is the CONTRASTBOX object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     drawObject:   The draw widget object that you will be taking over events from.

 KEYWORDS:

     _EXTRA:       Any keywords appropriate for the superclass INIT method.

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


CONTRASTBOX::REFRESHPIXMAP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CONTRASTBOX::REFRESHPIXMAP

 PURPOSE:

       This method refreshes the pixmap (the original display might have changed in some way) and
       (optionally) calls the DRAW method.

 SYNTAX:

       theObject -> RefreshPixmap

 ARGUMENTS:

       None.

 KEYWORDS:

       DRAW:       If this keyword is set, the DRAW method is called..

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


CONTRASTBOX::RESTOREDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CONTRASTBOX::RESTOREDISPLAY

 PURPOSE:

       This method ...

 SYNTAX:

       theObject -> RestoreDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


CONTRASTBOX::SETDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       CONTRASTBOX::SETDISPLAY

 PURPOSE:

       This method ...

 SYNTAX:

       theObject -> SetDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


CONTRASTBOX__DEFINE

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

 PURPOSE:

       A contrastbox object is a moveable, rubberband-type box interaction
       in which only the portion of the window inside the box is shown in
       full color. The portion of the window outside the box is shown in
       muted colors. The colors are muted by reducing the saturation by 50%.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theObject = Obj_New("CONTRASTBOX")

 SUPERCLASSES:

       MOVEABLEBOX
       RUBBERBANDBOX
       INTERACTION
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { CONTRASTBOX, $
             contrastID: Obj_New(), $          ; The contrast window.
             INHERITS MOVEABLEBOX $
           }

 MESSAGES:

       None.

 EVENT_STRUCTURE:

       event = { ID:theObject, TOP:topObject, HANDLER:Obj_New(), EVENT_NAME='RUBBERBANDBOX_EVENT', $
                  NAME: self._name, BOX:self.box, XPTS:FLTARR(5), YPTS:FLATARR(5) }

       In which the XPTS and YPTS fields contain the X and Y locations of the box in a form
       suitable for drawing the ROI on the display with PLOTS. The BOX, XPTS, and YPTS are
       converted to the coordinate system of the draw widget associated with the interaction
       before being placed in the event structure.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 October 2004.

(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)


ELLIPSE::ADDTOEVENTSTRUCTURE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::ADDTOEVENTSTRUCTURE

 PURPOSE:

       This method receives an event structure, which it can add information to before being sent
       to some other event handler. Normally, this method is called by an INTERACTION object of
       some kind.

 SYNTAX:

       theObject -> AddToEventStructure, event

 ARGUMENTS:

       event:      The event structure that will be added to.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the extent of a boundary ellipse about the ellipse itself.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::CLEANUP

 PURPOSE:

       This is the ELLIPSE object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the ELLIPSE object.

 SYNTAX:

       ellipseObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::CREATENEWOBJECT

 PURPOSE:

       This method creates a new object and adds it to both a draw widget and pixmap container.
       If the object contains an annotation layer, the new object is instead added to the layer,
       and the layer is added to the draw widget and pixmap container.

 SYNTAX:

       theObject -> CreateNewObject, drawID, pixmapID

 ARGUMENTS:

       drawID:    The draw widget which will contain the new arrow object. Required in normal operation.

       pixmapID:  The pixmap which will contain the new arrow object. Optional.

 KEYWORDS:

       NEWOBJECT: An output keyword containing the new arrow object that gets created.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::DRAW

 PURPOSE:

       This method draws the ellipse in the current direct graphics display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the boundary ellipse of the ellipse

 SYNTAX:

       theObject -> DrawSelectionBox

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the ellipse in. By default, the color of the ellipse.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain ELLIPSE properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CLIP_TO_DATA:   If set, indicates that the ellipse is clipped to the data coordinate range.

     HEIGHT:         The height of the ellipse boundary ellipse in normalized coordinates.

     INSERTEDOBJECT: The new object that is inserted in the CreateNewObject method.

     LAYER:          The annotation layer associated with this object.

     LINESTYLE:      The type of linestyle required. See PLOT documentation for details.

     ROTATION:       The rotation in degrees counterclockwise of the X axis.

     THICKNESS:      The current thickness of the ellipse.

     WIDTH:          The width of the ellipse boundary ellipse in normalized coordinates.

     XCENTER:        The X coordinate of the center of the ellipse.

     XRADIUS:        The axis radius in the X direction.

     YCENTER:        The Y coordinate of the center of the ellipse.

     YRADIUS:        The axis radius in the Y direction.

     _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::INIT

 PURPOSE:

       This is the ELLIPSE object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     CLIP_TO_DATA: The ellipse is draw with PLOTS, which normally does NOT clip to
                   the data range. Set this keyword to put clipping into effect for
                   drawing the ellipse.

     LAYER:        A CATLAYER object for holding annotations.

     LINESTYLE:    The linestyle of the ellipse. By default, 1.0 (solid).

     NPOINTS:      The number of points used to draw the ellipse. By default, 120.

     ROTATION:     The rotation in degrees counterclockwise of the X axis.

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     XCENTER:      The X coordinate of the center of the ellipse.

     XRADIUS:      The axis radius in the X direction.

     YCENTER:      The Y coordinate of the center of the ellipse.

     YRADIUS:      The axis radius in the Y direction.

     _EXTRA:       Any keywords appropriate for the SELECTABLEOBJECT INIT method.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::INTERACTIONEVENTS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from the SelectableInteraction object based on the "mode"
       of the SelectableInteraction object. The SelectableInteraction object can process "SELECT"
       and "MOVE" mode events. All other mode events are sent here for processing by a SELECTABLEOBJECT.


 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the SelectableInteraction
                     interaction.

 KEYWORDS:

     INTERACTION:    The object reference to a SELECTABLEINTERACTION object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::MOVE

 PURPOSE:

       This method moves the ellipse in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:          The number of pixels to move in the X direction.

       Y:          The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                   contents of the window.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::SELECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::SELECT

 PURPOSE:

       This method returns the object reference if the requested point is inside
       the bounding box of the ellipse.

 SYNTAX:

       selectedObject = theObject -> Select, x, y

 ARGUMENTS:

       X:   The X location of a point in device or window coordinates.

       Y:   The Y location of a point in device or window coordinates.

 KEYWORDS:

       SUCCESS:   Set to 1 if a selection is made. To 0 otherwise.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::SELECTMODE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::SELECTMODE

 PURPOSE:

       This method selects the movement mode based on which which handle is closest
       to the selection point. The selection point is a location in a draw widget in
       device coordinates.

 SYNTAX:

       theObject -> SelectMode, x, y

 ARGUMENTS:

       X:          The X location of the selection.

       Y:          The Y location of the selection.

 KEYWORDS:

       DrawID:     A window object that contains the ellipse. Required for converting to
                   the proper device coodinate system.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::SETPROPERTY

 PURPOSE:

       This method allows the user to set the ELLIPSE object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CLIP_TO_DATA: The ellipse is draw with PLOTS, which normally does NOT clip to
                   the data range. Set this keyword to put clipping into effect for
                   drawing the ellipse.

     LAYER:        The annotation layer for the object.

     LINESTYLE:    The type of linestyle required. See PLOT documentation for details.

     NOMESSAGE:    Set this keyword to suppress any messaging as a result of going through the
                   SetProperty method. Messaging is essential for PropertySheet widget capability,
                   but causes too many draw methods on occasion. This will prevent going through DRAW
                   methods needlessly.

     NOREFRESH:    Set this keyword if immediate refreshing of the object on the display is not required.

     ROTATION:     The rotation in degrees counterclockwise of the X axis.

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     XCENTER:      The X coordinate of the center of the ellipse.

     XRADIUS:      The axis radius in the X direction.

     YCENTER:      The Y coordinate of the center of the ellipse.

     YRADIUS:      The axis radius in the Y direction.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE::UPDATE_MODEMAP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE::UPDATE_MODEMAP

 PURPOSE:

       This method updates the modemap with the latest information.

 SYNTAX:

       self -> Update_Modemap

 ARGUMENTS:

       None.

 KEYWORDS:

      CLEAR:     If this keyword is set, the modemap is cleared of all information.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


ELLIPSE_ROI::ACCEPTROI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::ACCEPTROI

 PURPOSE:

       This method accepts the box on the display and sends an event to the client.

 SYNTAX:

       theObject -> AcceptROI, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::CANCELROI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::CANCELROI

 PURPOSE:

       This method cancels the box on the display and allows the user to start over
 SYNTAX:

       theObject -> CancelROI, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::CLEANUP

 PURPOSE:

       This is the ELLIPSE_ROI object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::DRAW

 PURPOSE:

       This method draws the interaction in the display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        ELLIPSE_ROI::EVENT_HANDLER

 PURPOSE:

        This method is the event handler for the ELLIPSE_ROI object.

 SYNTAX:

        This method is called automatically by the event handling mechanism.

 ARGUMENTS:

       event: The event structure as described in the IDL help files, except
              that the ID, TOP and HANDLER tags will be object references.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain ELLIPSE_ROI properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     DEVICE:       Set this keyword if you want the X and Y points (see XPTS and YPTS) returned
                   in device coordinates. Otherwise, they are returned in the coordinate system
                   of the display window (if there is one).

     LINESTYLE:    The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:        The thickness of the line used to draw the ROI. By default, 2.

     XPTS:         The X points in the ROI. Returned in coordinate system of the display window, if possible.

     YPTS:         The Y points in the ROI. Returned in coordinate system of the display window, if possible.

     _REF_EXTRA:   Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::INIT

 PURPOSE:

       This is the ELLIPSE_ROI object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     drawObject:   The draw widget object that you will be taking over events from.

 KEYWORDS:

     COUNT:        The number of points used to draw the ellipse. By default, 120.

     LINESTYLE:    The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:        The thickness of the line used to draw the ROI. By default, 2.

     _EXTRA:       Any keywords appropriate for the superclass INIT method.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::RESTOREDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::RESTOREDISPLAY

 PURPOSE:

       This method overrides the INTERACTION RestoreDisplay method by also destroying
       the buffer pixmap.

 SYNTAX:

       theObject -> RestoreDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::SETDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::SETDISPLAY

 PURPOSE:

       This method overrides the INTERACTION SetDisplay method by adding
       a pixmap widget for buffering output.

 SYNTAX:

       theObject -> SetDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       ELLIPSE_ROI::SETPROPERTY

 PURPOSE:

       This method allows the user to set the ELLIPSE_ROI object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     LINESTYLE:    The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:        The thickness of the line used to draw the ROI. Be default, 2.

     _EXTRA:       Any keywords appropriate for the superclass SetProperty method.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE_ROI__DEFINE

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

 PURPOSE:

       The purpose of this routine is to provide an ellipse ROI interaction.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theObject = Obj_New("ELLIPSE_ROI")

 SUPERCLASSES:

       INTERACTION
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { ELLIPSE_ROI, $
             xpts: Ptr_New(), $        ; The X points in the ROI.
             ypts: Ptr_New(), $        ; The X points in the ROI.
             count: 0L, $              ; The number of points in the ROI.
             bufferID: Obj_New(), $    ; A pixmap buffer for smooth graphics display.
             INHERITS INTERACTION $
           }

 MESSAGES:

   None.


 EVENT_STRUCTURE:

       event = { ID:theObject, TOP:topObject, HANDLER:Obj_New(), EVENT_NAME='ELLIPSE_ROI_EVENT', $
                  NAME: self._name, XPTS:FLTARR(), YPTS:FLATARR(), COUNT:0L }

       In which the XPTS and YPTS fields contain the X and Y locations of the polygon in a form
       suitable for drawing the ROI on the display with PLOTS. The COUNT field contains the number
       of points in the XPTS and YPTS vectors. The XPTS and YPTS are converted to the coordinate
       system of the draw widget associated with the interaction before being placed in the event structure.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, December 27, 2004.

(See C:\temp\catalyst\source\graphics\ellipse_roi__define.pro)


ELLIPSE__DEFINE

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

 PURPOSE:

       The purpose of this routine is to provide a circle or ellipse that can be displayed
       in a direct graphics draw widget. The coordinate system of the Ellipse
       object is either passed to it (a CatCoord object) or is a normalized
       coordinate system by default.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       ellipseObject = Obj_New("ELLIPSE", X1=0.5, Y1=0.5, X2=0.75, Y2=0.75)
       drawObject -> Add, ellipseObject

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { ELLIPSE, $
             clip_to_data: 0B, $         ; Flag that if set will allow clipping to data range in DRAW method.
             insertedObject: Obj_New(), $; The new object created in the CreateNewObject method. (Ignored in CLEANUP.)
             linestyle: 0L, $            ; The line style of the ellipse.
             layerObject: Obj_New(), $   ; A CATLAYER object for holding the annotation.
             modemap: Obj_New(), $       ; A pixmap for calculating "mode".
             moveend: 0L, $              ; Indicates which end of ellipse you are moving.
             npoints: 0L, $              ; The number of points used to draw the ellipse. 120 by default.
             rotation: 0.0, $            ; The rotation of the x axis of the ellipse.
             sx: 0L, $                   ; The static X location.
             sy: 0L, $                   ; The static Y location.
             thickness: 0.0, $           ; The thickness of the ellipse.
             xcenter: 0.0, $             ; The midpoint of the ellipse in X.
             ycenter: 0.0, $             ; The midpoint of the ellipse in Y.
             xradius: 0.0, $             ; The radius of the X axis.
             yradius: 0.0, $             ; The radius of the Y axis.
             INHERITS SelectableObject $
           }

 MESSAGES:

   ELLIPSE_CHANGED:   This message is sent whenever SetProperty method is called and the NOMESSAGE
                      keyword is NOT set.

 EVENT_STRUCTURE:

       This object will add the following fields to the event structure created by an interaction.
       The fields are defined as:

       BOUNDARY_BOX:     A 2x5 element array in normalized coordinates giving the boundary box of
                         the object.

       XPTS:             An array of X points in data coordinates descriping an ellipse.

       YPTS:             An array of Y points in data coordinates descriping an ellipse.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 Jan 2004.

(See C:\temp\catalyst\source\graphics\ellipse__define.pro)


FREEHAND_ROI::ACCEPTROI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::ACCEPTROI

 PURPOSE:

       This method accepts the box on the display and sends an event to the client.

 SYNTAX:

       theObject -> AcceptROI, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::CANCELROI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::CANCELROI

 PURPOSE:

       This method cancels the box on the display and allows the user to start over
 SYNTAX:

       theObject -> CancelROI, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::CLEANUP

 PURPOSE:

       This is the FREEHAND_ROI object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::DRAW

 PURPOSE:

       This method draws the interaction in the display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        FREEHAND_ROI::EVENT_HANDLER

 PURPOSE:

        This method is the event handler for the FREEHAND_ROI object.

 SYNTAX:

        This method is called automatically by the event handling mechanism.

 ARGUMENTS:

       event: The event structure as described in the IDL help files, except
              that the ID, TOP and HANDLER tags will be object references.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain FREEHAND_ROI properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     DEVICE:       Set this keyword if you want the X and Y points (see XPTS and YPTS) returned
                   in device coordinates. Otherwise, they are returned in the coordinate system
                   of the display window (if there is one).

     LAYER:        The annotation layer associated with this object.

     LINESTYLE:    The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:        The thickness of the line used to draw the ROI. Be default, 2.

     XPTS:         The X points in the ROI.

     YPTS:         The Y points in the ROI.

     _REF_EXTRA:   Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::INIT

 PURPOSE:

       This is the FREEHAND_ROI object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     drawObject:   The draw widget object that you will be taking over events from.

 KEYWORDS:

     LAYER:        A CATLAYER object for holding annotations.

     LINESTYLE:    The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:        The thickness of the line used to draw the ROI. Be default, 2.

     _EXTRA:       Any keywords appropriate for the superclass INIT method.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::RESTOREDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::RESTOREDISPLAY

 PURPOSE:

       This method overrides the INTERACTION RestoreDisplay method by also destroying
       the buffer pixmap.

 SYNTAX:

       theObject -> RestoreDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::SETDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::SETDISPLAY

 PURPOSE:

       This method overrides the INTERACTION SetDisplay method by adding
       a pixmap widget for buffering output.

 SYNTAX:

       theObject -> SetDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       FREEHAND_ROI::SETPROPERTY

 PURPOSE:

       This method allows the user to set the FREEHAND_ROI object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     LAYER:        The annotation layer for the object.

     LINESTYLE:    The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:        The thickness of the line used to draw the ROI. Be default, 2.

     _EXTRA:       Any keywords appropriate for the superclass SetProperty method.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


FREEHAND_ROI__DEFINE

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

 PURPOSE:

       The purpose of this routine is to create a freehand ROI drawing
       interaction. When the interaction is in place, the user can
       draw a freehand polygon ROI in the display window.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theObject = Obj_New("FREEHAND_ROI")

 SUPERCLASSES:

       INTERACTION
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { FREEHAND_ROI, $
             xpts: Ptr_New(), $        ; The X points in the ROI.
             ypts: Ptr_New(), $        ; The X points in the ROI.
             count: 0L, $              ; The number of points in the ROI.
             bufferID: Obj_New(), $    ; A pixmap buffer for smooth graphics display.
             thick: 0.0, $             ; The thickness of the line used to draw ROI.
             linestyle: 0L, $          ; The line style of the line used to draw ROI.
             INHERITS INTERACTION $
           }

 MESSAGES:

   None.

 EVENT_STRUCTURE:

       event = { ID:theObject, TOP:topObject, HANDLER:Obj_New(), EVENT_NAME='FREEHAND_ROI_EVENT', $
                  NAME: self._name, XPTS:FLTARR(), YPTS:FLATARR(), COUNT:0L }

       In which the XPTS and YPTS fields contain the X and Y locations of the polygon in a form
       suitable for drawing the ROI on the display with PLOTS. The COUNT field contains the number
       of points in the XPTS and YPTS vectors. The XPTS and YPTS are converted to the coordinate
       system of the draw widget associated with the interaction before being placed in the event structure.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, February 6, 2004.

(See C:\temp\catalyst\source\graphics\freehand_roi__define.pro)


IMGAXES::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       IMGAXES::CLEANUP

 PURPOSE:

       This is the IMGAXES object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)


IMGAXES::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       IMGAXES::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the IMGAXES object.

 SYNTAX:

       axisObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)


IMGAXES::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       IMGAXES::DRAW

 PURPOSE:

       Draw the axes.

 SYNTAX:

       theAxes -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)


IMGAXES::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       IMGAXES::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)


IMGAXES::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       IMGAXES::GETPROPERTY

 PURPOSE:

       This method enables the getting of the IMGAXES object class
       properties.

 SYNTAX:

       aIMGAXES -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:      The character size to display the axes.

     COLOR:         The name of a color to use for the axes (e.g., "yellow").

     COORD_OBJECT:  The coordinate object (usually of the parent) stored here for access.

     BOUNDARY_BOX:  The boundary box that holds the axes.

     FONT:          The font used to draw the axes. Note that the value returned here is one more than
                    the value used to define the FONT in the INIT method. That is, if you have Hershey
                    fonts selected, this keyword will return 0, not the expected -1. This is to accomodate
                    the property sheet widget properties, used in the Control Panel.

     POSITION:      The position in the window in normalized coordinates [x0, y0, x1, y1].

     MAX_XRANGE:    This is the same as xrange[1]. It is used exclusively by the Control Panel in setting properties.

     MAX_YRANGE:    This is the same as yrange[1]. It is used exclusively by the Control Panel in setting properties.

     MIN_XRANGE:    This is the same as xrange[0]. It is used exclusively by the Control Panel in setting properties.

     MIN_YRANGE:    This is the same as yrange[0]. It is used exclusively by the Control Panel in setting properties.
     
     TICKDIR:       The tick direction.
     
     TITLE:         The current title for the axes.

     VISIBLE:       The current setting of the "draw visible" flag.

     XCHARSIZE:     The current X axis character size.

     XRANGE:        The X axis range.
     
     XTICKLEN:      The X tick length.

     XTICKFORMAT:   The format to be used for the X axis annotation.

     XTITLE:        The X axis title.

     YCHARSIZE:     The current Y axis character size.

     YRANGE:        The Y axis range.

     YTICKLEN:      The Y tick length.
     
     YTICKFORMAT:   The format to be used for the Y axis annotation.

     YTITLE:        The Y axis title.

     _REF_EXTRA:    Extra keywords for the superclass GETPROPERTY methods.

(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)


IMGAXES::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       IMGAXES::INIT

 PURPOSE:

       This is the IMGAXES object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:      Set this keyword to the overall character size to display the axes.

     COLOR:         Set this keyword to the name of a color to use for the axes (e.g., "yellow").

     COORD_OBJECT:  A coordinate object. This is really a storage location for a coordinate object
                    from a parent. When the X range or Y range changes in the SetProperty method,
                    the coordinate object stored here is changed appropriately. This is usually
                    required if the axis properties are to be changed with its Control Panel.

     FONT:          Set this keyword to use Hershey fonts (0), hardware fonts (1), or true-type fonts (2).

     VISIBLE:       If set to 0, axes will be turned off (not drawn). If set to 1 (the default), they
                    will be drawn.

     POSITION:      The position in the window in normalized coordinates [x0, y0, x1, y1].
     
     TICKDIR:       The tick direction. A value of 0 (the default) indicates ticks point outside the
                    image. A value of 1 indicates the ticks point inside the image.

     TITLE:         A string that will be the title of the axis. Place over the top axis.

     XCHARSIZE:     The character size for the X axis characters.

     XRANGE:        Set this keyword to the X axis range.

     XTICKFORMAT:   Set this keyword to the format to be used for the X axis annotation.
     
     XTICKLEN:      The length of the X tick marks, in normalized units. By default, 0.015.

     XTITLE:        The title or label for the X axis

     YCHARSIZE:     The character size for the X axis characters.

     YRANGE:        Set this keyword to the Y axis range.

     YTICKFORMAT:   Set this keyword to the format to be used for the Y axis annotation.
     
     YTICKLEN:      The length of the X tick marks, in normalized units. By default, 0.015.

     YTITLE:        The title or label for the Y axis

     _EXTRA:        Extra keywords for the superclass INIT methods.

 NOTES:

    The image objects will automatically update the IMGAXES object position when the image is
    drawn if the IMGAXES object has a name of "IMGAXES*" where the "*" can be anything you like.
    This is the default name given to this object, so it is perhaps best NOT to name the object
    unless there is good reason to do so. Appending the letters "IMGAXES" to your name will
    prevent problems.

(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)


IMGAXES::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       IMGAXES::SETPROPERTY

 PURPOSE:

       This method enables the setting of the IMGAXES object class
       properties.

 SYNTAX:

       aIMGAXES -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:      Set this keyword to the character size to display the axes.

     COLOR:         Set this keyword to the name of a color to use for the axes (e.g., "yellow").

     COORD_OBJECT:  A coordinate object. This is really a storage location for a coordinate object
                    from a parent. When the X range or Y range changes in the SetProperty method,
                    the coordinate object stored here is changed appropriately. This is usually
                    required if the axis properties are to be changed with its Control Panel.

     FONT:          Set this keyword to use Hershey fonts (0), hardware fonts (1), or true-type fonts (2).
                    Note that the values are *different* from the values used in the INIT method. This is
                    because this keyword is being used with the ENUMLIST property in property sheets. Sorry,
                    it can't be helped. To avoid problems, set the FONT property through the Control Panel.

     TICKDIR:       The direction of the ticks. 0 is outward, 1 is inward.

     TITLE:         A string that will be the title of the axis. Place over the top axis.

     VISIBLE:       Set this keyword to 1 to turn axes drawing VISIBLE, set to 0 to turn OFF.

     XCHARSIZE:     The character size for the X axis characters.

     XRANGE:        Set this keyword to the X axis range.

     XTICKFORMAT:   Set this keyword to the format to be used for the X axis annotation.
     
     XTICKLEN:      The length of the X ticks.

     XTITLE:        The title or label for the X axis

     YCHARSIZE:     The character size for the X axis characters.

     YRANGE:        Set this keyword to the Y axis range.

     YTICKFORMAT:   Set this keyword to the format to be used for the Y axis annotation.
     
     YTICKLEN:      The length of the Y ticks.

     YTITLE:        The title or label for the Y axis

     _EXTRA:        Extra keywords for the superclass SETPROPERY methods.

(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)


IMGAXES__DEFINE

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

 PURPOSE:

       The purpose of this routine is to display axes on an image object.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theAxes = Obj_New("IMGAXES")
       imageObj -> Add, theAxes

 SUPERCLASSES:

       CATATOM
       CATCONTAINER
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { IMGAXES, $                ; The object class name.
             INHERITS CATATOM, $
             box: DblArr(2,5), $       ; The boundary box for the axes.
             charsize: 0.0, $          ; The character size.
             color: "" , $             ; The axes color.
             coords: Obj_New(), $      ; A coordinate object.
             font: 0L, $               ; The font to use. (Like !P.Font.)
             position: FltArr(4), $    ; The normalized position in the window for drawing axes.
             tickdir: 0B, $            ; The tick direction.
             title: "", $              ; A title for the axis.
             visible: 0L, $            ; A flag that indicats the axes should be drawn.
             xrange:FltArr(2), $       ; The X axis range.
             xcharsize: 0.0, $         ; The X axis character size.
             xtickformat: "", $        ; The format for the X axis.
             xticklen: 0.0, $          ; The X tick length.
             xtitle: "", $             ; The title or label for the X axis.
             ycharsize: 0.0, $         ; The Y axis character size.
             ytickformat: "", $        ; The format for the Y axis.
             yticklen: 0.0,            ; The Y tick length.
             yrange:FltArr(2), $       ; The Y axis range.
             ytitle: "" $              ; The title or label for the Y axis.
           }

 NOTES:

    The image objects will automatically update the IMGAXES object position when the image is
    drawn if the IMGAXES object has a name of "IMGAXES*" where the "*" can be anything you like.
    This is the default name given to this object, so it is perhaps best NOT to name the object
    unless there is good reason to do so. Appending the letters "IMGAXES" to your name will
    prevent problems.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, July 17, 2003.
       Removed SCR_XSIZE call on PropertySheet widgets. 12 October 2004. DWF.
       Changed ON keyword to VISIBLE for Catalyst consistency. 7 July 2005. DWF.
       Added boundary box calculations at end of DRAW method. 7 July 2005. DWF.
       Added automatic True-Type fonts for PostScript output, if Hershey fonts would otherwise
         be selected. 1 August 2006. DWF.
       Added the ability to specify tick length and direction. 12 Oct 2008. DWF.

(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)


MAP_GRIDE__DEFINE

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

 PURPOSE:

       This object is a wrapper for the MAP_GRID routine in IDL. It provides a simple 
       way to allow map grids on images which use a MAPCOORD object to set up the map 
       projection space. A map coordinate space must be in effect at the time the 
       Draw method of this object is used. 

 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:

       gridObject = Obj_New('Map_Grid')
       Map_Set, /CYLINDRICAL
       gridObject -> Draw
       
 AUGUMENTS:
 
       parent:        The parent object.

 KEYWORDS:
 
  All of the following INIT keywords can be set and obtained using the SETPROPERTY and GETPROPERTY methods.
 
      BOX_AXES:        Set this keyword to draw a box-style axes around the map.
      
      CHARSIZE:        Set this keyword to the size of characters used for the labels. Default is 1.0.
      
      CLIP_TEXT:       Set this keyword to a zero value to turn off clipping of text labels. 
                       By default, text labels are clipped. This keyword is ignored if the 
                       BOX_AXES keyword is set. 
                      
      COLOR:           The name of the color to draw the grid lines in. Default: "charcoal".
      
      FILL_HORIZON:    Set this keyword to fill the current map horizon.
      
      HORIZON:         Set this keyword to draw the current map horizon.
      
      INCREMENT:       Set this keyword to the spacing between the graticle points.
      
      LABEL:           Set this keyword to an integer, n, that labels every n parallels and meridians.
                       For example, LABEL=3 will label every 3rd line. Default is 1.
                       
      LATALIGN:        This keyword controls the alignment of the text baseline for latitude 
                       labels. A value of 0.0 left justifies the label, 1.0 right justifies 
                       it, and 0.5 centers it. This keyword is ignored if the BOX_AXES keyword is set.
                      
      LATDEL:          Set this keyword equal to the spacing (in degrees) between parallels of 
                       latitude in the grid. If this keyword is not set, a suitable value is 
                       determined from the current map projection.
                       
      LATLAB:          The longitude at which to place latitude labels. The default is the center 
                       longitude on the map. This keyword is ignored if the BOX_AXES keyword is set.
                       
      LATNAMES:        Set this keyword equal to an array specifying the names to be used for the 
                       latitude labels. By default, this array is automatically generated in units 
                       of degrees. The LATNAMES array can be either type string or any single numeric 
                       type, but should not be of mixed type.When LATNAMES is specified, the LATS 
                       keyword must also be specified.
      
      LATS:            Set this keyword equal to a one or more element vector of latitudes for which 
                       lines will be drawn (and optionally labeled). If LATS is omitted, appropriate 
                       latitudes will be generated based on the value of the (optional) LATDEL keyword. 
                       If LATS is set to a single value, that latitude and a series of automatically 
                       generated latitudes will be drawn (and optionally labeled).
      
      LINESTYLE:       Set this keyword to the type of linestyle desired. See Graphics Keywords in
                       the on-line help for additional information.
 
      LONALIGN:        This keyword controls the alignment of the text baseline for longitude 
                       labels. A value of 0.0 left justifies the label, 1.0 right justifies 
                       it, and 0.5 centers it. This keyword is ignored if the BOX_AXES keyword is set.
                      
      LONDEL:          Set this keyword equal to the spacing (in degrees) between parallels of 
                       longitude in the grid. If this keyword is not set, a suitable value is 
                       determined from the current map projection.
                       
      LONTLAB:         The latitude at which to place longitude labels. The default is the center 
                       latitude on the map. This keyword is ignored if the BOX_AXES keyword is set.
                       
      LONNAMES:        Set this keyword equal to an array specifying the names to be used for the 
                       longitude labels. By default, this array is automatically generated in units 
                       of degrees. The LONNAMES array can be either type string or any single numeric 
                       type, but should not be of mixed type.When LONNAMES is specified, the LONS 
                       keyword must also be specified.
                       
      LONS:            Set this keyword equal to a one or more element vector of longitudes for which 
                       lines will be drawn (and optionally labeled). If LONS is omitted, appropriate 
                       longitudes will be generated based on the value of the (optional) LONDEL keyword. 
                       If LONS is set to a single value, that longitudes and a series of automatically 
                       generated longitudes will be drawn (and optionally labeled).
      
      MAP_STRUCTURE:   A map projection structure (e.g., from MAP_PROJ_INIT) that allows the
                       the coordinate conversion from Cartisian coordinates (otherwise known as
                       UV coordinates) to longitude/latitude coordinates and visa versa.   

 DEPENDENCIES:

       The following programs (at least) are required from the Coyote Library:

                     http://www.dfanning.com/programs/error_message.pro
                     http://www.dfanning.com/programs/fsc_color.pro

 MODIFICATION HISTORY:

       Written by David W. Fanning, 3 January 2009.

(See C:\temp\catalyst\source\graphics\map_grid__define.pro)


MAP_OUTLINE__DEFINE

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

 PURPOSE:

       This object is a wrapper for either MAP_CONTINENTS or MAP_GSHHS_SHORELINE.
       It provides a simple way to allow map overlays on images which use a MAPCOORD
       object to set up the map projection space. A map coordinate space must be in
       effect at the time the Draw method of this object is used. Map outlines can be
       provided from built-in IDL continental databases, or the GSHHS Shoreline
       data base can be used. (For information on the GSHHS Shoreline data base, see
       http://www.dfanning.com/map_tips/gshhs.html.)

 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:

       outlineObject = Obj_New('Map_Outline')
       Map_Set, /CYLINDRICAL
       outlineObject -> Draw
       
 AUGUMENTS:
 
       parent:        The parent object.

 COMMON KEYWORDS (used with either MAP_CONTINENTS of MAP_GSHHS_SHORELINE):

       COLOR:         The name of a color (used with FSC_COLOR) to draw the output in.
       
       FILL:          Set this keyword to create a filled polygon output, rather than an outline.
       
       HIRES:         If this keyword is set, the high resolution dataset supplied with IDL is used
                      with MAP_CONTINENTS. If this keyword is set, and the GSHHS keyword is set, and
                      the FILENAME keyword is NOT used, then the default filename is "gshhs_h.b". Note
                      that the high resolution dataset must be installed to be used.
                    
       MAP_STRUCTURE: A !MAP type structure that contains map projection information. Normally, this
                      is obtained from MAP_PROJ_INIT and passed into this object. It is passed directly
                      to MAP_CONTINENTS or MAP_GSHHS_SHORELINE in the Draw method.
                      
 MAP_CONTINENTS KEYWORDS (apply only if you are using MAP_CONTINENTS to draw outlines):
 
        COASTS:       Set this keyword if you want coasts to be drawn.
        
        CONTINENTS:   Set this keyword if you want continental outlines to be drawn. This will be
                      set automatically if COASTS, COUNTRIES, RIVERS, AND USA keywords are all set
                      to zero.
                      
        LINESTYLE:    Set to the type of linestyle in drawing outlines. Set to 0 or solid lines by default.
        
        RIVERS:       Set this keyword if you wish to draw rivers.
        
        T3D:          Set this graphics keyword if you wish to draw outlines use the T3D transformation matrix.
        
        USA:          Set this keyword if you wish do draw United States state boundaries.
        
        ZVALUE:       Set this keyword to the ZVALUE where the outlines should be drawn. Set to 0 by default.
        
 MAP_GSHHS_SHORELINE KEYWORDS (apply only if you are using MAP_GSHHS_SHORELINE to draw outlines):
 
        FILENAME:     The root name of the GSHHS file to open. By default, "gshhs_l.b" unless the HIRES
                      keyword is selected, in which case it will be "gshhs_h.b". The GSHHS file must be
                      in a "resource" directory or in one of the directories on your IDL path.
                      
        LAND_COLOR:   The name of a color to be used for "land". Used with filled polygons 
                      (e.g., the FILL keyword). By default, 'INDIAN RED'.
        
        LEVEL:        The polygon LEVEL. All polygons less than or equal to this value
                      are drawn. 1-land, 2-lakes, 3-island in lake, 4-pond in island.
                      By default, 2 (land and lake outlines).

        MINAREA:      The minimum feature area. By default, 500 km^2. Polygons with areas less
                      than this are not drawn.

        OUTLINE:      Set this keyword to draw shorelines. Set by default if FILL=0.

        WATER_COLOR:  The name of the water color. By default, "SKY BLUE".

 DEPENDENCIES:

       The following programs (at least) are required from the Coyote Library:

                     http://www.dfanning.com/programs/error_message.pro
                     http://www.dfanning.com/programs/find_resource_file.pro
                     http://www.dfanning.com/programs/fsc_color.pro
                     http://www.dfanning.com/programs/map_gshhs_shoreline.pro

 MODIFICATION HISTORY:

       Written by David W. Fanning, 3 January 2009.

(See C:\temp\catalyst\source\graphics\map_outline__define.pro)


MEASUREINTERACTION::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MEASUREINTERACTION::CLEANUP

 PURPOSE:

       This is the MEASUREINTERACTION object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MEASUREINTERACTION::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the object

 SYNTAX:

       imageObject -> ControlPanel, baseObj

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the "CONTROLPANEL::INIT" method.


(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MEASUREINTERACTION::DRAW

 PURPOSE:

       This method draws the interaction in the display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        MEASUREINTERACTION::EVENT_HANDLER

 PURPOSE:

        This method is the event handler for the MEASUREINTERACTION object.

 SYNTAX:

        This method is called automatically by the event handling mechanism.

 ARGUMENTS:

       event: The event structure as described in the IDL help files, except
              that the ID, TOP and HANDLER tags will be object references.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MEASUREINTERACTION::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain MEASUREINTERACTION properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     TAPE_OBJECT:        The current TapeMeasure object.

     LAYER:              The current annotation CATLAYER object.

     MODE:               The current "mode" of the object.

     PIXMAP:             The object reference to any pixmap widget that is created.

     SELECTEDOBJECTS:    Any objects currently selected.

     _REF_EXTRA:         Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MEASUREINTERACTION::INIT

 PURPOSE:

       This is the MEASUREINTERACTION object class initialization method.

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     drawObject:          The draw widget object that you will be taking over events from.

 KEYWORDS:

     COORD_OBJECT:        A coordinate object (CATCOORD) for establishing a coordinate system for the
                          interaction objects. If a coordinate object isn't provided, an attempt is made
                          to use the one provided by the drawObject. If still undefined, a default
                          coordinate object with XRange=[0,1] and YRange=[0,1] is created.

     TAPE_OBJECT:         Set this keyword to an object reference to a TAPEMEASURE object.

     LAYER:               An optional CATLAYER object for holding the annotation objects. If a layer object is
                          not provided, the annotations are placed directly in the drawObject container. Otherwise,
                          the annotations are placed in the CATLAYER object, and the CATLAYER object is placed in
                          the drawObject.

     _EXTRA:              Any keywords appropriate for the superclass INIT method or TAPE_OBJECT INIT method.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION::RESTOREDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MEASUREINTERACTION::RESTOREDISPLAY

 PURPOSE:

       This method restores the draw widget to its former state.

 SYNTAX:

       theObject -> RestoreDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION::SETDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MEASUREINTERACTION::SETDISPLAY

 PURPOSE:

       This method takes over event handling from the draw widget and
       sets up the object so that everything can be restored to the way
       it was when the interaction is finished.

 SYNTAX:

       theObject -> SetDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MEASUREINTERACTION::SETPROPERTY

 PURPOSE:

       This method allows the user to set the MEASUREINTERACTION object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     The following keywords set default properties for new objects created in this interaction.

     TAPE_OBJECT:        Set this keyword to an object reference to a TAPEMEASURE object.

     LAYER:              A CATLAYER object for holding the annotation objects. The old annotation layer
                         and everything it contains will be destroyed.

     MODE:               The current object mode.

     _EXTRA:             Any keywords appropriate for the superclass SetProperty method.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MEASUREINTERACTION__DEFINE

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

 PURPOSE:

       The purpose of this routine is to provide an interaction for creating
       and manipulating TapeMeasure objects.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theObject = Obj_New("MEASUREINTERACTION")

 SUPERCLASSES:

       INTERACTION
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { MEASUREINTERACTION, $
             pixmap: Obj_New(), $             ; A pixmap for fast redraw.
             mode: "", $                      ; The current mode. "SELECT", "WRITE", "MOVE", etc.
             selectedObjects: Ptr_New(), $    ; The currently selected objects.
             sx: 0L, $                        ; The static X location.
             sy: 0L, $                        ; The static Y location.
             tapeObject: Obj_New(), $         ; The default TapeMeasure object.
             layerObject: Obj_New(), $        ; A layer object for holding selectable annotation objects.
             INHERITS INTERACTION $
           }

 MESSAGES:

   None.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 9 August 2004.

(See C:\temp\catalyst\source\graphics\measureinteraction__define.pro)


MOVEABLEBOX::ACCEPTBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::ACCEPTBOX

 PURPOSE:

       This method accepts the box on the display and sends an event to the client.

 SYNTAX:

       theObject -> AcceptBox, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::CANCELBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::CANCELBOX

 PURPOSE:

       This method cancels the box on the display and allows the user to start over
 SYNTAX:

       theObject -> CancelBox, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::CLEANUP

 PURPOSE:

       This is the MOVEABLEBOX object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::DRAW

 PURPOSE:

       This method draws the interaction in the display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        MOVEABLEBOX::EVENT_HANDLER

 PURPOSE:

        This method is the event handler for the MOVEABLEBOX object.

 SYNTAX:

        This method is called automatically by the event handling mechanism.

 ARGUMENTS:

       event: The event structure as described in the IDL help files, except
              that the ID, TOP and HANDLER tags will be object references.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::GETMODE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::GETMODE

 PURPOSE:

       This method gets the current mode for the draw widget.

 SYNTAX:

       theMode = self -> GetMode(x, y)

 ARGUMENTS:

       x:    The x location for obtaining the mode.

       y:    The y location for obtaining the mode.

 KEYWORDS:

      SET;   If this keyword is set, the currentMode flag is set to this mode.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain MOVEABLEBOX properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::INIT

 PURPOSE:

       This is the MOVEABLEBOX object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     drawObject:    The draw widget object that you will be taking over events from.

 KEYWORDS:

     BOX:           A four-element array containing the initial box coordinates in device
                    coordinates.

     HANDLE_COLOR:  The name of the color to draw the box handles in. By default, "sky blue".

     _EXTRA:        Any keywords appropriate for the superclass INIT method.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::RESTOREDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::RESTOREDISPLAY

 PURPOSE:

       This method ...

 SYNTAX:

       theObject -> RestoreDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::SETDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::SETDISPLAY

 PURPOSE:

       This method ...

 SYNTAX:

       theObject -> SetDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::SETPROPERTY

 PURPOSE:

       This method allows the user to set the MOVEABLEBOX object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     _EXTRA:       Any keywords appropriate for the superclass SetProperty method.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX::UPDATE_MODEMAP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       MOVEABLEBOX::UPDATE_MODEMAP

 PURPOSE:

       This method updates the modemap with the latest information.

 SYNTAX:

       self -> Update_Modemap

 ARGUMENTS:

       None.

 KEYWORDS:

      CLEAR:     If this keyword is set, the modemap is cleared of all information.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


MOVEABLEBOX__DEFINE

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

 PURPOSE:

       Implements a rubberband-style box ROI that can be selected and moved
       about the window.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theObject = Obj_New("MOVEABLEBOX")

 SUPERCLASSES:

       RUBBERBANDBOX
       INTERACTION
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { MOVEABLEBOX, $
             phi: FltArr(33), $             ; Coordinates of a circle.
             handle_color: "", $            ; The color of the box handles.
             modemap: Obj_New(), $          ; A pixmap for calculating "mode".
             currentmode: 0L, $             ; The current mode.
             sx: 0L, $                      ; The static X corner of the box.
             sy: 0L, $                      ; The static Y corner of the box.
             bufferID: Obj_New(), $         ; A buffer pixmap object for smooth graphics display.
             INHERITS RUBBERBANDBOX $
           }

 MESSAGES:

   None.

 EVENT_STRUCTURE:

       event = { ID:theObject, TOP:topObject, HANDLER:Obj_New(), EVENT_NAME='RUBBERBANDBOX_EVENT', $
                  NAME: self._name, BOX:self.box, XPTS:FLTARR(5), YPTS:FLATARR(5) }

       In which the XPTS and YPTS fields contain the X and Y locations of the box in a form
       suitable for drawing the ROI on the display with PLOTS. The BOX, XPTS, and YPTS are
       converted to the coordinate system of the draw widget associated with the interaction
       before being placed in the event structure.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 October 2004.

(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)


POLYGON::ADDTOEVENTSTRUCTURE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::ADDTOEVENTSTRUCTURE

 PURPOSE:

       This method receives an event structure, which it can add information to before being sent
       to some other event handler. Normally, this method is called by an INTERACTION object of
       some kind.

 SYNTAX:

       theObject -> AddToEventStructure, event

 ARGUMENTS:

       event:      The event structure that will be added to.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the extent of a boundary polygon about the polygon itself.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::CLEANUP

 PURPOSE:

       This is the POLYGON object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the POLYGON object.

 SYNTAX:

       polygonObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::CREATENEWOBJECT

 PURPOSE:

       This method creates a new object and adds it to both a draw widget and pixmap container.
       If the object contains an annotation layer, the new object is instead added to the layer,
       and the layer is added to the draw widget and pixmap container.

 SYNTAX:

       theObject -> CreateNewObject, drawID, pixmapID

 ARGUMENTS:

       drawID:    The draw widget which will contain the new arrow object. Required in normal operation.

       pixmapID:  The pixmap which will contain the new arrow object. Optional.

 KEYWORDS:

       NEWOBJECT: An output keyword containing the new arrow object that gets created.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::DRAW

 PURPOSE:

       This method draws the polygon in the current direct graphics display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the boundary polygon of the polygon

 SYNTAX:

       theObject -> DrawSelectionPolygon

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the polygon in. By default, the color of the polygon.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain POLYGON properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     HEIGHT:         The height of the polygon boundary box in normalized coordinates.

     INSERTEDOBJECT: The new object that is inserted in the CreateNewObject method.

     LAYER:          The annotation layer associated with this object.

     LINESTYLE:      The type of linestyle required. See PLOT documentation for details.

     NPOINTS:        The number of points in the polygon.

     THICKNESS:      The current thickness of the polygon.

     WIDTH:          The width of the polygon boundary polygon in normalized coordinates.

     XPTS:           The X locations of points making up the polygon.

     YPTS:           The Y locations of points making up the polygon.

     _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::INIT

 PURPOSE:

       This is the POLYGON object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     LAYER:        A CATLAYER object for holding annotations.

     LINESTYLE:    The linestyle of the polygon. By default, 1.0 (solid).

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     XPTS:         The X locations of the points of the polygon.

     YPTS:         The Y locations of the points of the polygon.

     _EXTRA:       Any keywords appropriate for the SELECTABLEOBJECT INIT method.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::INITIALIZE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::INITIALIZE

 PURPOSE:

       This method initializes the polygon object for drawing.

 SYNTAX:

       theObject -> Initialize

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::INTERACTIONEVENTS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from the SelectableInteraction object based on the "mode"
       of the SelectableInteraction object. The SelectableInteraction object can process "SELECT"
       and "MOVE" mode events. All other mode events are sent here for processing by a SELECTABLEOBJECT.


 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the SelectableInteraction
                     interaction.

 KEYWORDS:

     INTERACTION:    The object reference to a SELECTABLEINTERACTION object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::MOVE

 PURPOSE:

       This method moves the polygon in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:          The number of pixels to move in the X direction.

       Y:          The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                   contents of the window.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::SELECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::SELECT

 PURPOSE:

       This method returns the object reference if the requested point is inside
       the bounding box of the polygon.

 SYNTAX:

       selectedObject = theObject -> Select, x, y

 ARGUMENTS:

       X:   The X location of a point in device or window coordinates.

       Y:   The Y location of a point in device or window coordinates.

 KEYWORDS:

       SUCCESS:   Set to 1 if a selection is made. To 0 otherwise.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::SELECTVERTEX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::SELECTVERTEX

 PURPOSE:

       This method selects a particular vertex for movement.

 SYNTAX:

       theObject -> SelectVertex, x, y

 ARGUMENTS:

       X:          The X location of the selection.

       Y:          The Y location of the selection.

 KEYWORDS:

       DrawID:     A window object that contains the polygon. Required for converting to
                   the proper device coodinate system.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::SETPROPERTY

 PURPOSE:

       This method allows the user to set the POLYGON object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     LAYER:        The annotation layer for the object.

     LINESTYLE:    The type of linestyle required. See PLOT documentation for details.

     NOMESSAGE:    Set this keyword to suppress any messaging as a result of going through the
                   SetProperty method. Messaging is essential for PropertySheet widget capability,
                   but causes too many draw methods on occasion. This will prevent going through DRAW
                   methods needlessly.

     NOREFRESH:    Set this keyword if immediate refreshing of the object on the display is not required.

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     XPTS:         The X locations of the points of the polygon.

     YPTS:         The Y locations of the points of the polygon.

    _EXTRA:        Any keywords appropriate for the superclass SetProperty method.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON::UPDATE_MODEMAP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON::UPDATE_MODEMAP

 PURPOSE:

       This method updates the modemap with the latest information.

 SYNTAX:

       self -> Update_Modemap

 ARGUMENTS:

       None.

 KEYWORDS:

      CLEAR:     If this keyword is set, the modemap is cleared of all information.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


POLYGON_ROI::ACCEPTROI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON_ROI::ACCEPTROI

 PURPOSE:

       This method accepts the box on the display and sends an event to the client.

 SYNTAX:

       theObject -> AcceptROI, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\polygon_roi__define.pro)


POLYGON_ROI::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON_ROI::CLEANUP

 PURPOSE:

       This is the POLYGON_ROI object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\polygon_roi__define.pro)


POLYGON_ROI::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        POLYGON_ROI::EVENT_HANDLER

 PURPOSE:

        This method is the event handler for the POLYGON_ROI object.

 SYNTAX:

        This method is called automatically by the event handling mechanism.

 ARGUMENTS:

       event: The event structure as described in the IDL help files, except
              that the ID, TOP and HANDLER tags will be object references.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\polygon_roi__define.pro)


POLYGON_ROI::RESTOREDISPLAY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       POLYGON_ROI::RESTOREDISPLAY

 PURPOSE:

       This method ...

 SYNTAX:

       theObject -> RestoreDisplay

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\polygon_roi__define.pro)


POLYGON_ROI__DEFINE

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

 PURPOSE:

       The purpose of this routine is to create a polygon ROI drawing
       interaction. When the interaction is in place, the user can
       draw a polygon ROI in the display window.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theObject = Obj_New("POLYGON_ROI")

 SUPERCLASSES:

       FREEHAND_ROI
       INTERACTION
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { POLYGON_ROI, $
             pointsID: Obj_New(), $        ; A pixmap for the selected points.
             INHERITS FREEHAND_ROI $
           }

 MESSAGES:

   None.

 EVENT_STRUCTURE:

       event = { ID:theObject, TOP:topObject, HANDLER:Obj_New(), EVENT_NAME='POLYGON_ROI_EVENT', $
                  NAME: self._name, XPTS:FLTARR(), YPTS:FLATARR(), COUNT:0L }

       In which the XPTS and YPTS fields contain the X and Y locations of the polygon in a form
       suitable for drawing the ROI on the display with PLOTS. The COUNT field contains the number
       of points in the XPTS and YPTS vectors. The XPTS and YPTS are converted to the coordinate
       system of the draw widget associated with the interaction before being placed in the event structure.

 MODIFICATION_HISTORY:

       Written by: David W. September 12, 2004.

(See C:\temp\catalyst\source\graphics\polygon_roi__define.pro)


POLYGON__DEFINE

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

 PURPOSE:

       The purpose of this routine is to provide a polygon that can be displayed
       in a direct graphics draw widget. The coordinate system of the Polygon
       object is either passed to it (a CatCoord object) or is a normalized
       coordinate system by default.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       polygonObject = Obj_New("POLYGON", XPTS, YPTS)
       drawObject -> Add, polygonObject

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { POLYGON, $
             background: 0L, $           ; A flag to indicate if a background polygon is drawn.
             bg_color: "", $             ; The background color.
             color: "", $                ; The name of a color to draw polygon in.
             linestyle: 0L, $            ; The line style of the polygon.
             xpts: Ptr_New(), $          ; The X points making up the polygon.
             ypts: Ptr_New(), $          ; The X points making up the polygon.
             npoints: 0L, $              ; The number of points in the polygon
             thickness: 0.0, $           ; The thickness of the polygon.
             sx: 0L, $                   ; The static X location.
             sy: 0L, $                   ; The static Y location.
             INHERITS SelectableObject $
           }

 MESSAGES:

   POLYGON_CHANGED:   This message is sent whenever SetProperty method is called and the NOMESSAGE
                      keyword is NOT set.

 EVENT_STRUCTURE:

       This object will add the following fields to the event structure created by an interaction.
       The fields are defined as:

       BOUNDARY_BOX:     A 2x5 element array in normalized coordinates giving the boundary box of
                         the object.

       XPTS:             An array of X points in data coordinates descriping a polygon.

       YPTS:             An array of Y points in data coordinates descriping a polygon.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 Jan 2004.

(See C:\temp\catalyst\source\graphics\polygon__define.pro)


RUBBERBANDBOX::ACCEPTROI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RUBBERBANDBOX::ACCEPTROI

 PURPOSE:

       This method accepts the box on the display and sends an event to the client.

 SYNTAX:

       theObject -> AcceptROI, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RUBBERBANDBOX::CANCELROI

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RUBBERBANDBOX::CANCELROI

 PURPOSE:

       This method cancels the box on the display and allows the user to start over.

 SYNTAX:

       theObject -> CancelROI, event

 ARGUMENTS:

       event:        The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RUBBERBANDBOX::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RUBBERBANDBOX::CLEANUP

 PURPOSE:

       This is the RUBBERBANDBOX object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RUBBERBANDBOX::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RUBBERBANDBOX::DRAW

 PURPOSE:

       This method may or may not be needed by your object, depending
       upon whether a graphical representation of the object is required.
       If you wish the DRAW method to automatically propogates down to any
       objects contained in this object's container, call the superclass DRAW
       method.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RUBBERBANDBOX::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        RUBBERBANDBOX::EVENT_HANDLER

 PURPOSE:

        This method is the event handler for the RUBBERBANDBOX object. It will typically
        be used to respond to events from widget objects created in the CONTROLPANEL
        method.

 SYNTAX:

        This method is called automatically by the event handling mechanism.

 ARGUMENTS:

       event: The event structure as described in the IDL help files, except
              that the ID, TOP and HANDLER tags will be object references.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RUBBERBANDBOX::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RUBBERBANDBOX::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain RUBBERBANDBOX properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     BOX:            A four-elements array of the form [x1,y1,x2,y2] representing the two
                     diagonal corners of a box in the coordinate system of the window used
                     to draw the box.

     DEVICE:         If this keyword is set, the BOX coordinates are always returned in device coordinates.

     LINESTYLE:      The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:          The thickness of the line used to draw the ROI. Be default, 2.

     _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RUBBERBANDBOX::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RUBBERBANDBOX::INIT

 PURPOSE:

       This is the RUBBERBANDBOX object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     drawObject:   The draw widget object that you will be taking over events from.

 KEYWORDS:

     LINESTYLE:    The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:        The thickness of the line used to draw the ROI. Be default, 2.

     _EXTRA:       Any keywords appropriate for the superclass INIT method.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RUBBERBANDBOX::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RUBBERBANDBOX::SETPROPERTY

 PURPOSE:

       This method allows the user to set the RUBBERBANDBOX object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     LINESTYLE:    The line style index. Value from 0 to 5, as for PLOT command. Default, 0, solid line.

     THICK:        The thickness of the line used to draw the ROI. Be default, 2.

     _EXTRA:       Any keywords appropriate for the superclass INIT method.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RUBBERBANDBOX__DEFINE

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

 PURPOSE:

       The purpose of this routine is to implement a rubberband-box ROI interaction.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theObject = Obj_New("RUBBERBANDBOX")

 SUPERCLASSES:

       INTERACTION
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { RUBBERBANDBOX, $
             box: FltArr(4), $            ; The corners of the box, once drawn.
             INHERITS INTERACTION $
           }

 MESSAGES:

   None.

 EVENT_STRUCTURE:

       event = { ID:theObject, TOP:topObject, HANDLER:Obj_New(), EVENT_NAME='RUBBERBANDBOX_EVENT', $
                  NAME: self._name, BOX:self.box, XPTS:FLTARR(5), YPTS:FLATARR(5), $
                  ACTION:"" }

       In which the XPTS and YPTS fields contain the X and Y locations of the box in a form
       suitable for drawing the ROI on the display with PLOTS. The BOX, XPTS, and YPTS are
       converted to the coordinate system of the draw widget associated with the interaction
       before being placed in the event structure. The ACTION field value will be "ACCEPT"
       by default, unless the ASK_ON_UP keyword is set and the user choses "CANCEL".

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 October 2004.

(See C:\temp\catalyst\source\graphics\rubberbandbox__define.pro)


RULER::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RULER::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the extent of a box about the ruler.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


RULER::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RULER::CLEANUP

 PURPOSE:

       This is the RULER object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


RULER::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RULER::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the RULER object. A
       control panel is a graphical user interface for setting object
       properties. If you create a control panel, the events are typically
       sent to the EVENTHANDLER method.

 SYNTAX:

       theObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window (i.e., a TOPLEVELBASE object).

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CatControlPanel::INIT method.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


RULER::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RULER::DRAW

 PURPOSE:

       This method draws the ruler.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


RULER::EVENT_HANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
        RULER::EVENT_HANDLER

 PURPOSE:

        This method is the event handler for the RULER object. It will typically
        be used to respond to events from widget objects created in the CONTROLPANEL
        method.

 SYNTAX:

        This method is called automatically by the event handling mechanism.

 ARGUMENTS:

       event: The event structure as described in the IDL help files, except
              that the ID, TOP and HANDLER tags will be object references.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


RULER::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RULER::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain RULER properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:     The character size.

     LENGTH:       The absolute length of the ruler in the parent coordinate system.

     PARENT_COORD: The coordinate object used to specify distance. Obtained from the
                   parent object at DRAW time if not provided.

     MINOR:        The number of minor tick intervals.

     THICK:        The thickness of the ruler lines.

     FORMAT:       The character format.

     TICKLEN:      The tick length in normalized coordinates.

     TICKS:        The number of major tick intervals.

     TITLE:        The title of the ruler.

     VERTICAL:     The ruler is normally position horizontally, centered at (X,Y).
                   If this keyword is set, the ruler is position vertically
                   at (X,Y).

     X:            The ruler is centered at this X coordinate, expressed in
                   normalized coordinates.

     Y:            The ruler is centered at this Y coordinate, expressed in
                   normalized coordinates.

     _REF_EXTRA:   Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


RULER::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RULER::INIT

 PURPOSE:

       This is the RULER object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:     The character size. By default, 1.0.

     FORMAT:       The character format. By default, '(I3)'.

     LENGTH:       The absolute length of the ruler in the parent coordinate system.
                   By default, 1.0.

     PARENT_COORD: The coordinate object used to specify distance. Obtained from the
                   parent object at DRAW time if not provided.

     MINOR:        The number of minor tick intervals. Set to 4 by default.

     THICK:        The thickness of the ruler lines. By default, 1.

     TICKLEN:      The tick length in normalized coordinates. By default, 0.025.

     TICKS:        The number of major tick intervals. By default, 1.

     TITLE:        The title of the ruler. By default, "Units".

     VERTICAL:     The ruler is normally position horizontally, centered at (X,Y).
                   If this keyword is set, the ruler is position vertically
                   at (X,Y).

     X:            The ruler is centered at this X coordinate, expressed in
                   normalized coordinates. By default, 0.5 for horizontal
                   rulers and 0.9 for vertical rulers. This is with respect
                   to the parent coordinate system.

     Y:            The ruler is centered at this Y coordinate, expressed in
                   normalized coordinates. By default, 0.1 for horizontal
                   rulers and 0.5 for vertical rulers. This is with respect
                   to the parent coordinate system.

     _EXTRA:       Any keywords appropriate for the superclass INIT method.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


RULER::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       RULER::SETPROPERTY

 PURPOSE:

       This method allows the user to set the RULER object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     CHARSIZE:     The character size.

     DRAW:         Set this keyword to call the draw method for this object after
                   properties have been set.

     FORMAT:       The character format.

     LENGTH:       The absolute length of the ruler in the parent coordinate system.

     PARENT_COORD: The coordinate object used to specify distance. Obtained from the
                   parent object at DRAW time if not provided.

     MINOR:        The number of minor tick intervals.

     THICK:        The thickness of the ruler lines.

     TICKLEN:      The tick length in normalized coordinates.

     TICKS:        The number of major tick intervals.

     TITLE:        The title of the ruler.

     VERTICAL:     The ruler is normally position horizontally, centered at (X,Y).
                   If this keyword is set, the ruler is position vertically
                   at (X,Y).

     X:            The ruler is centered at this X coordinate, expressed in
                   normalized coordinates.

     Y:            The ruler is centered at this Y coordinate, expressed in
                   normalized coordinates.

     _EXTRA:       Any keywords appropriate for the superclass SetProperty method.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


RULER__DEFINE

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

 PURPOSE:

       The purpose of this routine is to create a simple ruler for display
       in the coordinate system of the underlying image. Users will define the
       length of the ruler (e.g., 5 cm) and the ruler will display
       this value on the image.


 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       theObject = Obj_New("RULER")

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { RULER, $
             charsize: 0.0, $             ; The character size.
             format: '', $                ; The character format.
             length: 0.0, $               ; The absolute length of the ruler.
             parent_coord: Obj_New(), $   ; The coordinate object of the parent.
             minor: 0L, $                 ; The number of minor tick intervals.
             thick: 0L, $                 ; The thickness of the ruler lines.
             ticklen: 0.0, $              ; The tick length in normalized coordinates.
             ticks: 0L, $                 ; The number of major tick intervals.
             title: '', $                 ; The title of the ruler.
             vertical: 0B, $              ; The vertical flag.
             x: 0.0, $                    ; The normalized X coordinate of ruler center.
             y: 0.0, $                    ; The normalized Y coordinate of ruler center.
             INHERITS SELECTABLEOBJECT $
           }

 MESSAGES:

   None.

 MODIFICATION_HISTORY:

       Written by: David W Fanning, March 9, 2005.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


SELECTABLEGROUP::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the boundary box around the entire group of selectable objects.
       The box is always in normalized coordinates.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::CLEANUP

 PURPOSE:

       This is the SELECTABLEGROUP object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::DRAW

 PURPOSE:

       This method draws the box around the selectable objects.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the box in. By default, 'white'

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain SELECTABLEGROUP properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     MEMBERS:       The members of the group.

     _REF_EXTRA:    Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::INIT

 PURPOSE:

       This is the SELECTABLEGROUP object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     MEMBERS:       An object array of the members of the group.

     _EXTRA:        Any keywords appropriate for the CATDATAATOM INIT method.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::MOVE

 PURPOSE:

       This method moves the group of selectable objects in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:        The number of pixels to move in the X direction.

       Y:        The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:   If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:   A pixmap that can be supplied for fast re-draw.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP::SELECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::SELECT

 PURPOSE:

       This method returns the object reference if the requested point is inside
       the text bounding box.

 SYNTAX:

       selectedObject = theObject -> Select, x, y

 ARGUMENTS:

       X:   The X location of a point in device or window coordinates.

       Y:   The Y location of a point in device or window coordinates.

 KEYWORDS:

       SUCCESS:   Set to 1 if a selection is made. To 0 otherwise.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::SETPROPERTY

 PURPOSE:

       This method allows the user to set the SELECTABLEGROUP object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     MEMBERS:       The members of the group.

     NOREFRESH:     Set this keyword if immediate refreshing of the object on the display is not required.

     VISIBLE:       Set this keyword to turn all the members of the group on or off.

     _EXTRA:        Any keywords appropriate for the superclass object.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP::UPGROUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEGROUP::UPGROUP

 PURPOSE:

       This method disassociates the grouped objects

 SYNTAX:

       selectedObject = Ungroup, ptrToMembers

 ARGUMENTS:

       ptrToMembers:   If present and a pointer, member objects are stored in this output variable.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEGROUP__DEFINE

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

 PURPOSE:

       The purpose of this routine is to group members of a SelectableObject class together.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       textObject = Obj_New("SELECTABLEGROUP", theMembers)

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { SELECTABLEGROUP, $
             theMembers: Ptr_New(), $  ; A pointer to the group members.
             INHERITS SELECTABLEOBJECT $
           }

 MESSAGES:

   None.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 12 August 2004.

(See C:\temp\catalyst\source\graphics\selectablegroup__define.pro)


SELECTABLEOBJECT::ADDTOEVENTSTRUCTURE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::AddToEventStructure

 PURPOSE:

       This method calculates the boundary box around the selectable object. The box
       is always in normalized coordinates. This method should be overridden by subclassed
       objects. This method will need to be overridden in superclass objects.

 SYNTAX:

       theObject -> AddToEventStructure

 ARGUMENTS:

       theEvent:    The event structure to which you are to add object-specific information.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the boundary box around the selectable object. The box
       is always in normalized coordinates. This method should be overridden by subclassed
       objects.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::CLEANUP

 PURPOSE:

       This is the SELECTABLEOBJECT object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::COPYPARAMETERS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::COPYPARAMETERS

 PURPOSE:

       This method returns the lower-left corner of the bounary box
       in the DESTINATION keyword, and the number of columns and rows
       in the boundary box in the EXTENT keyword, all in window or pixel
       coordinates. It's purpose is to return a section of a pixmap, for
       example, so that only that section can be copied.

 SYNTAX:

       theObject -> CopyParameters, drawid, DESTINATION=destination, EXTENT=extent

 ARGUMENTS:

       drawID:         The identifier of a draw widget object whose extent will
                       provide the size of the window for calculating device coordinates.
                       This parameter is required.

 KEYWORDS:

       DESTINATION:    A two-element array containing the lower-left corner
                       of the boundary box in device coordinates. An output keyword.

       EXTENT:         A two-element array containing the number of columns and
                       rows in the boundary box in device coordinates. An output keyword.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::DRAW

 PURPOSE:

       This method draws the box around the selectable object.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the boundary box of the text

 SYNTAX:

       theObject -> DrawSelectionBox

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the box in. By default, the color of the text.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain SELECTABLEOBJECT properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     BACKGROUND:       Set to 1 if drawing a background for the text.

     BG_COLOR:         The name of the background color.

     BOUNDARY_BOX:     The current boundary box for the text. A 2x5 double array.

     COLOR:            Set this keyword to the name of a color for the text. By default, "white".

     MEMBERSHIP_GROUP: The group this selectable object belongs to.

     SELECTABLE:       A flag that indicates if the object is selectable (1) or not (0).

     VISIBLE:          If text is visible, this keyword is set to 1. O otherwise.

     _REF_EXTRA:       Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::INIT

 PURPOSE:

       This is the SELECTABLEOBJECT object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     BACKGROUND:     Set this keyword to draw a background for the text.

     BG_COLOR:       The name of the background color. By default, "black".

     COLOR:          Set this keyword to the name of a color for the text. By default, "white".

     BOUNDARY_BOX:   The current boundary box for the text. A 2x5 double array.

     SELECTABLE:     Set this flag to 1 to make the object selectable (set by default). Set to 0
                     to make the object unselectable. In general, this keyword should not be used
                     by any object *except* a subclassed object.

     VISIBLE:        Set this keyword to 0 if you wish the object to be invisible. An
                     invisible object is not selectable, although the SELECTABLE flag is NOT set.

     _EXTRA:         Any keywords appropriate for the CATDATAATOM INIT method.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::INITIALIZE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::INITIALIZE

 PURPOSE:

       This method allows the user to initialize the object, if necessary. It is
       expected that user-defined objects will overwrite this object method.

 SYNTAX:

       theObject -> Initialize

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::MOVE[1]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::MOVE

 PURPOSE:

       This method moves the selectable in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:        The number of pixels to move in the X direction.

       Y:        The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:   If this keyword is set, then no drawing of the object takes place.

       PIXMAP:   A pixmap that can be supplied for fast re-draw.

(See C:\temp\catalyst\source\graphics\ruler__define.pro)


SELECTABLEOBJECT::MOVE[2]

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::MOVE

 PURPOSE:

       This method moves the selectable in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:        The number of pixels to move in the X direction.

       Y:        The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:   If this keyword is set, then no drawing of the object takes place.

       PIXMAP:   A pixmap that can be supplied for fast re-draw.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::OUTLINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::OUTLINE

 PURPOSE:

       This method returns a box in normalized coordinates that contains the selectable object
       and all of its parts (labels, text, etc). It is similar to the boundary box of the
       selectable object and, in fact, is often just the boundary box. Like the boundary box,
       the last element in the 2x5 array is the same as the first element.

 SYNTAX:

       outline = theObject -> Outline()

 ARGUMENTS:

     None.

 KEYWORDS:

 RETURN_VALUE:

     outline:    A 2x5 array containing the XY point pairs in normalized coordinates of a rectangle
                 big enough to contain all the parts of the object.

     None.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::SELECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::SELECT

 PURPOSE:

       This method returns the object reference if the requested point is inside
       the bounding box.

 SYNTAX:

       selectedObject = theObject -> Select, x, y

 ARGUMENTS:

       X:   The X location of a point in device or window coordinates.

       Y:   The Y location of a point in device or window coordinates.

 KEYWORDS:

       SUCCESS:   Set to 1 if a selection is made. To 0 otherwise.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::SELECTPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::SELECTPANEL

 PURPOSE:

       Similar to a Control Panel, it gives context menu access to properties
       of selectable objects.

 SYNTAX:

       selectedObject = theObject -> SelectPanel, x, y, drawID

 ARGUMENTS:

       X:       The X location of a point in device or window coordinates.

       Y:       The Y location of a point in device or window coordinates.

       DRAWID:  The identifer of the draw widget object in which the selection is taking place.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::SETGROUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::SETGROUP

 PURPOSE:

       This method allows the user to set the group specified for this selectable object.
       An object can belong to a single group.

 SYNTAX:

       selectedObject = SetGroup, groupObject

 ARGUMENTS:

       groupObject:    The SELECTABLEGROUP object to which this selectable object belongs.
                       Set this to a null object (OBJ_NEW()) to remove the object from the group.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       SELECTABLEOBJECT::SETPROPERTY

 PURPOSE:

       This method allows the user to set the SELECTABLEOBJECT object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     BACKGROUND:     Set this keyword to draw a background for the text.

     BG_COLOR:       The name of the background color.

     BOUNDARY_BOX:   The current boundary box for the text. A 2x5 double array.

     BRING_TO_FRONT: Set this keyword to move this selectable object to the front of all selectable objects.

     COLOR:          Set this keyword to the name of a color for the text.

     DELETE:         Set this keyword if you wish to delete the object.

     MOVE_BACKWARD:  Set this keyword to move this selectable object to the back of all selectable objects.

     MOVE_FORWARD:   Set this keyword to move this selectable object to the front of all selectable objects.

     NOMESSAGE:      Set this keyword to suppress any messaging as a result of going through the
                     SetProperty method. Messaging is essential for PropertySheet widget capability,
                     but causes too many draw methods on occasion. This will prevent going through DRAW
                     methods needlessly. Defined here for capatibility with other selectable objects.
                     The value is NOT used!

     NOREFRESH:      Set this keyword if immediate refreshing of the object on the display is not required.

     SELECTABLE:     Set this keyword to 1 to make the object selectable, to 0 to make the object unselectable.

     SEND_TO_BACK:   Set this keyword to move this selectable object to the back of all selectable objects.

     SENDMESSAGE:    An output keyword that indicates if a message needs to be sent.

     VISIBLE:        Set this keyword to 1 (the default) to see text. To 0 to turn text drawing off. An
                     invisible object is not selectable, although the SELECTABLE flag is NOT set.

     _EXTRA:         Any keywords appropriate for the superclass object.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


SELECTABLEOBJECT__DEFINE

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

 PURPOSE:

       The purpose of this routine is to implement a selectable object for user interaction.
       This is essentially an abstract class for selectable objects.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       textObject = Obj_New("SELECTABLEOBJECT")

 SUPERCLASSES:

       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { SELECTABLEOBJECT, $
             background: 0L, $            ; A flag to indicate if a background box is drawn.
             bg_color: "", $              ; The name of the background color.
             box: DblArr(2,5), $          ; The box around the selectable object is ALWAYS in normal coordinates.
             color: "", $                 ; The name of a color to draw the object in.
             contextmenu: Obj_New(), $    ; A holder for a context menu object.
             internalCoord : Obj_New(), $ ; A holder for an internal coordinate object.
             mygroup: Obj_New(), $        ; A SELECTABLEGROUP object, of which this object is a member.
             selectable: 0L, $            ; A flag to indicate the object is selectable.
             visible: 0L, $               ; A flag to indicate if the object is visible (should be drawn).
             INHERITS CatDataAtom $
           }

 MESSAGES:

        When a selectable object is deleted from the SetProperty method, the message
        OBJECT_DELETED is broadcast to interested parties just before the object is
        destroyed. The DATA field will be set to the object reference of the object
        just about to be destoyed.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 9 August 2004.

(See C:\temp\catalyst\source\graphics\selectableobject__define.pro)


TAPEMEANSURE::COPYPARAMETERS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEANSURE::COPYPARAMETERS

 PURPOSE:

       This method returns the lower-left corner of the bounary box
       in the DESTINATION keyword, and the number of columns and rows
       in the boundary box in the EXTENT keyword, all in window or pixel
       coordinates. It's purpose is to return a section of a pixmap, for
       example, so that only that section can be copied.

 SYNTAX:

       theObject -> CopyParameters, drawid, DESTINATION=destination, EXTENT=extent

 ARGUMENTS:

       drawID:         The identifier of a draw widget object whose extent will
                       provide the size of the window for calculating device coordinates.
                       This parameter is required.

 KEYWORDS:

       DESTINATION:    A two-element array containing the lower-left corner
                       of the boundary box in device coordinates. An output keyword.

       EXTENT:         A two-element array containing the number of columns and
                       rows in the boundary box in device coordinates. An output keyword.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::ADDTOEVENTSTRUCTURE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::ADDTOEVENTSTRUCTURE

 PURPOSE:

       This method receives an event structure, which it can add information to before being sent
       to some other event handler. Normally, this method is called by an INTERACTION object of
       some kind.

 SYNTAX:

       theObject -> AddToEventStructure, event

 ARGUMENTS:

       event:      The event structure that will be added to.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the extent of a box about the tape measure.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::CLEANUP

 PURPOSE:

       This is the TAPEMEASURE object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the TAPEMEASURE object.

 SYNTAX:

       tapeMeasureObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::CREATENEWOBJECT

 PURPOSE:

       This method creates a new object and adds it to both a draw widget and pixmap container.
       If the object contains an annotation layer, the new object is instead added to the layer,
       and the layer is added to the draw widget and pixmap container.

 SYNTAX:

       theObject -> CreateNewObject, drawID, pixmapID

 ARGUMENTS:

       drawID:    The draw widget which will contain the new tape measure object. Required in normal operation.

       pixmapID:  The pixmap which will contain the new tape measure object. Optional.

 KEYWORDS:

       NEWOBJECT: An output keyword containing the new tape measure object that gets created.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::DRAW

 PURPOSE:

       This method draws the tape measure in the current direct graphics display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the boundary box of the tape measure

 SYNTAX:

       theObject -> DrawSelectionBox

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the box in. By default, the color of the tape measure.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain TAPEMEASURE properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     FORMAT:      The current format for the measured length.

     HEADSIZE:    The size of the arrowhead in pixel units. But default, !D.X_Size/50.

     HEIGHT:      The height of the tape measure boundary box in normalized coordinates.

     INSERTEDOBJECT: The new object that is inserted in the CreateNewObject method.

     LABEL:       A TEXTLINE object for labelling the distance between the two points we are measuring.

     LAYER:       The annotation layer associated with this object.

     LENGTH:      The length of the tape measure in data coordinates.

     LINESTYLE:   The type of linestyle required. See PLOT documentation for details.

     ROTATION:    The current rotation of the tape measure (in degrees).

     THICKNESS:   The current thickness of the tape measure.

     WIDTH:       The width of the tape measure boundary box in normalized coordinates.

     X1:          The X location of one end of the tape measure.

     Y1:          The Y location of one end of the tape measure.

     X2:          The X location of the other end of the tape measure. (Arrowhead here if TAPEMEASUREHEAD=1.)

     Y2:          The Y location of the other end of the tape measure. (Arrowhead here if TAPEMEASUREHEAD=1.)

     UNITS:       The current unit string.

     _REF_EXTRA:  Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::INIT

 PURPOSE:

       This is the TAPEMEASURE object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     None.

 KEYWORDS:

     FORMAT:       The format for the length measurement. By default, '(F8.2)'.

     HEADSIZE:     The size of the tape measure head in pixel units. But default, !D.X_Size/50.

     LABEL:        A TEXTLINE object for labelling the distance between the two points we are measuring.

     LAYER:        A CATLAYER object for holding annotations.

     LINESTYLE:    The linestyle of the tape measure. By default, 1.0 (solid).

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     X1:           The X location of one end of the tape measure.

     Y1:           The Y location of one end of the tape measure.

     X2:           The X location of the other end of the tape measure. (Arrowhead here if TAPEMEASUREHEAD=1.)

     Y2:           The Y location of the other end of the tape measure. (Arrowhead here if TAPEMEASUREHEAD=1.)

     UNITS:        A string that is appended to the length measurement when it is displayed. By default, "".

     _EXTRA:       Any keywords appropriate for the SELECTABLEOBJECT INIT method.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::INTERACTIONEVENTS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from the SelectableInteraction object based on the "mode"
       of the SelectableInteraction object. The SelectableInteraction object can process "SELECT"
       and "MOVE" mode events. All other mode events are sent here for processing by a SELECTABLEOBJECT.


 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the SelectableInteraction
                     interaction.

 KEYWORDS:

     INTERACTION:    The object reference to a SELECTABLEINTERACTION object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::MOVE

 PURPOSE:

       This method moves the tape measure in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:          The number of pixels to move in the X direction.

       Y:          The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                   contents of the window.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::OUTLINE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::OUTLINE

 PURPOSE:

       This method returns a box in normalized coordinates that contains the selectable object
       and all of its parts (labels, text, etc). It is similar to the boundary box of the
       selectable object and, in fact, is often just the boundary box. Like the boundary box,
       the last element in the 2x5 array is the same as the first element.

 SYNTAX:

       outline = theObject -> Outline()

 ARGUMENTS:

     None.

 KEYWORDS:

 RETURN_VALUE:

     outline:    A 2x5 array containing the XY point pairs in normalized coordinates of a rectangle
                 big enough to contain all the parts of the object.

     None.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TAPEMEASURE::SETPROPERTY

 PURPOSE:

       This method allows the user to set the TAPEMEASURE object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     BACKGROUND:   Set this keyword to draw a background for the text.

     BG_COLOR:     The name of the background color.

     DRAW:         Set this keyword to immediate draw the object after properties are set.

     FORMAT:       The format of the measured length.

     HEADSIZE:     The size of the tape measure head in pixel units. But default, !D.X_Size/50.

     LABEL:        A TEXTLINE object for labelling the distance between the two points we are measuring.

     LAYER:        The annotation layer for the object.

     LENGTH:       The length of the tape measure in data coordinates. Calculated from (x1,y1).

     LINESTYLE:    The type of linestyle required. See PLOT documentation for details.

     NOMESSAGE:    Set this keyword to suppress any messaging as a result of going through the
                   SetProperty method. Messaging is essential for PropertySheet widget capability,
                   but causes too many draw methods on occasion. This will prevent going through DRAW
                   methods needlessly.

     NOREFRESH:    Set this keyword if immediate refreshing of the object on the display is not required.

     ROTATION:     Set this keyword to the value of the final rotation (in degrees).

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     X1:           The X location of one end of the tape measure.

     Y1:           The Y location of one end of the tape measure.

     X2:           The X location of the other end of the tape measure. (Arrowhead here if TAPEMEASUREHEAD=1.)

     Y2:           The Y location of the other end of the tape measure. (Arrowhead here if TAPEMEASUREHEAD=1.)

     UNITS:        A string, appended to the measured length when displayed.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TAPEMEASURE__DEFINE

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

 PURPOSE:

       The purpose of this routine is to provide a tape measure that can be displayed
       in a direct graphics draw widget. Typically, the user drags a line between two
       points in an image and the distance is calculated using the coordinate system
       of the image (which is provided to the TapeMeasure.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       tapeMeasureObject = Obj_New("TAPEMEASURE", X1=0.5, Y1=0.5, X2=0.75, Y2=0.75)
       drawObject -> Add, tapeMeasureObject

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { TAPEMEASURE, $
             format: "", $               ; The format of the measured length. Default: '(F8.2)'.
             headsize: 0L, $             ; The tape measure head size in pixels. By default !D.X_Size / 50.
             label: Obj_New(), $         ; A TextLine object for labeling the distance between two points.
             layerObject: Obj_New(), $   ; A CATLAYER object for holding the annotation.
             linestyle: 0L, $            ; The linestyle the tape measure is drawn in.
             midx: 0.0, $                ; The midpoint of the tape measure in X.
             midy: 0.0, $                ; The midpoint of the tape measure in Y.
             moveend: 0L, $              ; Indicates which end of tape measure (1 or 2) you are moving.
             orientation: 0.0, $         ; The orientation of the tape measure
             thickness: 0.0, $           ; The thickness of the tape measure.
             x1: 0.0, $                  ; The X location for one end of the tape measure.
             y1: 0.0, $                  ; The Y location for one end of the tape measure.
             x2: 0.0, $                  ; The X location for the other end of the tape measure.
             y2: 0.0, $                  ; The Y location for the other end of the tape measure.
             sx: 0L, $                   ; The static end of a moving tape measure.
             sy: 0L, $                   ; The static end of a moving tape measure.
             units: "", $                ; A string. Appended to length measurement when displaying. Null by default.
             userCoord: Obj_New(), $     ; A coordinate system provided by the user.
             INHERITS SelectableObject $
           }

 MESSAGES:

   TAPEMEASURE_CHANGED:   This message is sent whenever SetProperty method is called and the NOMESSAGE
                    keyword is NOT set.

 EVENT_STRUCTURE:

       This object will add the following fields to the event structure created by an interaction.
       The fields are defined as:

       BOUNDARY_BOX:     A 2x5 element array in normalized coordinates giving the boundary box of
                         the object.

       LENGTH:           The current length of the tape measure in data coordinates.

       UNITS:            A string that is the units of the length. Appended to length, usually.

       XPTS:             A two element array giving the X endpoints of the line in data coordinates.

       YPTS:             A two element array giving the Y endpoints of the line in data coordinates.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 Jan 2004.

(See C:\temp\catalyst\source\graphics\tapemeasure__define.pro)


TEXTLINE::CALCULATEBOUNDARYBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::CALCULATEBOUNDARYBOX

 PURPOSE:

       This method calculates the extent of a box about the text.

 SYNTAX:

       theObject -> CalculateBoundaryBox

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::CLEANUP

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::CLEANUP

 PURPOSE:

       This is the TEXTLINE object class destructor method.

 SYNTAX:

       Called automatically when the object is destroyed.

 ARGUMENTS:

       None.

 KEYWORDS:

      None.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::CONTROLPANEL

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::CONTROLPANEL

 PURPOSE:

       This method creates a control panel for the TEXTLINE object.

 SYNTAX:

       textObject -> ControlPanel, baseObject

 ARGUMENTS:

       baseObject:    The object reference of a base widget for this control to
                      be added to. If not supplied, the control panel will be in a
                      self contained window.

 KEYWORDS:

       _EXTRA:       Any keywords appropriate for the CATCONTROLPANEL::INIT method.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::CREATENEWOBJECT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::CREATENEWOBJECT

 PURPOSE:

       This method creates a new object and adds it to both a draw widget and pixmap container.
       If the object contains an annotation layer, the new object is instead added to the layer,
       and the layer is added to the draw widget and pixmap container.

 SYNTAX:

       theObject -> CreateNewObject, drawID, pixmapID

 ARGUMENTS:

       drawID:    The draw widget which will contain the new arrow object. Required in normal operation.

       pixmapID:  The pixmap which will contain the new arrow object. Optional.

 KEYWORDS:

       NEWOBJECT: An output keyword containing the new arrow object that gets created.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::DRAW

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::DRAW

 PURPOSE:

       This method draws the line of text in the current direct graphics display window.

 SYNTAX:

       theObject -> Draw

 ARGUMENTS:

       None.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::DRAWSELECTIONBOX

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::DRAWSELECTIONBOX

 PURPOSE:

       This method draws a selection box around the boundary box of the text

 SYNTAX:

       theObject -> DrawSelectionBox

 ARGUMENTS:

       None.

 KEYWORDS:

       COLOR:    The name of a color to draw the box in. By default, the color of the text.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::EVENTHANDLER

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::EVENTHANDLER

 PURPOSE:

       This method is an event handler for the Control Panel.

 SYNTAX:

       Called automatically by the event handling system

 ARGUMENTS:

       event:  The event structure.

 KEYWORDS:

       None.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::GETDATA

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::GetData

 PURPOSE:

       This function method overrides the CATDATAATOM function of the same name, only
       so that a null result comes back with a null string rather than a -1.

 SYNTAX:

       data = imageObject -> GetData (Success=s)

 ARGUMENTS:

       None.

 KEYWORDS:

       SUCCESS: This flag shows whether the get has been successful or not.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::GETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::GETPROPERTY

 PURPOSE:

       This method allows the user to obtain TEXTLINE properties. Be sure
       you ALWAYS call the superclass GETPROPERTY method if you have extra
       keywords!

 SYNTAX:

       theObject -> GetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     ALIGNMENT:   Set the keyword to 0.0 for left-aligned text, 0.5 (the default) for
                  centered text, and 1.0 for right-aligned text.

     CHARSIZE:    Set this keyword to the character size desired. By default, 1.0.

     FONT:        Set this to the type of font desired. Hershey: 0, Hardware: 1 (default), True-Type: 2.

     HEIGHT:      The height of the text boundary box in normalized coordinates.

     LAYER:       The annotation layer associated with this object.

     ORIENTATION: Set this keyword to the orientation of the font. By default, 0.0.

     TEXT:        A single line of text for the TextLine object.

     THICKNESS:   The current thickness of the text.

     WIDTH:       The width of the text boundary box in normalized coordinates.

     X:           The X location of the text for alignment purposes. By default, half the coordinate X range.

     Y:           The Y location of the text for alignment purposes. By default, half the coordinate Y range.

     _REF_EXTRA:     Any keywords appropriate for the superclass GetProperty method.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::INIT

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::INIT

 PURPOSE:

       This is the TEXTLINE object class initialization method

 SYNTAX:

       Called automatically when the object is created.

 ARGUMENTS:

     text:        The single line of text to display.

 KEYWORDS:

     ALIGNMENT:    Set the keyword to 0.0 for left-aligned text, 1.0 (the default) for
                   centered text, and 2.0 for right-aligned text.

     CHARSIZE:     Set this keyword to the character size desired. By default, 1.0.

     FONT:         Set this to the type of font desired. Hershey: 0, Hardware: 1 (default), True-Type: 2.

     LAYER:        A CATLAYER object for holding annotations.

     ORIENTATION:  Set this keyword to the orientation of the font. By default, 0.0.

     THICKNESS:    Set this to the thickness of the output. By default, 1.0.

     X:            The X location of the text for alignment purposes. By default, half the coordinate X range.

     Y:            The Y location of the text for alignment purposes. By default, half the coordinate Y range.

     _EXTRA:       Any keywords appropriate for the SELECTABLEOBJECT INIT method.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::INTERACTIONEVENTS

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::INTERACTIONEVENTS

 PURPOSE:

       This method accepts events from the SelectableInteraction object based on the "mode"
       of the SelectableInteraction object. The SelectableInteraction object can process "SELECT"
       and "MOVE" mode events. All other mode events are sent here for processing by a SELECTABLEOBJECT.


 SYNTAX:

       theObject -> INTERACTIONEVENTS

 ARGUMENTS:

     event:          The widget event that is generated by the draw widget and handled by the SelectableInteraction
                     interaction.

 KEYWORDS:

     INTERACTION:    The object reference to a SELECTABLEINTERACTION object that is receiving events.
                     This is a *required* parameter, but is written as a keyword for programming clarity.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::MOVE

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::MOVE

 PURPOSE:

       This method moves the text in a graphics window.

 SYNTAX:

       theObject -> Move, x, y

 ARGUMENTS:

       X:          The number of pixels to move in the X direction.

       Y:          The number of pixels to move in the Y direction.

 KEYWORDS:

       NODRAW:     If this keyword is set, only the coordinates are updated. No drawing occurs.

       PIXMAP:     Set this keyword to a pixmap that can be used to erase the previous
                   contents of the window.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE::SETPROPERTY

[Previous Routine] [Next Routine] [List of Routines]
 NAME:
       TEXTLINE::SETPROPERTY

 PURPOSE:

       This method allows the user to set the TEXTLINE object's properties. Be sure
       you ALWAYS call the superclass SETPROPERTY method if you have extra keywords!


 SYNTAX:

       theObject -> SetProperty ...

 ARGUMENTS:

     None.

 KEYWORDS:

     ALIGNMENT:      Set the keyword to 0.0 for left-aligned text, 1.0 (the default) for
                     centered text, and 2.0 for right-aligned text.

     CHARSIZE:       Set this keyword to the character size desired.

     FONT:           Set this to the type of font desired. Hershey: 0, Hardware: 1 (default), True-Type: 2.

     LAYER:          The annotation layer for the object.

     NOMESSAGE:      Set this keyword to suppress any messaging as a result of going through the
                     SetProperty method. Messaging is essential for PropertySheet widget capability,
                     but causes too many draw methods on occasion. This will prevent going through DRAW
                     methods needlessly.

     NOREFRESH:      Set this keyword if immediate refreshing of the object on the display is not required.

     ORIENTATION:    Set this keyword to the orientation of the font.

     TEXT:           A single line of text for the TextLine object.

     THICKNESS:      Set this to the thickness of the output.

     X:              The X location of the text for alignment purposes.

     Y:              The Y location of the text for alignment purposes.

(See C:\temp\catalyst\source\graphics\textline__define.pro)


TEXTLINE__DEFINE

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

 PURPOSE:

       The purpose of this routine is to provide a line of text that can
       be displayed in a direct graphics draw widget. As a subclassed
       CATDATAATOM, the text is the "data" and can be manipulated with
       the GetData and SetData methods. The coordinate system of the
       TextLine object is either passed to it (a CatCoord object) or is
       a normalized coordinate system by default.

 AUTHORS:

        FANNING SOFTWARE CONSULTING   BURRIDGE COMPUTING
        1645 Sheely Drive             18 The Green South
        Fort Collins                  Warborough, Oxon
        CO 80526 USA                  OX10 7DN, ENGLAND
        Phone: 970-221-0438           Phone: +44 (0)1865 858279
        E-mail: davidf@dfanning.com   E-mail: davidb@burridgecomputing.co.uk

 CATEGORY:

       Objects.

 SYNTAX:

       textObject = Obj_New("TEXTLINE", "This is a line of text")
       drawObject -> Add, textObject

 SUPERCLASSES:

       SELECTABLEOBJECT
       CATDATAATOM
       CATATOM
       CATCONTAINER IDLITCOMPONENT
       IDL_CONTAINER

 CLASS_STRUCTURE:

   class = { TEXTLINE, $
             alignment: 0.0, $           ; The alignment of the text.
             background: 0L, $           ; A flag to indicate if a background box is drawn.
             bg_color: "", $             ; The background color.
             charsize: 0.0, $            ; The character size.
             color: "", $                ; The name of a color to draw text in.
             font: 0L, $                 ; The font type (0-Hershey, 1-Hardware, 2-True-Type).
             orientation: 0.0, $         ; The orientation of the text
             thickness: 0.0, $           ; The CHARTHICK ness of the text.
             x: 0.0, $                   ; The X location for drawing text.
             y: 0.0, $                   ; The Y location for drawing text.
             width: 0.0, $               ; The width of the text line. (Set when drawn.)
             INHERITS SelectableObject $
           }
;
 MESSAGES:

   TEXTLINE_CHANGED:   This message is sent whenever SetProperty method is called and the NOMESSAGE
                       keyword is NOT set.

 NOTES_AND_RESTRICTIONS:

       If the font field is set to 0 (Hershey fonts) when drawn in PostScript output,
       the font type is switched to 1 (Hardware fonts).

       Rotation of text can only occur when the ALIGNMENT of the test is "centered". If you
       try to rotate the text, the alignment is changed. Hardware fonts cannot be rotated on
       the display.

 MODIFICATION_HISTORY:

       Written by: David W. Fanning, 25 Jan 2004.

(See C:\temp\catalyst\source\graphics\textline__define.pro)