Serious-Engine/Sources/LWSkaExporter/SDK/lwlaytool.h
2016-03-11 15:57:17 +02:00

84 lines
3.0 KiB
C

/*
* LWSDK Header File
* Copyright 2001, NewTek, Inc.
*
* LWLAYTOOL.H -- Layout Interactive Tools
*/
#ifndef LWSDK_LAYTOOL_H
#define LWSDK_LAYTOOL_H
#include <lwtool.h>
#include <lwcustobj.h>
#define LWLAYOUTTOOL_CLASS "LayoutTool"
#define LWLAYOUTTOOL_VERSION 1
/*
* A Layout tool is a LightWave viewport tool whose draw() function
* takes a LWCustomObjAccess instead of a LWWireDrawAccess structure.
* It has the following handler functions.
*
* done destroy the instance when the user discards the tool.
*
* draw display a wireframe representation of the tool in a 3D
* viewport. Typically this draws the handles.
*
* help return a text string to be displayed as a help tip for
* this tool.
*
* dirty return flag bit if either the wireframe or help string
* need to be refreshed.
*
* count return the number of handles. If zero, then 'start' is
* used to set the initial handle point.
*
* handle return the 3D location and priority of handle 'i', or zero
* if the handle is currently invalid.
*
* start take an initial mouse-down position and return the index
* of the handle that should be dragged.
*
* adjust 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).
*
* down process a mouse-down event. If this function returns
* false, handle processing will be done instead of raw
* mouse event processing.
*
* move process a mouse-move event. This is only called if the
* down function returned true.
*
* up process a mouse-up event. This is only called if the down
* function returned true.
*
* event process a general event: DROP, RESET or ACTIVATE
*
* panel create and return a view-type xPanel for the tool instance.
*/
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;
typedef struct st_LWLayoutTool {
LWInstance instance;
LWLayoutToolFuncs *tool;
} LWLayoutTool;
#endif