[Libreoffice-commits] core.git: 4 commits - avmedia/source external/collada2gltf external/opencollada

Zolnai Tamás tamas.zolnai at collabora.com
Thu May 22 07:17:23 PDT 2014


 avmedia/source/framework/modeltools.cxx                                           |   32 
 external/collada2gltf/UnpackedTarball_collada2gltf.mk                             |    5 
 external/collada2gltf/add-unzip-kmz-files-to-collada-files-module.patch.3         | 8522 ----------
 external/collada2gltf/patches/add-unzip-kmz-files-to-collada-files-module.patch.3 | 8522 ++++++++++
 external/collada2gltf/patches/write-only-.dae-file-which-we-need.patch.0          |  128 
 external/collada2gltf/patches/wrong_uri_usage.patch.1                             |   77 
 external/collada2gltf/write-only-.dae-file-which-we-need.patch.0                  |  128 
 external/opencollada/UnpackedTarball_opencollada.mk                               |    5 
 external/opencollada/opencollada.clang.patch.0                                    |   22 
 external/opencollada/opencollada.libxml.patch.0                                   |   12 
 external/opencollada/patches/generatedsaxparser_utils_touri_fix.patch.1           |   35 
 external/opencollada/patches/opencollada.clang.patch.0                            |   22 
 external/opencollada/patches/opencollada.libxml.patch.0                           |   12 
 13 files changed, 8822 insertions(+), 8700 deletions(-)

New commits:
commit 60ce9e98cb3d1469d3e94164f5670daa2f3a26f0
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Thu May 22 15:59:34 2014 +0200

    collada2gltf: move patches to an own folder
    
    Change-Id: Ife28845af92883d8090bb80283c59a0a9a350b32

diff --git a/external/collada2gltf/UnpackedTarball_collada2gltf.mk b/external/collada2gltf/UnpackedTarball_collada2gltf.mk
index 0ced364..a3ba218 100644
--- a/external/collada2gltf/UnpackedTarball_collada2gltf.mk
+++ b/external/collada2gltf/UnpackedTarball_collada2gltf.mk
@@ -14,9 +14,9 @@ $(eval $(call gb_UnpackedTarball_set_tarball,collada2gltf,$(COLLADA2GLTF_TARBALL
 $(eval $(call gb_UnpackedTarball_add_file,collada2gltf,.,external/collada2gltf/GitSHA1.cpp))
 
 $(eval $(call gb_UnpackedTarball_add_patches,collada2gltf,\
-	external/collada2gltf/add-unzip-kmz-files-to-collada-files-module.patch.3 \
-	external/collada2gltf/write-only-.dae-file-which-we-need.patch.0 \
-	external/collada2gltf/wrong_uri_usage.patch.1 \
+	external/collada2gltf/patches/add-unzip-kmz-files-to-collada-files-module.patch.3 \
+	external/collada2gltf/patches/write-only-.dae-file-which-we-need.patch.0 \
+	external/collada2gltf/patches/wrong_uri_usage.patch.1 \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/collada2gltf/add-unzip-kmz-files-to-collada-files-module.patch.3 b/external/collada2gltf/patches/add-unzip-kmz-files-to-collada-files-module.patch.3
similarity index 100%
rename from external/collada2gltf/add-unzip-kmz-files-to-collada-files-module.patch.3
rename to external/collada2gltf/patches/add-unzip-kmz-files-to-collada-files-module.patch.3
diff --git a/external/collada2gltf/write-only-.dae-file-which-we-need.patch.0 b/external/collada2gltf/patches/write-only-.dae-file-which-we-need.patch.0
similarity index 100%
rename from external/collada2gltf/write-only-.dae-file-which-we-need.patch.0
rename to external/collada2gltf/patches/write-only-.dae-file-which-we-need.patch.0
diff --git a/external/collada2gltf/wrong_uri_usage.patch.1 b/external/collada2gltf/patches/wrong_uri_usage.patch.1
similarity index 100%
rename from external/collada2gltf/wrong_uri_usage.patch.1
rename to external/collada2gltf/patches/wrong_uri_usage.patch.1
commit 1dd84fc4674141449c78f6c5838e2254c5a28f35
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Thu May 22 15:56:19 2014 +0200

    collada2gltf: fix URL problems
    
    collada2gltf does not handle Windows pathes, the used COLLADABU::URI
    class can't parse native Windows pathes so call COLLADA2GLTFWriter
    with URL only.
    Other problems:
    collada2gltf uses the URL path for creating/opening files,
    instead of native ones.
    collada2gltf initializes _outputFilePath member in different way,
    sometimes as an URL path, sometimes as a native one, but handle it
    on the same way(as an URL).
    
    Change-Id: I104182653c07e7dcf6fc5b6e32c7031d59246b84

diff --git a/avmedia/source/framework/modeltools.cxx b/avmedia/source/framework/modeltools.cxx
index c3fa11e..a7237d5 100644
--- a/avmedia/source/framework/modeltools.cxx
+++ b/avmedia/source/framework/modeltools.cxx
@@ -152,28 +152,36 @@ bool Embed3DModel( const uno::Reference<frame::XModel>& xModel,
     const bool bIsKMZ = rSourceURL.endsWithIgnoreAsciiCase(".kmz");
     if (bIsDAE || bIsKMZ)
     {
-        OUString sName;
-        ::utl::LocalFileHelper::ConvertPhysicalNameToURL(::utl::TempFile::CreateTempName(), sName);
-        // remove .tmp extension
-        sName = sName.copy(0, sName.getLength() - 4);
-        const INetURLObject aSourceURLObj(rSourceURL);
-        std::string sSourcePath = OUStringToOString( aSourceURLObj.getFSysPath(INetURLObject::FSYS_DETECT), RTL_TEXTENCODING_UTF8 ).getStr();
-
         std::shared_ptr <GLTF::GLTFAsset> asset(new GLTF::GLTFAsset());
-        asset->setInputFilePath(sSourcePath);
+        asset->setInputFilePath(OUStringToOString( rSourceURL, RTL_TEXTENCODING_UTF8 ).getStr());
 
         if (bIsKMZ)
         {
-            std::string strDaeFilePath = GLTF::Kmz2Collada()(asset->getInputFilePath());
+            // KMZ converter needs a system path
+            const INetURLObject aSourceURLObj(rSourceURL);
+            const std::string sSourcePath =
+                OUStringToOString( aSourceURLObj.getFSysPath(INetURLObject::FSYS_DETECT), RTL_TEXTENCODING_UTF8 ).getStr();
+            const std::string strDaeFilePath = GLTF::Kmz2Collada()(sSourcePath);
             if (strDaeFilePath == "")
                 return false;
-            asset->setInputFilePath(strDaeFilePath);
+
+            // DAE converter needs URL
+            OUString sDaeFilePath;
+            ::utl::LocalFileHelper::ConvertPhysicalNameToURL(
+                OStringToOUString(OString(strDaeFilePath.c_str()), RTL_TEXTENCODING_UTF8 ), sDaeFilePath);
+            asset->setInputFilePath(OUStringToOString( sDaeFilePath, RTL_TEXTENCODING_UTF8 ).getStr());
         }
-        asset->setBundleOutputPath(OUStringToOString( sName, RTL_TEXTENCODING_UTF8 ).getStr());
+
+        OUString sOutput;
+        ::utl::LocalFileHelper::ConvertPhysicalNameToURL(::utl::TempFile::CreateTempName(), sOutput);
+        // remove .tmp extension
+        sOutput = sOutput.copy(0, sOutput.getLength()-4);
+        asset->setBundleOutputPath(OUStringToOString( sOutput, RTL_TEXTENCODING_UTF8 ).getStr());
+
         GLTF::COLLADA2GLTFWriter writer(asset);
         writer.write();
         // Path to the .json file created by COLLADA2GLTFWriter
-        sSource = sName + "/" + GetFilename(sName) + ".json";
+        sSource = sOutput + "/" + GetFilename(sOutput) + ".json";
     }
 #endif
 
diff --git a/external/collada2gltf/UnpackedTarball_collada2gltf.mk b/external/collada2gltf/UnpackedTarball_collada2gltf.mk
index 3112cd9..0ced364 100644
--- a/external/collada2gltf/UnpackedTarball_collada2gltf.mk
+++ b/external/collada2gltf/UnpackedTarball_collada2gltf.mk
@@ -16,6 +16,7 @@ $(eval $(call gb_UnpackedTarball_add_file,collada2gltf,.,external/collada2gltf/G
 $(eval $(call gb_UnpackedTarball_add_patches,collada2gltf,\
 	external/collada2gltf/add-unzip-kmz-files-to-collada-files-module.patch.3 \
 	external/collada2gltf/write-only-.dae-file-which-we-need.patch.0 \
+	external/collada2gltf/wrong_uri_usage.patch.1 \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/collada2gltf/wrong_uri_usage.patch.1 b/external/collada2gltf/wrong_uri_usage.patch.1
new file mode 100644
index 0000000..050fdaa
--- /dev/null
+++ b/external/collada2gltf/wrong_uri_usage.patch.1
@@ -0,0 +1,77 @@
+diff -ur collada2gltf.org/GLTF/GLTFAsset.cpp collada2gltf/GLTF/GLTFAsset.cpp
+--- collada2gltf.org/GLTF/GLTFAsset.cpp	2014-05-22 11:12:21.823216900 +0200
++++ collada2gltf/GLTF/GLTFAsset.cpp	2014-05-22 14:59:04.963439700 +0200
+@@ -191,12 +191,9 @@
+     shared_ptr<GLTFOutputStream> GLTFAsset::createOutputStreamIfNeeded(const std::string& streamName) {
+ 
+         if (this->_nameToOutputStream.count(streamName) == 0) {
+-            COLLADABU::URI inputURI(this->getInputFilePath().c_str());
+             COLLADABU::URI outputURI(this->getOutputFilePath().c_str());
+             
+-            std::string folder = outputURI.getPathDir();
+-            std::string fileName = inputURI.getPathFileBase();
+-            
++            std::string folder = COLLADABU::URI(outputURI.getPathDir()).toNativePath();
+             shared_ptr<GLTFOutputStream> outputStream = shared_ptr <GLTFOutputStream> (new GLTFOutputStream(folder, streamName, ""));
+             this->_nameToOutputStream[streamName] = outputStream;
+         }
+@@ -280,13 +277,13 @@
+             this->_bundleOutputPath = outputBundlePathURI.toNativePath();
+             
+             COLLADABU::URI outputPathURI(outputBundlePathURI.getURIString() + "/" + outputBundlePathURI.getPathFileBase() + "." + "json");
+-            this->_outputFilePath = outputPathURI.toNativePath();
++            this->_outputFilePath = outputPathURI.getURIString();
+             //                this->log("outputBundlePath:%s\n",outputBundlePathURI.toNativePath().c_str());
+             //                this->log("outputPath:%s\n",outputPathURI.toNativePath().c_str());
+         } else {
+             this->_bundleOutputPath = outputBundlePathURI.toNativePath();
+             COLLADABU::URI outputPathURI(outputBundlePathURI.getURIString() + "/" + outputBundlePathURI.getPathFileBase()  + "." + "json");
+-            this->_outputFilePath = outputPathURI.toNativePath();
++            this->_outputFilePath = outputPathURI.getURIString();
+         }
+         COLLADABU::Utils::createDirectoryIfNeeded(this->_bundleOutputPath.c_str());
+     }
+@@ -376,9 +373,9 @@
+                     COLLADABU::URI outputImagePathURI(inputImagePath.c_str());
+                     
+                     COLLADABU::URI outputURI(this->getOutputFilePath().c_str());
+-                    std::string folder = outputURI.getPathDir();
++                    std::string folder = COLLADABU::URI(outputURI.getPathDir()).toNativePath();
+                     std::string outputPath = folder + outputImagePathURI.getPathFile();
+-                    
++
+                     std::ifstream f1(inputImagePath.c_str(), std::fstream::binary);
+                     std::ofstream f2(outputPath.c_str(), std::fstream::binary);
+                     
+@@ -397,8 +394,8 @@
+         this->_root = shared_ptr <GLTF::JSONObject> (new GLTF::JSONObject());
+         this->_root->setString(kProfile, profile->id());
+         this->_root->createObjectIfNeeded(kNodes);
+-        
+-        this->_writer.initWithPath(this->getOutputFilePath().c_str());
++        COLLADABU::URI outputURI(this->getOutputFilePath().c_str());
++        this->_writer.initWithPath(outputURI.toNativePath().c_str());
+     }
+     
+     static void __eval(JSONValue* value, void *context) {
+@@ -427,7 +424,7 @@
+     void GLTFAsset::_writeJSONResource(const std::string &path, shared_ptr<JSONObject> obj) {
+         GLTF::GLTFWriter resultsWriter;
+         COLLADABU::URI outputURI(this->resourceOuputPathForPath(path));
+-        std::string aPath = this->getOutputFolderPath() + outputURI.getPathFile();
++        std::string aPath = COLLADABU::URI(this->getOutputFolderPath() + outputURI.getPathFile()).toNativePath();
+         resultsWriter.initWithPath(aPath);
+         obj->write(&resultsWriter);
+         
+diff -ur collada2gltf.org/shaders/commonProfileShaders.cpp collada2gltf/shaders/commonProfileShaders.cpp
+--- collada2gltf.org/shaders/commonProfileShaders.cpp	2014-05-22 11:12:21.854416900 +0200
++++ collada2gltf/shaders/commonProfileShaders.cpp	2014-05-22 14:24:57.063126800 +0200
+@@ -294,7 +294,7 @@
+             //also write the file on disk
+             if (shaderString.size() > 0) {
+                 COLLADABU::URI outputURI(asset->getOutputFilePath());
+-                std::string shaderPath =  outputURI.getPathDir() + path;
++                std::string shaderPath =  COLLADABU::URI(outputURI.getPathDir()).toNativePath() + path;
+                 GLTF::GLTFUtils::writeData(shaderPath, "w",(unsigned char*)shaderString.c_str(), shaderString.size());
+                 if (!CONFIG_BOOL(asset, "outputProgress") && asset->converterConfig()->boolForKeyPath("verboseLogging")) {
+                     asset->log("[shader]: %s\n", shaderPath.c_str());
commit d466f926f8dc07ec23efa5807fff35a0b6dd4146
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Thu May 22 15:39:43 2014 +0200

    opencollada: move patches to an own folder
    
    Change-Id: I0b60fa5b0af8224b4c517367130aa9738f071531

diff --git a/external/opencollada/UnpackedTarball_opencollada.mk b/external/opencollada/UnpackedTarball_opencollada.mk
index 487a858..7670784 100644
--- a/external/opencollada/UnpackedTarball_opencollada.mk
+++ b/external/opencollada/UnpackedTarball_opencollada.mk
@@ -12,9 +12,9 @@ $(eval $(call gb_UnpackedTarball_UnpackedTarball,opencollada))
 $(eval $(call gb_UnpackedTarball_set_tarball,opencollada,$(OPENCOLLADA_TARBALL)))
 
 $(eval $(call gb_UnpackedTarball_add_patches,opencollada,\
-	external/opencollada/opencollada.clang.patch.0 \
-	external/opencollada/opencollada.libxml.patch.0 \
-	external/opencollada/generatedsaxparser_utils_touri_fix.patch.1 \
+	external/opencollada/patches/opencollada.clang.patch.0 \
+	external/opencollada/patches/opencollada.libxml.patch.0 \
+	external/opencollada/patches/generatedsaxparser_utils_touri_fix.patch.1 \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/opencollada/generatedsaxparser_utils_touri_fix.patch.1 b/external/opencollada/patches/generatedsaxparser_utils_touri_fix.patch.1
similarity index 100%
rename from external/opencollada/generatedsaxparser_utils_touri_fix.patch.1
rename to external/opencollada/patches/generatedsaxparser_utils_touri_fix.patch.1
diff --git a/external/opencollada/opencollada.clang.patch.0 b/external/opencollada/patches/opencollada.clang.patch.0
similarity index 100%
rename from external/opencollada/opencollada.clang.patch.0
rename to external/opencollada/patches/opencollada.clang.patch.0
diff --git a/external/opencollada/opencollada.libxml.patch.0 b/external/opencollada/patches/opencollada.libxml.patch.0
similarity index 100%
rename from external/opencollada/opencollada.libxml.patch.0
rename to external/opencollada/patches/opencollada.libxml.patch.0
commit 7cafb7553342c61d44c83cbcc22bdae5817d10fe
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Thu May 22 15:36:32 2014 +0200

    opencollada: uninitialized bool variable broke the parsing
    
    GeneratedSaxParser::Utils:toURI() method has a bool output
    parameter called failed, which is assumed to be set inside
    the method before return. At some place the caller code does
    not initialize the bool variable passed to this failed parameter
    and so when the caller checkes the returned value it is
    undefined.
    e.g. it can be false when the method called successfully so
    the error handling throws away the returned URI.
    
    Change-Id: I3f90fab657a86b42bba0f492518e36c343e69d21

diff --git a/external/opencollada/UnpackedTarball_opencollada.mk b/external/opencollada/UnpackedTarball_opencollada.mk
index 579efc2..487a858 100644
--- a/external/opencollada/UnpackedTarball_opencollada.mk
+++ b/external/opencollada/UnpackedTarball_opencollada.mk
@@ -14,6 +14,7 @@ $(eval $(call gb_UnpackedTarball_set_tarball,opencollada,$(OPENCOLLADA_TARBALL))
 $(eval $(call gb_UnpackedTarball_add_patches,opencollada,\
 	external/opencollada/opencollada.clang.patch.0 \
 	external/opencollada/opencollada.libxml.patch.0 \
+	external/opencollada/generatedsaxparser_utils_touri_fix.patch.1 \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/external/opencollada/generatedsaxparser_utils_touri_fix.patch.1 b/external/opencollada/generatedsaxparser_utils_touri_fix.patch.1
new file mode 100644
index 0000000..892d4b9
--- /dev/null
+++ b/external/opencollada/generatedsaxparser_utils_touri_fix.patch.1
@@ -0,0 +1,35 @@
+diff -ur opencollada.org/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp opencollada/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp
+--- opencollada.org/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp	2014-05-22 15:24:25.437939696 +0200
++++ opencollada/GeneratedSaxParser/src/GeneratedSaxParserUtils.cpp	2014-05-22 15:24:50.769938623 +0200
+@@ -865,13 +865,14 @@
+     {
+         if ( *buffer == bufferEnd )
+         {
+-            failed = false;
++            failed = true;
+             return COLLADABU::URI(0);
+         }
+         //Just get the string as it is for ids, so that we are able to read FBX-COLLADA
+         //Otherwise, calling toStringItem would result in a truncated string when an id contains spaces
+         //const ParserString& string = toStringListItem(buffer, bufferEnd, failed);
+         //return COLLADABU::URI(string.str, string.length);
++        failed = false;
+         return COLLADABU::URI((const char*)*buffer, bufferEnd - *buffer);
+     }
+ 
+@@ -880,13 +881,14 @@
+     {
+         if ( **buffer == '\0' )
+         {
+-            failed = false;
++            failed = true;
+             return COLLADABU::URI(0);
+         }
+         //Just get the string as it is for ids, so that we are able to read FBX-COLLADA
+         //Otherwise, calling toStringItem would result in a truncated string when an id contains spaces
+         //const ParserString& string = toStringListItem(buffer, failed);
+         //return COLLADABU::URI(string.str, string.length);
++        failed = false;
+         return COLLADABU::URI((const char*)*buffer);
+     }
+ 


More information about the Libreoffice-commits mailing list