LightWrap++
AC++wrapperfortheLightWave3DSDK
texture.h
Go to the documentation of this file.
1 
7 #ifndef LWPP_TEXTURE_H
8 #define LWPP_TEXTURE_H
9 
10 #include <lwpp/global.h>
11 #include <lwpp/vector3d.h>
12 #include <lwtxtr.h>
13 
14 namespace lwpp
15 {
16  class TextureLayer;
18 
23  class Texture : protected GlobalBase<LWTextureFuncs>
24  {
25  private:
26  LWTextureID txtr_id;
27  public:
29  Texture( LWTextureID _txtr_id = 0) : txtr_id(_txtr_id) {;}
30 
32  LWTextureID getID() const { return txtr_id; }
33 
34  // CONTEXTS
35 
62  LWTxtrContextID contextCreate (LWTxtrParamFuncs lwtxtparamfunc) { return globPtr->contextCreate (lwtxtparamfunc); }
64 
69  void contextDestroy (LWTxtrContextID lwtxtrcontextid){ globPtr->contextDestroy (lwtxtrcontextid); }
71 
76  void contextAddParam (LWTxtrContextID lwtxtrcontextid, LWTxtrParamDesc pdesc) { globPtr->contextAddParam (lwtxtrcontextid, pdesc); }
77 
78  // HANDLERS CALLS
80 
88  void create (int returntype, const char *name, LWTxtrContextID lwtxtrcontextid = 0, void *userdata = 0)
89  {
90  txtr_id = globPtr->create (returntype, name, lwtxtrcontextid, &userdata);
91  }
92 
94  void destroy ( ){ globPtr->destroy(txtr_id);}
95 
97 
101  void copy(LWTextureID to, LWTextureID from){ globPtr->copy(to, from);}
103 
107  void newtime (LWTime time, LWFrame frame){ globPtr->newtime(txtr_id, time, frame);}
108 
110  void cleanup ( ){ globPtr->cleanup(txtr_id);}
111 
113  void load( const LWLoadState *loadstate ) { globPtr->load(txtr_id, loadstate);}
114 
116  void save( const LWSaveState *savestate ) { globPtr->save(txtr_id, savestate);}
117 
119 
124  double evaluate (LWMicropolID lwmp, double *value) { return globPtr->evaluate(txtr_id, lwmp, value);}
125 
126  // TEXTURE DATA
127 
129 
132  void setEnvGroup (LWChanGroupID txtr_group_id);
133 
138 
140 
143  TextureLayer layerAdd (int type);
149 
153 
154  LWTLayerID layerAddID (int type) { return globPtr->layerAdd (txtr_id, type); }
155 
157  LWTLayerID firstLayerID( ) { return globPtr->firstLayer(txtr_id); }
158 
160  LWTLayerID lastLayerID( ) { return globPtr->lastLayer(txtr_id); }
161 
163 
166  LWTLayerID nextLayerID(LWTLayerID lid) { return globPtr->nextLayer(txtr_id, lid); }
167 
168  // @}
169 
171  const char * name() { return globPtr->name(txtr_id); }
172 
174 
177  int getDataType () { return globPtr->type(txtr_id); }
178 
180  LWTxtrContextID context (void) { return globPtr->context(txtr_id); }
181 
182  };
183 
184  // LAYERS
185 
191  class TextureLayer : public GlobalBase<LWTextureFuncs>
192  {
193  private:
194  LWTLayerID id;
195  public:
196  TextureLayer(LWTLayerID _id = 0) : id(_id) {;}
197 
198  LWTLayerID getID() const {return id;}
199  bool isValid () const {return id != 0;}
200 
202  LWTextureID getTextureID() { return globPtr->texture(id); }
203 
205  int getType() { return globPtr->layerType(id); }
206 
208 
211  void setType(int type) { globPtr->layerSetType(id, type); }
212 
217 
219 
223  template <typename T>
224  int setParam (int tag, T &data) { return globPtr->setParam(id, tag, &data); }
225 
227 
231  int setParam (int tag, int data) { return globPtr->setParam(id, tag, &data); }
232 
234 
238  int setParam (int tag, double data) { return globPtr->setParam(id, tag, &data); }
239 
241 
245  int setParam (int tag, double data[]) { return globPtr->setParam(id, tag, data); }
246 
248 
251  int setPosition (double position[3]) { return setParam(TXTAG_POSI, position); }
252 
254 
257  int setRotation (double rotation[3]) { return setParam(TXTAG_ROTA, rotation); }
258 
260 
263  int setSize (double size[3]) { return setParam(TXTAG_SIZE, size); }
264 
266 
269  int setFalloff (double falloff[3]) { return setParam(TXTAG_FALL, falloff); }
270 
272 
277  int setProjection (int projection) { return setParam(TXTAG_PROJ, projection); }
278 
280 
284  int setAxis (int axis) { return setParam(TXTAG_AXIS, axis); }
285 
287 
290  int setWidthWrap(double widthwrap) { return setParam(TXTAG_WWRP, widthwrap); }
291 
293 
296  int setHeightWrap (double heightwrap) { return setParam(TXTAG_WWRP, heightwrap); }
297 
299 
303  int setCoordSystem (int coordsys) { return setParam(TXTAG_COORD, coordsys); }
304 
306 
309  int setImageID (LWImageID imageID) { return setParam(TXTAG_IMAGE, imageID); }
310 
312 
316  int setVMapID (LWID vmapID) { return setParam(TXTAG_VMAP, vmapID); }
317 
319 
322  int setReferenceItem (LWItemID refObjID) { return setParam(TXTAG_ROBJ, refObjID); }
323 
325 
328  int setLayerOpacity (double layerOpacity) { return setParam(TXTAG_OPAC, layerOpacity); }
329 
331 
334  int setAntialiasing (bool antialiasing)
335  {
336  return setParam(TXTAG_AA, antialiasing ? 1 : 0);
337  }
338 
340 
345  int setAAThreshold (double aaThreshold) { return getParam(TXTAG_AAVAL, &aaThreshold); }
346 
348 
351  int setPixelBlending (bool pixelblending)
352  {
353  return setParam(TXTAG_PIXBLEND, pixelblending ? 1: 0);
354  }
355 
357 
361  int setWidthWrapBehavior(int widthwrap) { return setParam(TXTAG_WREPEAT, widthwrap); }
362 
364 
369  int setHeightWrapBehavior (int heightwrap) { return setParam(TXTAG_HREPEAT, heightwrap); }
370 
372  bool activate( ) {
373  return (setParam(TXTAG_ACTIVE, 1) == 1) ? true: false;
374  }
375 
377  bool deActivate( ) {
378  return (setParam(TXTAG_ACTIVE, 0) == 1) ? true: false;
379  }
380 
382  bool invert( ) {
383  return (setParam(TXTAG_INVERT, 1) == 1) ? true: false;
384  }
385 
387 
391  int setBlendingMode (int blendmode) { return getParam(TXTAG_BLEND, &blendmode); }
392 
394 
397  int setInputParameterIndex (int inputparameterindex) { return setParam(TXTAG_INPUT , inputparameterindex); }
398 
400 
403  int setAuvName (char *auvName) { return setParam(TXTAG_AUVN , auvName); }
404 
406 
409  int setAuvUser (char *auvUser) { return setParam(TXTAG_AUVU , auvUser); }
410 
412 
416  int setAuvArrayByteCount (int *auvArrByteCount) { return setParam(TXTAG_AUVC , auvArrByteCount); }
417 
419 
422  int setAuvPluginOpts (char *auvplugopts) { return setParam(TXTAG_AUVO , auvplugopts); }
423 
425 
430 
432 
436  int getParam (int tag, void *data) { return globPtr->getParam(id, tag, data); }
437 
438  template <typename T>
439  T getParam (int tag) {
440  T d;
441  getParam(tag, &d);
442  return d;
443  }
444 
446 
449  int getPosition (double position[3]) { return getParam(TXTAG_POSI, position); }
450 
452 
456  int getRotation (double rotation[3]) { return getParam(TXTAG_ROTA, rotation); }
458 
462  int getSize (double size[3]) { return getParam(TXTAG_SIZE, size); }
464 
467  int getFalloff (double falloff[3]) { return getParam(TXTAG_FALL, falloff); }
468 
470 
474  int getProjection (int *projection) { return getParam(TXTAG_PROJ, projection); }
475 
477 
480  int getAxis (int *axis) { return getParam(TXTAG_AXIS, axis); }
481 
483  double getWidthWrap() { return getParam<double>(TXTAG_WWRP); }
484 
486  double getHeightWrap() { return getParam<double>(TXTAG_HWRP); }
487 
489 
493  int getCoordSystem (int *coordsys) { return getParam(TXTAG_COORD, coordsys); }
494 
496 
499  int getImageID (LWImageID *imageID) { return getParam(TXTAG_IMAGE, imageID); }
500 
502 
506  int getVMapID (LWID *vmapID) { return getParam(TXTAG_VMAP, &vmapID); }
507 
509 
512  int getReferenceItem (LWItemID *refObjID) { return getParam(TXTAG_ROBJ, refObjID); }
513 
515 
519  int getLayerOpacity (double *layerOpacity) { return getParam(TXTAG_OPAC, layerOpacity); }
521 
524  bool isAntialiased ( void )
525  {
526  int *isAA;
527  getParam(TXTAG_AA, isAA);
528  return (isAA != 0);
529  }
530 
532 
537  int getAAThreshold (double *aaThreshold) { return getParam(TXTAG_AAVAL, aaThreshold); }
538 
541  {
542  int hasPB;
543  getParam(TXTAG_PIXBLEND, &hasPB);
544  return (hasPB != 0);
545  }
546 
548 
552  int getWidthWrapBehavior(int *widthwrap) { return getParam(TXTAG_WREPEAT, widthwrap); }
553 
555 
560  int getHeightWrapBehavior (int *heightwrap) { return getParam(TXTAG_HREPEAT, heightwrap); }
562  bool isActive( )
563  {
564  int isAct;
565  getParam(TXTAG_ACTIVE, &isAct);
566  return ( isAct != 0);
567  }
568 
570  bool isInverted( )
571  {
572  int isInv;
573  getParam(TXTAG_INVERT, &isInv);
574  return (isInv != 0);
575  }
576 
578 
582  int blendingmode (int *blendmode) { return getParam(TXTAG_BLEND, blendmode); }
583 
585 
588  int inputParameterIndex (int *inputparameterindex) { return getParam(TXTAG_INPUT , inputparameterindex); }
589 
591 
594  int auvName (char *auvName) { return getParam(TXTAG_AUVN , auvName); }
595 
597 
600  int auvUser (char *auvUser) { return getParam(TXTAG_AUVU , auvUser); }
601 
603 
606  int auvArrayByteCount (int *auvArrByteCount) { return getParam(TXTAG_AUVC , auvArrByteCount); }
607 
609 
612  int auvPluginOpts (char *auvplugopts) { return getParam(TXTAG_AUVO , auvplugopts); }
613 
615 
633  void evaluateUV( int wAxis, int oAxis, double oPos[3], double wPos[3], double uv[2])
634  {
635  globPtr->evaluateUV( id, wAxis, oAxis, oPos, wPos, uv);
636  }
637 
638  // @}
639 
641 
644  double noise( double pos[3] )
645  {
646  return globPtr->noise(pos);
647  }
648 
650  LWChanGroupID getChannelGroup( void ) { return globPtr->layerEnvGroup(id); }
651 
652  bool nextLayer()
653  {
654  id = globPtr->nextLayer(getTextureID(), id);
655  return isValid();
656  }
657  };
658 
659 } // namespace lwpp
660 
661 #endif // LWPP_TEXTURE_H