oox/source/export/drawingml.cxx | 8 +++++++- sw/qa/extras/ooxmlexport/data/crop-pixel.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 10 ++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-)
New commits: commit e16b01a9e4e111b1267c4eec1f5d168e5c2b8e53 Author: Miklos Vajna <[email protected]> Date: Thu Oct 9 11:09:48 2014 +0200 drawingML export: fix <a:srcRect> if graphic's map mode is pixels Change-Id: Idbe399648c60e39c61e2be09a77b0648f57d3347 diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 4e1a0ce..f1ff69b 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1063,7 +1063,13 @@ void DrawingML::WritePattFill( Reference< XPropertySet > rXPropSet ) void DrawingML::WriteSrcRect( Reference< XPropertySet > rXPropSet, const OUString& rURL ) { - Size aOriginalSize( GraphicObject::CreateGraphicObjectFromURL( rURL ).GetPrefSize() ); + GraphicObject aGraphicObject = GraphicObject::CreateGraphicObjectFromURL(rURL); + Size aOriginalSize = aGraphicObject.GetPrefSize(); + const MapMode& rMapMode = aGraphicObject.GetPrefMapMode(); + + // GraphicCrop is in mm100, so in case the original size is in pixels, convert it over. + if (rMapMode.GetMapUnit() == MAP_PIXEL) + aOriginalSize = Application::GetDefaultDevice()->PixelToLogic(aOriginalSize, MapMode(MAP_100TH_MM)); if ( GetProperty( rXPropSet, "GraphicCrop" ) ) { diff --git a/sw/qa/extras/ooxmlexport/data/crop-pixel.docx b/sw/qa/extras/ooxmlexport/data/crop-pixel.docx new file mode 100644 index 0000000..1ddb2ef Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/crop-pixel.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 279be00..3c0a592 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -435,6 +435,16 @@ DECLARE_OOXMLEXPORT_TEST(testTextboxTable, "textbox-table.docx") CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTables->getCount()); } +DECLARE_OOXMLEXPORT_TEST(testCropPixel, "crop-pixel.docx") +{ + // If map mode of the graphic is in pixels, then we used to handle original + // size of the graphic as mm100, but it was in pixels. + if (xmlDocPtr pXmlDoc = parseExport("word/document.xml")) + // This is 17667 in the original document (i.e. should be < 20000), but + // was 504666, so the image become invisible. + assertXPath(pXmlDoc, "//a:srcRect", "l", "19072"); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
