diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2015-09-27 22:46:11 +1000 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2016-03-19 11:51:06 +0000 |
commit | 5ca1f04976930c6fd656ebf89d667c80e2466897 (patch) | |
tree | af2c86dda10482a3e3bcc679090c09f38dbbf395 /sd/qa | |
parent | 0eea1465a06119903fca5f5b6dfe5b05a80546ba (diff) |
tdf#93124: Fix incorrect text fit in imported PPT
To make text adjustment to full width, the alignment optimizations
had to be removed, and bAutoFit was removed, too.
Allso, to fix tdf#41245 again, the SDRTEXTFIT_AUTOFIT that is set in
SdStyleSheetPool::CreateLayoutStyleSheets had to be overridden.
I touch the following commits:
http://cgit.freedesktop.org/libreoffice/core/commit/?id=d2000efb31f864e912c6cf52760eea0e602b6893
http://cgit.freedesktop.org/libreoffice/core/commit/?id=3550256daa5451c1d51d220d5489c1b20150c374
http://cgit.freedesktop.org/libreoffice/core/commit/?id=812aff65ad0661fed9687a429c763dc8f2144a0c
Change-Id: I7f7934e2982baf0240c740e09fcb9bd348079064
Reviewed-on: https://gerrit.libreoffice.org/18895
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
Diffstat (limited to 'sd/qa')
-rw-r--r-- | sd/qa/unit/data/ppt/tdf93124.ppt | bin | 0 -> 85504 bytes | |||
-rw-r--r-- | sd/qa/unit/import-tests.cxx | 51 |
2 files changed, 51 insertions, 0 deletions
diff --git a/sd/qa/unit/data/ppt/tdf93124.ppt b/sd/qa/unit/data/ppt/tdf93124.ppt Binary files differnew file mode 100644 index 000000000000..fad847898cc6 --- /dev/null +++ b/sd/qa/unit/data/ppt/tdf93124.ppt diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index b1023968ebe6..29bcc05024be 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -41,9 +41,11 @@ #include <animations/animationnodehelper.hxx> #include <sax/tools/converter.hxx> +#include <comphelper/processfactory.hxx> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> #include <com/sun/star/drawing/XDrawPage.hpp> #include <com/sun/star/drawing/XDrawPagesSupplier.hpp> +#include <com/sun/star/drawing/GraphicExportFilter.hpp> #include <com/sun/star/animations/XAnimationNodeSupplier.hpp> #include <com/sun/star/animations/XAnimationNode.hpp> #include <com/sun/star/animations/XAnimate.hpp> @@ -62,6 +64,8 @@ #include <com/sun/star/table/XTableRows.hpp> #include <stlpool.hxx> +#include <vcl/pngread.hxx> +#include <vcl/bitmapaccess.hxx> using namespace ::com::sun::star; @@ -110,6 +114,7 @@ public: void testTdf93097(); void testTdf62255(); void testTdf89927(); + void testTdf93124(); CPPUNIT_TEST_SUITE(SdImportTest); @@ -154,6 +159,7 @@ public: CPPUNIT_TEST(testTdf93097); CPPUNIT_TEST(testTdf62255); CPPUNIT_TEST(testTdf89927); + CPPUNIT_TEST(testTdf93124); CPPUNIT_TEST_SUITE_END(); }; @@ -1219,6 +1225,51 @@ void SdImportTest::testTdf89927() xDocShRef->DoClose(); } +void SdImportTest::testTdf93124() +{ + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/ppt/tdf93124.ppt"), PPT); + uno::Reference < uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext(); + uno::Reference< drawing::XGraphicExportFilter > xGraphicExporter = drawing::GraphicExportFilter::create(xContext); + + uno::Sequence< beans::PropertyValue > aFilterData(2); + aFilterData[0].Name = "PixelWidth"; + aFilterData[0].Value <<= (sal_Int32)(320); + aFilterData[1].Name = "PixelHeight"; + aFilterData[1].Value <<= (sal_Int32)(180); + + utl::TempFile aTempFile; + aTempFile.EnableKillingFile(); + + uno::Sequence< beans::PropertyValue > aDescriptor(3); + aDescriptor[0].Name = "URL"; + aDescriptor[0].Value <<= aTempFile.GetURL(); + aDescriptor[1].Name = "FilterName"; + aDescriptor[1].Value <<= OUString("PNG"); + aDescriptor[2].Name = "FilterData"; + aDescriptor[2].Value <<= aFilterData; + + uno::Reference< lang::XComponent > xPage(getPage(0, xDocShRef), uno::UNO_QUERY); + xGraphicExporter->setSourceDocument(xPage); + xGraphicExporter->filter(aDescriptor); + + SvFileStream aFileStream(aTempFile.GetURL(), StreamMode::READ); + vcl::PNGReader aPNGReader(aFileStream); + BitmapEx aBMPEx = aPNGReader.Read(); + Bitmap aBMP = aBMPEx.GetBitmap(); + BitmapReadAccess* pRead = aBMP.AcquireReadAccess(); + int nNonWhiteCount = 0; + // The word "Top" should be in rectangle 34,4 - 76,30. If text alignment is wrong, the rectangle will be white. + for (long nX = 34; nX < (34 + 43); ++nX) + for (long nY = 4; nY < (4 + 26); ++nY) + { + const Color aColor = pRead->GetColor(nY, nX); + if ((aColor.GetRed() != 0xff) || (aColor.GetGreen() != 0xff) || (aColor.GetBlue() != 0xff)) + ++nNonWhiteCount; + } + CPPUNIT_ASSERT_MESSAGE("Tdf93124: vertical alignment of text is incorrect!", nNonWhiteCount>100); + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest); CPPUNIT_PLUGIN_IMPLEMENT(); |