LayoutGeneric MasterHandler Classes Table of Contents


Availability  Future
Component  Layout
Header  lwlaytool.h

Layout tool plug-ins are just custom Layout tools. To the user, they behave like Layout's built-in tools (the tools activated by the Move, Rotate and Scale buttons, for example).

Support for this class isn't complete.

Activation Function

   XCALL_( int ) MyLayoutTool( int version, GlobalFunc *global,
      LWLayoutTool *local, void *serverData );

The local argument to a Layout tool's activation function is an LWLayoutTool.

   typedef struct st_LWLayoutTool {
      LWInstance         instance;
      LWLayoutToolFuncs *tool;
   } LWLayoutTool;

The activation function fills in the instance field and the callbacks of the tool field and returns. As with handlers, the remaining interaction between Layout and the plug-in takes place through the callbacks.

A pointer to your user data. This will be passed to each of the tool callbacks.

Points to a structure containing function pointers for your callbacks, described below.

Tool Functions

The tool field of the LWLayoutTool is a pointer to an LWLayoutToolFuncs.

   typedef struct st_LWLayoutToolFuncs {
      void         (*done)   (LWInstance);
      void         (*draw)   (LWInstance, LWCustomObjAccess *);
      const char * (*help)   (LWInstance, LWToolEvent *);
      int          (*dirty)  (LWInstance);
      int          (*count)  (LWInstance, LWToolEvent *);
      int          (*handle) (LWInstance, LWToolEvent *, int i,
                                LWDVector pos);
      int          (*start)  (LWInstance, LWToolEvent *);
      int          (*adjust) (LWInstance, LWToolEvent *, int i);
      int          (*down)   (LWInstance, LWToolEvent *);
      void         (*move)   (LWInstance, LWToolEvent *);
      void         (*up)     (LWInstance, LWToolEvent *);
      void         (*event)  (LWInstance, int code);
      LWXPanelID   (*panel)  (LWInstance);
   } LWLayoutToolFuncs;
done( inst )
Destroy the instance. Called when the user discards the tool.

draw( inst, custobj_access )
Display a wireframe representation of the tool in a 3D viewport. Typically this draws the handles.

helptext = help( inst, event )
Returns a text string to be displayed as a help tip for this tool.

dirty = dirty( inst )
Returns flag bit if either the wireframe or help string need to be refreshed.

nhandles = count( inst, event )
Returns the number of handles. If zero, then start is used to set the initial handle point.

priority = handle( inst, event, handle, pos )
Returns the 3D location and priority of the handle, or zero if the handle is currently invalid.

handle = start( inst, event )
Take an initial mouse-down position and return the index of the handle that should be dragged.

handle = adjust( inst, event, handle )
Drag the given handle to a new location and return the index of the handle that should continue being dragged (often the same as the input).

rawmouse = down( inst, event )
Process a mouse-down event. If this function returns false, handle processing will be done instead of raw mouse event processing.

move( inst, event )
Process a mouse-move event. This is only called if the down function returned true.

up( inst, event )
Process a mouse-up event. This is only called if the down function returned true.

event( inst, code )
Process a general event: DROP, RESET or ACTIVATE

panel = panel( inst )
Create and return a view-type xPanel for the tool instance. Use of this panel is currently not implemented.