All Object Graphics applications require at least two basic building blocks. These include:
;Create a destination object, in this case a window: oWindow = OBJ_NEW('IDLgrWindow') ;Create a viewport that fills the entire window: oView = OBJ_NEW('IDLgrView') ;Draw the view within the window: OWindow->Draw, oView
By themselves, a window and a single view are not particularly enlightening, but you will find that these two types of objects are utilized by all Object Graphics applications. To change an attribute of an object, you do not have to create a new instance of that object. Instead, use the SetProperty method on the original object to modify the value of the attribute.
For example, to change the color of the view to gray:
;Set the color property of the view: OView->SetProperty, COLOR=[60,60,60] ;Redraw: OWindow->Draw, oView
If more than one view is to be drawn to the destination, then an additional object is required:
; Create a scene and add our original view to it: OScene = OBJ_NEW('IDLgrScene') oScene->Add, oView ; Modify our original view so that it covers ; the upper left quadrant of the window. OView->SetProperty, LOCATION=[0.0,0.5], DIMENSIONS=[0.5,0.5], $ UNITS=3 ; Create and add a second red view that covers ; the right half of the window. OView2 = OBJ_NEW('IDLgrView', LOCATION=[0.5,0.0], $ DIMENSIONS=[0.5,1.0], UNITS=3,COLOR=[255,0,0]) OScene->Add, oView2 ; Now draw the scene, rather than the view, to the window: OWindow->Draw, oScene
In the examples so far, the views have been empty canvases. For data visualization applications, these views will need some graphical content. To draw visual representations within the views, two additional types of objects are required:
For example, to include a text label within a view:
; Create a model and add it to the original view: oModel = OBJ_NEW('IDLgrModel') oView->Add, oModel ; Create a text object and add it to the model: oText = OBJ_NEW('IDLgrText','Hello World',ALIGNMENT=0.5) oModel->Add, oText ; Redraw the scene: OWindow->Draw, oScene
Notice that the scene, views, model, and text are all combined together into a self-contained hierarchy. It is the overall hierarchy that is drawn to the destination object.
The transformation associated with the model can be modified to impact the text it contains. For example:
; Rotate by 90 degrees about the Z-axis: oModel->Rotate, [0,0,1], 90 ; Redraw: OWindow->Draw, oScene
When the objects are no longer required, they need to be destroyed. Destination objects must be destroyed separately, but the graphic hierarchies can be destroyed in full by simply destroying the root of the hierarchy. For example:
OBJ_DESTROY, oWindow OBJ_DESTROY, oScene
In this example, the destruction of the scene will cause the destruction of all of its children (including the views, model, and text).