HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_CaptureLayerPaint.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  * NAME: SOP Library (C++)
7  *
8  * COMMENTS: The CaptureLayerPaint SOP, which works in conjunction with the
9  * CaptureLayerPaint State and the GDT classes.
10  *
11  */
12 
13 #ifndef __SOP_CaptureLayerPaint_h__
14 #define __SOP_CaptureLayerPaint_h__
15 
16 #include "SOP_API.h"
17 #include <UT/UT_String.h>
18 #include <PRM/PRM_ChoiceList.h>
19 #include <PRM/PRM_Parm.h>
20 #include <GU/GU_Brush.h>
21 
22 #include "SOP_GDT.h"
23 #include "SOP_BrushBase.h"
24 #include "SOP_CaptureData.h"
25 #include "SOP_CaptureLayerData.h"
26 
27 class PRM_MenuEntry;
28 class PRM_Name;
29 //class PRM_Parm;
30 
31 enum {
32  // Group parameters
37 
39 
41 
42 #define SOP_CAPTURELAYERPAINT_NUM_DEFORM_PARMS (23)
68 
69 #define SOP_CAPTURELAYERPAINT_NUM_NIB_PARMS (20)
90 
91 #define SOP_CAPTURELAYERPAINT_NUM_SYM_PARMS (9)
101 
102 #define SOP_CAPTURELAYERPAINT_NUM_RAY_PARMS (13)
116 };
117 
119 {
120 public:
121  SOP_CaptureLayerPaint(OP_Network *net, const char *name, OP_Operator *entry);
122  ~SOP_CaptureLayerPaint() override;
123 
124  bool updateParmsFlags() override;
125 
126  static OP_Node *myConstructor(OP_Network *net,
127  const char *name,
128  OP_Operator *entry);
129  static OP_Operator* createOperator();
130 
131  static PRM_Template myTemplateList[];
132  static PRM_Template myObsoleteList[];
133 
135 
136  void setAccumulateStencil(bool) override {}
137 
138  void setRayOrigin(const UT_Vector3 &orig, fpreal t) override
139  {
143  }
145  fpreal t) override
146  {
150  }
151  void setHitPrimitive(int primidx, fpreal t) override
152  {
154  }
155  void setHitPoint(int pt, fpreal t) override
156  {
158  }
160  fpreal w, fpreal t) override
161  {
165  }
166  void setHitPressure(fpreal p, fpreal t) override
167  {
169  }
170  void setRadius(fpreal r, fpreal t) override
171  {
173  }
174  void setUVRadius(fpreal r, fpreal t) override
175  {
177  }
179  {
180  setInt(SOP_CAPTURELAYERPAINT_RAY_EVENT_IDX, 0, 0, int(event));
181  }
182  void setBrushOp(SOP_BrushOp op) override
183  {
184  int iop;
185  if (ABSOLUTEMODE())
186  {
187  switch (evalInt(SOP_CAPTURELAYERPAINT_OP_IDX, 0, 0))
188  {
189  case SOP_BRUSHOP_SCALE: iop = 1; break;
190  case SOP_BRUSHOP_SMOOTHLAYER: iop = 2; break;
191  case SOP_BRUSHOP_SMOOTHSINGLE: iop = 3; break;
192  case SOP_BRUSHOP_SMUDGE: iop = 4; break;
193  case SOP_BRUSHOP_REDUCE: iop = 5; break;
194  case SOP_BRUSHOP_EYEDROP: iop = 6; break;
195  default: iop = 0; break;
196  }
197  }
198  else
199  {
200  switch (evalInt(SOP_CAPTURELAYERPAINT_OP_IDX, 0, 0))
201  {
202  case SOP_BRUSHOP_SMOOTHATTRIB: iop = 1; break;
203  case SOP_BRUSHOP_SMOOTHLAYER: iop = 2; break;
204  case SOP_BRUSHOP_SMOOTHSINGLE: iop = 3; break;
205  case SOP_BRUSHOP_SMUDGE: iop = 4; break;
206  case SOP_BRUSHOP_REDUCE: iop = 5; break;
207  case SOP_BRUSHOP_ERASE: iop = 6; break;
208  case SOP_BRUSHOP_ERASESINGLE: iop = 7; break;
209  case SOP_BRUSHOP_EYEDROP: iop = 8; break;
210  default: iop = 0; break;
211  }
212  }
214  }
215  void setBrushShape(SOP_BrushShape shape) override
216  {
217  setInt(SOP_CAPTURELAYERPAINT_SHAPE_IDX, 0, 0, int(shape));
218  }
219  void setProjectionType(int projtype) override
220  {
222  }
223  void useForegroundColor() override { }
224  void useBackgroundColor() override { }
225  void setVisualization(bool state) override
226  {
227  // only trigger recooks if different!
228  if (myForceVisualize != state)
229  {
230  myForceVisualize = state;
231  forceRecook();
232  }
233  }
234 
235  bool getCurrentStencilColor(OP_Context &context, UT_Color &color);
236  bool getAccumulatedModifiedPoints(UT_IntArray &changed);
237 
238 protected:
240  bool changed_input,
241  bool changed_group) override;
242 
243  const char *inputLabel(unsigned idx) const override;
244  int isRefInput(unsigned idx) const override;
245 
246  void doErase() override;
247 
248  void updateCaptureWeight(int ptnum, const GU_Detail *pgdp,
249  float *alphas);
250 
252  int alone = 0) override;
253  void updateStencilMappings();
254  OP_ERROR migrateStencils();
255  OP_ERROR cookMySop(OP_Context &context) override;
256  void doVisualize(OP_Context &context, bool update_all);
257 
258  //
259  // I/O methods
260  //
261  OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags,
262  const char *path_prefix,
263  const UT_String &name_override = UT_String()
264  ) override;
265  bool load(UT_IStream &is, const char *extension,
266  const char *path) override;
267 
269  {
270  return getInput(1);
271  }
272 
273 public:
274  int altersGeometry() const override { return 0; }
275  int altersColor() const override { return 1; }
277  { return evalFloat(SOP_CAPTURELAYERPAINT_RAD_IDX, 0, t); }
279  { return evalFloat(SOP_CAPTURELAYERPAINT_UVRAD_IDX, 0, t); }
283  {
284  int op = evalInt(SOP_CAPTURELAYERPAINT_OP_IDX, 0, 0);
285  if (op >= 1 && op <= 3)
287  else
289  }
292 
293  SOP_BrushOp OP() override
294  {
295  return SOP_BRUSHOP_CALLBACK;
296  }
298  {
299  if (ABSOLUTEMODE())
300  {
301  switch (evalInt(SOP_CAPTURELAYERPAINT_OP_IDX, 0, 0))
302  {
303  case 1: return SOP_BRUSHOP_SCALE;
304  case 2: return SOP_BRUSHOP_SMOOTHLAYER;
305  case 3: return SOP_BRUSHOP_SMOOTHSINGLE;
306  case 4: return SOP_BRUSHOP_SMUDGE;
307  case 5: return SOP_BRUSHOP_REDUCE;
308  case 6: return SOP_BRUSHOP_EYEDROP;
309  case 7: return SOP_BRUSHOP_EYEDROP;
310  default: return SOP_BRUSHOP_PAINT;
311  }
312  }
313  else
314  {
315  switch (evalInt(SOP_CAPTURELAYERPAINT_OP_IDX, 0, 0))
316  {
317  case 1: return SOP_BRUSHOP_SMOOTHATTRIB;
318  case 2: return SOP_BRUSHOP_SMOOTHLAYER;
319  case 3: return SOP_BRUSHOP_SMOOTHSINGLE;
320  case 4: return SOP_BRUSHOP_SMUDGE;
321  case 5: return SOP_BRUSHOP_REDUCE;
322  case 6: return SOP_BRUSHOP_ERASE;
323  case 7: return SOP_BRUSHOP_ERASESINGLE;
324  case 8: return SOP_BRUSHOP_EYEDROP;
325  default: return SOP_BRUSHOP_PAINT;
326  }
327  }
328  }
329 
330  int ACCUMSTENCIL() override { return 0; }
331 
332  int PROJECTIONTYPE() override
334  int REALTIME() override
336  int SHAPE(fpreal t) override
337  { return evalInt(SOP_CAPTURELAYERPAINT_SHAPE_IDX, 0, t); }
338 
339 
340  void brushOpCallback(
341  fpreal t,
342  GA_Offset pt,
343  const UT_Array<GA_Offset> *ptneighbour,
344  GA_Offset vtx,
345  const UT_Array<GA_Offset> *vtxneighbour,
346  float alpha,
347  GEO_Delta *delta,
348  const GU_Detail *isectgdp) override;
349 
350  void flood(fpreal t) override;
351  static int flattenStatic(void *op, int, fpreal time,
352  const PRM_Template *);
353  void flatten(fpreal t);
354  void clearAllDeltas(fpreal t) override;
355  void applyUndo(const SOP_CaptureLayerData &delta,
356  const UT_String &rootpath,
357  const UT_StringArray &mapping);
358  void applyRedo(const SOP_CaptureLayerData &delta,
359  const UT_String &rootpath,
360  const UT_StringArray &mapping);
361  int getIsectNodeId() const override
363  static int toggleAbsoluteStatic(void *op, int, fpreal time,
364  const PRM_Template *);
365  void toggleAbsolute(fpreal t);
366 
368  { return myCaptureType; }
369 
370 protected:
371  void applyDelta(const SOP_CaptureLayerData &delta,
372  const UT_String &rootpath,
373  const UT_StringArray &mapping, bool is_add);
374  int getNumStencils();
375  float getStencilValue(int snum, int ptnum);
376  void setStencilValue(int snum, int ptnum, float value);
377 
378  void createTempLayer();
379  void postOperation();
380 
381  void setupForUndo();
382  void saveUndo();
383 
384  const GA_PointGroup *getPointGroup() override
385  {
386  return myPointGroup;
387  }
388  bool isGroupParmDirty(OP_Context &context) override;
389 
390  int GRPTYPE()
391  { return evalInt(SOP_CAPTURELAYERPAINT_GRPTYPE_IDX, 0, 0); }
392 
394  {
396  if ( type == 3 )
398  else
399  return static_cast<GEO_Detail::CaptureType>(type);
400  }
401 
402  int MERGEMODE() override { return 0; }
403  void SCRIPT(UT_String &, fpreal) override {}
404  int AXIS() override { return 0 ; }
405  fpreal USERX(fpreal) override { return 0.0; }
406  fpreal USERY(fpreal) override { return 0.0; }
407  fpreal USERZ(fpreal) override { return 0.0; }
408 
415  fpreal RAYHITX(fpreal t) override
417  fpreal RAYHITY(fpreal t) override
419  fpreal RAYHITZ(fpreal t) override
421  fpreal RAYHITU(fpreal t) override
423  fpreal RAYHITV(fpreal t) override
425  fpreal RAYHITW(fpreal t) override
429  int PRIMHIT(fpreal t) override
431  int PTHIT(fpreal t) override
433  int EVENT() override
435  int HITINUV() override { return evalInt(SOP_CAPTURELAYERPAINT_RAY_HITINUV_IDX, 0, 0); }
440  bool USE_FOREGROUND() override { return true; }
441  fpreal FGR(fpreal) override { return 0.0; }
442  fpreal FGG(fpreal) override { return 0.0; }
443  fpreal FGB(fpreal) override { return 0.0; }
444  fpreal BGR(fpreal) override { return 0.0; }
445  fpreal BGG(fpreal) override { return 0.0; }
446  fpreal BGB(fpreal) override { return 0.0; }
449  void KERNEL(UT_String &str, fpreal t) override
451  int UPTYPE(fpreal t) override
452  { return evalInt(SOP_CAPTURELAYERPAINT_UPTYPE_IDX, 0, t); }
453  fpreal UPX(fpreal t) override
455  fpreal UPY(fpreal t) override
457  fpreal UPZ(fpreal t) override
459 
461  { return evalFloat(SOP_CAPTURELAYERPAINT_PAPER_IDX, 0, t); }
464  void BITMAP(UT_String &str, fpreal t) override
466  int BITMAPCHAN(fpreal t) override
468  fpreal ANGLE(fpreal t) override
469  { return evalFloat(SOP_CAPTURELAYERPAINT_ANGLE_IDX, 0, t); }
470  fpreal SQUASH(fpreal t) override
472  int DOSTAMPING() override { return 0; }
473  int WRITEALPHA() override { return 0; }
474 
475  int OVERRIDECD() override { return 1; }
476  void CDNAME(UT_String & /*str*/, fpreal /*t*/) override{ }
477  int OVERRIDEALPHA() override { return 0; }
478  void ALPHANAME(UT_String & /*str*/, fpreal /*t*/) override {}
479  int OVERRIDENML() override { return 0; }
480  void NMLNAME(UT_String & /*str*/, fpreal /*t*/) override {}
481 
494  int DOREFLECTION() override
496  int DOROTATION() override
498  int SYMMETRYROT(fpreal t) override
499  { return evalInt(SOP_CAPTURELAYERPAINT_SYMROT_IDX,0, t); }
502 
503  int DOUVREFLECTION() override
511 
512  int ADDATTRIB() override { return 0; }
513  void UVATTRIBNAME(UT_String &uvattribname, fpreal t) override
514  { evalString(uvattribname, SOP_CAPTURELAYERPAINT_UVATTRIB_IDX, 0, t); }
516  { return myForceVisualize || evalInt(SOP_CAPTURELAYERPAINT_VISUALIZE_IDX, 0, 0) ||
518  int VISLAYER()
520  int VISTYPE() override
521  { return evalInt(SOP_CAPTURELAYERPAINT_VISTYPE_IDX, 0, 0); }
522  int VISMODE() override
523  { return evalInt(SOP_CAPTURELAYERPAINT_VISMODE_IDX, 0, 0); }
524  int USECAPTURE() override { return 1; }
525  void SKELROOT(UT_String &str)
527 public:
530 protected:
532  { return evalInt(SOP_CAPTURELAYERPAINT_PAINTMODE_IDX, 0, 0) == 1; }
535  int USECONNECTIVITY() override
537  int USENORMALS() override
539  int USEDEPTH() override
541  fpreal DEPTH(fpreal t) override
542  {
545  depth *= RAWRADIUS(t);
546  return depth;
547  }
548  fpreal HEIGHT(fpreal t) override
549  {
552  height *= RAWRADIUS(t);
553  return height;
554  }
560  { return evalInt(SOP_CAPTURELAYERPAINT_VISNORMALIZED_IDX, 0, 0) != 0; }
563 
564 
565  // Find out if the brush has moved or done anything to cause us to add its
566  // effect to the current gdp.
567  bool hasStrokeChanged(fpreal t) override;
568  bool hasStyleChanged(fpreal) override { return false; }
569 
570  // Find if the nib file has changed:
571  bool hasNibFileChanged(fpreal t) override;
572  bool hasAccumStencilChanged(fpreal) override { return false; }
573  bool hasNibLookChanged(fpreal t) override;
574  bool hasVisChanged(fpreal t);
575 
576  void buildOpDependencies() override;
577  void buildParmDependency(int parm_index) override;
578  void handleOpDependency(int referenced_op_id,
579  const OP_Dependency &op_dep,
580  OP_InterestType interest_type,
581  bool &need_cook,
582  const char *old_fullpath,
583  const char *old_cwd,
584  const char *old_chan_name) override;
585  // CaptureLayerPaint doesn't use it's GDT... This will suppress SOP_UndoGDT
586  // objects from being put on the undo stack
587  void applyAndClearCurrentDelta() override {}
588 
589 public:
590  // MSS_CaptureLayerPaintState uses this to build its capture region menu
591  // too
592  static void buildCaptureRegionMenu(
593  void *data, PRM_Name *menu_entries,
594  int num_entries, const PRM_SpareData *,
595  const PRM_Parm *);
596  static void buildLockRegionMenu(
597  void *data, PRM_Name *menu_entries,
598  int num_entries, const PRM_SpareData *,
599  const PRM_Parm *);
600  static void fillOpMenu(
601  void *data, PRM_Name *names, int size,
602  const PRM_SpareData *, const PRM_Parm *);
603 
604 private:
605  void updateStencilIndex();
606  void checkCaptureRegions(OP_Context &context);
607  bool checkPointCaptureRegion(OP_Context &context, const UT_String &path);
608 
609  int addCaptureRegion( const char *cregion_name );
610 
611  void clearStencils();
612  int findStencilForCaptureRegion(int cregion);
613  int getStencilForCaptureRegion(int cregion);
614  int addNewStencilForCaptureRegion(int cregion);
615  void addedStencilForCaptureRegion(int snum, int cregion);
616  static bool getRootPathCandidates(OP_Node &node, void *data);
617  bool isLockedRegion(int cregion)
618  { return cregion >= 0 && cregion < myLockedRegions.size() && myLockedRegions[cregion]; }
619 
620  bool boneCapture() const
621  { return myCaptureType == GEO_Detail::CAPTURE_BONE; }
622  bool metaCapture() const
623  { return myCaptureType == GEO_Detail::CAPTURE_META; }
624  bool wireCapture() const
625  { return myCaptureType == GEO_Detail::CAPTURE_WIRE; }
626  bool muscleCapture() const
627  { return myCaptureType == GEO_Detail::CAPTURE_MUSCLE; }
628 
629  bool filterForCurrentStencilIndex(UT_IntArray &regions,
630  UT_FloatArray &weights);
631 
632  UT_String getCaptureRegionPath(int cregion);
633 
634 private:
635  UT_String myRootPath;
636 
637  static PRM_ChoiceList theCaptureRegionMenu;
638  static PRM_ChoiceList theLockRegionMenu;
639  static PRM_SpareData groupSelectSpareData;
640 
641  // stencil data and mapping to capture regions
642  SOP_CaptureLayerData myStencils;
643  UT_StringArray myStencilMapping;
644  UT_IntArray myCaptureRegionMapping;
645  UT_IntArray myRegionToStencilMapping;
646  int myNullStencilIndex;
647 
648  // temporary structures needed for smooth operation
649  SOP_CaptureLayerData *myTempSmoothLayer;
650  float *myTempSmoothAlpha;
651 
652  // current brush data
653  int myStencilIndex;
654  UT_BitArray myLockedRegions;
655  bool myOneHit;
656  UT_Matrix3 myBrushTransform;
657  UT_Vector3 myLastNml;
658  UT_Matrix3 myLastBrushTransform;
659  bool myAbsoluteMode;
660  bool myAbsoluteEntered;
661 
662  // data for undo
663  SOP_CaptureLayerData myDelta;
664  UT_String myOldRootPath;
665  UT_StringArray myOldStencilMapping;
666 
667  // list of what has been modified so we can do incremental cooks
668  UT_IntArray myModifiedPoints;
669  bool myLastVisualize;
670 
671  // cache of changes for downstream SOPs. it is an accumulation of
672  // myModifiedPoints.
673  UT_IntArray myAccumulatedModifiedPoints;
674  bool myHaveAccumulatedModifiedPoints;
675 
676  const GA_PointGroup *myPointGroup;
677  UT_String myPrimitiveClosureName;
678  UT_String myPointClosureName;
679  bool myAddWarningFlag;
680  bool myFlattenFlag;
681 
682  // temporary data for migrating from houdini 6.6
683  bool myMigrationNeeded;
684  UT_String myTestCregionName;
685  UT_IntArray myTestCregionCandidates;
686 
687  UT_String myLoadedRootPath;
688  UT_String myLoadedPathChanged;
689  UT_StringArray myLoadedStencilMapping;
690 
691  SOP_BrushOp myBrushOp;
692 
693  // The current type of capture attributes we're modifying.
694  GEO_Detail::CaptureType myCaptureType;
695 };
696 
697 #endif
fpreal BGB(fpreal) override
int BITMAPCHAN(fpreal t) override
fpreal SYMMETRYORIGY(fpreal t) override
virtual bool updateParmsFlags()
GLbitfield flags
Definition: glcorearb.h:1596
bool load(UT_IStream &is, const char *extension, const char *path=0) override
int SYMMETRYROT(fpreal t) override
GA_API const UT_StringHolder metaCapture
int PTHIT(fpreal t) override
fpreal SQUASH(fpreal t) override
void BITMAP(UT_String &str, fpreal t) override
fpreal RAWRADIUS(fpreal t) override
int PRIMHIT(fpreal t) override
fpreal SYMMETRYORIGX(fpreal t) override
fpreal PAPERNOISE(fpreal t) override
GT_API const UT_StringHolder time
void setRadius(fpreal r, fpreal t) override
const GLdouble * v
Definition: glcorearb.h:837
GA_API const UT_StringHolder boneCapture
fpreal RAYHITZ(fpreal t) override
fpreal BGG(fpreal) override
void applyAndClearCurrentDelta() override
const char * inputLabel(unsigned idx) const override
UT_Vector3T< float > UT_Vector3
fpreal RAYHITV(fpreal t) override
GLsizei const GLchar *const * path
Definition: glcorearb.h:3341
static PRM_SpareData * getGroupSelectButton(GA_GroupType group_type, const char *group_type_parm=NULL, int input_index=0, PRM_SpareData *merge_spare_data=NULL, const char *assoc_groups=NULL, GroupSelectAsOrdered ordered=GroupSelectAsOrdered::AUTO, const char *use_name_attr=nullptr, const char *select_script=nullptr)
int SHAPE(fpreal t) override
UT_Vector3 BRUSHDIR(fpreal t) override
void setHitPressure(fpreal p, fpreal t) override
fpreal DEPTH(fpreal t) override
GA_API const UT_StringHolder wireCapture
GA_API const UT_StringHolder muscleCapture
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
virtual void forceRecook(bool evensmartcache=true)
void setRayOrigin(const UT_Vector3 &orig, fpreal t) override
fpreal evalFloat(int pi, int vi, fpreal t) const
OP_ERROR cookMySop(OP_Context &context) override
virtual void handleOpDependency(int referenced_op_id, const OP_Dependency &op_dep, OP_InterestType interest_type, bool &need_cook, const char *old_fullpath, const char *old_cwd, const char *old_chan_name)
fpreal RAYORIENTY(fpreal t) override
UT_ErrorSeverity
Definition: UT_Error.h:25
void setHitUVW(fpreal u, fpreal v, fpreal w, fpreal t) override
fpreal ANGLE(fpreal t) override
fpreal RAYORIENTX(fpreal t) override
const GA_PointGroup * getPointGroup() override
ImageBuf OIIO_API flatten(const ImageBuf &src, ROI roi={}, int nthreads=0)
void setHitPoint(int pt, fpreal t) override
fpreal USERY(fpreal) override
fpreal RAYHITX(fpreal t) override
fpreal RAWUVRADIUS(fpreal t) override
fpreal RADIUSPRESSURE(fpreal t) override
fpreal SYMMETRYUVORIGU(fpreal t) override
void setBrushOp(SOP_BrushOp op) override
fpreal USERX(fpreal) override
struct _cl_event * event
Definition: glcorearb.h:2961
fpreal SYMMETRYDIRZ(fpreal t) override
GA_Size GA_Offset
Definition: GA_Types.h:641
fpreal FGB(fpreal) override
void SKELROOT(UT_String &str)
virtual bool hasNibFileChanged(fpreal t)=0
bool hasAccumStencilChanged(fpreal) override
GLint GLsizei GLsizei height
Definition: glcorearb.h:103
fpreal OPACITYPRESSURE(fpreal t) override
void CDNAME(UT_String &, fpreal) override
CaptureType
Methods for manipulating capture weights (GEO_CaptureWeight.C)
Definition: GEO_Detail.h:996
OP_InterestType
Definition: OP_DataTypes.h:44
void setAccumulateStencil(bool) override
void setProjectionType(int projtype) override
virtual fpreal RAWRADIUS(fpreal t)=0
bool hasStyleChanged(fpreal) override
void buildOpDependencies() override
fpreal SYMMETRYUVORIGV(fpreal t) override
void useBackgroundColor() override
void evalString(UT_String &val, int pi, int vi, fpreal t) const
virtual void flood(fpreal t)
fpreal FGG(fpreal) override
void KERNEL(UT_String &str, fpreal t) override
fpreal RAYORIENTZ(fpreal t) override
OP_Node * getInput(unsigned idx, bool mark_used=false) const
Returns the node connected to a particular input (may be null).
GLfloat GLfloat GLfloat alpha
Definition: glcorearb.h:112
SOP_BrushOp
Definition: SOP_BrushBase.h:39
fpreal USERZ(fpreal) override
virtual void doErase()=0
fpreal RAYHITW(fpreal t) override
void NMLNAME(UT_String &, fpreal) override
GEO_Detail::CaptureType getCaptureType() const
fpreal RAYHITPRESSURE(fpreal t) override
fpreal SOFTEDGE(fpreal t) override
GLuint const GLchar * name
Definition: glcorearb.h:786
int altersColor() const override
OP_ERROR cookInputGroups(OP_Context &context, int alone=0) override
fpreal HEIGHT(fpreal t) override
GA_API const UT_StringHolder orient
virtual void brushOpCallback(fpreal t, GA_Offset pt, const UT_Array< GA_Offset > *ptneighbour, GA_Offset vtx, const UT_Array< GA_Offset > *vtxneighbour, float alpha, GEO_Delta *delta, const GU_Detail *isectgdp)
fpreal SYMMETRYDIRY(fpreal t) override
void clearAllDeltas(fpreal t) override
GLdouble t
Definition: glad.h:2397
fpreal UPZ(fpreal t) override
GEO_Detail::CaptureType CAPTURETYPE() override
GLint GLint GLsizei GLsizei GLsizei depth
Definition: glcorearb.h:476
#define SOP_GDT_GRP_IDX
Definition: SOP_GDT.h:22
OP_ERROR save(std::ostream &os, const OP_SaveFlags &flags, const char *pathPrefix, const UT_String &name_override=UT_String()) override
fpreal UPX(fpreal t) override
void setBrushEvent(SOP_BrushEvent event) override
GLsizeiptr size
Definition: glcorearb.h:664
fpreal UPY(fpreal t) override
int getIsectNodeId() const override
void setBrushShape(SOP_BrushShape shape) override
fpreal BGR(fpreal) override
virtual bool hasStrokeChanged(fpreal t)=0
void setVisualization(bool state) override
virtual bool isGroupParmDirty(OP_Context &context)
fpreal SYMMETRYDIRX(fpreal t) override
GLuint color
Definition: glcorearb.h:1261
fpreal SYMMETRYUVANGLE(fpreal t) override
void setFloat(int parmi, int vectori, fpreal t, fpreal value, PRM_AddKeyType add_key=PRM_AK_MARK_PENDING)
fpreal64 fpreal
Definition: SYS_Types.h:277
void setInt(int parmi, int vectori, fpreal t, exint value)
SOP_BrushOp OP() override
fpreal FGR(fpreal) override
void setUVRadius(fpreal r, fpreal t) override
#define SOP_API
Definition: SOP_API.h:10
fpreal SYMMETRYDIST(fpreal t) override
virtual void buildParmDependency(int parm_index)
fpreal RAYHITU(fpreal t) override
fpreal RAWOPACITY(fpreal t) override
virtual OP_ERROR processBrushOp(OP_Context &context, bool changed_input, bool changed_group)
void CAPTUREREGION(UT_String &str)
GLubyte GLubyte GLubyte GLubyte w
Definition: glcorearb.h:857
virtual bool hasNibLookChanged(fpreal t)=0
Definition: core.h:1131
OP_Node * getRestGeoInput() override
void SELECTEDREGIONS(UT_String &str)
void ALPHANAME(UT_String &, fpreal) override
exint evalInt(int pi, int vi, fpreal t) const
void setHitPrimitive(int primidx, fpreal t) override
SOP_BrushEvent
Definition: SOP_BrushBase.h:31
GLboolean r
Definition: glcorearb.h:1222
SOP_BrushShape
Definition: SOP_BrushBase.h:65
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void useForegroundColor() override
void setRayOrientation(const UT_Vector3 &orient, fpreal t) override
void UVATTRIBNAME(UT_String &uvattribname, fpreal t) override
type
Definition: core.h:1059
int UPTYPE(fpreal t) override
virtual int isRefInput(unsigned idx) const
fpreal SPLATTER(fpreal t) override
fpreal RAYHITY(fpreal t) override
OIIO_UTIL_API std::string extension(string_view filepath, bool include_dot=true) noexcept
Definition: format.h:895
int altersGeometry() const override
fpreal SYMMETRYORIGZ(fpreal t) override
void SCRIPT(UT_String &, fpreal) override
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663