1#ifndef COIN_SOMULTITEXTURECOORDINATEELEMENT_H
2#define COIN_SOMULTITEXTURECOORDINATEELEMENT_H
36#include <Inventor/elements/SoElement.h>
37#include <Inventor/elements/SoSubElement.h>
38#include <Inventor/SbVec2f.h>
39#include <Inventor/SbVec3f.h>
40#include <Inventor/SbVec4f.h>
42typedef const SbVec4f & SoTextureCoordinateFunctionCB(
void * userdata,
46class SoMultiTextureCoordinateElementP;
67 virtual void init(SoState * state);
69 static void setDefault(SoState *
const state,
SoNode *
const node,
const int unit = 0);
72 SoTextureCoordinateFunctionCB *
const func,
73 void *
const userdata);
75 static void set2(SoState *
const state,
SoNode *
const node,
77 const int32_t numCoords,
const SbVec2f *
const coords);
78 static void set3(SoState *
const state,
SoNode *
const node,
80 const int32_t numCoords,
const SbVec3f *
const coords);
81 static void set4(SoState *
const state,
SoNode *
const node,
83 const int32_t numCoords,
const SbVec4f *
const coords);
85 static CoordType
getType(SoState *
const state,
const int unit = 0);
86 virtual CoordType
getType(
const int unit = 0)
const;
94 int32_t
getNum(
const int unit = 0)
const;
95 SbBool
is2D(
const int unit = 0)
const;
98 const SbVec2f &
get2(
const int unit,
const int index)
const;
99 const SbVec3f &
get3(
const int unit,
const int index)
const;
100 const SbVec4f &
get4(
const int unit,
const int index)
const;
109 UnitData(
const UnitData & org);
113 SoTextureCoordinateFunctionCB * funcCB;
122 virtual void push(SoState * state);
128 const SbVec3f & normal)
const {
129 return this->get(0, point, normal);
132 static void setFunction(
SoState *
const state,
134 SoTextureCoordinateFunctionCB *
const func,
135 void *
const userdata) {
136 setFunction(state, node, 0, func, userdata);
139 static void set2(SoState *
const state, SoNode *
const node,
140 const int32_t numCoords,
const SbVec2f *
const coords) {
141 set2(state, node, 0, numCoords, coords);
143 static void set3(SoState *
const state, SoNode *
const node,
144 const int32_t numCoords,
const SbVec3f *
const coords) {
145 set3(state, node, 0, numCoords, coords);
147 static void set4(SoState *
const state, SoNode *
const node,
148 const int32_t numCoords,
const SbVec4f *
const coords) {
149 set4(state, node, 0, numCoords, coords);
151 const SbVec2f & get2(
const int index)
const {
152 return this->get2(0, index);
154 const SbVec3f & get3(
const int index)
const {
155 return this->get3(0, index);
157 const SbVec4f & get4(
const int index)
const {
158 return this->get4(0, index);
163 int getMaxUnits()
const;
164 UnitData & getUnitData(
const int unit);
165 const UnitData & getUnitData(
const int unit)
const;
171 SoMultiTextureCoordinateElementP * pimpl;
The SbVec2f class is a 2 dimensional vector with floating point coordinates.
Definition SbVec2f.h:49
The SbVec3f class is a 3 dimensional vector with floating point coordinates.
Definition SbVec3f.h:51
The SbVec4f class is a 4 dimensional vector with floating point coordinates.
Definition SbVec4f.h:49
SoElement(void)
Definition SoElement.cpp:534
virtual SbBool matches(const SoElement *element) const =0
Definition SoElement.cpp:609
static void initClass(void)
Definition SoElement.cpp:507
virtual SoElement * copyMatchInfo(void) const =0
virtual void init(SoState *state)
Definition SoElement.cpp:553
virtual void push(SoState *state)
Definition SoElement.cpp:570
static void setDefault(SoState *const state, SoNode *const node, const int unit=0)
FIXME: write doc.
Definition SoMultiTextureCoordinateElement.cpp:130
static CoordType getType(SoState *const state, const int unit=0)
Definition SoMultiTextureCoordinateElement.cpp:409
static const SoMultiTextureCoordinateElement * getInstance(SoState *const state)
FIXME: write doc.
Definition SoMultiTextureCoordinateElement.cpp:271
SoMultiTextureCoordinateElement(void)
Definition SoMultiTextureCoordinateElement.cpp:110
const SbVec4f & get(const int unit, const SbVec3f &point, const SbVec3f &normal) const
Definition SoMultiTextureCoordinateElement.cpp:287
SbBool is2D(const int unit=0) const
FIXME: write doc. (for backwards compatibility. Use getDimension() instead).
Definition SoMultiTextureCoordinateElement.cpp:452
static void set4(SoState *const state, SoNode *const node, const int unit, const int32_t numCoords, const SbVec4f *const coords)
FIXME: write doc.
Definition SoMultiTextureCoordinateElement.cpp:241
static void setFunction(SoState *const state, SoNode *const node, const int unit, SoTextureCoordinateFunctionCB *const func, void *const userdata)
FIXME: write doc.
Definition SoMultiTextureCoordinateElement.cpp:151
const SbVec3f * getArrayPtr3(const int unit=0) const
Definition SoMultiTextureCoordinateElement.cpp:487
const SbVec2f & get2(const int unit, const int index) const
FIXME: write doc.
Definition SoMultiTextureCoordinateElement.cpp:302
int32_t getDimension(const int unit=0) const
Definition SoMultiTextureCoordinateElement.cpp:463
const SbVec3f & get3(const int unit, const int index) const
Definition SoMultiTextureCoordinateElement.cpp:336
const SbVec4f * getArrayPtr4(const int unit=0) const
Definition SoMultiTextureCoordinateElement.cpp:499
const SbVec2f * getArrayPtr2(const int unit=0) const
Definition SoMultiTextureCoordinateElement.cpp:475
const SbVec4f & get4(const int unit, const int index) const
FIXME: write doc.
Definition SoMultiTextureCoordinateElement.cpp:366
int32_t getNum(const int unit=0) const
FIXME: write doc.
Definition SoMultiTextureCoordinateElement.cpp:441
static void set3(SoState *const state, SoNode *const node, const int unit, const int32_t numCoords, const SbVec3f *const coords)
Definition SoMultiTextureCoordinateElement.cpp:211
static void set2(SoState *const state, SoNode *const node, const int unit, const int32_t numCoords, const SbVec2f *const coords)
FIXME: write doc.
Definition SoMultiTextureCoordinateElement.cpp:181
The SoNode class is the base class for nodes used in scene graphs.
Definition SoNode.h:56
The SoState class manages the Coin scene graph traversal state data.
Definition SoState.h:44