An IDLgrBuffer object is an in-memory, off-screen destination object. Object trees can be drawn to instances of the IDLgrBuffer object and the resulting image can be retrieved from the buffer using the Read() method. The off-screen representation avoids dithering artifacts by providing a full-resolution buffer for objects using either the RGB or Color Index color models.
The IDLgrBuffer:: Cleanup procedure method performs all cleanup on the object. IDLgrBuffer is described above.
NOTE: Cleanup methods are special lifecycle methods , and as such cannot be called outside the context of object destruction. This means that in most cases, you cannot call the Cleanup method directly. There is one exception to this rule: If you write your own subclass of this class, you can call the Cleanup method from within the Cleanup method of the subclass.
The IDLgrBuffer:: Draw procedure method draws the given picture to this graphics destination. IDLgrBuffer is described above.
The view (an instance of an IDLgrView object), viewgroup (an instance of an IDLgrViewgroup object) or scene (an instance of an IDLgrScene object) to be drawn.
Set this keyword equal to one to specify that this scene or view is the unchanging part of a drawing. Some destinations can make an instance from the current window contents without having to perform a complete redraw. If the view or scene to be drawn is identical to the previously drawn view or scene, this keyword can be set equal to 2 to hint the destination to create the instance from the current window contents if it can.
The IDLgrBuffer:: Erase procedure method erases this graphics destination. IDLgrBuffer is described above.
The IDLgrBuffer:: GetContiguousPixels function method returns an array of long integers whose length is equal to the number of colors available in the index color mode (that is, the value of the N_COLORS property).
The returned array marks contiguous pixels with the ranking of the range's size. This means that within the array, the elements in the largest available range are set to zero, the elements in the second-largest range are set to one, etc. Use this range to set an appropriate colormap for use with the SHADE_RANGE property of the IDLgrSurface and IDLgrPolygon object classes.
To get the largest contiguous range, you could use the following IDL command:
result = obj -> GetContiguousPixels()
A contiguous region in the colormap can be increasing or decreasing in values. The following would be considered contiguous:
IDLgrBuffer is described above.
The IDLgrBuffer:: GetProperty procedure method retrieves the value of a property or group of properties for the buffer. IDLgrBuffer is described above.
Any keyword to IDLgrBuffer::Init
Set this keyword to a named variable that will contain an anonymous structure containing the values of all of the retrievable properties associated with this object (except IMAGE_DATA and ZBUFFER_DATA).
Set this keyword to a named variable that will contain a byte array representing the image that is currently rendered within the buffer. If the buffer uses an RGB color model, the returned array will have dimensions (3, xdim , ydim ). If the window object uses an indexed color model, the returned array will have dimensions ( xdim , ydim ).
The IDLgrBuffer:: GetTextDimensions function method retrieves the dimensions of a text object that will be rendered in the buffer. The result is a 3-element floating-point vector [ xDim , yDim , zDim ] representing the dimensions of the text object, measured in data units. IDLgrBuffer is described above.
Set this keyword equal to a named variable that will contain an array of floating-point values (one for each string in the IDLgrText object). The values represent the distance to travel (parallel to the UPDIR vector) from the text baseline to reach the bottom of the lowest descender in the string. All values will be negative numbers, or zero. This keyword is valid only if TextObj is an IDLgrText object.
The IDLgrBuffer:: Init function method initializes the buffer object. IDLgrBuffer is described above.
NOTE: Init methods are special lifecycle methods , and as such cannot be called outside the context of object creation. This means that in most cases, you cannot call the Init method directly. There is one exception to this rule: If you write your own subclass of this class, you can call the Init method from within the Init method of the subclass.
Properties retrievable via IDLgrBuffer::GetProperty
Set this keyword to a two-element vector of the form [ width , height ] to specify the dimensions of the buffer in units specified by the UNITS property. The default is [640,480].
Set this keyword to an object reference of type IDLgrScene, IDLgrViewgroup, or IDLgrView. If this property is set to a valid object reference, calling the Draw method on the destination object with no arguments will cause the object reference associated with this property to be drawn. If this object is valid and the destination object is destroyed, this object reference will be destroyed as well. By default the GRAPHICS_TREE property is set equal to the null-object.
Set this keyword to the number of colors (between 2 and 256) to be used if COLOR_MODEL is set to Color Index.
Set this keyword to the object reference of a palette object (an instance of the IDLgrPalette object class) to specify the red, green, and blue values that are to be loaded into the buffer's color lookup table.
Set this keyword to an integer indicating the rendering quality at which graphics are to be drawn to the buffer. Valid values are:
Set this keyword to a two-element vector of the form [ xres , yres ] specifying the device resolution in centimeters per pixel. The default value is: [0.0352778, 0.0352778] (72 DPI).
Set this keyword to indicate the units of measure for the DIMENSIONS property. Valid values are:
Set this keyword to a value of any type. You can use this "user value" to contain any information you wish. Remember that if you set the user value equal to a pointer or object reference, you should destroy the pointer or object reference explicitly when destroying the object it is a user value of.
The IDLgrBuffer:: Pickdata function method maps a point in the two-dimensional device space of the buffer to a point in the three-dimensional data space of an object tree. The resulting 3D data space coordinates are returned in a user-specified variable. The Pickdata function returns one if the specified location in the buffer's device space "hits" a graphic object, or zero otherwise. IDLgrBuffer is described above.
The object reference of a model or atomic graphic object from which the data space coordinates are being requested.
A two-element vector [ x , y ] specifying the location in the buffer's device space of the point to pick data from.
A named variable that will contain the three-dimensional data space coordinates of the picked point. Note that the value returned in this variable is a location, not a data value.
NOTE: If the atomic graphic object specified as the target has been transformed using either the LOCATION or DIMENSIONS properties (this is only possible with IDLgrAxis, IDLgrImage, and IDLgrText objects), these transformations will not be included in the data coordinates returned by the Pickdata function. This means that you may need to re-apply the transformation accomplished by specifying LOCATION or DIMENSIONS once you have retrieved the data coordinates with Pickdata. This situation does not occur if you transform the axis, text, or image object using the [XYZ]COORD_CONV properties.
The IDLgrWindow:: Read function method reads an image from a buffer. The returned value is an instance of the IDLgrImage object class. IDLgrBuffer is described above.
The IDLgrBuffer:: Select function method returns a list of objects selected at a specified location. If no objects are selected, the Select function returns -1. IDLgrBuffer is described above.
The view, viewgroup, or scene (an instance of the IDLgrView , IDLgrViewgroup, or IDLgrScene class) whose children are among the candidates for selection.
If the first argument is a scene or viewgroup, then the returned object list will contain one or more views. If the first argument is a view, the list will contain atomic graphic objects (or model objects which have their SELECT_TARGET property set). Objects are returned in order, according to their distance from the viewer. The closer an object is to the viewer, the lower its index in the returned object list. If multiple objects are at the same distance from the viewer (views in a scene or 2D geometry), the last object drawn will appear at a lower index in the list.
Set this keyword to a two-element array [ w , h ] to specify that the selection box will have a width w and a height h , and will be centered about the coordinates [ x , y ] specified in the XY argument. The box occupies the rectangle defined by:
(x-(w/2), y-(h/2)) - (x+(w/1), y+(h/2))
Any object which intersects this box is considered to be selected. By default, the selection box is 3 pixels by 3 pixels.
The IDLgrBuffer:: SetProperty procedure method sets the value of a property or group of properties for the buffer. IDLgrBuffer is described above.
Any keyword to IDLgrBuffer::Init