[Libreoffice-commits] core.git: Branch 'feature/chart-3d-chart2' - avmedia/source
Zolnai Tamás
tamas.zolnai at collabora.com
Thu May 22 10:44:25 PDT 2014
avmedia/source/framework/modeltools.cxx | 41 +++++++++++++++++++++++++-------
1 file changed, 33 insertions(+), 8 deletions(-)
New commits:
commit 22c98417735273a4c987edb0651dad645cf593bd
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Thu May 22 19:19:02 2014 +0200
glTF: download *.dae and *.kmz files to the temp folder before conversion
Copy them to the same folder where the conversion output is written.
Change-Id: I38b93bf3fc427974cff7d6975151451a253b1cce
diff --git a/avmedia/source/framework/modeltools.cxx b/avmedia/source/framework/modeltools.cxx
index a7237d5..7de35f7 100644
--- a/avmedia/source/framework/modeltools.cxx
+++ b/avmedia/source/framework/modeltools.cxx
@@ -153,12 +153,43 @@ bool Embed3DModel( const uno::Reference<frame::XModel>& xModel,
if (bIsDAE || bIsKMZ)
{
std::shared_ptr <GLTF::GLTFAsset> asset(new GLTF::GLTFAsset());
- asset->setInputFilePath(OUStringToOString( rSourceURL, 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());
+
+ const INetURLObject aSourceURLObj(sSource);
+ // If *.dae or *.kmz file is not in the local file system, then copy them to a temp folder for the conversion
+ if(aSourceURLObj.GetProtocol() != INET_PROT_FILE )
+ {
+ try
+ {
+ ::ucbhelper::Content aSourceContent(sSource,
+ uno::Reference<ucb::XCommandEnvironment>(),
+ comphelper::getProcessComponentContext());
+
+ const OUString sTarget = sOutput + GetFilename(sSource);
+ ::ucbhelper::Content aTempContent(sTarget,
+ uno::Reference<ucb::XCommandEnvironment>(),
+ comphelper::getProcessComponentContext());
+
+ aTempContent.writeStream(aSourceContent.openStream(), true);
+ sSource = sTarget;
+ }
+ catch (const uno::Exception&)
+ {
+ SAL_WARN("avmedia.opengl", "Exception while trying to copy source file to the temp folder for conversion:\n" << sSource);
+ return false;
+ }
+ }
+
+ asset->setInputFilePath(OUStringToOString( sSource, RTL_TEXTENCODING_UTF8 ).getStr());
if (bIsKMZ)
{
// 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);
@@ -172,12 +203,6 @@ bool Embed3DModel( const uno::Reference<frame::XModel>& xModel,
asset->setInputFilePath(OUStringToOString( sDaeFilePath, 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
More information about the Libreoffice-commits
mailing list