Author: alg Date: Fri Jan 17 01:37:00 2014 New Revision: 1558977 URL: http://svn.apache.org/r1558977 Log: i123042 corrected reload of linked content to have access to it's own path
Modified: openoffice/trunk/main/sfx2/source/appl/fileobj.cxx openoffice/trunk/main/svgio/source/svgreader/svgimagenode.cxx openoffice/trunk/main/svx/source/svdraw/svdograf.cxx Modified: openoffice/trunk/main/sfx2/source/appl/fileobj.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/appl/fileobj.cxx?rev=1558977&r1=1558976&r2=1558977&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/appl/fileobj.cxx (original) +++ openoffice/trunk/main/sfx2/source/appl/fileobj.cxx Fri Jan 17 01:37:00 2014 @@ -349,7 +349,9 @@ sal_Bool SvFileObject::GetGraphic_Impl( else if( !pDownLoadData ) { pStream->Seek( STREAM_SEEK_TO_BEGIN ); - nRes = pGF->ImportGraphic( rGrf, aEmptyStr, *pStream, nFilter ); + + // #123042# for e.g. SVG the path is needed, see same TaskID in svx for more info + nRes = pGF->ImportGraphic( rGrf, sFileNm, *pStream, nFilter ); } else { Modified: openoffice/trunk/main/svgio/source/svgreader/svgimagenode.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/svgio/source/svgreader/svgimagenode.cxx?rev=1558977&r1=1558976&r2=1558977&view=diff ============================================================================== --- openoffice/trunk/main/svgio/source/svgreader/svgimagenode.cxx (original) +++ openoffice/trunk/main/svgio/source/svgreader/svgimagenode.cxx Fri Jan 17 01:37:00 2014 @@ -241,21 +241,32 @@ namespace svgio else if(maUrl.getLength()) { const rtl::OUString& rPath = getDocument().getAbsolutePath(); - const rtl::OUString aAbsUrl(rtl::Uri::convertRelToAbs(rPath, maUrl)); - if(aAbsUrl.getLength()) + if(rPath.getLength()) { - SvFileStream aStream(aAbsUrl, STREAM_STD_READ); - Graphic aGraphic; + const rtl::OUString aAbsUrl(rtl::Uri::convertRelToAbs(rPath, maUrl)); - if(GRFILTER_OK == GraphicFilter::GetGraphicFilter()->ImportGraphic( - aGraphic, - aAbsUrl, - aStream)) + if(aAbsUrl.getLength()) { - extractFromGraphic(aGraphic, aNewTarget, aViewBox, aBitmapEx); + SvFileStream aStream(aAbsUrl, STREAM_STD_READ); + Graphic aGraphic; + + if(GRFILTER_OK == GraphicFilter::GetGraphicFilter()->ImportGraphic( + aGraphic, + aAbsUrl, + aStream)) + { + extractFromGraphic(aGraphic, aNewTarget, aViewBox, aBitmapEx); + } } } + else + { + // #123042# detect missing path and assert - content will be missing. The + // absolute path to itself needs to be set to correctly import linked + // content in a SVG file + OSL_ENSURE(false, "SVG graphic with internal links is interpreted, but local AbsolutePath is not set: linked content will be missing (!)"); + } } else if(maXLink.getLength()) { Modified: openoffice/trunk/main/svx/source/svdraw/svdograf.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/svdraw/svdograf.cxx?rev=1558977&r1=1558976&r2=1558977&view=diff ============================================================================== --- openoffice/trunk/main/svx/source/svdraw/svdograf.cxx (original) +++ openoffice/trunk/main/svx/source/svdraw/svdograf.cxx Fri Jan 17 01:37:00 2014 @@ -135,7 +135,6 @@ const Graphic ImpLoadLinkedGraphic( cons ? pGF->GetImportFormatNumber( aFilterName ) : GRFILTER_FORMAT_DONTKNOW; - String aEmptyStr; com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > aFilterData( 1 ); // Room for improvment: @@ -144,7 +143,14 @@ const Graphic ImpLoadLinkedGraphic( cons // there we should create a new service to provide this data if needed aFilterData[ 0 ].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CreateNativeLink" ) ); aFilterData[ 0 ].Value = Any( sal_True ); - pGF->ImportGraphic( aGraphic, aEmptyStr, *pInStrm, nFilter, NULL, 0, &aFilterData ); + + // #123042# for e.g SVG the path is needed, so hand it over here. I have no real idea + // what consequences this may have; maybe this is not handed over by purpose here. Not + // handing it over means that any GraphicFormat that internallv needs a path as base + // to interpret included links may fail. + // Alternatively the path may be set at the result after this call when it is known + // that it is a SVG graphic, but only because noone yet tried to interpret it. + pGF->ImportGraphic( aGraphic, aFileName, *pInStrm, nFilter, NULL, 0, &aFilterData ); } return aGraphic; }