### LayoutTool 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. `instance` A pointer to your user data. This will be passed to each of the tool callbacks. `tool` 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. .