From 27f4603edfec0026bc00d226c965021f67d13f44 Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Tue, 11 Nov 2025 15:29:07 +0200 Subject: [PATCH 1/4] Adding MVR/GDTF latest version calls --- src/Implementation/CGdtfFixture.cpp | 25 +++++++++++++++++++ src/Implementation/CGdtfFixture.h | 1 + .../CMediaRessourceVectorImpl.cpp | 21 ++++++++++++++++ .../CMediaRessourceVectorImpl.h | 9 +++++++ src/Include/IMediaRessourceVectorInterface.h | 9 +++++++ src/Prefix/CommonPrefix.h | 5 ++++ src/SceneDataExchange.cpp | 10 ++++++++ src/SceneDataExchange.h | 4 +++ 8 files changed, 84 insertions(+) diff --git a/src/Implementation/CGdtfFixture.cpp b/src/Implementation/CGdtfFixture.cpp index 50ac9e3f..e225829a 100755 --- a/src/Implementation/CGdtfFixture.cpp +++ b/src/Implementation/CGdtfFixture.cpp @@ -240,6 +240,31 @@ VectorworksMVR::VCOMError VectorworksMVR::CGdtfFixtureImpl::GetGDTFVersion( Sint return kVCOMError_NoError; } +VectorworksMVR::VCOMError VectorworksMVR::CGdtfFixtureImpl::GetGDTFVersion( MvrString& version ) +{ + if ( !fFixtureObject ) + { + return kVCOMError_NotInitialized; + } + + Sint32 major = fFixtureObject->GetMajorVersion(); + Sint32 minor = fFixtureObject->GetMinorVersion(); + + if ( major <= 0 || minor <= 0 ) + { + major = 0; + minor = 0; + + return kVCOMError_Failed; + } + else + { + version = major + "." + minor; + } + + return kVCOMError_NoError; +} + MvrString VectorworksMVR::CGdtfFixtureImpl::GetName() { diff --git a/src/Implementation/CGdtfFixture.h b/src/Implementation/CGdtfFixture.h index 1c83d09c..9643c2ad 100755 --- a/src/Implementation/CGdtfFixture.h +++ b/src/Implementation/CGdtfFixture.h @@ -28,6 +28,7 @@ namespace VectorworksMVR virtual VCOMError VCOM_CALLTYPE Close(); virtual VCOMError VCOM_CALLTYPE GetGDTFVersion( Sint32& major, Sint32& minor ); + virtual VCOMError VCOM_CALLTYPE GetGDTFVersion( MvrString& version ); virtual MvrString VCOM_CALLTYPE GetName(); virtual MvrString VCOM_CALLTYPE GetShortName(); diff --git a/src/Implementation/CMediaRessourceVectorImpl.cpp b/src/Implementation/CMediaRessourceVectorImpl.cpp index 39f0a5f4..acf58429 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.cpp +++ b/src/Implementation/CMediaRessourceVectorImpl.cpp @@ -1591,5 +1591,26 @@ VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::SetAbortCal fExchangeObj.SetAbortCallback( cb ); + return kVCOMError_NoError; +} + +VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetMVRFileVersion(MvrString& version) +{ + version = fExchangeObj.GetMVRFileVersion(); + + return kVCOMError_NoError; +} + +VectorworksMVR::VCOMError VCOM_CALLTYPE VectorworksMVR::CMediaRessourceVectorImpl::GetLatestMVRSupoortedVersion( MvrString& version ) +{ + version = TXString::ToStringReal( kLatestMVRFileVersion ); + + return kVCOMError_NoError; +} + +VectorworksMVR::VCOMError VCOM_CALLTYPE VectorworksMVR::CMediaRessourceVectorImpl::GetLatestGDTFSupoortedVersion( MvrString& version ) +{ + version = TXString::ToStringReal( kLatestGDTFFileVersion ); + return kVCOMError_NoError; } \ No newline at end of file diff --git a/src/Implementation/CMediaRessourceVectorImpl.h b/src/Implementation/CMediaRessourceVectorImpl.h index 591e455c..bd37cc48 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.h +++ b/src/Implementation/CMediaRessourceVectorImpl.h @@ -113,5 +113,14 @@ namespace VectorworksMVR // Check for duplicated uuids virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated); + + // Get MVR File Version + virtual VCOMError VCOM_CALLTYPE GetMVRFileVersion( MvrString& version ); + + // Get latest MVR supported version + virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( MvrString& version ); + + // Get latest GDTF supported version + virtual VCOMError VCOM_CALLTYPE GetLatestGDTFSupoortedVersion( MvrString& version ); }; } diff --git a/src/Include/IMediaRessourceVectorInterface.h b/src/Include/IMediaRessourceVectorInterface.h index f579ad68..5821f6d0 100644 --- a/src/Include/IMediaRessourceVectorInterface.h +++ b/src/Include/IMediaRessourceVectorInterface.h @@ -507,6 +507,14 @@ namespace VectorworksMVR // Check for duplicated uuids virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated) = 0; + + virtual VCOMError VCOM_CALLTYPE GetMVRFileVersion( MvrString& version ) = 0; + + // Get latest MVR supported version + virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( MvrString& version ) = 0; + + // Get latest GDTF supported version + virtual VCOMError VCOM_CALLTYPE GetLatestGDTFSupoortedVersion( MvrString& version ) = 0; }; typedef VCOMPtr IMediaRessourceVectorInterfacePtr; @@ -1559,6 +1567,7 @@ class DYNAMIC_ATTRIBUTE IGdtfMacro : public IVWUnknown virtual VCOMError VCOM_CALLTYPE Close() = 0; virtual VCOMError VCOM_CALLTYPE GetGDTFVersion( Sint32& major, Sint32& minor ) = 0; + virtual VCOMError VCOM_CALLTYPE GetGDTFVersion( MvrString& version ) = 0; virtual MvrString VCOM_CALLTYPE GetName() = 0; virtual MvrString VCOM_CALLTYPE GetManufacturer() = 0; diff --git a/src/Prefix/CommonPrefix.h b/src/Prefix/CommonPrefix.h index d6780086..0acce28a 100644 --- a/src/Prefix/CommonPrefix.h +++ b/src/Prefix/CommonPrefix.h @@ -3,6 +3,11 @@ //----------------------------------------------------------------------------- #include "Prefix/StdAfx.h" +// Latest MVR version supported +#define kLatestMVRFileVersion 1.5 +// Latest GDTF version supported +#define kLatestGDTFFileVersion 1.2 + //////////////////////////////////////////////////////////////// // Plug-in specific #define VWParaLightingDevice_CLASSNAME "Lighting Device" diff --git a/src/SceneDataExchange.cpp b/src/SceneDataExchange.cpp index 62c4c895..293aea72 100644 --- a/src/SceneDataExchange.cpp +++ b/src/SceneDataExchange.cpp @@ -3805,6 +3805,11 @@ 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 ); + fMVRFileVersion = outMajorValue + "." + outMinorValue; // ---------------------------------------------------------------- // Find the user data Node @@ -4180,3 +4185,8 @@ bool SceneDataExchange::CheckAbort() } return false; } + +TXString SceneDataExchange::GetMVRFileVersion() const +{ + return fMVRFileVersion; +} \ No newline at end of file diff --git a/src/SceneDataExchange.h b/src/SceneDataExchange.h index 933b96eb..a4ac7da6 100644 --- a/src/SceneDataExchange.h +++ b/src/SceneDataExchange.h @@ -1021,6 +1021,8 @@ namespace SceneData //Abort reading flag bool fAbortReading = false; + + TXString fMVRFileVersion = "0.0"; public: // --------------------------------------------------------------------------------------------------------------------- @@ -1110,6 +1112,8 @@ namespace SceneData static void SetAbortCallback( const std::function& cb ); void GetAbortCallback( std::function& cb ); + TXString GetMVRFileVersion() const; + private: void ReadFromGeneralSceneDescription(ISceneDataZipBuffer& xmlFile); void ProcessLayer(const IXMLFileNodePtr& node); From d3059457638af93b9a72847ff994d81cb32290a7 Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Thu, 20 Nov 2025 10:07:23 +0200 Subject: [PATCH 2/4] Removing the GDTF string and reuse the MVR constants --- src/Implementation/CGdtfFixture.cpp | 26 ------------------- .../CMediaRessourceVectorImpl.cpp | 15 ++++++----- .../CMediaRessourceVectorImpl.h | 6 ++--- src/Include/IMediaRessourceVectorInterface.h | 7 +++-- src/Prefix/CommonPrefix.h | 8 +++--- src/SceneDataExchange.cpp | 12 ++++++--- src/SceneDataExchange.h | 6 +++-- 7 files changed, 31 insertions(+), 49 deletions(-) diff --git a/src/Implementation/CGdtfFixture.cpp b/src/Implementation/CGdtfFixture.cpp index e225829a..e6a6e92b 100755 --- a/src/Implementation/CGdtfFixture.cpp +++ b/src/Implementation/CGdtfFixture.cpp @@ -240,32 +240,6 @@ VectorworksMVR::VCOMError VectorworksMVR::CGdtfFixtureImpl::GetGDTFVersion( Sint return kVCOMError_NoError; } -VectorworksMVR::VCOMError VectorworksMVR::CGdtfFixtureImpl::GetGDTFVersion( MvrString& version ) -{ - if ( !fFixtureObject ) - { - return kVCOMError_NotInitialized; - } - - Sint32 major = fFixtureObject->GetMajorVersion(); - Sint32 minor = fFixtureObject->GetMinorVersion(); - - if ( major <= 0 || minor <= 0 ) - { - major = 0; - minor = 0; - - return kVCOMError_Failed; - } - else - { - version = major + "." + minor; - } - - return kVCOMError_NoError; -} - - MvrString VectorworksMVR::CGdtfFixtureImpl::GetName() { if(!fFixtureObject) {return "";} diff --git a/src/Implementation/CMediaRessourceVectorImpl.cpp b/src/Implementation/CMediaRessourceVectorImpl.cpp index acf58429..59f0e35c 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.cpp +++ b/src/Implementation/CMediaRessourceVectorImpl.cpp @@ -1594,23 +1594,26 @@ VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::SetAbortCal return kVCOMError_NoError; } -VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetMVRFileVersion(MvrString& version) +VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetMVRFileVersion(Sint32& major, Sint32& minor) { - version = fExchangeObj.GetMVRFileVersion(); + major = fExchangeObj.GetMVRFileMajorVersion(); + minor = fExchangeObj.GetMVRFileMinorVersion(); return kVCOMError_NoError; } -VectorworksMVR::VCOMError VCOM_CALLTYPE VectorworksMVR::CMediaRessourceVectorImpl::GetLatestMVRSupoortedVersion( MvrString& version ) +VectorworksMVR::VCOMError VCOM_CALLTYPE VectorworksMVR::CMediaRessourceVectorImpl::GetLatestMVRSupoortedVersion( Sint32& major, Sint32& minor ) { - version = TXString::ToStringReal( kLatestMVRFileVersion ); + major = kMVR_MajorVersion; + minor = kMVR_MinorVersion; return kVCOMError_NoError; } -VectorworksMVR::VCOMError VCOM_CALLTYPE VectorworksMVR::CMediaRessourceVectorImpl::GetLatestGDTFSupoortedVersion( MvrString& version ) +VectorworksMVR::VCOMError VCOM_CALLTYPE VectorworksMVR::CMediaRessourceVectorImpl::GetLatestGDTFSupoortedVersion( Sint32& major, Sint32& minor ) { - version = TXString::ToStringReal( kLatestGDTFFileVersion ); + major = kGDTF_CurrentMajorVersion; + minor = kGDTF_CurrentMinorVersion; return kVCOMError_NoError; } \ No newline at end of file diff --git a/src/Implementation/CMediaRessourceVectorImpl.h b/src/Implementation/CMediaRessourceVectorImpl.h index bd37cc48..9692db36 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.h +++ b/src/Implementation/CMediaRessourceVectorImpl.h @@ -115,12 +115,12 @@ namespace VectorworksMVR virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated); // Get MVR File Version - virtual VCOMError VCOM_CALLTYPE GetMVRFileVersion( MvrString& version ); + virtual VCOMError VCOM_CALLTYPE GetMVRFileVersion( Sint32& major, Sint32& minor ); // Get latest MVR supported version - virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( MvrString& version ); + virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( Sint32& major, Sint32& minor ); // Get latest GDTF supported version - virtual VCOMError VCOM_CALLTYPE GetLatestGDTFSupoortedVersion( MvrString& version ); + virtual VCOMError VCOM_CALLTYPE GetLatestGDTFSupoortedVersion( Sint32& major, Sint32& minor ); }; } diff --git a/src/Include/IMediaRessourceVectorInterface.h b/src/Include/IMediaRessourceVectorInterface.h index 5821f6d0..216cb09a 100644 --- a/src/Include/IMediaRessourceVectorInterface.h +++ b/src/Include/IMediaRessourceVectorInterface.h @@ -508,13 +508,13 @@ namespace VectorworksMVR // Check for duplicated uuids virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated) = 0; - virtual VCOMError VCOM_CALLTYPE GetMVRFileVersion( MvrString& version ) = 0; + virtual VCOMError VCOM_CALLTYPE GetMVRFileVersion( Sint32& major, Sint32& minor ) = 0; // Get latest MVR supported version - virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( MvrString& version ) = 0; + virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( Sint32& major, Sint32& minor ) = 0; // Get latest GDTF supported version - virtual VCOMError VCOM_CALLTYPE GetLatestGDTFSupoortedVersion( MvrString& version ) = 0; + virtual VCOMError VCOM_CALLTYPE GetLatestGDTFSupoortedVersion( Sint32& major, Sint32& minor ) = 0; }; typedef VCOMPtr IMediaRessourceVectorInterfacePtr; @@ -1567,7 +1567,6 @@ class DYNAMIC_ATTRIBUTE IGdtfMacro : public IVWUnknown virtual VCOMError VCOM_CALLTYPE Close() = 0; virtual VCOMError VCOM_CALLTYPE GetGDTFVersion( Sint32& major, Sint32& minor ) = 0; - virtual VCOMError VCOM_CALLTYPE GetGDTFVersion( MvrString& version ) = 0; virtual MvrString VCOM_CALLTYPE GetName() = 0; virtual MvrString VCOM_CALLTYPE GetManufacturer() = 0; diff --git a/src/Prefix/CommonPrefix.h b/src/Prefix/CommonPrefix.h index 0acce28a..136d8703 100644 --- a/src/Prefix/CommonPrefix.h +++ b/src/Prefix/CommonPrefix.h @@ -3,11 +3,6 @@ //----------------------------------------------------------------------------- #include "Prefix/StdAfx.h" -// Latest MVR version supported -#define kLatestMVRFileVersion 1.5 -// Latest GDTF version supported -#define kLatestGDTFFileVersion 1.2 - //////////////////////////////////////////////////////////////// // Plug-in specific #define VWParaLightingDevice_CLASSNAME "Lighting Device" @@ -255,6 +250,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 293aea72..fcda952e 100644 --- a/src/SceneDataExchange.cpp +++ b/src/SceneDataExchange.cpp @@ -3809,7 +3809,8 @@ void SceneDataExchange::ReadFromGeneralSceneDescription(ISceneDataZipBuffer& xml TXString outMajorValue, outMinorValue; rootNode->GetNodeAttributeValue(XML_Val_RootAttrMainVersion, outMajorValue); rootNode->GetNodeAttributeValue( XML_Val_RootAttrMinorVersion, outMinorValue ); - fMVRFileVersion = outMajorValue + "." + outMinorValue; + fMVRFileMajorVersion = outMajorValue.atoi(); + fMVRFileMinorVersion = outMinorValue.atoi(); // ---------------------------------------------------------------- // Find the user data Node @@ -4186,7 +4187,12 @@ bool SceneDataExchange::CheckAbort() return false; } -TXString SceneDataExchange::GetMVRFileVersion() const +size_t SceneDataExchange::GetMVRFileMajorVersion() const { - return fMVRFileVersion; + 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 a4ac7da6..804bbbc0 100644 --- a/src/SceneDataExchange.h +++ b/src/SceneDataExchange.h @@ -1022,7 +1022,8 @@ namespace SceneData //Abort reading flag bool fAbortReading = false; - TXString fMVRFileVersion = "0.0"; + size_t fMVRFileMajorVersion = 0; + size_t fMVRFileMinorVersion = 0; public: // --------------------------------------------------------------------------------------------------------------------- @@ -1112,7 +1113,8 @@ namespace SceneData static void SetAbortCallback( const std::function& cb ); void GetAbortCallback( std::function& cb ); - TXString GetMVRFileVersion() const; + size_t GetMVRFileMajorVersion() const; + size_t GetMVRFileMinorVersion() const; private: void ReadFromGeneralSceneDescription(ISceneDataZipBuffer& xmlFile); From c833ea35afaa97dfd6415428d5780352fab3aadc Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Thu, 20 Nov 2025 10:11:50 +0200 Subject: [PATCH 3/4] Fixing build failure --- src/Implementation/CGdtfFixture.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Implementation/CGdtfFixture.h b/src/Implementation/CGdtfFixture.h index 9643c2ad..1c83d09c 100755 --- a/src/Implementation/CGdtfFixture.h +++ b/src/Implementation/CGdtfFixture.h @@ -28,7 +28,6 @@ namespace VectorworksMVR virtual VCOMError VCOM_CALLTYPE Close(); virtual VCOMError VCOM_CALLTYPE GetGDTFVersion( Sint32& major, Sint32& minor ); - virtual VCOMError VCOM_CALLTYPE GetGDTFVersion( MvrString& version ); virtual MvrString VCOM_CALLTYPE GetName(); virtual MvrString VCOM_CALLTYPE GetShortName(); From 00a27a6be7d518e47a90389437b5461ac7ca6fdb Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Thu, 20 Nov 2025 10:34:43 +0200 Subject: [PATCH 4/4] Fixing name inconsistence --- src/Implementation/CMediaRessourceVectorImpl.cpp | 2 +- src/Implementation/CMediaRessourceVectorImpl.h | 2 +- src/Include/IMediaRessourceVectorInterface.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Implementation/CMediaRessourceVectorImpl.cpp b/src/Implementation/CMediaRessourceVectorImpl.cpp index 22b3b435..3a4143ac 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.cpp +++ b/src/Implementation/CMediaRessourceVectorImpl.cpp @@ -1594,7 +1594,7 @@ VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::SetAbortCal return kVCOMError_NoError; } -VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetMVRFileVersion(Sint32& major, Sint32& minor) +VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetMVRVersion(Sint32& major, Sint32& minor) { major = fExchangeObj.GetMVRFileMajorVersion(); minor = fExchangeObj.GetMVRFileMinorVersion(); diff --git a/src/Implementation/CMediaRessourceVectorImpl.h b/src/Implementation/CMediaRessourceVectorImpl.h index 9fd3468f..4a5db374 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.h +++ b/src/Implementation/CMediaRessourceVectorImpl.h @@ -115,7 +115,7 @@ namespace VectorworksMVR virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated); // Get MVR File Version - virtual VCOMError VCOM_CALLTYPE GetMVRFileVersion( Sint32& major, Sint32& minor ); + virtual VCOMError VCOM_CALLTYPE GetMVRVersion( Sint32& major, Sint32& minor ); // Get latest MVR supported version virtual VCOMError VCOM_CALLTYPE GetLatestMVRSupoortedVersion( Sint32& major, Sint32& minor ); diff --git a/src/Include/IMediaRessourceVectorInterface.h b/src/Include/IMediaRessourceVectorInterface.h index e3c12ad0..493b6360 100644 --- a/src/Include/IMediaRessourceVectorInterface.h +++ b/src/Include/IMediaRessourceVectorInterface.h @@ -509,7 +509,7 @@ namespace VectorworksMVR virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated) = 0; // Get MVR file version - virtual VCOMError VCOM_CALLTYPE GetMVRFileVersion( Sint32& major, Sint32& minor ) = 0; + 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;