Kaydet (Commit) 286e2f5c authored tarafından Zolnai Tamás's avatar Zolnai Tamás

Related fdo#82953: Forget package URL of image after it is loaded

It causes problems if we handle those imported images differently which
are identified by a package URL, so after the first load remove
this URL and handle images on the same way as inserted images.

Some related bugs:
* #i44367#
* #i124946#
* #i114361#
* fdo#73270

The image in the test document has a special ID which is different
from that one which is generated by LO internally so after ODF export
the new generated image URL is different from the imported one.

Change-Id: I4e7d3490674c5f86bec5c7c6e1c975dcafd7c265
üst c454a0cd
......@@ -1351,7 +1351,7 @@ IMPL_LINK( SdrGrafObj, ImpSwapHdl, GraphicObject*, pO )
const OUString aNewUserData( pGraphic->GetUserData() );
pGraphic->SetGraphic( aGraphic );
pGraphic->SetUserData( aNewUserData );
pGraphic->SetUserData();
// Graphic successfully swapped in.
pRet = GRFMGR_AUTOSWAPSTREAM_LOADED;
......
......@@ -80,6 +80,10 @@ $(eval $(call gb_CppunitTest_use_components,sw_odfexport,\
xmloff/util/xo \
))
$(eval $(call gb_CppunitTest_use_custom_headers,sw_odfexport,\
officecfg/registry \
))
$(eval $(call gb_CppunitTest_use_configuration,sw_odfexport))
$(eval $(call gb_CppunitTest_use_unittest_configuration,sw_odfexport))
......
......@@ -17,6 +17,9 @@
#include <com/sun/star/text/RelOrientation.hpp>
#include <com/sun/star/text/XDocumentIndex.hpp>
#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
#include <com/sun/star/awt/XBitmap.hpp>
#include <com/sun/star/graphic/XGraphic.hpp>
#include <officecfg/Office/Common.hxx>
class Test : public SwModelTestBase
{
......@@ -401,6 +404,53 @@ DECLARE_ODFEXPORT_TEST(testTextboxRoundedCorners, "textbox-rounded-corners.odt")
CPPUNIT_ASSERT_EQUAL(OUString("a"), xCell->getString());
}
DECLARE_ODFEXPORT_TEST(testImageWithSpecialID, "document_with_two_images_with_special_IDs.odt")
{
// Here the problem was that LO did not handle well those image URLs in the ODT file which are
// not match with that one which is generated by LO internaly (based on the image's size, type and so on)
// Trigger swap out mechanism to test swapped state factor too.
boost::shared_ptr< comphelper::ConfigurationChanges > batch(comphelper::ConfigurationChanges::create());
officecfg::Office::Common::Cache::GraphicManager::TotalCacheSize::set(sal_Int32(1), batch);
batch->commit();
uno::Reference<drawing::XShape> xImage = getShape(1);
uno::Reference< beans::XPropertySet > XPropSet( xImage, uno::UNO_QUERY_THROW );
// Check URL
{
OUString sURL;
XPropSet->getPropertyValue("GraphicURL") >>= sURL;
CPPUNIT_ASSERT(sURL != OUString("vnd.sun.star.GraphicObject:00000000000000000000000000000000"));
}
// Check size
{
uno::Reference<graphic::XGraphic> xGraphic;
XPropSet->getPropertyValue("Graphic") >>= xGraphic;
uno::Reference<awt::XBitmap> xBitmap(xGraphic, uno::UNO_QUERY);
CPPUNIT_ASSERT(xBitmap.is());
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(610), xBitmap->getSize().Width );
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(381), xBitmap->getSize().Height );
}
// Second Image
xImage = getShape(2);
XPropSet.set( xImage, uno::UNO_QUERY_THROW );
// Check URL
{
OUString sURL;
XPropSet->getPropertyValue("GraphicURL") >>= sURL;
CPPUNIT_ASSERT(sURL != OUString("vnd.sun.star.GraphicObject:00000000000000000000000000000000"));
}
// Check size
{
uno::Reference<graphic::XGraphic> xGraphic;
XPropSet->getPropertyValue("Graphic") >>= xGraphic;
uno::Reference<awt::XBitmap> xBitmap(xGraphic, uno::UNO_QUERY);
CPPUNIT_ASSERT(xBitmap.is());
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(900), xBitmap->getSize().Width );
CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(600), xBitmap->getSize().Height );
}
}
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
......
......@@ -581,6 +581,10 @@ bool SwGrfNode::SwapIn( bool bWaitForData )
{
bRet = ImportGraphic( *pStrm );
delete pStrm;
if( bRet )
{
maGrfObj.SetUserData();
}
}
}
catch (const uno::Exception&)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment