12 #ifndef __SOP_BrushBase_h__ 
   13 #define __SOP_BrushBase_h__ 
   81 #define SOP_BRUSH_NUM_PENS 2 
   93     virtual void setAccumulateStencil(
bool yesno) = 0;
 
   96     virtual void setHitPrimitive(
int primidx, 
fpreal t) = 0;
 
   99     virtual void setHitPressure(
fpreal pressure, 
fpreal t) = 0;
 
  107                 myUVAttribName = uvattribname;
 
  119     virtual void setProjectionType(
int projtype) = 0;
 
  120     virtual void useForegroundColor() = 0;
 
  121     virtual void useBackgroundColor() = 0;
 
  145         bool checkgeochange = 
false,
 
  146         bool probeonly = 
false);
 
  157     { 
return myGdpHandle.readLock(); }
 
  159     { myGdpHandle.unlock(detail); }
 
  174                                         float hitu, 
float hitv, 
float hitw);
 
  184     static int                   applyStencilStatic(
void *
op, 
int idx, 
fpreal t,
 
  186     void                         applyStencil(
fpreal t, 
int recook = 1);
 
  190     static int                   resetNormalStatic(
void *
op, 
int idx, 
fpreal t,
 
  192     void                         resetNormal(
fpreal t);
 
  196     static int                   floodStatic(
void *
op, 
int idx, 
fpreal t,
 
  198     virtual void                 flood(
fpreal t);
 
  204     static void                  customMergeModeStatic(
GA_Offset ptoff,
 
  216     static void         brushOpCallbackStatic(
 
  226     virtual void        brushOpCallback(
 
  237     bool                         hasStencil() 
const;
 
  239     virtual void                 setCurrentColor(
const UT_Vector3 &cd);
 
  242     void                         applyVisualizeStencil();
 
  243     void                         applyVisualize();
 
  244     void                         applyCaptureVisualize();
 
  248         return myIsectNodeId;
 
  252         myIsectNodeId = node_id;
 
  267     virtual void                 duplicateChangedSourceWrapper(
 
  282                                         bool changed_input, 
bool changed_group);
 
  284     void                         checkInputGroup(
const GU_Detail *isectgdp);
 
  300                                         const char *undoname) 
const override;
 
  307                                         int enablestamping = 1);
 
  308     virtual void                 doErase() = 0;
 
  316     virtual int          altersGeometry() 
const = 0;
 
  319     virtual int          altersColor() 
const = 0;
 
  343     virtual int          ACCUMSTENCIL()  = 0;
 
  344     virtual int          PROJECTIONTYPE() = 0;
 
  345     virtual int          REALTIME() = 0;
 
  346     virtual int          SHAPE(
fpreal t) = 0;
 
  348     virtual int          MERGEMODE() = 0;
 
  351     virtual int          AXIS() = 0;
 
  366     virtual int          PRIMHIT(
fpreal t) = 0;
 
  368     virtual int          EVENT()        = 0;
 
  372     virtual bool         USE_FOREGROUND() = 0;
 
  382     virtual int          UPTYPE(
fpreal t) = 0;
 
  390     virtual int          BITMAPCHAN(
fpreal t) = 0;
 
  393     virtual int          DOSTAMPING() = 0;
 
  394     virtual int          WRITEALPHA() = 0;
 
  395     virtual int          OVERRIDECD() = 0;
 
  397     virtual int          OVERRIDEALPHA() = 0;
 
  400     virtual int          OVERRIDENML() = 0;
 
  409     virtual int          DOREFLECTION() = 0;
 
  411     virtual int          DOROTATION() = 0;
 
  412     virtual int          SYMMETRYROT(
fpreal t) = 0;
 
  420     virtual int          ADDATTRIB() = 0;
 
  422     { uvattribname.
clear(); }
 
  424     { uvattribname = myUVAttribName; }
 
  443     virtual bool         hasStrokeChanged(
fpreal t) = 0;
 
  444     virtual bool         hasStyleChanged (
fpreal t) = 0;
 
  447     virtual bool         hasNibFileChanged(
fpreal t) = 0;
 
  450     virtual bool         hasNibLookChanged(
fpreal t) = 0;
 
  451     virtual bool         hasAccumStencilChanged(
fpreal t) = 0;
 
virtual void applyAndClearCurrentDelta()
 
SOP_BrushOp getCachedOp(int pen) const 
 
virtual void rollbackCurrentDelta()
Applies the inverse of myCurrentDelta to the gdp. 
 
virtual void applyPermanentDelta()
Applies myPermanentDelta to the gdp. 
 
virtual fpreal ZEROWEIGHTCOLOR_R()
 
GA_API const UT_StringHolder uv
 
void unlockPointTreeDetail(const GU_Detail *detail)
 
virtual bool matchesUndo(const char *undoname) const 
 
GDT_Detail myMirroredDelta
 
GA_Index myLastUVPrimitive
 
virtual void unloadDataHack()
Do not use this function! Using it will likely cause crashes. 
 
virtual int CAPTUREIDX(fpreal)
 
virtual void clearAllDeltas(fpreal t)
 
virtual int USECONNECTIVITY()
 
TIL_TextureMap * myNibFile
 
GU_RayIntersect * myRayIntersect
 
virtual void UVATTRIB(UT_String &uvattribname, fpreal t)
 
int64 myLastIsectGDPPrGrpId
 
virtual int PRESERVENML()
 
virtual GEO_Detail::CaptureType CAPTURETYPE()
 
**But if you need a result
 
UT_Vector3 myPendingLastUVPrimitiveUV
 
int64 myLastIsectGDPTopoId
 
virtual bool wantsCookSelection() const 
 
void clear()
Reset the string to the default constructor. 
 
exint GA_Size
Defines the bit width for index and offset types in GA. 
 
virtual int PTHIT(fpreal)
 
virtual bool hasCaptureIdxChanged(fpreal)
 
int64 myLastIsectGDPVisId
 
GU_Detail * myBrushCursor
 
GDT_MirrorTransform myMirrorTransform
 
virtual void rollbackCurrentDeltaElementsToInputValues()
 
CaptureType
Methods for manipulating capture weights (GEO_CaptureWeight.C) 
 
virtual void addEraseAttributes(GU_Brush &brush)
 
GA_Index myPendingLastUVPrimitive
 
#define SOP_BRUSH_NUM_PENS
 
virtual fpreal VISHIGH(fpreal)
 
static const UT_StringHolder theEmptyString
 
virtual fpreal ZEROWEIGHTCOLOR_B()
 
UT_Vector3 myLastUVPrimitiveUV
 
int64 myLastIsectGDPPrimId
 
virtual fpreal SYMMETRYUVORIGV(fpreal)
 
GLfloat GLfloat GLfloat alpha
 
virtual fpreal SYMMETRYUVANGLE(fpreal)
 
int64 myLastIsectGDPPtGrpId
 
virtual int NORMALIZEWEIGHT()
 
virtual void setHitPoint(int, fpreal)
 
GLuint const GLchar * name
 
virtual int getIsectNodeId() const 
 
GA_Size GA_Index
Define the strictness of GA_Offset/GA_Index. 
 
virtual OP_ERROR cookInputGroups(OP_Context &context, int alone=0)
 
virtual void setHitInUV(bool inuv, const UT_StringHolder &uvattribname)
 
GA_API const UT_StringHolder orient
 
void setIsectNodeId(int node_id)
 
virtual fpreal DEPTH(fpreal)
 
virtual bool hasVisrangeChanged(fpreal)
 
virtual fpreal ZEROWEIGHTCOLOR_G()
 
virtual OP_Node * getRestGeoInput()
 
UT_Matrix3 myCursorOrient
 
virtual int DOPOINTREFLECTION()
 
virtual void UVATTRIBNAME(UT_String &uvattribname, fpreal t)
 
virtual fpreal SYMMETRYUVORIGU(fpreal)
 
UT_StringHolder myUVAttribName
 
virtual bool isGroupParmDirty(OP_Context &context)
 
SIM_API const UT_StringHolder force
 
virtual const GA_PointGroup * getPointGroup()
 
virtual const GA_PrimitiveGroup * getPrimitiveSelection() const 
 
virtual fpreal VISLOW(fpreal)
 
GA_Size myLastIsectGDPPtCount
 
virtual fpreal HEIGHT(fpreal)
 
const GU_Detail * lockPointTreeDetail()
 
GLubyte GLubyte GLubyte GLubyte w
 
virtual UT_Vector3 BRUSHDIR(fpreal t)
 
virtual int DOUVREFLECTION()
 
virtual OP_ERROR cookMySop(OP_Context &context)=0
 
SYS_FORCE_INLINE bool isstring() const 
 
virtual void rollbackCurrentDeltaElementsToPermanentDeltaValues()
 
bool isParmDirty(int idx, fpreal t)
 
bool unloadData() override