HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HOM_Prim.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * COMMENTS:
7  */
8 
9 #ifndef __HOM_Prim_h__
10 #define __HOM_Prim_h__
11 
12 #include "HOM_API.h"
13 #include "HOM_Defines.h"
14 #include "HOM_Errors.h"
15 #include "HOM_BoundingBox.h"
16 #include "HOM_Vertex.h"
17 #include "HOM_IterableList.h"
18 #include "HOM_PtrOrNull.h"
19 #include <UT/UT_Tuple.h>
20 
21 #include <map>
22 #include <string>
23 #include <vector>
24 
25 class HOM_EnumValue;
26 class HOM_Geometry;
27 class HOM_PrimGroup;
28 class HOM_Edge;
29 class HOM_Vector2;
30 class HOM_Vector3;
31 
32 SWIGOUT(%rename(Prim) HOM_Prim;)
33 
35 {
36 public:
38  { HOM_CONSTRUCT_OBJECT(this) }
39  HOM_Prim(const HOM_Prim &)
40  { HOM_CONSTRUCT_OBJECT(this) }
41  virtual ~HOM_Prim()
42  { HOM_DESTRUCT_OBJECT(this) }
43 
44  virtual bool operator==(HOM_PtrOrNull<HOM_Prim> prim) = 0;
45  virtual bool operator!=(HOM_PtrOrNull<HOM_Prim> prim) = 0;
46 
47  virtual int __hash__() = 0;
48  virtual std::string __repr__() = 0;
49 
50  SWIGOUT(%newobject geometry;)
51  virtual HOM_Geometry *geometry() = 0;
52 
53  virtual int number() = 0;
54 
55  SWIGOUT(%warnfilter(321) type;)
56  virtual HOM_EnumValue &type() = 0;
57  virtual HOM_EnumValue &attribType() = 0;
58 
59 
60  SWIGOUT(%newobject vertices;)
61  virtual HOM_IterableList<HOM_Vertex> *vertices() = 0;
62 
63  virtual int numVertices() = 0;
64 
65 
66  virtual std::vector<HOM_ElemPtr<HOM_Edge> > edges() = 0;
67 
68  virtual int numEdges() = 0;
69 
70  virtual double floatAttribValue(const char *name) = 0;
71 
72  virtual double floatAttribValue(HOM_Attrib &attrib) = 0;
73 
74  virtual std::vector<double> floatListAttribValue(const char *name) = 0;
75 
76  virtual std::vector<double> floatListAttribValue(HOM_Attrib &attrib) = 0;
77 
78  virtual int64 intAttribValue(const char *name) = 0;
79 
80  virtual int64 intAttribValue(HOM_Attrib &attrib) = 0;
81 
82  virtual std::vector<int64> intListAttribValue(const char *name) = 0;
83 
84  virtual std::vector<int64> intListAttribValue(HOM_Attrib &attrib) = 0;
85 
86  virtual std::string stringAttribValue(const char *name) = 0;
87 
88  virtual std::string stringAttribValue(HOM_Attrib &attrib) = 0;
89 
90  virtual std::vector<std::string> stringListAttribValue(const char *name) = 0;
91 
92  virtual std::vector<std::string> stringListAttribValue(HOM_Attrib &attrib) = 0;
93  virtual std::map<std::string,hboost::any> dictAttribValue(const char *name) = 0;
94  virtual std::map<std::string,hboost::any> dictAttribValue(HOM_Attrib &name) = 0;
95  virtual std::vector<std::map<std::string,hboost::any> > dictListAttribValue(const char *name) = 0;
96  virtual std::vector<std::map<std::string,hboost::any> > dictListAttribValue(HOM_Attrib &name) = 0;
97 
98 
99  virtual void setAttribValue(
100  HOM_Attrib &attrib, int64 attrib_value) = 0;
101  virtual void setAttribValue(
102  HOM_Attrib &attrib, double attrib_value) = 0;
103  virtual void setAttribValue(
104  HOM_Attrib &attrib, const char *attrib_value) = 0;
105  virtual void setAttribValue(
106  HOM_Attrib &attrib, const std::vector<int64> &attrib_value) = 0;
107  virtual void setAttribValue(
108  HOM_Attrib &attrib, const std::vector<double> &attrib_value) = 0;
109  virtual void setAttribValue(
110  HOM_Attrib &attrib, const std::vector<std::string> &attrib_value) = 0;
111  virtual void setAttribValue(
112  HOM_Attrib &attrib, const std::map<std::string, hboost::any> &attrib_value) = 0;
113  virtual void setAttribValue(
114  HOM_Attrib &attrib, const std::vector<std::map<std::string,hboost::any> > &attrib_value) = 0;
115 
116  virtual void setAttribValue(
117  const char *attrib_name, int64 attrib_value) = 0;
118  virtual void setAttribValue(
119  const char *attrib_name, double attrib_value) = 0;
120  virtual void setAttribValue(
121  const char *attrib_name, const char *attrib_value) = 0;
122  // Note that, because of strangess the with way swig works when deciding
123  // which overloaded method to call, it's very important that we list the
124  // vector of ints before the vector of doubles. Otherwise, swig will call
125  // the double version when you pass in a vector of ints.
126  // It isn't that simple, the order is important but also depends on
127  // everything else in the override, so you may have to switch these
128  // until SWIG generates the right code...
129  virtual void setAttribValue(
130  const char *attrib_name, const std::vector<int64> &attrib_value) = 0;
131  virtual void setAttribValue(
132  const char *attrib_name, const std::vector<double> &attrib_value) = 0;
133  virtual void setAttribValue(
134  const char *attrib_name,
135  const std::vector<std::string> &attrib_value) = 0;
136  virtual void setAttribValue(
137  const char *attrib_name,
138  const std::map<std::string, hboost::any> &attrib_value) = 0;
139  virtual void setAttribValue(
140  const char *attrib_name,
141  const std::vector<std::map<std::string,hboost::any> > &attrib_value) = 0;
142 
143 
144  virtual std::vector<std::string> intrinsicNames() = 0;
145 
146  virtual hboost::any intrinsicValue(
147  const char *intrinsic_name) = 0;
148  virtual size_t intrinsicSize(const char *intrinsic_name) = 0;
149  virtual bool intrinsicReadOnly(const char *intrinsic_name) = 0;
150 
151  virtual void setIntrinsicValue(const char *intrinsic_name, double value) = 0;
152  virtual void setIntrinsicValue(const char *intrinsic_name, int value) = 0;
153  virtual void setIntrinsicValue(const char *intrinsic_name, int64 value) = 0;
154  virtual void setIntrinsicValue(
155  const char *intrinsic_name, const char *value) = 0;
156  virtual void setIntrinsicValue(
157  const char *intrinsic_name, const std::vector<double> &value) = 0;
158  virtual void setIntrinsicValue(
159  const char *intrinsic_name, const std::vector<int> &value) = 0;
160  virtual void setIntrinsicValue(
161  const char *intrinsic_name, const std::vector<int64> &value) = 0;
162  virtual void setIntrinsicValue(
163  const char *intrinsic_name, const std::vector<std::string> &value) = 0;
164 
165 #ifdef SWIG
166 %extend
167 {
168  InterpreterObject attribValue(const char *name)
169  { return HOMattribValue(*self, name); }
170 
171  InterpreterObject attribValue(HOM_Attrib &attrib)
172  { return HOMattribValue(*self, attrib); }
173 }
174 #endif
175 
176  SWIGOUT(%newobject positionAtInterior;)
177  virtual HOM_Vector3 *positionAtInterior(double u, double v, double w = 0.0) = 0;
178 
179  SWIGOUT(%ignore boostAnyAttribValueAtInterior;)
180  virtual hboost::any boostAnyAttribValueAtInterior(
181  const char *name, double u, double v, double w) = 0;
182 
183  SWIGOUT(%ignore boostAnyAttribValueAtInterior;)
184  virtual hboost::any boostAnyAttribValueAtInterior(
185  HOM_Attrib &attrib, double u, double v, double w) = 0;
186 
187 #ifdef SWIG
188 %extend
189 {
190  InterpreterObject attribValueAtInterior(
191  const char *name, double u, double v, double w = 0.0)
192  {
193  return HOMboostAnyToInterpreterObject(
194  self->boostAnyAttribValueAtInterior(name, u, v, w));
195  }
196 
197  InterpreterObject attribValueAtInterior(
198  HOM_Attrib &attrib, double u, double v, double w = 0.0)
199  {
200  return HOMboostAnyToInterpreterObject(
201  self->boostAnyAttribValueAtInterior(attrib, u, v, w));
202  }
203 }
204 #endif
205 
206  virtual HOM_BoundingBox boundingBox() = 0;
207 
208  virtual UT_Tuple<double, double, double> nearestToPosition(
209  const std::vector<double> &position) = 0;
210 
211  virtual std::vector< HOM_ElemPtr<HOM_PrimGroup> > groups() = 0;
212 
213  virtual HOM_Vector2 *primuvConvert(const HOM_Vector2 &uv, int mode) = 0;
214  virtual HOM_Vector2 *primuvConvert(const HOM_Vector2 &uv, int mode, double tol) =0;
215  virtual double primuConvert(double u, int mode) = 0;
216  virtual double primuConvert(double u, int mode, double tol) =0;
217 
218 };
219 
220 #endif
HOM_Prim()
Definition: HOM_Prim.h:37
#define HOM_DESTRUCT_OBJECT(pointer)
Definition: HOM_Module.h:1210
GLuint const GLchar * name
Definition: glew.h:1814
GLenum mode
Definition: glew.h:2163
GA_API const UT_StringHolder uv
OIIO_API bool rename(string_view from, string_view to, std::string &err)
#define SWIGOUT(x)
Definition: HOM_Defines.h:24
string __repr__(VtArray< T > const &self)
Definition: wrapArray.h:349
std::tuple< Types...> UT_Tuple
Definition: UT_Tuple.h:53
const GLdouble * v
Definition: glew.h:1391
GLsizei GLuint * groups
Definition: glew.h:2744
bool any(const vbool4 &v)
Definition: simd.h:3372
#define HOM_API
Definition: HOM_API.h:13
#define HOM_CONSTRUCT_OBJECT(pointer)
Definition: HOM_Module.h:1209
GLubyte GLubyte GLubyte GLubyte w
Definition: glew.h:1890
bool operator!=(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Inequality operator, does exact floating point comparisons.
Definition: Mat3.h:563
long long int64
Definition: SYS_Types.h:116
GLuint GLuint GLsizei GLenum type
Definition: glew.h:1253
GLsizei const GLchar *const * string
Definition: glew.h:1844
virtual ~HOM_Prim()
Definition: HOM_Prim.h:41
HOM_Prim(const HOM_Prim &)
Definition: HOM_Prim.h:39
GLsizei const GLfloat * value
Definition: glew.h:1849
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons.
Definition: Mat3.h:549
int __hash__()
type
Definition: core.h:528