HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Camera.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_CameraEnums
24 {
25  enum class Xord
26  {
27  SRT = 0,
28  STR,
29  RST,
30  RTS,
31  TSR,
32  TRS
33  };
34 
36  getToken(Xord enum_value)
37  {
38  using namespace UT::Literal;
39  switch (enum_value) {
40  case Xord::SRT: return "srt"_sh;
41  case Xord::STR: return "str"_sh;
42  case Xord::RST: return "rst"_sh;
43  case Xord::RTS: return "rts"_sh;
44  case Xord::TSR: return "tsr"_sh;
45  case Xord::TRS: return "trs"_sh;
46  default: UT_ASSERT(false); return ""_sh;
47  }
48  }
49 
50  enum class Rord
51  {
52  XYZ = 0,
53  XZY,
54  YXZ,
55  YZX,
56  ZXY,
57  ZYX
58  };
59 
61  getToken(Rord enum_value)
62  {
63  using namespace UT::Literal;
64  switch (enum_value) {
65  case Rord::XYZ: return "xyz"_sh;
66  case Rord::XZY: return "xzy"_sh;
67  case Rord::YXZ: return "yxz"_sh;
68  case Rord::YZX: return "yzx"_sh;
69  case Rord::ZXY: return "zxy"_sh;
70  case Rord::ZYX: return "zyx"_sh;
71  default: UT_ASSERT(false); return ""_sh;
72  }
73  }
74 
75  enum class Upvecmethod
76  {
77  YAXIS = 0,
78  XAXIS,
79  CUSTOM
80  };
81 
83  getToken(Upvecmethod enum_value)
84  {
85  using namespace UT::Literal;
86  switch (enum_value) {
87  case Upvecmethod::YAXIS: return "yaxis"_sh;
88  case Upvecmethod::XAXIS: return "xaxis"_sh;
89  case Upvecmethod::CUSTOM: return "custom"_sh;
90  default: UT_ASSERT(false); return ""_sh;
91  }
92  }
93 
94  enum class Projection
95  {
96  PERSPECTIVE = 0,
97  ORTHO
98  };
99 
101  getToken(Projection enum_value)
102  {
103  using namespace UT::Literal;
104  switch (enum_value) {
105  case Projection::PERSPECTIVE: return "perspective"_sh;
106  case Projection::ORTHO: return "ortho"_sh;
107  default: UT_ASSERT(false); return ""_sh;
108  }
109  }
110 
111  enum class Type
112  {
113  INT = 0,
114  FLOAT,
115  VECTOR2,
116  VECTOR3,
117  VECTOR4,
118  STRING
119  };
120 
122  getToken(Type enum_value)
123  {
124  using namespace UT::Literal;
125  switch (enum_value) {
126  case Type::INT: return "int"_sh;
127  case Type::FLOAT: return "float"_sh;
128  case Type::VECTOR2: return "vector2"_sh;
129  case Type::VECTOR3: return "vector3"_sh;
130  case Type::VECTOR4: return "vector4"_sh;
131  case Type::STRING: return "string"_sh;
132  default: UT_ASSERT(false); return ""_sh;
133  }
134  }
135 
136 }
137 
138 
140 {
141 public:
142  static int version() { return 1; }
143  struct Entries
144  {
145  bool enable;
154 
155 
157  {
158  enable = true;
159  key = ""_UTsh;
160  type = 5;
161  vals = ""_UTsh;
162  vali = 0;
163  valf = 0;
164  val2f = UT_Vector2D(0,0);
165  val3f = UT_Vector3D(0,0,0);
166  val4f = UT_Vector4D(0,0,0,0);
167 
168  }
169 
170  bool operator==(const Entries &src) const
171  {
172  if (enable != src.enable) return false;
173  if (key != src.key) return false;
174  if (type != src.type) return false;
175  if (vals != src.vals) return false;
176  if (vali != src.vali) return false;
177  if (valf != src.valf) return false;
178  if (val2f != src.val2f) return false;
179  if (val3f != src.val3f) return false;
180  if (val4f != src.val4f) return false;
181 
182  return true;
183  }
184  bool operator!=(const Entries &src) const
185  {
186  return !operator==(src);
187  }
188 
189  };
190 
192  {
194 
195  buf.strcat("[ ");
196  for (int i = 0; i < list.entries(); i++)
197  {
198  if (i)
199  buf.strcat(", ");
200  buf.strcat("( ");
201  buf.append("");
202  buf.appendSprintf("%s", (list(i).enable) ? "true" : "false");
203  buf.append(", ");
204  { UT_String tmp; tmp = UT_StringWrap(list(i).key).makeQuotedString('"'); buf.strcat(tmp); }
205  buf.append(", ");
206  buf.appendSprintf("%d", (int) list(i).type);
207  buf.append(", ");
208  { UT_String tmp; tmp = UT_StringWrap(list(i).vals).makeQuotedString('"'); buf.strcat(tmp); }
209  buf.append(", ");
210  buf.appendSprintf("%d", (int) list(i).vali);
211  buf.append(", ");
212  buf.appendSprintf("%f", (list(i).valf));
213  buf.append(", ");
214  buf.appendSprintf("(%f, %f)", list(i).val2f.x(), list(i).val2f.y());
215  buf.append(", ");
216  buf.appendSprintf("(%f, %f, %f)", list(i).val3f.x(), list(i).val3f.y(), list(i).val3f.z());
217  buf.append(", ");
218  buf.appendSprintf("(%f, %f, %f, %f)", list(i).val4f.x(), list(i).val4f.y(), list(i).val4f.z(), list(i).val4f.w());
219 
220  buf.strcat(" )");
221  }
222  buf.strcat(" ]");
223 
225  return result;
226  }
227 
229  {
230  myName = "cam1"_UTsh;
231  myXord = 0;
232  myRord = 0;
233  myT = UT_Vector3D(0,0,0);
234  myR = UT_Vector3D(0,0,0);
235  myP = UT_Vector3D(0,0,0);
236  myPr = UT_Vector3D(0,0,0);
237  myDolookat = false;
238  myLookatposition = UT_Vector3D(0,0,0);
239  myUpvecmethod = 0;
240  myUpvec = UT_Vector3D(0,1,0);
241  myTwist = 0;
242  myRes = 0;
243  myResmenu = 0;
244  myProjection = 0;
245  myFocal = 50;
246  myAperture = 41.4214;
247  myOrthowidth = 1;
248  myNearclip = 0.001;
249  myFarclip = 10000.0;
250  myWin = UT_Vector2D(0,0);
251  myWinsize = UT_Vector2D(1,1);
252  myCropl = 0;
253  myCropr = 1;
254  myCropb = 0;
255  myCropt = 1;
256  myImgdist = 1;
257  myGuidescale = 1;
258  myShutteropen = -0.25;
259  myShutterclose = 0.25;
260  myFocus = 5;
261  myFstop = 5.6;
262  myEntries.setSize(0);
263 
264  }
265 
266  explicit SOP_CameraParms(const SOP_CameraParms &) = default;
267  SOP_CameraParms &operator=(const SOP_CameraParms &) = default;
268  SOP_CameraParms(SOP_CameraParms &&) noexcept = default;
269  SOP_CameraParms &operator=(SOP_CameraParms &&) noexcept = default;
270 
271  ~SOP_CameraParms() override {}
272 
273  bool operator==(const SOP_CameraParms &src) const
274  {
275  if (myName != src.myName) return false;
276  if (myXord != src.myXord) return false;
277  if (myRord != src.myRord) return false;
278  if (myT != src.myT) return false;
279  if (myR != src.myR) return false;
280  if (myP != src.myP) return false;
281  if (myPr != src.myPr) return false;
282  if (myDolookat != src.myDolookat) return false;
283  if (myLookatposition != src.myLookatposition) return false;
284  if (myUpvecmethod != src.myUpvecmethod) return false;
285  if (myUpvec != src.myUpvec) return false;
286  if (myTwist != src.myTwist) return false;
287  if (myRes != src.myRes) return false;
288  if (myResmenu != src.myResmenu) return false;
289  if (myProjection != src.myProjection) return false;
290  if (myFocal != src.myFocal) return false;
291  if (myAperture != src.myAperture) return false;
292  if (myOrthowidth != src.myOrthowidth) return false;
293  if (myNearclip != src.myNearclip) return false;
294  if (myFarclip != src.myFarclip) return false;
295  if (myWin != src.myWin) return false;
296  if (myWinsize != src.myWinsize) return false;
297  if (myCropl != src.myCropl) return false;
298  if (myCropr != src.myCropr) return false;
299  if (myCropb != src.myCropb) return false;
300  if (myCropt != src.myCropt) return false;
301  if (myImgdist != src.myImgdist) return false;
302  if (myGuidescale != src.myGuidescale) return false;
303  if (myShutteropen != src.myShutteropen) return false;
304  if (myShutterclose != src.myShutterclose) return false;
305  if (myFocus != src.myFocus) return false;
306  if (myFstop != src.myFstop) return false;
307  if (myEntries != src.myEntries) return false;
308 
309 
310  if (baseGetSignature() != src.baseGetSignature()) return false;
311 
312  return true;
313  }
314  bool operator!=(const SOP_CameraParms &src) const
315  {
316  return !operator==(src);
317  }
323 
324 
325 
326  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
327  {
328  myName = "cam1"_UTsh;
329  if (true)
330  graph->evalOpParm(myName, nodeidx, "name", time, graph->isDirect()?nullptr:depnode);
331  myXord = 0;
332  if (true)
333  graph->evalOpParm(myXord, nodeidx, "xOrd", time, graph->isDirect()?nullptr:depnode);
334  myRord = 0;
335  if (true)
336  graph->evalOpParm(myRord, nodeidx, "rOrd", time, graph->isDirect()?nullptr:depnode);
337  myT = UT_Vector3D(0,0,0);
338  if (true)
339  graph->evalOpParm(myT, nodeidx, "t", time, graph->isDirect()?nullptr:depnode);
340  myR = UT_Vector3D(0,0,0);
341  if (true)
342  graph->evalOpParm(myR, nodeidx, "r", time, graph->isDirect()?nullptr:depnode);
343  myP = UT_Vector3D(0,0,0);
344  if (true)
345  graph->evalOpParm(myP, nodeidx, "p", time, graph->isDirect()?nullptr:depnode);
346  myPr = UT_Vector3D(0,0,0);
347  if (true)
348  graph->evalOpParm(myPr, nodeidx, "pr", time, graph->isDirect()?nullptr:depnode);
349  myDolookat = false;
350  if (true)
351  graph->evalOpParm(myDolookat, nodeidx, "dolookat", time, graph->isDirect()?nullptr:depnode);
352  myLookatposition = UT_Vector3D(0,0,0);
353  if (true && ( (true&&!(((getDolookat()==0)))) ) )
354  graph->evalOpParm(myLookatposition, nodeidx, "lookatposition", time, graph->isDirect()?nullptr:depnode);
355  myUpvecmethod = 0;
356  if (true && ( (true&&!(((getDolookat()==0)))) ) )
357  graph->evalOpParm(myUpvecmethod, nodeidx, "upvecmethod", time, graph->isDirect()?nullptr:depnode);
358  myUpvec = UT_Vector3D(0,1,0);
359  if (true && ( (true&&!(((getDolookat()==0))||((int64(getUpvecmethod())!=2)))) ) )
360  graph->evalOpParm(myUpvec, nodeidx, "upvec", time, graph->isDirect()?nullptr:depnode);
361  myTwist = 0;
362  if (true && ( (true&&!(((getDolookat()==0)))) ) )
363  graph->evalOpParm(myTwist, nodeidx, "twist", time, graph->isDirect()?nullptr:depnode);
364  myRes = 0;
365  if (true)
366  graph->evalOpParm(myRes, nodeidx, "res", time, graph->isDirect()?nullptr:depnode);
367  myResmenu = 0;
368  if (true)
369  graph->evalOpParm(myResmenu, nodeidx, "resmenu", time, graph->isDirect()?nullptr:depnode);
370  myProjection = 0;
371  if (true)
372  graph->evalOpParm(myProjection, nodeidx, "projection", time, graph->isDirect()?nullptr:depnode);
373  myFocal = 50;
374  if (true && ( (true&&!(((int64(getProjection())==1)))) ) )
375  graph->evalOpParm(myFocal, nodeidx, "focal", time, graph->isDirect()?nullptr:depnode);
376  myAperture = 41.4214;
377  if (true && ( (true&&!(((int64(getProjection())==1)))) ) )
378  graph->evalOpParm(myAperture, nodeidx, "aperture", time, graph->isDirect()?nullptr:depnode);
379  myOrthowidth = 1;
380  if (true && ( (true&&!(((int64(getProjection())==0)))) ) )
381  graph->evalOpParm(myOrthowidth, nodeidx, "orthowidth", time, graph->isDirect()?nullptr:depnode);
382  myNearclip = 0.001;
383  if (true)
384  graph->evalOpParm(myNearclip, nodeidx, "nearclip", time, graph->isDirect()?nullptr:depnode);
385  myFarclip = 10000.0;
386  if (true)
387  graph->evalOpParm(myFarclip, nodeidx, "farclip", time, graph->isDirect()?nullptr:depnode);
388  myWin = UT_Vector2D(0,0);
389  if (true)
390  graph->evalOpParm(myWin, nodeidx, "win", time, graph->isDirect()?nullptr:depnode);
391  myWinsize = UT_Vector2D(1,1);
392  if (true)
393  graph->evalOpParm(myWinsize, nodeidx, "winsize", time, graph->isDirect()?nullptr:depnode);
394  myCropl = 0;
395  if (true)
396  graph->evalOpParm(myCropl, nodeidx, "cropl", time, graph->isDirect()?nullptr:depnode);
397  myCropr = 1;
398  if (true)
399  graph->evalOpParm(myCropr, nodeidx, "cropr", time, graph->isDirect()?nullptr:depnode);
400  myCropb = 0;
401  if (true)
402  graph->evalOpParm(myCropb, nodeidx, "cropb", time, graph->isDirect()?nullptr:depnode);
403  myCropt = 1;
404  if (true)
405  graph->evalOpParm(myCropt, nodeidx, "cropt", time, graph->isDirect()?nullptr:depnode);
406  myImgdist = 1;
407  if (true)
408  graph->evalOpParm(myImgdist, nodeidx, "imgdist", time, graph->isDirect()?nullptr:depnode);
409  myGuidescale = 1;
410  if (true)
411  graph->evalOpParm(myGuidescale, nodeidx, "guidescale", time, graph->isDirect()?nullptr:depnode);
412  myShutteropen = -0.25;
413  if (true)
414  graph->evalOpParm(myShutteropen, nodeidx, "shutteropen", time, graph->isDirect()?nullptr:depnode);
415  myShutterclose = 0.25;
416  if (true)
417  graph->evalOpParm(myShutterclose, nodeidx, "shutterclose", time, graph->isDirect()?nullptr:depnode);
418  myFocus = 5;
419  if (true)
420  graph->evalOpParm(myFocus, nodeidx, "focus", time, graph->isDirect()?nullptr:depnode);
421  myFstop = 5.6;
422  if (true)
423  graph->evalOpParm(myFstop, nodeidx, "fstop", time, graph->isDirect()?nullptr:depnode);
424  if (true)
425  {
426  int64 length = 0;
427  graph->evalOpParm(length, nodeidx, "entries", time, graph->isDirect()?nullptr:depnode);
428  if (length < 0) length = 0;
429  myEntries.setSize(length);
430  for (exint i = 0; i < length; i++)
431  {
432  int parmidx[1];
433  int offsets[1];
434  parmidx[0] = i+1;
435  offsets[0] = 1;
436  auto && _curentry = myEntries(i);
437  (void) _curentry;
438  _curentry.enable = true;
439  if (true)
440  graph->evalOpParmInst(_curentry.enable, nodeidx, "enable#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
441  _curentry.key = ""_UTsh;
442  if (true && ( (true&&!(((_curentry.enable==0)))) ) )
443  graph->evalOpParmInst(_curentry.key, nodeidx, "key#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
444  _curentry.type = 5;
445  if (true && ( (true&&!(((_curentry.enable==0)))) ) )
446  graph->evalOpParmInst(_curentry.type, nodeidx, "type#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
447  _curentry.vals = ""_UTsh;
448  if (true && ( (true&&!(((_curentry.type!=5))||((_curentry.enable==0))||((_curentry.type!=5)))) ) )
449  graph->evalOpParmInst(_curentry.vals, nodeidx, "vals#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
450  _curentry.vali = 0;
451  if (true && ( (true&&!(((_curentry.type!=0))||((_curentry.enable==0))||((_curentry.type!=0)))) ) )
452  graph->evalOpParmInst(_curentry.vali, nodeidx, "vali#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
453  _curentry.valf = 0;
454  if (true && ( (true&&!(((_curentry.type!=1))||((_curentry.enable==0))||((_curentry.type!=1)))) ) )
455  graph->evalOpParmInst(_curentry.valf, nodeidx, "valf#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
456  _curentry.val2f = UT_Vector2D(0,0);
457  if (true && ( (true&&!(((_curentry.type!=2))||((_curentry.enable==0))||((_curentry.type!=2)))) ) )
458  graph->evalOpParmInst(_curentry.val2f, nodeidx, "val2f#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
459  _curentry.val3f = UT_Vector3D(0,0,0);
460  if (true && ( (true&&!(((_curentry.type!=3))||((_curentry.enable==0))||((_curentry.type!=3)))) ) )
461  graph->evalOpParmInst(_curentry.val3f, nodeidx, "val3f#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
462  _curentry.val4f = UT_Vector4D(0,0,0,0);
463  if (true && ( (true&&!(((_curentry.type!=4))||((_curentry.enable==0))||((_curentry.type!=4)))) ) )
464  graph->evalOpParmInst(_curentry.val4f, nodeidx, "val4f#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
465 
466  }
467  }
468  else
469  myEntries.clear();
470 
471  }
472 
473 
474  void loadFromOpSubclass(const LoadParms &loadparms) override
475  {
476  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
477  }
478 
479 
480  void copyFrom(const OP_NodeParms *src) override
481  {
482  *this = *((const SOP_CameraParms *)src);
483  }
484 
485  template <typename T>
486  void
487  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
488  {
489  if (idx.size() < 1)
490  return;
491  UT_ASSERT(idx.size() == instance.size()+1);
492  if (idx.size() != instance.size()+1)
493  return;
494  switch (idx[0])
495  {
496  case 0:
497  coerceValue(value, myName);
498  break;
499  case 1:
500  coerceValue(value, myXord);
501  break;
502  case 2:
503  coerceValue(value, myRord);
504  break;
505  case 3:
506  coerceValue(value, myT);
507  break;
508  case 4:
509  coerceValue(value, myR);
510  break;
511  case 5:
512  coerceValue(value, myP);
513  break;
514  case 6:
515  coerceValue(value, myPr);
516  break;
517  case 7:
518  coerceValue(value, myDolookat);
519  break;
520  case 8:
521  coerceValue(value, myLookatposition);
522  break;
523  case 9:
524  coerceValue(value, myUpvecmethod);
525  break;
526  case 10:
527  coerceValue(value, myUpvec);
528  break;
529  case 11:
530  coerceValue(value, myTwist);
531  break;
532  case 12:
533  coerceValue(value, myRes);
534  break;
535  case 13:
536  coerceValue(value, myResmenu);
537  break;
538  case 14:
539  coerceValue(value, myProjection);
540  break;
541  case 15:
542  coerceValue(value, myFocal);
543  break;
544  case 16:
545  coerceValue(value, myAperture);
546  break;
547  case 17:
548  coerceValue(value, myOrthowidth);
549  break;
550  case 18:
551  coerceValue(value, myNearclip);
552  break;
553  case 19:
554  coerceValue(value, myFarclip);
555  break;
556  case 20:
557  coerceValue(value, myWin);
558  break;
559  case 21:
560  coerceValue(value, myWinsize);
561  break;
562  case 22:
563  coerceValue(value, myCropl);
564  break;
565  case 23:
566  coerceValue(value, myCropr);
567  break;
568  case 24:
569  coerceValue(value, myCropb);
570  break;
571  case 25:
572  coerceValue(value, myCropt);
573  break;
574  case 26:
575  coerceValue(value, myImgdist);
576  break;
577  case 27:
578  coerceValue(value, myGuidescale);
579  break;
580  case 28:
581  coerceValue(value, myShutteropen);
582  break;
583  case 29:
584  coerceValue(value, myShutterclose);
585  break;
586  case 30:
587  coerceValue(value, myFocus);
588  break;
589  case 31:
590  coerceValue(value, myFstop);
591  break;
592  case 32:
593  if (idx.size() == 1)
594  coerceValue(value, myEntries.entries());
595  else if (instance[0] < myEntries.entries())
596  {
597  auto && _data = myEntries(instance[0]);
598  switch (idx[1])
599  {
600  case 0:
601  coerceValue(value, _data.enable);
602  break;
603  case 1:
604  coerceValue(value, _data.key);
605  break;
606  case 2:
607  coerceValue(value, _data.type);
608  break;
609  case 3:
610  coerceValue(value, _data.vals);
611  break;
612  case 4:
613  coerceValue(value, _data.vali);
614  break;
615  case 5:
616  coerceValue(value, _data.valf);
617  break;
618  case 6:
619  coerceValue(value, _data.val2f);
620  break;
621  case 7:
622  coerceValue(value, _data.val3f);
623  break;
624  case 8:
625  coerceValue(value, _data.val4f);
626  break;
627 
628  }
629  }
630  break;
631 
632  }
633  }
634 
635  bool isParmColorRamp(exint idx) const override
636  {
637  switch (idx)
638  {
639 
640  }
641  return false;
642  }
643 
644  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
645  { doGetParmValue(idx, instance, value); }
646  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
647  { doGetParmValue(idx, instance, value); }
648  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
649  { doGetParmValue(idx, instance, value); }
650  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
651  { doGetParmValue(idx, instance, value); }
652  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
653  { doGetParmValue(idx, instance, value); }
654  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
655  { doGetParmValue(idx, instance, value); }
656  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
657  { doGetParmValue(idx, instance, value); }
658  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
659  { doGetParmValue(idx, instance, value); }
660  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
661  { doGetParmValue(idx, instance, value); }
662  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
663  { doGetParmValue(idx, instance, value); }
664  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
665  { doGetParmValue(idx, instance, value); }
666 
667  template <typename T>
668  void
669  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
670  {
671  if (idx.size() < 1)
672  return;
673  UT_ASSERT(idx.size() == instance.size()+1);
674  if (idx.size() != instance.size()+1)
675  return;
676  switch (idx[0])
677  {
678  case 0:
679  coerceValue(myName, ( ( value ) ));
680  break;
681  case 1:
682  coerceValue(myXord, clampMinValue(0, clampMaxValue(5, value ) ));
683  break;
684  case 2:
685  coerceValue(myRord, clampMinValue(0, clampMaxValue(5, value ) ));
686  break;
687  case 3:
688  coerceValue(myT, ( ( value ) ));
689  break;
690  case 4:
691  coerceValue(myR, ( ( value ) ));
692  break;
693  case 5:
694  coerceValue(myP, ( ( value ) ));
695  break;
696  case 6:
697  coerceValue(myPr, ( ( value ) ));
698  break;
699  case 7:
700  coerceValue(myDolookat, ( ( value ) ));
701  break;
702  case 8:
703  coerceValue(myLookatposition, ( ( value ) ));
704  break;
705  case 9:
706  coerceValue(myUpvecmethod, clampMinValue(0, clampMaxValue(2, value ) ));
707  break;
708  case 10:
709  coerceValue(myUpvec, ( ( value ) ));
710  break;
711  case 11:
712  coerceValue(myTwist, ( ( value ) ));
713  break;
714  case 12:
715  coerceValue(myRes, ( ( value ) ));
716  break;
717  case 13:
718  coerceValue(myResmenu, ( ( value ) ));
719  break;
720  case 14:
721  coerceValue(myProjection, clampMinValue(0, clampMaxValue(1, value ) ));
722  break;
723  case 15:
724  coerceValue(myFocal, ( ( value ) ));
725  break;
726  case 16:
727  coerceValue(myAperture, ( ( value ) ));
728  break;
729  case 17:
730  coerceValue(myOrthowidth, ( ( value ) ));
731  break;
732  case 18:
733  coerceValue(myNearclip, ( ( value ) ));
734  break;
735  case 19:
736  coerceValue(myFarclip, ( ( value ) ));
737  break;
738  case 20:
739  coerceValue(myWin, ( ( value ) ));
740  break;
741  case 21:
742  coerceValue(myWinsize, ( ( value ) ));
743  break;
744  case 22:
745  coerceValue(myCropl, ( ( value ) ));
746  break;
747  case 23:
748  coerceValue(myCropr, ( ( value ) ));
749  break;
750  case 24:
751  coerceValue(myCropb, ( ( value ) ));
752  break;
753  case 25:
754  coerceValue(myCropt, ( ( value ) ));
755  break;
756  case 26:
757  coerceValue(myImgdist, ( ( value ) ));
758  break;
759  case 27:
760  coerceValue(myGuidescale, ( ( value ) ));
761  break;
762  case 28:
763  coerceValue(myShutteropen, ( ( value ) ));
764  break;
765  case 29:
766  coerceValue(myShutterclose, ( ( value ) ));
767  break;
768  case 30:
769  coerceValue(myFocus, ( ( value ) ));
770  break;
771  case 31:
772  coerceValue(myFstop, ( ( value ) ));
773  break;
774  case 32:
775  if (idx.size() == 1)
776  {
777  exint newsize;
778  coerceValue(newsize, value);
779  if (newsize < 0) newsize = 0;
780  myEntries.setSize(newsize);
781  }
782  else
783  {
784  if (instance[0] < 0)
785  return;
786  myEntries.setSizeIfNeeded(instance[0]+1);
787  auto && _data = myEntries(instance[0]);
788  switch (idx[1])
789  {
790  case 0:
791  coerceValue(_data.enable, value);
792  break;
793  case 1:
794  coerceValue(_data.key, value);
795  break;
796  case 2:
797  coerceValue(_data.type, value);
798  break;
799  case 3:
800  coerceValue(_data.vals, value);
801  break;
802  case 4:
803  coerceValue(_data.vali, value);
804  break;
805  case 5:
806  coerceValue(_data.valf, value);
807  break;
808  case 6:
809  coerceValue(_data.val2f, value);
810  break;
811  case 7:
812  coerceValue(_data.val3f, value);
813  break;
814  case 8:
815  coerceValue(_data.val4f, value);
816  break;
817 
818  }
819  }
820  break;
821 
822  }
823  }
824 
825  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
826  { doSetParmValue(idx, instance, value); }
827  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
828  { doSetParmValue(idx, instance, value); }
829  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
830  { doSetParmValue(idx, instance, value); }
831  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
832  { doSetParmValue(idx, instance, value); }
833  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
834  { doSetParmValue(idx, instance, value); }
835  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
836  { doSetParmValue(idx, instance, value); }
837  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
838  { doSetParmValue(idx, instance, value); }
839  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
840  { doSetParmValue(idx, instance, value); }
841  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
842  { doSetParmValue(idx, instance, value); }
843  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
844  { doSetParmValue(idx, instance, value); }
845  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
846  { doSetParmValue(idx, instance, value); }
847 
848  exint getNestNumParms(TempIndex idx) const override
849  {
850  if (idx.size() == 0)
851  return 33;
852  switch (idx[0])
853  {
854  case 32:
855  return 9;
856 
857  }
858  // Invalid
859  return 0;
860  }
861 
862  const char *getNestParmName(TempIndex fieldnum) const override
863  {
864  if (fieldnum.size() < 1)
865  return 0;
866  switch (fieldnum[0])
867  {
868  case 0:
869  return "name";
870  case 1:
871  return "xOrd";
872  case 2:
873  return "rOrd";
874  case 3:
875  return "t";
876  case 4:
877  return "r";
878  case 5:
879  return "p";
880  case 6:
881  return "pr";
882  case 7:
883  return "dolookat";
884  case 8:
885  return "lookatposition";
886  case 9:
887  return "upvecmethod";
888  case 10:
889  return "upvec";
890  case 11:
891  return "twist";
892  case 12:
893  return "res";
894  case 13:
895  return "resmenu";
896  case 14:
897  return "projection";
898  case 15:
899  return "focal";
900  case 16:
901  return "aperture";
902  case 17:
903  return "orthowidth";
904  case 18:
905  return "nearclip";
906  case 19:
907  return "farclip";
908  case 20:
909  return "win";
910  case 21:
911  return "winsize";
912  case 22:
913  return "cropl";
914  case 23:
915  return "cropr";
916  case 24:
917  return "cropb";
918  case 25:
919  return "cropt";
920  case 26:
921  return "imgdist";
922  case 27:
923  return "guidescale";
924  case 28:
925  return "shutteropen";
926  case 29:
927  return "shutterclose";
928  case 30:
929  return "focus";
930  case 31:
931  return "fstop";
932  case 32:
933  if (fieldnum.size() == 1)
934  return "entries";
935  switch (fieldnum[1])
936  {
937  case 0:
938  return "enable#";
939  case 1:
940  return "key#";
941  case 2:
942  return "type#";
943  case 3:
944  return "vals#";
945  case 4:
946  return "vali#";
947  case 5:
948  return "valf#";
949  case 6:
950  return "val2f#";
951  case 7:
952  return "val3f#";
953  case 8:
954  return "val4f#";
955 
956  }
957  return 0;
958 
959  }
960  return 0;
961  }
962 
963  ParmType getNestParmType(TempIndex fieldnum) const override
964  {
965  if (fieldnum.size() < 1)
966  return PARM_UNSUPPORTED;
967  switch (fieldnum[0])
968  {
969  case 0:
970  return PARM_STRING;
971  case 1:
972  return PARM_INTEGER;
973  case 2:
974  return PARM_INTEGER;
975  case 3:
976  return PARM_VECTOR3;
977  case 4:
978  return PARM_VECTOR3;
979  case 5:
980  return PARM_VECTOR3;
981  case 6:
982  return PARM_VECTOR3;
983  case 7:
984  return PARM_INTEGER;
985  case 8:
986  return PARM_VECTOR3;
987  case 9:
988  return PARM_INTEGER;
989  case 10:
990  return PARM_VECTOR3;
991  case 11:
992  return PARM_FLOAT;
993  case 12:
994  return PARM_VECTOR2;
995  case 13:
996  return PARM_INTEGER;
997  case 14:
998  return PARM_INTEGER;
999  case 15:
1000  return PARM_FLOAT;
1001  case 16:
1002  return PARM_FLOAT;
1003  case 17:
1004  return PARM_FLOAT;
1005  case 18:
1006  return PARM_FLOAT;
1007  case 19:
1008  return PARM_FLOAT;
1009  case 20:
1010  return PARM_VECTOR2;
1011  case 21:
1012  return PARM_VECTOR2;
1013  case 22:
1014  return PARM_FLOAT;
1015  case 23:
1016  return PARM_FLOAT;
1017  case 24:
1018  return PARM_FLOAT;
1019  case 25:
1020  return PARM_FLOAT;
1021  case 26:
1022  return PARM_FLOAT;
1023  case 27:
1024  return PARM_FLOAT;
1025  case 28:
1026  return PARM_FLOAT;
1027  case 29:
1028  return PARM_FLOAT;
1029  case 30:
1030  return PARM_FLOAT;
1031  case 31:
1032  return PARM_FLOAT;
1033  case 32:
1034  if (fieldnum.size() == 1)
1035  return PARM_MULTIPARM;
1036  switch (fieldnum[1])
1037  {
1038  case 0:
1039  return PARM_INTEGER;
1040  case 1:
1041  return PARM_STRING;
1042  case 2:
1043  return PARM_INTEGER;
1044  case 3:
1045  return PARM_STRING;
1046  case 4:
1047  return PARM_INTEGER;
1048  case 5:
1049  return PARM_FLOAT;
1050  case 6:
1051  return PARM_VECTOR2;
1052  case 7:
1053  return PARM_VECTOR3;
1054  case 8:
1055  return PARM_VECTOR4;
1056 
1057  }
1058  return PARM_UNSUPPORTED;
1059 
1060  }
1061  return PARM_UNSUPPORTED;
1062  }
1063 
1064  // Boiler plate to load individual types.
1065  static void loadData(UT_IStream &is, int64 &v)
1066  { is.bread(&v, 1); }
1067  static void loadData(UT_IStream &is, bool &v)
1068  { int64 iv; is.bread(&iv, 1); v = iv; }
1069  static void loadData(UT_IStream &is, fpreal64 &v)
1070  { is.bread<fpreal64>(&v, 1); }
1071  static void loadData(UT_IStream &is, UT_Vector2D &v)
1072  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1073  static void loadData(UT_IStream &is, UT_Vector3D &v)
1074  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1075  is.bread<fpreal64>(&v.z(), 1); }
1076  static void loadData(UT_IStream &is, UT_Vector4D &v)
1077  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1078  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1079  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1080  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1081  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1082  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1083  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1084  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1085  static void loadData(UT_IStream &is, UT_Vector2I &v)
1086  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1087  static void loadData(UT_IStream &is, UT_Vector3I &v)
1088  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1089  is.bread<int64>(&v.z(), 1); }
1090  static void loadData(UT_IStream &is, UT_Vector4I &v)
1091  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1092  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1094  { is.bread(v); }
1096  { UT_StringHolder rampdata;
1097  loadData(is, rampdata);
1098  if (rampdata.isstring())
1099  {
1100  v.reset(new UT_Ramp());
1101  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1102  v->load(istr);
1103  }
1104  else v.reset();
1105  }
1108  loadData(is, data);
1109  if (data.isstring())
1110  {
1111  // Find the data type.
1112  const char *colon = UT_StringWrap(data).findChar(':');
1113  if (colon)
1114  {
1115  int typelen = colon - data.buffer();
1117  type.strncpy(data.buffer(), typelen);
1118  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1119 
1120  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1121  }
1122  }
1123  else v.reset();
1124  }
1125 
1126  static void saveData(std::ostream &os, int64 v)
1127  { UTwrite(os, &v); }
1128  static void saveData(std::ostream &os, bool v)
1129  { int64 iv = v; UTwrite(os, &iv); }
1130  static void saveData(std::ostream &os, fpreal64 v)
1131  { UTwrite<fpreal64>(os, &v); }
1132  static void saveData(std::ostream &os, UT_Vector2D v)
1133  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1134  static void saveData(std::ostream &os, UT_Vector3D v)
1135  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1136  UTwrite<fpreal64>(os, &v.z()); }
1137  static void saveData(std::ostream &os, UT_Vector4D v)
1138  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1139  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1140  static void saveData(std::ostream &os, UT_Matrix2D v)
1142  static void saveData(std::ostream &os, UT_Matrix3D v)
1144  static void saveData(std::ostream &os, UT_Matrix4D v)
1146  static void saveData(std::ostream &os, UT_StringHolder s)
1147  { UT_StringWrap(s).saveBinary(os); }
1148  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1150  UT_OStringStream ostr;
1151  if (s) s->save(ostr);
1152  result = ostr.str();
1153  saveData(os, result);
1154  }
1155  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1157  UT_OStringStream ostr;
1158  if (s)
1159  {
1160  ostr << s->getDataTypeToken();
1161  ostr << ":";
1162  s->saveBinary(ostr);
1163  }
1164  result = ostr.str();
1165  saveData(os, result);
1166  }
1167 
1168 
1169  void save(std::ostream &os) const
1170  {
1171  int32 v = version();
1172  UTwrite(os, &v);
1173  saveData(os, myName);
1174  saveData(os, myXord);
1175  saveData(os, myRord);
1176  saveData(os, myT);
1177  saveData(os, myR);
1178  saveData(os, myP);
1179  saveData(os, myPr);
1180  saveData(os, myDolookat);
1181  saveData(os, myLookatposition);
1182  saveData(os, myUpvecmethod);
1183  saveData(os, myUpvec);
1184  saveData(os, myTwist);
1185  saveData(os, myRes);
1186  saveData(os, myResmenu);
1187  saveData(os, myProjection);
1188  saveData(os, myFocal);
1189  saveData(os, myAperture);
1190  saveData(os, myOrthowidth);
1191  saveData(os, myNearclip);
1192  saveData(os, myFarclip);
1193  saveData(os, myWin);
1194  saveData(os, myWinsize);
1195  saveData(os, myCropl);
1196  saveData(os, myCropr);
1197  saveData(os, myCropb);
1198  saveData(os, myCropt);
1199  saveData(os, myImgdist);
1200  saveData(os, myGuidescale);
1201  saveData(os, myShutteropen);
1202  saveData(os, myShutterclose);
1203  saveData(os, myFocus);
1204  saveData(os, myFstop);
1205  {
1206  int64 length = myEntries.entries();
1207  UTwrite(os, &length);
1208  for (exint i = 0; i < length; i++)
1209  {
1210  auto && _curentry = myEntries(i);
1211  (void) _curentry;
1212  saveData(os, _curentry.enable);
1213  saveData(os, _curentry.key);
1214  saveData(os, _curentry.type);
1215  saveData(os, _curentry.vals);
1216  saveData(os, _curentry.vali);
1217  saveData(os, _curentry.valf);
1218  saveData(os, _curentry.val2f);
1219  saveData(os, _curentry.val3f);
1220  saveData(os, _curentry.val4f);
1221 
1222  }
1223  }
1224 
1225  }
1226 
1227  bool load(UT_IStream &is)
1228  {
1229  int32 v;
1230  is.bread(&v, 1);
1231  if (version() != v)
1232  {
1233  // Fail incompatible versions
1234  return false;
1235  }
1236  loadData(is, myName);
1237  loadData(is, myXord);
1238  loadData(is, myRord);
1239  loadData(is, myT);
1240  loadData(is, myR);
1241  loadData(is, myP);
1242  loadData(is, myPr);
1243  loadData(is, myDolookat);
1244  loadData(is, myLookatposition);
1245  loadData(is, myUpvecmethod);
1246  loadData(is, myUpvec);
1247  loadData(is, myTwist);
1248  loadData(is, myRes);
1249  loadData(is, myResmenu);
1250  loadData(is, myProjection);
1251  loadData(is, myFocal);
1252  loadData(is, myAperture);
1253  loadData(is, myOrthowidth);
1254  loadData(is, myNearclip);
1255  loadData(is, myFarclip);
1256  loadData(is, myWin);
1257  loadData(is, myWinsize);
1258  loadData(is, myCropl);
1259  loadData(is, myCropr);
1260  loadData(is, myCropb);
1261  loadData(is, myCropt);
1262  loadData(is, myImgdist);
1263  loadData(is, myGuidescale);
1264  loadData(is, myShutteropen);
1265  loadData(is, myShutterclose);
1266  loadData(is, myFocus);
1267  loadData(is, myFstop);
1268  {
1269  int64 length;
1270  is.read(&length, 1);
1271  myEntries.setSize(length);
1272  for (exint i = 0; i < length; i++)
1273  {
1274  auto && _curentry = myEntries(i);
1275  (void) _curentry;
1276  loadData(is, _curentry.enable);
1277  loadData(is, _curentry.key);
1278  loadData(is, _curentry.type);
1279  loadData(is, _curentry.vals);
1280  loadData(is, _curentry.vali);
1281  loadData(is, _curentry.valf);
1282  loadData(is, _curentry.val2f);
1283  loadData(is, _curentry.val3f);
1284  loadData(is, _curentry.val4f);
1285 
1286  }
1287  }
1288 
1289  return true;
1290  }
1291 
1292  const UT_StringHolder & getName() const { return myName; }
1293  void setName(const UT_StringHolder & val) { myName = val; }
1295  {
1296  SOP_Node *thissop = cookparms.getNode();
1297  if (!thissop) return getName();
1299  OP_Utils::evalOpParm(result, thissop, "name", cookparms.getCookTime(), 0);
1300  return result;
1301  }
1302  Xord getXord() const { return Xord(myXord); }
1303  void setXord(Xord val) { myXord = int64(val); }
1304  Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
1305  {
1306  SOP_Node *thissop = cookparms.getNode();
1307  if (!thissop) return getXord();
1308  int64 result;
1309  OP_Utils::evalOpParm(result, thissop, "xOrd", cookparms.getCookTime(), 0);
1310  return Xord(result);
1311  }
1312  Rord getRord() const { return Rord(myRord); }
1313  void setRord(Rord val) { myRord = int64(val); }
1314  Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
1315  {
1316  SOP_Node *thissop = cookparms.getNode();
1317  if (!thissop) return getRord();
1318  int64 result;
1319  OP_Utils::evalOpParm(result, thissop, "rOrd", cookparms.getCookTime(), 0);
1320  return Rord(result);
1321  }
1322  UT_Vector3D getT() const { return myT; }
1323  void setT(UT_Vector3D val) { myT = val; }
1324  UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
1325  {
1326  SOP_Node *thissop = cookparms.getNode();
1327  if (!thissop) return getT();
1329  OP_Utils::evalOpParm(result, thissop, "t", cookparms.getCookTime(), 0);
1330  return result;
1331  }
1332  UT_Vector3D getR() const { return myR; }
1333  void setR(UT_Vector3D val) { myR = val; }
1334  UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
1335  {
1336  SOP_Node *thissop = cookparms.getNode();
1337  if (!thissop) return getR();
1339  OP_Utils::evalOpParm(result, thissop, "r", cookparms.getCookTime(), 0);
1340  return result;
1341  }
1342  UT_Vector3D getP() const { return myP; }
1343  void setP(UT_Vector3D val) { myP = val; }
1344  UT_Vector3D opP(const SOP_NodeVerb::CookParms &cookparms) const
1345  {
1346  SOP_Node *thissop = cookparms.getNode();
1347  if (!thissop) return getP();
1349  OP_Utils::evalOpParm(result, thissop, "p", cookparms.getCookTime(), 0);
1350  return result;
1351  }
1352  UT_Vector3D getPr() const { return myPr; }
1353  void setPr(UT_Vector3D val) { myPr = val; }
1354  UT_Vector3D opPr(const SOP_NodeVerb::CookParms &cookparms) const
1355  {
1356  SOP_Node *thissop = cookparms.getNode();
1357  if (!thissop) return getPr();
1359  OP_Utils::evalOpParm(result, thissop, "pr", cookparms.getCookTime(), 0);
1360  return result;
1361  }
1362  bool getDolookat() const { return myDolookat; }
1363  void setDolookat(bool val) { myDolookat = val; }
1364  bool opDolookat(const SOP_NodeVerb::CookParms &cookparms) const
1365  {
1366  SOP_Node *thissop = cookparms.getNode();
1367  if (!thissop) return getDolookat();
1368  bool result;
1369  OP_Utils::evalOpParm(result, thissop, "dolookat", cookparms.getCookTime(), 0);
1370  return result;
1371  }
1372  UT_Vector3D getLookatposition() const { return myLookatposition; }
1373  void setLookatposition(UT_Vector3D val) { myLookatposition = val; }
1375  {
1376  SOP_Node *thissop = cookparms.getNode();
1377  if (!thissop) return getLookatposition();
1379  OP_Utils::evalOpParm(result, thissop, "lookatposition", cookparms.getCookTime(), 0);
1380  return result;
1381  }
1382  Upvecmethod getUpvecmethod() const { return Upvecmethod(myUpvecmethod); }
1383  void setUpvecmethod(Upvecmethod val) { myUpvecmethod = int64(val); }
1385  {
1386  SOP_Node *thissop = cookparms.getNode();
1387  if (!thissop) return getUpvecmethod();
1388  int64 result;
1389  OP_Utils::evalOpParm(result, thissop, "upvecmethod", cookparms.getCookTime(), 0);
1390  return Upvecmethod(result);
1391  }
1392  UT_Vector3D getUpvec() const { return myUpvec; }
1393  void setUpvec(UT_Vector3D val) { myUpvec = val; }
1395  {
1396  SOP_Node *thissop = cookparms.getNode();
1397  if (!thissop) return getUpvec();
1399  OP_Utils::evalOpParm(result, thissop, "upvec", cookparms.getCookTime(), 0);
1400  return result;
1401  }
1402  fpreal64 getTwist() const { return myTwist; }
1403  void setTwist(fpreal64 val) { myTwist = val; }
1404  fpreal64 opTwist(const SOP_NodeVerb::CookParms &cookparms) const
1405  {
1406  SOP_Node *thissop = cookparms.getNode();
1407  if (!thissop) return getTwist();
1408  fpreal64 result;
1409  OP_Utils::evalOpParm(result, thissop, "twist", cookparms.getCookTime(), 0);
1410  return result;
1411  }
1412  UT_Vector2I getRes() const { return myRes; }
1413  void setRes(UT_Vector2I val) { myRes = val; }
1415  {
1416  SOP_Node *thissop = cookparms.getNode();
1417  if (!thissop) return getRes();
1419  OP_Utils::evalOpParm(result, thissop, "res", cookparms.getCookTime(), 0);
1420  return result;
1421  }
1422  int64 getResmenu() const { return myResmenu; }
1423  void setResmenu(int64 val) { myResmenu = val; }
1424  int64 opResmenu(const SOP_NodeVerb::CookParms &cookparms) const
1425  {
1426  SOP_Node *thissop = cookparms.getNode();
1427  if (!thissop) return getResmenu();
1428  int64 result;
1429  OP_Utils::evalOpParm(result, thissop, "resmenu", cookparms.getCookTime(), 0);
1430  return result;
1431  }
1432  Projection getProjection() const { return Projection(myProjection); }
1433  void setProjection(Projection val) { myProjection = int64(val); }
1435  {
1436  SOP_Node *thissop = cookparms.getNode();
1437  if (!thissop) return getProjection();
1438  int64 result;
1439  OP_Utils::evalOpParm(result, thissop, "projection", cookparms.getCookTime(), 0);
1440  return Projection(result);
1441  }
1442  fpreal64 getFocal() const { return myFocal; }
1443  void setFocal(fpreal64 val) { myFocal = val; }
1444  fpreal64 opFocal(const SOP_NodeVerb::CookParms &cookparms) const
1445  {
1446  SOP_Node *thissop = cookparms.getNode();
1447  if (!thissop) return getFocal();
1448  fpreal64 result;
1449  OP_Utils::evalOpParm(result, thissop, "focal", cookparms.getCookTime(), 0);
1450  return result;
1451  }
1452  fpreal64 getAperture() const { return myAperture; }
1453  void setAperture(fpreal64 val) { myAperture = val; }
1455  {
1456  SOP_Node *thissop = cookparms.getNode();
1457  if (!thissop) return getAperture();
1458  fpreal64 result;
1459  OP_Utils::evalOpParm(result, thissop, "aperture", cookparms.getCookTime(), 0);
1460  return result;
1461  }
1462  fpreal64 getOrthowidth() const { return myOrthowidth; }
1463  void setOrthowidth(fpreal64 val) { myOrthowidth = val; }
1465  {
1466  SOP_Node *thissop = cookparms.getNode();
1467  if (!thissop) return getOrthowidth();
1468  fpreal64 result;
1469  OP_Utils::evalOpParm(result, thissop, "orthowidth", cookparms.getCookTime(), 0);
1470  return result;
1471  }
1472  fpreal64 getNearclip() const { return myNearclip; }
1473  void setNearclip(fpreal64 val) { myNearclip = val; }
1475  {
1476  SOP_Node *thissop = cookparms.getNode();
1477  if (!thissop) return getNearclip();
1478  fpreal64 result;
1479  OP_Utils::evalOpParm(result, thissop, "nearclip", cookparms.getCookTime(), 0);
1480  return result;
1481  }
1482  fpreal64 getFarclip() const { return myFarclip; }
1483  void setFarclip(fpreal64 val) { myFarclip = val; }
1485  {
1486  SOP_Node *thissop = cookparms.getNode();
1487  if (!thissop) return getFarclip();
1488  fpreal64 result;
1489  OP_Utils::evalOpParm(result, thissop, "farclip", cookparms.getCookTime(), 0);
1490  return result;
1491  }
1492  UT_Vector2D getWin() const { return myWin; }
1493  void setWin(UT_Vector2D val) { myWin = val; }
1495  {
1496  SOP_Node *thissop = cookparms.getNode();
1497  if (!thissop) return getWin();
1499  OP_Utils::evalOpParm(result, thissop, "win", cookparms.getCookTime(), 0);
1500  return result;
1501  }
1502  UT_Vector2D getWinsize() const { return myWinsize; }
1503  void setWinsize(UT_Vector2D val) { myWinsize = val; }
1505  {
1506  SOP_Node *thissop = cookparms.getNode();
1507  if (!thissop) return getWinsize();
1509  OP_Utils::evalOpParm(result, thissop, "winsize", cookparms.getCookTime(), 0);
1510  return result;
1511  }
1512  fpreal64 getCropl() const { return myCropl; }
1513  void setCropl(fpreal64 val) { myCropl = val; }
1514  fpreal64 opCropl(const SOP_NodeVerb::CookParms &cookparms) const
1515  {
1516  SOP_Node *thissop = cookparms.getNode();
1517  if (!thissop) return getCropl();
1518  fpreal64 result;
1519  OP_Utils::evalOpParm(result, thissop, "cropl", cookparms.getCookTime(), 0);
1520  return result;
1521  }
1522  fpreal64 getCropr() const { return myCropr; }
1523  void setCropr(fpreal64 val) { myCropr = val; }
1524  fpreal64 opCropr(const SOP_NodeVerb::CookParms &cookparms) const
1525  {
1526  SOP_Node *thissop = cookparms.getNode();
1527  if (!thissop) return getCropr();
1528  fpreal64 result;
1529  OP_Utils::evalOpParm(result, thissop, "cropr", cookparms.getCookTime(), 0);
1530  return result;
1531  }
1532  fpreal64 getCropb() const { return myCropb; }
1533  void setCropb(fpreal64 val) { myCropb = val; }
1534  fpreal64 opCropb(const SOP_NodeVerb::CookParms &cookparms) const
1535  {
1536  SOP_Node *thissop = cookparms.getNode();
1537  if (!thissop) return getCropb();
1538  fpreal64 result;
1539  OP_Utils::evalOpParm(result, thissop, "cropb", cookparms.getCookTime(), 0);
1540  return result;
1541  }
1542  fpreal64 getCropt() const { return myCropt; }
1543  void setCropt(fpreal64 val) { myCropt = val; }
1544  fpreal64 opCropt(const SOP_NodeVerb::CookParms &cookparms) const
1545  {
1546  SOP_Node *thissop = cookparms.getNode();
1547  if (!thissop) return getCropt();
1548  fpreal64 result;
1549  OP_Utils::evalOpParm(result, thissop, "cropt", cookparms.getCookTime(), 0);
1550  return result;
1551  }
1552  fpreal64 getImgdist() const { return myImgdist; }
1553  void setImgdist(fpreal64 val) { myImgdist = val; }
1555  {
1556  SOP_Node *thissop = cookparms.getNode();
1557  if (!thissop) return getImgdist();
1558  fpreal64 result;
1559  OP_Utils::evalOpParm(result, thissop, "imgdist", cookparms.getCookTime(), 0);
1560  return result;
1561  }
1562  fpreal64 getGuidescale() const { return myGuidescale; }
1563  void setGuidescale(fpreal64 val) { myGuidescale = val; }
1565  {
1566  SOP_Node *thissop = cookparms.getNode();
1567  if (!thissop) return getGuidescale();
1568  fpreal64 result;
1569  OP_Utils::evalOpParm(result, thissop, "guidescale", cookparms.getCookTime(), 0);
1570  return result;
1571  }
1572  fpreal64 getShutteropen() const { return myShutteropen; }
1573  void setShutteropen(fpreal64 val) { myShutteropen = val; }
1575  {
1576  SOP_Node *thissop = cookparms.getNode();
1577  if (!thissop) return getShutteropen();
1578  fpreal64 result;
1579  OP_Utils::evalOpParm(result, thissop, "shutteropen", cookparms.getCookTime(), 0);
1580  return result;
1581  }
1582  fpreal64 getShutterclose() const { return myShutterclose; }
1583  void setShutterclose(fpreal64 val) { myShutterclose = val; }
1585  {
1586  SOP_Node *thissop = cookparms.getNode();
1587  if (!thissop) return getShutterclose();
1588  fpreal64 result;
1589  OP_Utils::evalOpParm(result, thissop, "shutterclose", cookparms.getCookTime(), 0);
1590  return result;
1591  }
1592  fpreal64 getFocus() const { return myFocus; }
1593  void setFocus(fpreal64 val) { myFocus = val; }
1594  fpreal64 opFocus(const SOP_NodeVerb::CookParms &cookparms) const
1595  {
1596  SOP_Node *thissop = cookparms.getNode();
1597  if (!thissop) return getFocus();
1598  fpreal64 result;
1599  OP_Utils::evalOpParm(result, thissop, "focus", cookparms.getCookTime(), 0);
1600  return result;
1601  }
1602  fpreal64 getFstop() const { return myFstop; }
1603  void setFstop(fpreal64 val) { myFstop = val; }
1604  fpreal64 opFstop(const SOP_NodeVerb::CookParms &cookparms) const
1605  {
1606  SOP_Node *thissop = cookparms.getNode();
1607  if (!thissop) return getFstop();
1608  fpreal64 result;
1609  OP_Utils::evalOpParm(result, thissop, "fstop", cookparms.getCookTime(), 0);
1610  return result;
1611  }
1612  const UT_Array<Entries> &getEntries() const { return myEntries; }
1613 void setEntries(const UT_Array<Entries> &val) { myEntries = val; }
1614  exint opEntries(const SOP_NodeVerb::CookParms &cookparms) const
1615  {
1616  SOP_Node *thissop = cookparms.getNode();
1617  if (!thissop) return getEntries().entries();
1618  exint result;
1619  OP_Utils::evalOpParm(result, thissop, "entries", cookparms.getCookTime(), 0);
1620  return result;
1621  }
1622  bool opEntries_enable(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1623  { return opinstEntries_enable(cookparms, &_idx); }
1624  bool opinstEntries_enable(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1625  {
1626  SOP_Node *thissop = cookparms.getNode();
1627  if (!thissop) return (myEntries(_idx[0]).enable);
1628  int _parmidx[2-1];
1629  _parmidx[1-1] = _idx[1-1] + 1;
1630 
1631  bool result;
1632  OP_Utils::evalOpParmInst(result, thissop, "enable#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1633  return (result);
1634  }
1635  UT_StringHolder opEntries_key(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1636  { return opinstEntries_key(cookparms, &_idx); }
1637  UT_StringHolder opinstEntries_key(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1638  {
1639  SOP_Node *thissop = cookparms.getNode();
1640  if (!thissop) return (myEntries(_idx[0]).key);
1641  int _parmidx[2-1];
1642  _parmidx[1-1] = _idx[1-1] + 1;
1643 
1645  OP_Utils::evalOpParmInst(result, thissop, "key#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1646  return (result);
1647  }
1648  int64 opEntries_type(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1649  { return opinstEntries_type(cookparms, &_idx); }
1650  int64 opinstEntries_type(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1651  {
1652  SOP_Node *thissop = cookparms.getNode();
1653  if (!thissop) return (myEntries(_idx[0]).type);
1654  int _parmidx[2-1];
1655  _parmidx[1-1] = _idx[1-1] + 1;
1656 
1657  int64 result;
1658  OP_Utils::evalOpParmInst(result, thissop, "type#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1659  return (result);
1660  }
1661  UT_StringHolder opEntries_vals(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1662  { return opinstEntries_vals(cookparms, &_idx); }
1663  UT_StringHolder opinstEntries_vals(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1664  {
1665  SOP_Node *thissop = cookparms.getNode();
1666  if (!thissop) return (myEntries(_idx[0]).vals);
1667  int _parmidx[2-1];
1668  _parmidx[1-1] = _idx[1-1] + 1;
1669 
1671  OP_Utils::evalOpParmInst(result, thissop, "vals#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1672  return (result);
1673  }
1674  int64 opEntries_vali(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1675  { return opinstEntries_vali(cookparms, &_idx); }
1676  int64 opinstEntries_vali(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1677  {
1678  SOP_Node *thissop = cookparms.getNode();
1679  if (!thissop) return (myEntries(_idx[0]).vali);
1680  int _parmidx[2-1];
1681  _parmidx[1-1] = _idx[1-1] + 1;
1682 
1683  int64 result;
1684  OP_Utils::evalOpParmInst(result, thissop, "vali#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1685  return (result);
1686  }
1687  fpreal64 opEntries_valf(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1688  { return opinstEntries_valf(cookparms, &_idx); }
1689  fpreal64 opinstEntries_valf(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1690  {
1691  SOP_Node *thissop = cookparms.getNode();
1692  if (!thissop) return (myEntries(_idx[0]).valf);
1693  int _parmidx[2-1];
1694  _parmidx[1-1] = _idx[1-1] + 1;
1695 
1696  fpreal64 result;
1697  OP_Utils::evalOpParmInst(result, thissop, "valf#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1698  return (result);
1699  }
1700  UT_Vector2D opEntries_val2f(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1701  { return opinstEntries_val2f(cookparms, &_idx); }
1702  UT_Vector2D opinstEntries_val2f(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1703  {
1704  SOP_Node *thissop = cookparms.getNode();
1705  if (!thissop) return (myEntries(_idx[0]).val2f);
1706  int _parmidx[2-1];
1707  _parmidx[1-1] = _idx[1-1] + 1;
1708 
1710  OP_Utils::evalOpParmInst(result, thissop, "val2f#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1711  return (result);
1712  }
1713  UT_Vector3D opEntries_val3f(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1714  { return opinstEntries_val3f(cookparms, &_idx); }
1715  UT_Vector3D opinstEntries_val3f(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1716  {
1717  SOP_Node *thissop = cookparms.getNode();
1718  if (!thissop) return (myEntries(_idx[0]).val3f);
1719  int _parmidx[2-1];
1720  _parmidx[1-1] = _idx[1-1] + 1;
1721 
1723  OP_Utils::evalOpParmInst(result, thissop, "val3f#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1724  return (result);
1725  }
1726  UT_Vector4D opEntries_val4f(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
1727  { return opinstEntries_val4f(cookparms, &_idx); }
1728  UT_Vector4D opinstEntries_val4f(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
1729  {
1730  SOP_Node *thissop = cookparms.getNode();
1731  if (!thissop) return (myEntries(_idx[0]).val4f);
1732  int _parmidx[2-1];
1733  _parmidx[1-1] = _idx[1-1] + 1;
1734 
1736  OP_Utils::evalOpParmInst(result, thissop, "val4f#", _parmidx, cookparms.getCookTime(), 0, 2-1);
1737  return (result);
1738  }
1739 
1740 
1741 private:
1742  UT_StringHolder myName;
1743  int64 myXord;
1744  int64 myRord;
1745  UT_Vector3D myT;
1746  UT_Vector3D myR;
1747  UT_Vector3D myP;
1748  UT_Vector3D myPr;
1749  bool myDolookat;
1750  UT_Vector3D myLookatposition;
1751  int64 myUpvecmethod;
1752  UT_Vector3D myUpvec;
1753  fpreal64 myTwist;
1754  UT_Vector2I myRes;
1755  int64 myResmenu;
1756  int64 myProjection;
1757  fpreal64 myFocal;
1758  fpreal64 myAperture;
1759  fpreal64 myOrthowidth;
1760  fpreal64 myNearclip;
1761  fpreal64 myFarclip;
1762  UT_Vector2D myWin;
1763  UT_Vector2D myWinsize;
1764  fpreal64 myCropl;
1765  fpreal64 myCropr;
1766  fpreal64 myCropb;
1767  fpreal64 myCropt;
1768  fpreal64 myImgdist;
1769  fpreal64 myGuidescale;
1770  fpreal64 myShutteropen;
1771  fpreal64 myShutterclose;
1772  fpreal64 myFocus;
1773  fpreal64 myFstop;
1774  UT_Array<Entries> myEntries;
1775 
1776 };
static void loadData(UT_IStream &is, UT_StringHolder &v)
fpreal64 opGuidescale(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:556
static void loadData(UT_IStream &is, bool &v)
fpreal64 getShutterclose() const
void setEntries(const UT_Array< Entries > &val)
fpreal64 opinstEntries_valf(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
bool operator==(const SOP_CameraParms &src) const
int64 opinstEntries_vali(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
UT_StringHolder createString(const UT_Array< Entries > &list) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:403
const UT_Array< Entries > & getEntries() const
fpreal64 getNearclip() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
UT_Vector3D getLookatposition() const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
UT_Vector3D getP() const
void setUpvec(UT_Vector3D val)
fpreal64 getCropt() const
void
Definition: png.h:1083
int64 opEntries_vali(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GLboolean * data
Definition: glcorearb.h:131
fpreal64 opTwist(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder time
fpreal64 getCropr() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:495
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
UT_Vector2D opinstEntries_val2f(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
Projection getProjection() const
UT_Vector2T< fpreal64 > UT_Vector2D
fpreal64 opShutteropen(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
bool load(UT_IStream &is)
UT_Vector2D opWinsize(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getFocus() const
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
const OP_Context & context() const
Definition: OP_NodeParms.h:105
UT_Vector2I getRes() const
void loadFromOpSubclass(const LoadParms &loadparms) override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:669
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
Upvecmethod getUpvecmethod() const
fpreal64 opShutterclose(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
GLdouble s
Definition: glad.h:3009
fpreal64 opFarclip(const SOP_NodeVerb::CookParms &cookparms) const
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
static void saveData(std::ostream &os, bool v)
An output stream object that owns its own string buffer storage.
void setName(const UT_StringHolder &val)
void setRord(Rord val)
static void saveData(std::ostream &os, int64 v)
fpreal64 getFarclip() const
**But if you need a result
Definition: thread.h:622
void setShutterclose(fpreal64 val)
void setCropl(fpreal64 val)
Projection opProjection(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
const char * getNestParmName(TempIndex fieldnum) const override
exint nodeIdx() const
Definition: OP_NodeParms.h:103
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
UT_Vector2D opEntries_val2f(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
fpreal64 opNearclip(const SOP_NodeVerb::CookParms &cookparms) const
void setFocus(fpreal64 val)
void setLookatposition(UT_Vector3D val)
bool getDolookat() const
fpreal64 opCropr(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opCropb(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getUpvec() const
UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:493
UT_Vector4D opinstEntries_val4f(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
const UT_StringHolder & getName() const
ParmType getNestParmType(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:426
UT_Vector3D opEntries_val3f(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setCropr(fpreal64 val)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
bool opinstEntries_enable(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, UT_Vector3D v)
void save(std::ostream &os) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setTwist(fpreal64 val)
void setPr(UT_Vector3D val)
fpreal64 getOrthowidth() const
UT_Vector3D opLookatposition(const SOP_NodeVerb::CookParms &cookparms) const
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:108
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setDolookat(bool val)
UT_Vector3D getPr() const
fpreal64 opFocal(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
static void saveData(std::ostream &os, fpreal64 v)
exint length() const
void setWinsize(UT_Vector2D val)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
int64 opinstEntries_type(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:497
fpreal64 opOrthowidth(const SOP_NodeVerb::CookParms &cookparms) const
void setOrthowidth(fpreal64 val)
PXL_API const char * getName(const ColorSpace *space)
Return the name of the color space.
UT_Vector3D opPr(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
UT_StringHolder opName(const SOP_NodeVerb::CookParms &cookparms) const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:271
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:102
static void loadData(UT_IStream &is, UT_Matrix3D &v)
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
bool isParmColorRamp(exint idx) const override
Rord getRord() const
fpreal64 opCropt(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opEntries_valf(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
UT_Vector4D opEntries_val4f(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setP(UT_Vector3D val)
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
long long int64
Definition: SYS_Types.h:116
void setRes(UT_Vector2I val)
fpreal64 getFstop() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
UT_Vector3T< fpreal64 > UT_Vector3D
UT_Vector2D opWin(const SOP_NodeVerb::CookParms &cookparms) const
Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getImgdist() const
void setProjection(Projection val)
UT_StringHolder opinstEntries_vals(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool operator!=(const Entries &src) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setR(UT_Vector3D val)
fpreal64 opFocus(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strcat(const char *src)
fpreal64 getGuidescale() const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:306
UT_StringHolder opEntries_vals(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setNearclip(fpreal64 val)
exint opEntries(const SOP_NodeVerb::CookParms &cookparms) const
Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
static void saveData(std::ostream &os, UT_Matrix2D v)
static void loadData(UT_IStream &is, UT_Vector2I &v)
SYS_FORCE_INLINE UT_StringHolder getToken(Xord enum_value)
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:669
void setGuidescale(fpreal64 val)
static void loadData(UT_IStream &is, int64 &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_StringHolder opEntries_key(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
fpreal64 opAperture(const SOP_NodeVerb::CookParms &cookparms) const
void setFocal(fpreal64 val)
int64 opEntries_type(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setImgdist(fpreal64 val)
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
UT_Vector3D opinstEntries_val3f(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
static void saveData(std::ostream &os, UT_Vector4D v)
void setAperture(fpreal64 val)
UT_Vector3D getR() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
exint getNestNumParms(TempIndex idx) const override
fpreal64 fpreal
Definition: SYS_Types.h:283
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:107
void setT(UT_Vector3D val)
static int version()
LeafData & operator=(const LeafData &)=delete
static void saveData(std::ostream &os, PRM_DataItemHandle s)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
fpreal64 getTwist() const
bool operator==(const Entries &src) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
fpreal64 getCropb() const
static void saveData(std::ostream &os, UT_Vector2D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:499
SYS_FORCE_INLINE void append(char character)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
GLuint GLfloat * val
Definition: glcorearb.h:1608
UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getWin() const
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:302
int64 getResmenu() const
bool opDolookat(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
UT_Vector3D opUpvec(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_StringHolder s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void setCropt(fpreal64 val)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
bool operator!=(const SOP_CameraParms &src) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:432
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
fpreal64 opCropl(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2I opRes(const SOP_NodeVerb::CookParms &cookparms) const
Upvecmethod opUpvecmethod(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1421
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:165
void setWin(UT_Vector2D val)
static void saveData(std::ostream &os, UT_Matrix3D v)
GLboolean r
Definition: glcorearb.h:1222
void setUpvecmethod(Upvecmethod val)
exint bread(uint8 *buffer, exint asize=1)
UT_Vector3D getT() const
UT_StringHolder opinstEntries_key(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setFstop(fpreal64 val)
void setResmenu(int64 val)
UT_Vector4T< fpreal64 > UT_Vector4D
void copyFrom(const OP_NodeParms *src) override
UT_Vector2D getWinsize() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:667
fpreal64 getCropl() const
void setShutteropen(fpreal64 val)
fpreal64 getAperture() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
void setFarclip(fpreal64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
bool opEntries_enable(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
fpreal64 getFocal() const
void setXord(Xord val)
Xord getXord() const
fpreal64 opImgdist(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:428
fpreal64 getShutteropen() const
SYS_FORCE_INLINE bool isstring() const
void setCropb(fpreal64 val)
fpreal64 opFstop(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
static void loadData(UT_IStream &is, fpreal64 &v)
int64 opResmenu(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opP(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:665