octave: Introduction to Graphics Structures

 
 15.3.1 Introduction to Graphics Structures
 ------------------------------------------
 
 The graphics functions use pointers, which are of class graphics_handle,
 in order to address the data structures which control visual display.  A
 graphics handle may point to any one of a number of different base
 object types and these objects are the graphics data structures
 themselves.  The primitive graphic object types are: ‘figure’, ‘axes’,
 ‘line’, ‘text’, ‘patch’, ‘surface’, ‘text’, ‘image’, and ‘light’.
 
    Each of these objects has a function by the same name, and, each of
 these functions returns a graphics handle pointing to an object of the
 corresponding type.  In addition there are several functions which
 operate on properties of the graphics objects and which also return
 handles: the functions ‘plot’ and ‘plot3’ return a handle pointing to an
 object of type line, the function ‘subplot’ returns a handle pointing to
 an object of type axes, the function ‘fill’ returns a handle pointing to
 an object of type patch, the functions ‘area’, ‘bar’, ‘barh’, ‘contour’,
 ‘contourf’, ‘contour3’, ‘surf’, ‘mesh’, ‘surfc’, ‘meshc’, ‘errorbar’,
 ‘quiver’, ‘quiver3’, ‘scatter’, ‘scatter3’, ‘stair’, ‘stem’, ‘stem3’
 each return a handle to a complex data structure as documented in See
 Data Sources XREFdatasources.
 
    The graphics objects are arranged in a hierarchy:
 
    1.  The root is at 0.  In other words, ‘get (0)’ returns the
 properties of the root object.
 
    2.  Below the root are ‘figure’ objects.
 
    3.  Below the ‘figure’ objects are ‘axes’ objects.
 
    4.  Below the ‘axes’ objects are ‘line’, ‘text’, ‘patch’, ‘surface’,
 ‘image’, and ‘light’ objects.
 
    Graphics handles may be distinguished from function handles (See
 Function Handles) by means of the function ‘ishandle’.  ‘ishandle’
 returns true if its argument is a handle of a graphics object.  In
 addition, a figure or axes object may be tested using ‘isfigure’ or
 ‘isaxes’ respectively.  The test functions return true only if the
 argument is both a handle and of the correct type (figure or axes).
 
    The ‘whos’ function can be used to show the object type of each
 currently defined graphics handle.  (Note: this is not true today, but
 it is, I hope, considered an error in whos.  It may be better to have
 whos just show graphics_handle as the class, and provide a new function
 which, given a graphics handle, returns its object type.  This could
 generalize the ishandle() functions and, in fact, replace them.)
 
    The ‘get’ and ‘set’ commands are used to obtain and set the values of
 properties of graphics objects.  In addition, the ‘get’ command may be
 used to obtain property names.
 
    For example, the property "type" of the graphics object pointed to by
 the graphics handle h may be displayed by:
 
      get (h, "type")
 
    The properties and their current values are returned by ‘get (h)’
 where h is a handle of a graphics object.  If only the names of the
 allowed properties are wanted they may be displayed by: ‘get (h, "")’.
 
    Thus, for example:
 
      h = figure ();
      get (h, "type")
      ans = figure
      get (h, "");
      error: get: ambiguous figure property name ; possible matches:
 
      __enhanced__           hittest                resize
      __graphics_toolkit__   integerhandle          resizefcn
      __guidata__            interruptible          selected
      __modified__           inverthardcopy         selectionhighlight
      __myhandle__           keypressfcn            selectiontype
      __plot_stream__        keyreleasefcn          tag
      alphamap               menubar                toolbar
      beingdeleted           mincolormap            type
      busyaction             name                   uicontextmenu
      buttondownfcn          nextplot               units
      children               numbertitle            userdata
      clipping               outerposition          visible
      closerequestfcn        paperorientation       windowbuttondownfcn
      color                  paperposition          windowbuttonmotionfcn
      colormap               paperpositionmode      windowbuttonupfcn
      createfcn              papersize              windowkeypressfcn
      currentaxes            papertype              windowkeyreleasefcn
      currentcharacter       paperunits             windowscrollwheelfcn
      currentobject          parent                 windowstyle
      currentpoint           pointer                wvisual
      deletefcn              pointershapecdata      wvisualmode
      dockcontrols           pointershapehotspot    xdisplay
      doublebuffer           position               xvisual
      filename               renderer               xvisualmode
      handlevisibility       renderermode
 
    The root figure has index 0.  Its properties may be displayed by:
 ‘get (0, "")’.
 
    The uses of ‘get’ and ‘set’ are further explained in Seeget
 XREFget, Seeset XREFset.
 
  -- : RES = isprop (OBJ, "PROP")
      Return true if PROP is a property of the object OBJ.
 
      OBJ may also be an array of objects in which case RES will be a
      logical array indicating whether each handle has the property PROP.
 
      For plotting, OBJ is a handle to a graphics object.  Otherwise, OBJ
      should be an instance of a class.
 
DONTPRINTYET       See also: Seeget XREFget, Seeset XREFset, *noteismethod:
DONTPRINTYET       See also: Seeget XREFget, Seeset XREFset, Seeismethod

      XREFismethod, Seeisobject XREFisobject.