diff --git a/src/Implementation/CGdtfFixture.cpp b/src/Implementation/CGdtfFixture.cpp index 50ac9e3f..e6a6e92b 100755 --- a/src/Implementation/CGdtfFixture.cpp +++ b/src/Implementation/CGdtfFixture.cpp @@ -240,7 +240,6 @@ VectorworksMVR::VCOMError VectorworksMVR::CGdtfFixtureImpl::GetGDTFVersion( Sint return kVCOMError_NoError; } - MvrString VectorworksMVR::CGdtfFixtureImpl::GetName() { if(!fFixtureObject) {return "";} diff --git a/src/Implementation/CMediaRessourceVectorImpl.cpp b/src/Implementation/CMediaRessourceVectorImpl.cpp index 8c2284c6..3a4143ac 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.cpp +++ b/src/Implementation/CMediaRessourceVectorImpl.cpp @@ -1594,6 +1594,30 @@ VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::SetAbortCal return kVCOMError_NoError; } +VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetMVRVersion(Sint32& major, Sint32& minor) +{ + major = fExchangeObj.GetMVRFileMajorVersion(); + minor = fExchangeObj.GetMVRFileMinorVersion(); + + return kVCOMError_NoError; +} + +VectorworksMVR::VCOMError VCOM_CALLTYPE VectorworksMVR::CMediaRessourceVectorImpl::GetLatestMVRSupoortedVersion( Sint32& major, Sint32& minor ) +{ + major = kMVR_MajorVersion; + minor = kMVR_MinorVersion; + + return kVCOMError_NoError; +} + +VectorworksMVR::VCOMError VCOM_CALLTYPE VectorworksMVR::CMediaRessourceVectorImpl::GetLatestGDTFSupoortedVersion( Sint32& major, Sint32& minor ) +{ + major = kGDTF_CurrentMajorVersion; + minor = kGDTF_CurrentMinorVersion; + + return kVCOMError_NoError; +} + VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetLibVersion( size_t& major, size_t& minor ) { major = LIBMVRGDTF_VERSION_MAJOR; diff --git a/src/Implementation/CMediaRessourceVectorImpl.h b/src/Implementation/CMediaRessourceVectorImpl.h index a005bb1e..4a5db374 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.h +++ b/src/Implementation/CMediaRessourceVectorImpl.h @@ -114,6 +114,15 @@ namespace VectorworksMVR // Check for duplicated uuids virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated); + // Get MVR File Version + virtual VCOMError VCOM_CALLTYPE GetMVRVersion( Sint32& major, Sint32& minor ); + + // Get latest MVR supported version + virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( Sint32& major, Sint32& minor ); + + // Get latest GDTF supported version + virtual VCOMError VCOM_CALLTYPE GetLatestGDTFSupoortedVersion( Sint32& major, Sint32& minor ); + // Returns the version of the library used to create the MVR/GDTF files virtual VCOMError VCOM_CALLTYPE GetLibVersion( size_t& major, size_t& minor ); }; diff --git a/src/Include/IMediaRessourceVectorInterface.h b/src/Include/IMediaRessourceVectorInterface.h index b6a539d3..493b6360 100644 --- a/src/Include/IMediaRessourceVectorInterface.h +++ b/src/Include/IMediaRessourceVectorInterface.h @@ -507,6 +507,15 @@ namespace VectorworksMVR // Check for duplicated uuids virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated) = 0; + + // Get MVR file version + virtual VCOMError VCOM_CALLTYPE GetMVRVersion( Sint32& major, Sint32& minor ) = 0; + + // Get latest MVR supported version + virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( Sint32& major, Sint32& minor ) = 0; + + // Get latest GDTF supported version + virtual VCOMError VCOM_CALLTYPE GetLatestGDTFSupoortedVersion( Sint32& major, Sint32& minor ) = 0; // Returns the version of the library used to create the MVR/GDTF files virtual VCOMError VCOM_CALLTYPE GetLibVersion(size_t& major, size_t& minor) = 0; diff --git a/src/Prefix/CommonPrefix.h b/src/Prefix/CommonPrefix.h index e1478a57..4cc0dd4a 100644 --- a/src/Prefix/CommonPrefix.h +++ b/src/Prefix/CommonPrefix.h @@ -254,6 +254,9 @@ const Sint32 kMVR_MajorVersion = 1; const Sint32 kMVR_MinorVersion = 5; +const Sint32 kGDTF_CurrentMajorVersion = 1; +const Sint32 kGDTF_CurrentMinorVersion = 2; + // ---------------------------------------------------------------------------------------------------------------------------------- // GDTF XML Values diff --git a/src/SceneDataExchange.cpp b/src/SceneDataExchange.cpp index 62c4c895..fcda952e 100644 --- a/src/SceneDataExchange.cpp +++ b/src/SceneDataExchange.cpp @@ -3805,6 +3805,12 @@ void SceneDataExchange::ReadFromGeneralSceneDescription(ISceneDataZipBuffer& xml { TXString rootName; ASSERTN(kEveryone, rootName == XML_Val_RootNodeName); + + TXString outMajorValue, outMinorValue; + rootNode->GetNodeAttributeValue(XML_Val_RootAttrMainVersion, outMajorValue); + rootNode->GetNodeAttributeValue( XML_Val_RootAttrMinorVersion, outMinorValue ); + fMVRFileMajorVersion = outMajorValue.atoi(); + fMVRFileMinorVersion = outMinorValue.atoi(); // ---------------------------------------------------------------- // Find the user data Node @@ -4180,3 +4186,13 @@ bool SceneDataExchange::CheckAbort() } return false; } + +size_t SceneDataExchange::GetMVRFileMajorVersion() const +{ + return fMVRFileMajorVersion; +} + +size_t SceneDataExchange::GetMVRFileMinorVersion() const +{ + return fMVRFileMinorVersion; +} \ No newline at end of file diff --git a/src/SceneDataExchange.h b/src/SceneDataExchange.h index 933b96eb..804bbbc0 100644 --- a/src/SceneDataExchange.h +++ b/src/SceneDataExchange.h @@ -1021,6 +1021,9 @@ namespace SceneData //Abort reading flag bool fAbortReading = false; + + size_t fMVRFileMajorVersion = 0; + size_t fMVRFileMinorVersion = 0; public: // --------------------------------------------------------------------------------------------------------------------- @@ -1110,6 +1113,9 @@ namespace SceneData static void SetAbortCallback( const std::function& cb ); void GetAbortCallback( std::function& cb ); + size_t GetMVRFileMajorVersion() const; + size_t GetMVRFileMinorVersion() const; + private: void ReadFromGeneralSceneDescription(ISceneDataZipBuffer& xmlFile); void ProcessLayer(const IXMLFileNodePtr& node);