libMVRgdtf 40bc00a
A library for GDTF and MVR
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
XmlFileHelper.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2//----- Copyright deersoft 2015 - 2017 www.deersoft.de
3//-----------------------------------------------------------------------------
4#pragma once
5
6#include "GDTFManager.h"
7#include "XmlFileHelper.h"
8#include "CieColor.h"
9
10namespace SceneData
11{
13 {
14
15 private:
16 Uint8* fpZIPDataBuffer;
17 size_t fZIPDataBufferSize;
18
19 public:
21 virtual ~ISceneDataZipBuffer();
22
23 virtual VCOMError VCOM_CALLTYPE GetDataSize(size_t& outSize);
24 virtual VCOMError VCOM_CALLTYPE CopyDataInto(void* pBuffer, size_t bufferSize);
25 virtual VCOMError VCOM_CALLTYPE SetData(void* pBuffer, size_t bufferSize);
26
27 VCOMError WriteToFile(IFileIdentifierPtr file);
28 VCOMError GetData(void*& dataPointer);
29
30 bool IsSet();
31 };
32
34 {
35
36 private:
37 Uint8* fXMLBuffer;
38 size_t fXMLBufferSize;
39
40 public:
42 virtual ~IXMLFileIOBufferImpl();
43
44 virtual VCOMError VCOM_CALLTYPE GetDataSize(size_t& outSize);
45 virtual VCOMError VCOM_CALLTYPE CopyDataInto(void* pBuffer, size_t bufferSize);
46 virtual VCOMError VCOM_CALLTYPE SetData(void* pBuffer, size_t bufferSize);
47 VCOMError GetData(void*& dataPointer);
48
49 };
50
51 //------------------------------------------------------------------------------------
52 // GdtfFixture Definition
54 {
55 public:
56 //-----------------------------------------------------------------------------
57 // Convert to String functions:
58 static TXString ConvertUUID(const VWFC::Tools::VWUUID& uuid);
59 static TXString ConvertDate(const STime& date);
60 static TXString ConvertColor(const CCieColor& color);
62 static TXString ConvertDouble(double value);
63 static TXString ConvertDoubleArray(TDoubleArray& values, bool includeBrackets);
64 static TXString ConvertInteger(Sint32 value);
65#ifdef IS64BIT
66 static TXString ConvertInteger(Uint32 value);
67#endif
68 static TXString ConvertDmxBreak(Sint32 value);
69 static TXString ConvertInteger(size_t value);
70 static TXString ConvertInteger(Sint32 value, bool noneValue);
71 static TXString ConvertIntegerArray (TSint32Array& values, bool includeBrackets);
73 static TXString ConvertDMXValue(DmxValue value, EGdtfChannelBitResolution chanlReso, bool noneValue=false);
75 static TXString ConvertVector3(const VWPoint3D& value);
76 static TXString ConvertMatrix(const VWTransformMatrix& ma, bool fourLines);
86 static TXString ConvertDmxOffset(DMXAddress coarse, DMXAddress fine, DMXAddress ultra, DMXAddress uber);
89 static TXString ConvertHexValue(size_t value);
90 static TXString ConvertEGdtfCanHaveChildren(bool value);
91 static TXString Convert2DPoint(double p_X, double p_Y);
92 static TXString ConvertBool(bool value);
103
104
105 //-----------------------------------------------------------------------------
106 // Convert from String functions:
107 static bool ConvertUUID( const TXString& value, MvrUUID& uuid);
108 static bool ConvertUUID( const TXString& value, const IXMLFileNodePtr& node, VWFC::Tools::VWUUID& uuid);
109 static bool ConvertDate( const TXString& value, const IXMLFileNodePtr& node, STime& date);
110 static bool ConvertColor( const TXString& value, const IXMLFileNodePtr& node, CCieColor& color);
111 static bool ConvertColorArray( TXString values,const IXMLFileNodePtr& node, TCCieColorArray& colorArray);
112 static bool ConvertDouble( const TXString& value, const IXMLFileNodePtr& node, double& doubleValue);
113 static bool ConvertDoubleArray( TXString values,const IXMLFileNodePtr& node, TDoubleArray& doubleArray);
114 static bool ConvertVector3( const TXString& value, const IXMLFileNodePtr& node, VWPoint3D& vector);
115 static bool ConvertMatrix( const TXString& value, const IXMLFileNodePtr& node, VWTransformMatrix& ma);
116 static bool ConvertRotation( const TXString& value, const IXMLFileNodePtr& node, VWTransformMatrix& ma);
117 static bool ConvertPrimitiveType( const TXString& value, const IXMLFileNodePtr& node, EGdtfModel_PrimitiveType& type);
118 static bool ConvertLampeType( const TXString& value, const IXMLFileNodePtr& node, EGdtfLampType& lampType);
119 static bool ConvertInteger( const TXString& value, const IXMLFileNodePtr& node, Sint32& intValue);
120#ifdef IS64BIT
121 static bool ConvertInteger( const TXString& value, const IXMLFileNodePtr& node, Uint32& intValue);
122#endif
123 static bool ConvertDmxBreak( const TXString& value, const IXMLFileNodePtr& node, Sint32& intValue);
124 static bool ConvertInteger( const TXString& value, const IXMLFileNodePtr& node, Sint8& intValue);
125 static bool ConvertInteger( const TXString& value, const IXMLFileNodePtr& node, Uint8& intValue);
126 static bool ConvertInteger( const TXString& value, const IXMLFileNodePtr& node, size_t& intValue);
127 static bool ConvertInteger( const TXString& value, const IXMLFileNodePtr& node, Sint32& intValue, bool& noneValue);
128 static bool ConvertIntegerArray( TXString values,const IXMLFileNodePtr& node, TSint32Array& intArray);
129 static bool ConvertDMXAdress( const TXString& value, const IXMLFileNodePtr& node, DMXAddress& intValue);
130 static bool ConvertDMXValue( const TXString& value, const IXMLFileNodePtr& node, EGdtfChannelBitResolution chanlReso, DmxValue& intValue);
131 static bool ConvertDMXValue( const TXString& value, const IXMLFileNodePtr& node, EGdtfChannelBitResolution chanlReso, DmxValue& intValue, bool& noneValue);
132 static bool ConvertRelationEnum( const TXString& value, const IXMLFileNodePtr& node, EGdtfDmxRelationType& relation);
133 static bool ConvertSnapEnum( const TXString& value, const IXMLFileNodePtr& node, EGdtfDmxSnap& snap);
134 static bool ConvertMasterEnum( const TXString& value, const IXMLFileNodePtr& node, EGdtfDmxMaster& master);
135 static bool ConvertPhysicalUnitEnum( const TXString& value, const IXMLFileNodePtr& node, EGdtfPhysicalUnit& unit);
136 static bool ConvertSpecialAttrEnum( const TXString& value, const IXMLFileNodePtr& node, EGdtfSpecial& special);
137 static bool ConvertBeamType( const TXString& value, const IXMLFileNodePtr& node, EGdtfBeamType& type);
138 static bool ConvertEGdtfColorSampleEnum( const TXString& inVal, const IXMLFileNodePtr& node, EGdtfColorSample& outVal);
139 static bool ConvertEGdtfColorSpace( const TXString& inVal, const IXMLFileNodePtr& node, EGdtfColorSpace& outVal);
140 static bool ConvertEGdtfInterpolationTo( const TXString& inVal, const IXMLFileNodePtr& node, EGdtfInterpolationTo& outVal);
141 static bool ConvertHexValue( const TXString& inVal, const IXMLFileNodePtr& node, size_t& outValue);
142 static bool ConvertEGdtfCanHaveChildren( const TXString& inVal, const IXMLFileNodePtr& node, bool& outVal);
143 static bool Convert2DPoint( const TXString& inVal, const IXMLFileNodePtr& node, double& p_X, double& p_Y);
144 static bool ConvertBool( const TXString& inVal, const IXMLFileNodePtr& node, bool& outVal);
145 static bool ConvertESourceType( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::ESourceType& outVal);
146 static bool ConvertEScaleHandlingType( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::EScaleHandlingType& outVal);
147 static bool ConvertLaserColorTypeEnum( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::EGdtfLaserColorType& outVal);
148 static bool ConvertComponentTypeEnum( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::EGdtfComponentType& outVal);
149 static bool ConvertOrientationEnum( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::EGdtfOrientation& outVal);
150 static bool ConvertFuseRatingEnum( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::EGdtfFuseRating& outVal);
151 static bool ConvertStructureTypeEnum( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::EGdtfStructureType& outVal);
152 static bool ConvertCrossSectionTypeEnum( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::EGdtfCrossSectionType& outVal);
153 static bool ConvertSupportTypeEnum( const TXString& inVal, const IXMLFileNodePtr& node, GdtfDefines::EGdtfSupportType& outVal);
155
156
157 static bool ConvertDmxOffset(const TXString& inVal, const IXMLFileNodePtr& node, DMXAddress& coarse, DMXAddress& fine, DMXAddress& ultra, DMXAddress& uber);
158 //-----------------------------------------------------------------------------
159 static CCieColor ConvertCColor (const CieColor& color);
160 static CieColor ConvertCColor (const CCieColor& color);
161
163
164 typedef std::function<void(IXMLFileNodePtr objNode)> TProcessNodeCall;
165 static void TraverseNodes(IXMLFileNodePtr root, const TXString& childContainerNodeName,const TXString& childNodeName, TProcessNodeCall processNodeFunction);
166
167 typedef std::function<void(IXMLFileNodePtr objNode,const TXString& childNodeName)> TProcessMultiNodeCall;
168 static void TraverseMultiNodes(IXMLFileNodePtr root, const TXString& childContainerNodeName, TProcessMultiNodeCall processNodeFunction);
169
171
172 private:
173 static bool Deserialize(const TXString& value, const IXMLFileNodePtr& node, std::vector<double>& doubleArr);
174 static bool Deserialize(const TXString& value, const IXMLFileNodePtr& node, TSint32Array& intArray, TXChar seperator = ',');
175 static bool DeserializeUTC_Date(const TXString& value, const IXMLFileNodePtr& node, TSint32Array& intArray);
176
177 static TXString IntToString2Digits(Sint64 value);
178
179
180 public:
181 // UNIT TEST HELPER
182 static bool ConvertDMXValue_UnitTest(const char* value, EGdtfChannelBitResolution chanlReso, DmxValue& intValue);
183
184
185 };
186
188 {
189 public:
190 static bool AddFileToZip(IZIPFilePtr& zipFile, const IFileIdentifierPtr& file, ERessourceType resType, bool deleteFile, bool mustExist = true);
191 static void AddFileToZip(IZIPFilePtr& zipFile, ISceneDataZipBuffer& buffer,const TXString &name);
192
194 };
195}
uint8_t Uint8
Definition GSTypes.h:25
int64_t Sint64
Definition GSTypes.h:37
int8_t Sint8
Definition GSTypes.h:34
int32_t Sint32
Definition GSTypes.h:36
uint32_t Uint32
Definition GSTypes.h:27
std::vector< Sint32 > TSint32Array
Definition StdAfx.h:96
std::vector< double > TDoubleArray
Definition StdAfx.h:95
#define VCOM_CALLTYPE
Definition VectorworksMVR.h:93
#define DYNAMIC_ATTRIBUTE
Definition VectorworksMVR.h:104
Definition XmlFileHelper.h:54
static TXString ConvertSupportTypeEnum(GdtfDefines::EGdtfSupportType value)
Definition XmlFileHelper.cpp:2090
static TXString ConvertMasterEnum(EGdtfDmxMaster value)
Definition XmlFileHelper.cpp:1369
static TXString ConvertEGdtfCanHaveChildren(bool value)
Definition XmlFileHelper.cpp:1768
static TXString ConvertMatrix(const VWTransformMatrix &ma, bool fourLines)
Definition XmlFileHelper.cpp:1074
static TXString ConvertEGdtfColorSampleEnum(EGdtfColorSample value)
Definition XmlFileHelper.cpp:1484
static TXString ConvertSnapEnum(EGdtfDmxSnap value)
Definition XmlFileHelper.cpp:1334
static TXString ConvertFuseRatingEnum(GdtfDefines::EGdtfFuseRating value)
Definition XmlFileHelper.cpp:2000
static TXString ConvertDouble(double value)
Definition XmlFileHelper.cpp:376
std::function< void(IXMLFileNodePtr objNode, const TXString &childNodeName)> TProcessMultiNodeCall
Definition XmlFileHelper.h:167
static TXString ConvertRelationEnum(EGdtfDmxRelationType value)
Definition XmlFileHelper.cpp:1401
static void TraverseNodes(IXMLFileNodePtr root, const TXString &childContainerNodeName, const TXString &childNodeName, TProcessNodeCall processNodeFunction)
Definition XmlFileHelper.cpp:2354
static TXString ConvertDmxBreak(Sint32 value)
Definition XmlFileHelper.cpp:576
static TXString ConvertBeamType(EGdtfBeamType value)
Definition XmlFileHelper.cpp:999
static TXString ConvertVector3(const VWPoint3D &value)
Definition XmlFileHelper.cpp:1018
static bool ConvertDMXValue_UnitTest(const char *value, EGdtfChannelBitResolution chanlReso, DmxValue &intValue)
Definition XmlFileHelper.cpp:2349
static TXString ConvertInteger(Sint32 value)
Definition XmlFileHelper.cpp:394
static TXString ConvertBool(bool value)
Definition XmlFileHelper.cpp:1816
static TXString ConvertColorArray(TCCieColorArray &colors)
Definition XmlFileHelper.cpp:289
static TXString ConvertDoubleArray(TDoubleArray &values, bool includeBrackets)
Definition XmlFileHelper.cpp:527
static TXString ConvertPrimitiveType(EGdtfModel_PrimitiveType value)
Definition XmlFileHelper.cpp:786
static GdtfDefines::EGdtfPhysicalUnit GetUnitFromSubPhysical(GdtfDefines::EGdtfSubPhysicalUnitType type)
Definition XmlFileHelper.cpp:2418
static TXString ConvertOrientationEnum(GdtfDefines::EGdtfOrientation value)
Definition XmlFileHelper.cpp:1967
static TXString ConvertStructureTypeEnum(GdtfDefines::EGdtfStructureType value)
Definition XmlFileHelper.cpp:2034
static TXString ConvertLaserColorTypeEnum(GdtfDefines::EGdtfLaserColorType value)
Definition XmlFileHelper.cpp:1897
static TXString ConvertComponentTypeEnum(GdtfDefines::EGdtfComponentType value)
Definition XmlFileHelper.cpp:1925
static TXString ConvertDate(const STime &date)
Definition XmlFileHelper.cpp:193
static TXString ConvertIntegerArray(TSint32Array &values, bool includeBrackets)
Definition XmlFileHelper.cpp:486
static TXString ConvertDmxOffset(DMXAddress coarse, DMXAddress fine, DMXAddress ultra, DMXAddress uber)
Definition XmlFileHelper.cpp:1432
std::function< void(IXMLFileNodePtr objNode)> TProcessNodeCall
Definition XmlFileHelper.h:164
static TXString ConvertEGdtfColorSpace(EGdtfColorSpace value)
Definition XmlFileHelper.cpp:1703
static TXString Convert2DPoint(double p_X, double p_Y)
Definition XmlFileHelper.cpp:1791
static TXString ConvertDMXAdress(DMXAddress value)
Definition XmlFileHelper.cpp:587
static TXString ConvertEScaleHandlingType(GdtfDefines::EScaleHandlingType value)
Definition XmlFileHelper.cpp:1866
static CCieColor ConvertCColor(const CieColor &color)
Definition XmlFileHelper.cpp:1468
static TXString ConvertHexValue(size_t value)
Definition XmlFileHelper.cpp:2637
static TXString ConvertESourceType(GdtfDefines::ESourceType)
Definition XmlFileHelper.cpp:1834
static TXString ConvertSpecialAttrEnum(EGdtfSpecial value)
Definition XmlFileHelper.cpp:852
static TXString ConvertLampeType(EGdtfLampType value)
Definition XmlFileHelper.cpp:1296
static TXString ConvertDMXValue(DmxValue value, EGdtfChannelBitResolution chanlReso, bool noneValue=false)
Definition XmlFileHelper.cpp:461
static TXString ConvertPhysicalUnitEnum(EGdtfPhysicalUnit value)
Definition XmlFileHelper.cpp:909
static TXString ConvertCrossSectionTypeEnum(GdtfDefines::EGdtfCrossSectionType value)
Definition XmlFileHelper.cpp:2062
static TXString ConvertColor(const CCieColor &color)
Definition XmlFileHelper.cpp:252
static void TraverseMultiNodes(IXMLFileNodePtr root, const TXString &childContainerNodeName, TProcessMultiNodeCall processNodeFunction)
Definition XmlFileHelper.cpp:2385
static TXString ConvertEGdtfInterpolationTo(EGdtfInterpolationTo value)
Definition XmlFileHelper.cpp:1734
static TXString ConvertSubPhysicalUnitTypeEnum(GdtfDefines::EGdtfSubPhysicalUnitType value)
Definition XmlFileHelper.cpp:2118
static DmxValue GetChannelMaxDmx(const EGdtfChannelBitResolution chanlReso)
Definition XmlFileHelper.cpp:2437
static TXString ConvertRotation(const VWTransformMatrix &ma)
Definition XmlFileHelper.cpp:1202
static TXString ConvertUUID(const VWFC::Tools::VWUUID &uuid)
Definition XmlFileHelper.cpp:17
Definition XmlFileHelper.h:13
Definition XmlFileHelper.h:34
Definition XmlFileHelper.h:188
static bool AddFileToZip(IZIPFilePtr &zipFile, const IFileIdentifierPtr &file, ERessourceType resType, bool deleteFile, bool mustExist=true)
Definition XmlFileHelper.cpp:2165
static TXString GetResourceSubFolder(ERessourceType resType)
Definition XmlFileHelper.cpp:2207
Definition CieColor.h:11
Definition GSString.h:134
Definition VectorworksMVR.h:149
Definition VWPoint3D.h:19
Definition VWTransformMatrix.h:16
Definition GDTFManager.h:19
EGdtfChannelBitResolution
Definition GDTFPrefix.h:306
EGdtfColorSample
Definition GDTFPrefix.h:528
ERessourceType
Definition GDTFPrefix.h:20
EGdtfDmxMaster
Definition GDTFPrefix.h:277
EGdtfColorSpace
Definition GDTFPrefix.h:631
Uint16 DMXAddress
Definition GDTFPrefix.h:13
EGdtfSpecial
Definition GDTFPrefix.h:222
EGdtfLampType
Definition GDTFPrefix.h:258
EGdtfInterpolationTo
Definition GDTFPrefix.h:639
EGdtfCrossSectionType
Definition GDTFPrefix.h:703
EGdtfLaserColorType
Definition GDTFPrefix.h:661
EGdtfOrientation
Definition GDTFPrefix.h:680
EGdtfSupportType
Definition GDTFPrefix.h:709
EGdtfStructureType
Definition GDTFPrefix.h:697
EGdtfFuseRating
Definition GDTFPrefix.h:688
ESourceType
Definition GDTFPrefix.h:646
EGdtfComponentType
Definition GDTFPrefix.h:667
EGdtfDmxRelationType
Definition GDTFPrefix.h:300
EGdtfSubPhysicalUnitType
Definition GDTFPrefix.h:715
EGdtfBeamType
Definition GDTFPrefix.h:266
EGdtfDmxSnap
Definition GDTFPrefix.h:285
EGdtfPhysicalUnit
Definition GDTFPrefix.h:196
EScaleHandlingType
Definition GDTFPrefix.h:654
Uint64 DmxValue
Definition GDTFPrefix.h:17
EGdtfModel_PrimitiveType
Definition GDTFPrefix.h:241
std::vector< CCieColor * > TCCieColorArray
Definition CieColor.h:37
UniChar TXChar
Definition GSString.h:55
uint32_t VCOMError
Definition VectorworksMVR.h:119
Definition IMediaRessourceVectorInterface.h:52
Definition IMediaRessourceVectorInterface.h:64
Definition IMediaRessourceVectorInterface.h:36