1 #ifndef LWPP_GIZMO_HANDLER_H
2 #define LWPP_GIZMO_HANDLER_H
20 virtual const char *
gzHelp ( LWToolEvent *){
return "";}
22 virtual int gzCount (LWToolEvent *){
return 0;}
23 virtual int gzHandle (LWToolEvent *,
int i, LWDVector pos){
return 0;}
24 virtual int gzStart (LWToolEvent *){
return 0;}
25 virtual int gzAdjust ( LWToolEvent *,
int i){
return 0;}
26 virtual bool gzDown ( LWToolEvent *){
return false;}
27 virtual void gzMove ( LWToolEvent *){;}
28 virtual void gzUp ( LWToolEvent *){;}
32 virtual const LWItemID*
gzPickItems (
const LWItemID* drawitems){
return drawitems;}
39 template <
class T,
int maxVersion = 2,
int minVersion = 2>
48 static int Activate (
int version, GlobalFunc *global, LWInstance inst,
void *serverData)
50 if ( version > maxVersion )
return AFUNC_BADVERSION;
51 if ( version < minVersion )
return AFUNC_BADVERSION;
57 LWGizmo *plugin =
static_cast<LWGizmo *
>(inst);
59 plugin->pickItems = GizmoAdaptor::PickItems;
62 plugin->gizmo->done = GizmoAdaptor::Done;
63 plugin->gizmo->draw = GizmoAdaptor::Draw;
64 plugin->gizmo->help = GizmoAdaptor::Help;
65 plugin->gizmo->dirty = GizmoAdaptor::Dirty;
66 plugin->gizmo->count = GizmoAdaptor::Count;
67 plugin->gizmo->handle = GizmoAdaptor::Handle;
68 plugin->gizmo->start = GizmoAdaptor::Start;
69 plugin->gizmo->adjust = GizmoAdaptor::Adjust;
70 plugin->gizmo->down = GizmoAdaptor::Down;
71 plugin->gizmo->move = GizmoAdaptor::Move;
72 plugin->gizmo->up = GizmoAdaptor::Up;
73 plugin->gizmo->event = GizmoAdaptor::Event;
74 plugin->gizmo->panel = GizmoAdaptor::Panel;
78 catch (std::exception &e)
86 static const LWItemID* PickItems (LWInstance instance,
const LWItemID* drawitems)
90 T *plugin = (T *) instance;
91 return plugin->gzPickItems(drawitems);
93 catch (std::exception &e)
100 static void Done (LWInstance instance)
104 T *plugin = (T *) instance;
107 catch (std::exception &e)
113 static void Draw (LWInstance instance, LWCustomObjAccess *coa)
117 T *plugin = (T *) instance;
120 catch (std::exception &e)
126 static const char * Help (LWInstance instance, LWToolEvent *lte)
130 T *plugin = (T *) instance;
131 return plugin->gzHelp(lte);
133 catch (std::exception &e)
140 static int Dirty(LWInstance instance)
144 T *plugin = (T *) instance;
145 return plugin->gzDirty() ? 1 : 0;
147 catch (std::exception &e)
154 static int Count (LWInstance instance, LWToolEvent *lte)
158 T *plugin = (T *) instance;
159 return plugin->gzCount(lte);
161 catch (std::exception &e)
168 static int Handle (LWInstance instance, LWToolEvent *lte,
int i, LWDVector pos)
172 T *plugin = (T *) instance;
173 return plugin->gzHandle(lte, i, pos);
175 catch (std::exception &e)
182 static int Start (LWInstance instance, LWToolEvent *lte)
186 T *plugin = (T *) instance;
187 return plugin->gzStart(lte);
189 catch (std::exception &e)
196 static int Adjust (LWInstance instance, LWToolEvent *lte,
int i)
200 T *plugin = (T *) instance;
201 return plugin->gzAdjust(lte, i);
203 catch (std::exception &e)
210 static int Down (LWInstance instance, LWToolEvent *lte)
214 T *plugin = (T *) instance;
215 return plugin->gzDown(lte) ? 1 : 0;
217 catch (std::exception &e)
224 static void Move (LWInstance instance, LWToolEvent *lte)
228 T *plugin = (T *) instance;
231 catch (std::exception &e)
237 static void Up (LWInstance instance, LWToolEvent *lte)
241 T *plugin = (T *) instance;
244 catch (std::exception &e)
250 static void Event (LWInstance instance,
int code)
254 T *plugin = (T *) instance;
255 plugin->gzEvent(code);
257 catch (std::exception &e)
263 static LWXPanelID Panel (LWInstance instance)
267 T *plugin = (T *) instance;
268 return plugin->gzPanel();
270 catch (std::exception &e)
287 virtual const LWItemID*
gzPickItems (
const LWItemID* drawitems){
return drawitems;}
294 template <
class T,
int maxVersion = 2,
int minVersion = 2>
303 static int Activate (
int version, GlobalFunc *global, LWInstance inst,
void *serverData)
305 if ( version > maxVersion )
return AFUNC_BADVERSION;
306 if ( version < minVersion )
return AFUNC_BADVERSION;
312 LWGizmo *plugin =
static_cast<LWGizmo *
>(inst);
314 plugin->pickItems = GizmoDrawAdaptor::PickItems;
317 plugin->gizmo->done = 0;
318 plugin->gizmo->draw = GizmoDrawAdaptor::Draw;
319 plugin->gizmo->help = 0;
320 plugin->gizmo->dirty = 0;
321 plugin->gizmo->count = 0;
322 plugin->gizmo->handle = 0;
323 plugin->gizmo->start = 0;
324 plugin->gizmo->adjust = 0;
325 plugin->gizmo->down = 0;
326 plugin->gizmo->move = 0;
327 plugin->gizmo->up = 0;
328 plugin->gizmo->event = 0;
329 plugin->gizmo->panel = 0;
333 catch (std::exception &e)
341 static const LWItemID* PickItems (LWInstance instance,
const LWItemID* drawitems)
345 T *plugin = (T *) instance;
346 return plugin->gzPickItems(drawitems);
348 catch (std::exception &e)
355 static void Draw (LWInstance instance, LWCustomObjAccess *coa)
359 T *plugin = (T *) instance;
362 catch (std::exception &e)
374 #endif // version check
376 #endif // LWPP_GIZMO_HANDLER_H