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.
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
NAME:
CONTRASTBOX::RESTOREDISPLAY
PURPOSE:
This method ...
SYNTAX:
theObject -> RestoreDisplay
ARGUMENTS:
None.
KEYWORDS:
None.
(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)
NAME:
CONTRASTBOX::SETDISPLAY
PURPOSE:
This method ...
SYNTAX:
theObject -> SetDisplay
ARGUMENTS:
None.
KEYWORDS:
None.
(See C:\temp\catalyst\source\graphics\contrastbox__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
NAME:
IMGAXES::DRAW
PURPOSE:
Draw the axes.
SYNTAX:
theAxes -> Draw
ARGUMENTS:
None.
KEYWORDS:
None.
(See C:\temp\catalyst\source\graphics\imgaxes__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
NAME:
MOVEABLEBOX::RESTOREDISPLAY
PURPOSE:
This method ...
SYNTAX:
theObject -> RestoreDisplay
ARGUMENTS:
None.
KEYWORDS:
None.
(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)
NAME:
MOVEABLEBOX::SETDISPLAY
PURPOSE:
This method ...
SYNTAX:
theObject -> SetDisplay
ARGUMENTS:
None.
KEYWORDS:
None.
(See C:\temp\catalyst\source\graphics\moveablebox__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
NAME:
POLYGON_ROI::RESTOREDISPLAY
PURPOSE:
This method ...
SYNTAX:
theObject -> RestoreDisplay
ARGUMENTS:
None.
KEYWORDS:
None.
(See C:\temp\catalyst\source\graphics\polygon_roi__define.pro)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)