13 #ifndef _FBXSDK_FILEIO_COLLADA_ELEMENT_H_
14 #define _FBXSDK_FILEIO_COLLADA_ELEMENT_H_
80 template <
typename TYPE>
86 template <
typename TYPE>
88 int pSourceUnitOffset = 0,
int pSourceUnitValidCount = 1,
int pSourceUnitSize = 1,
89 int pDestUnitOffset = 0,
int pDestUnitValidCount = 1,
int pDestUnitSize = 1,
90 TYPE pDefaultValue = TYPE())
95 pSourceUnitOffset, pSourceUnitValidCount, pSourceUnitSize,
96 pDestUnitOffset, pDestUnitValidCount, pDestUnitSize, pDefaultValue);
109 template <
typename TYPE>
115 bool lReadCount =
true;
117 if (lTechniqueElement)
120 FBX_ASSERT(lAccessorElement);
121 if (!lAccessorElement)
131 TypeToArrayTag<TYPE>());
135 FBX_ASSERT(lDataArrayElement);
137 if (lDataArrayElement && lReadCount)
140 mContent = xmlNodeGetContent(lDataArrayElement);
186 xmlNode * mXMLElement;
210 template <
typename T>
212 const T * pData,
int pCount,
int pStride = 1)
214 FBX_ASSERT(pParentElement && pData);
215 if (!pParentElement || !pData)
222 const int lDataCount = pCount * pStride;
223 for (
int lIndex = 0; lIndex < lDataCount; ++lIndex)
225 lContent +=
ToString(pData[lIndex]);
226 if (lIndex != lDataCount - 1)
230 xmlNode * lArrayElement =
DAE_AddChildElement(lSourceElement, TypeToArrayTag<T>(), lContent);
242 for (
int lStrideIndex = 0; lStrideIndex < pStride; ++lStrideIndex)
248 return lSourceElement;
266 TYPE * lArray =
NULL;
268 lSourceElementAccessor.
GetArray((
double *)lArray, 0, pSize,
269 lSourceElementAccessor.
mStride, 0, pSize,
sizeof(TYPE)/
sizeof(
double), 1.0);
FbxLayerElementArrayTemplate< int > & GetIndexArray() const
Returns the index array of Layer Elements.
#define COLLADA_FLOAT_ARRAY_STRUCTURE
void SetXMLElement(xmlNode *pElement)
Access for XML element.
#define COLLADA_ACCESSOR_STRUCTURE
const FbxSystemUnit * GetUnit() const
Get the unit of the element, which takes effect in this element and its children elements.
void SetReferenceMode(EReferenceMode pReferenceMode)
Sets the Reference Mode.
const FbxString URL(const FbxString &pID)
Convert from ID to URL, just add a prefix "#".
const FbxString & GetID() const
Get the ID of the element.
const FbxString ToString(const T &pValue)
A struct for convenient access to the content of COLLADA source element.
#define COLLADA_COUNT_PROPERTY
bool GetNext(TYPE *pData)
#define COLLADA_BOOL_TYPE
#define COLLADA_PARAMETER_STRUCTURE
bool FromString(T *pDest, const char *pSourceBegin, const char **pSourceEnd=((void *) 0))
Convert part of the source string into destination type.
#define COLLADA_STRIDE_PROPERTY
#define COLLADA_OFFSET_PROPERTY
FbxLayerElementArrayTemplate< Type > & GetDirectArray() const
Returns the direct array of Layer Elements.
Utility class to manipulate strings.
#define COLLADA_SOURCE_STRUCTURE
xmlNode * AddSourceElement(xmlNode *pParentElement, const char *pID, const T *pData, int pCount, int pStride=1)
Convert the array data to a source element under specific parent element.
void SetMappingMode(EMappingMode pMappingMode)
Sets the Mapping Mode.
const FbxString TypeToParameterTag< bool >()
#define COLLADA_ID_PROPERTY
int GetArray(TYPE *pArray, int pSourceUnitOffset=0, int pSourceUnitValidCount=1, int pSourceUnitSize=1, int pDestUnitOffset=0, int pDestUnitValidCount=1, int pDestUnitSize=1, TYPE pDefaultValue=TYPE())
const FbxString TypeToArrayTag< bool >()
#define COLLADA_IDREF_ARRAY_STRUCTURE
const FbxString TypeToParameterTag()
xmlNode * DAE_AddChildElement(xmlNode *pParentElement, const char *pTag, const T &pContent)
Add a child element with specific content.
const FbxString TypeToArrayTag()
FbxLayerElementArray is the base class for FbxLayerElementArrayTemplate, it provides lock handling an...
This class complements the FbxLayerElement class.
#define COLLADA_TYPE_PROPERTY
#define COLLADA_SOURCE_PROPERTY
ElementBase()
Constructor & Destructor.
const FbxString TypeToArrayTag< FbxString >()
#define COLLADA_BOOL_ARRAY_STRUCTURE
virtual ~ElementContentAccessor()
#define COLLADA_FLOAT_TYPE
static const char * smID_PROPERTY_NAME
const FbxString TypeToArrayTag< int >()
This class describes the units of measurement used within a particular scene.
#define COLLADA_NAME_ARRAY_STRUCTURE
const FbxString DAE_GetElementAttributeValue(xmlNode *pElement, const char *pAttributeName)
Get the value of an attribute of an element.
#define COLLADA_TECHNIQUE_COMMON_ELEMENT
const FbxString TypeToParameterTag< FbxString >()
xmlNode * GetXMLElement() const
int FromStringToArray(const char *pString, TYPE *pArray, int pSourceUnitOffset, int pSourceValidUnitCount, int pSourceGroupSize, int pDestUnitOffset, int pDestValidUnitCount, int pDestGroupSize, TYPE pDefaultValue=TYPE())
Parse the string into an array.
A struct for convenient access to the content of common COLLADA element.
Representing a common COLLADA element.
#define COLLADA_INT_ARRAY_STRUCTURE
#define COLLADA_NAME_TYPE
FbxLayerElementArray * PopulateLayerElementDirectArray(FbxLayerElement *pLayerElement, xmlNode *pSourceElement, int pSize)
Populate the layer element with direct array and return index array for later use.
SourceElementContentAccessor(xmlNode *pSourceElement)
Base class for elements of layers (FbxLayer).
const FbxString TypeToParameterTag< int >()
xmlAttr * DAE_AddAttribute(xmlNode *pElement, const FbxString &pAttributeName, const T &pAttributeValue)
Add an attribute for a element.
xmlNode * DAE_FindChildElementByTag(xmlNode *pParentElement, const char *pTag, xmlNode *pFindFrom=((void *) 0))
Find a child element with a given tag.