13 #ifndef __GA_ATINumeric
14 #define __GA_ATINumeric
52 static void registerType();
55 {
return theAttributeType->getTypeName(); }
62 return attrib && &attrib->
getType() == theAttributeType;
67 if (attrib && &attrib->
getType() == theAttributeType)
68 return static_cast<GA_ATINumeric *>(attrib);
74 if (attrib && &attrib->
getType() == theAttributeType)
75 return static_cast<const GA_ATINumeric *>(attrib);
104 {
return myAIFCopyData; }
106 {
return myAIFDelta; }
108 {
return myAIFEdit; }
110 {
return myAIFTuple; }
112 {
return myDoMath ? myAIFMath:myAIFNoMath; }
114 {
return myAIFMerge; }
116 {
return myAIFInterp; }
118 {
return myAIFCompare; }
164 bool setTupleSize(
int size);
192 if (name[0] !=
'u' || name[1] !=
'v')
264 return tupleSet(desti, *
this, srci, -1);
271 return tupleSet(desti, *UTverify_cast<const GA_ATINumeric*>(&
src), srci, -1);
275 return tupleSet(desti, src, srci, -1);
283 const GA_Range &srcrange)
override final
285 return tupleSet(destrange, *
this, srcrange, -1);
292 return tupleSet(destrange, *UTverify_cast<const GA_ATINumeric*>(&
src), srcrange, -1);
296 return tupleSet(destrange, src, srcrange, -1);
321 return myData.isPageConstant(pagenum);
326 template<
typename SRC_DATA_T>
329 myData.setPageConstant(pagenum, values);
351 void updateIntegerTypeInfo();
358 template <
typename T>
inline bool
360 template <
typename T>
inline bool
363 template <
typename T>
inline bool
365 template <
typename T>
inline bool
367 template <
typename T>
inline bool
369 template <
typename T>
inline bool
377 template <
typename T>
inline bool
378 makeConstant(
T v,
int vi);
379 template <
typename T>
inline bool
409 void mergeDestroyDestination(
const GA_MergeMap &map,
425 friend class ga_NumericCopyData;
426 friend class ga_NumericDelta;
427 friend class ga_NumericEdit;
428 template <
typename T>
friend class ga_NumericEditDelta;
429 template <
typename T>
friend class ga_NumericEditSnapshot;
430 friend class ga_NumericInterp;
431 friend class ga_NumericJSON;
432 friend class ga_NumericMarshal;
433 friend class ga_NumericMath;
434 friend class ga_NumericMerge;
435 friend class ga_NumericTuple;
436 friend class ga_NumericCompare;
438 template <
typename T>
friend class binderScalar;
439 template <
typename T>
friend class binderVector;
440 template <
typename T,
typename TB>
friend class binderPage;
A class to manage an ordered array which has fixed offset handles.
Definition of a geometry attribute.
Data has no numeric representation.
bool isNonArithmetic() const
Some types, especially integers, may not want to be lerped.
GA_PageArray< void,-1, true, false > DataType
UT_UniquePtr< const GA_ATINumeric > GA_ConstATINumericUPtr
Used to pass options and map offset values during saving.
const GA_AIFCompare * getAIFCompare() const override
Return the attribute's comparison interface or NULL.
void copyNonStorageMetadata(const GA_Attribute *that) override
const GA_AIFInterp * getAIFInterp() const override
Return the attribute's interpolation interface or NULL.
static SYS_FORCE_INLINE bool isType(const GA_Attribute *attrib)
Class which stores the default values for a GA_Attribute.
getFileOption("OpenEXR:storage") storage
Attribute Interface class to perform numeric operations on attributes.
int getTupleSize() const
Size of the AIFTuple, if it exists. If it doesn't, 1.
const DataType & getData() const
const GA_AIFMerge * getAIFMerge() const override
Return the attribute's merge interface or NULL.
The merge map keeps track of information when merging details.
virtual void reconstructElementBlock(GA_Offset offset, GA_Offset nelements)=0
GLboolean GLboolean GLboolean GLboolean a
static SYS_FORCE_INLINE const UT_StringHolder & getTypeName()
JSON reader class which handles parsing of JSON or bJSON files.
ImageBuf OIIO_API min(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
virtual bool setArraySize(GA_Offset size)=0
Class which writes ASCII or binary JSON streams.
static GA_AIFCompare * myAIFCompare
SYS_FORCE_INLINE TO_T UTverify_cast(FROM_T from)
static GA_AIFMath * myAIFMath
virtual void countMemory(UT_MemoryCounter &counter, bool inclusive) const =0
virtual int64 getMemoryUsage(bool inclusive) const =0
virtual bool matchesStorage(const GA_Attribute *that) const
bool copy(const GA_Range &destrange, const GA_Range &srcrange) overridefinal
virtual void tryCompressAllPages(GA_Offset start_offset=GA_Offset(0), GA_Offset end_offset=GA_INVALID_OFFSET)=0
SYS_FORCE_INLINE const GA_AttributeType & getType() const
#define GA_INVALID_OFFSET
A range of elements in an index-map.
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
SYS_FORCE_INLINE const UT_StringHolder & getName() const
virtual bool fill(const GA_Range &destrange, GA_Offset srci)
const GA_AIFEdit * getAIFEdit() const override
Return the attribute's edit interface or NULL.
static const GA_AttributeType * theAttributeType
const GA_AIFTuple * getAIFTuple() const override
Return the attribute's tuple interface or NULL.
static GA_AIFTuple * myAIFTuple
virtual void replace(const GA_Attribute &src)=0
static GA_AIFInterp * myAIFInterp
bool copy(GA_Offset desti, GA_Offset srci) overridefinal
Attribute Interface for merging attribute data between details.
const GA_AIFCopyData * getAIFCopyData() const override
Return the attribute's copy interface or NULL.
static SYS_FORCE_INLINE GA_ATINumeric * cast(GA_Attribute *attrib)
bool copy(const GA_Range &destrange, const GA_Attribute &src, const GA_Range &srcrange) overridefinal
bool isNan(const float x)
Return true if x is a NaN (Not-A-Number) value.
Attribute Interface class to perform comparisons on attributes.
SYS_FORCE_INLINE const char * c_str() const
Defragmentation of IndexMaps.
static GA_AIFEdit * myAIFEdit
GLuint const GLchar * name
GLboolean GLboolean GLboolean b
virtual void copyNonStorageMetadata(const GA_Attribute *that)
bool matchesStorage(const GA_Attribute *that) const override
const GA_AIFJSON * getAIFJSON() const override
SYS_FORCE_INLINE bool isPageConstant(GA_PageNum pagenum) const
const GA_AIFDelta * getAIFDelta() const override
Return the attribute's delta interface or NULL.
static const GA_AIFMath * myAIFNoMath
GLenum GLsizei GLsizei GLint * values
SYS_FORCE_INLINE GA_TypeInfo getTypeInfo() const
bool copy(GA_Offset desti, const GA_Attribute &src, GA_Offset srci) overridefinal
Concurrent writes to separate pages supported.
WriteConcurrence getSupportedWriteConcurrence() const override
Data is paged, so concurrent writes to separate pages supported.
static SYS_FORCE_INLINE const GA_AttributeType & getType()
ImageBuf OIIO_API max(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
static GA_AIFDelta * myAIFDelta
SYS_FORCE_INLINE void setPageConstant(GA_PageNum pagenum, const SRC_DATA_T *values)
static GA_AIFJSON * myAIFJSON
Attribute Interface class to copy attribute data.
GLubyte GLubyte GLubyte GLubyte w
Attribute Interface for file I/O.
bool shouldInterpretAsTexCoord(bool allow_float2=false) const
static SYS_FORCE_INLINE const GA_ATINumeric * cast(const GA_Attribute *attrib)
virtual bool debugValidateArrayCapacity(GA_Offset sz) const
Debug validation of allocated array size.
bool copy(GA_Offset desti, const GA_ATINumeric &src, GA_Offset srci)
AIF to record changes to attribute values.
virtual void hardenAllPages(GA_Offset start_offset=GA_Offset(0), GA_Offset end_offset=GA_INVALID_OFFSET)=0
virtual void defragment(const GA_Defragment &defrag)=0
Generic Attribute Interface class to access an attribute as a tuple.
static GA_AIFCopyData * myAIFCopyData
UT_UniquePtr< GA_ATINumeric > GA_ATINumericUPtr
const GA_Defaults & getDefaults() const
const GA_AIFMath * getAIFMath() const override
Return the attribute's math interface or NULL.
bool copy(const GA_Range &destrange, const GA_ATINumeric &src, const GA_Range &srcrange)
GA_Storage getStorage() const
static GA_AIFMerge * myAIFMerge