diff options
author | Armin Le Grand <Armin.Le.Grand@cib.de> | 2017-06-23 12:16:33 +0200 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2017-07-15 11:01:30 +0200 |
commit | 48af0b9310023f3789d46d5714498e62728a8d8c (patch) | |
tree | ef6f71c5e0eda29bb47453b7bd3dbd5d8b43ecfe /emfio | |
parent | 762c52346f8e6a6b91fe1c758494b2c152361e73 (diff) |
emfplus: UnitTests and gerrit build corrections
Needed to migrate UnitTest for Emf/Wmf import from
vcl to emfio. Corrected stuff based on gerrit build
feedback
Change-Id: I7fd2456f814ea19583072ba09730a07e9b9d4061
Diffstat (limited to 'emfio')
18 files changed, 544 insertions, 7 deletions
diff --git a/emfio/CppunitTest_emfio.mk b/emfio/CppunitTest_emfio_emf_test.mk index e785ac45b6e5..6965613e9cd8 100644 --- a/emfio/CppunitTest_emfio.mk +++ b/emfio/CppunitTest_emfio_emf_test.mk @@ -21,6 +21,10 @@ $(eval $(call gb_CppunitTest_use_externals,emfio,\ libxml2 \ )) +$(eval $(call gb_CppunitTest_add_exception_objects,emfio,\ + emfio/qa/cppunit/emf/EmfImportTest \ +)) + $(eval $(call gb_CppunitTest_use_sdk_api,emfio)) $(eval $(call gb_CppunitTest_use_library_objects,emfio,\ @@ -42,10 +46,6 @@ $(eval $(call gb_CppunitTest_use_libraries,emfio,\ utl \ )) -$(eval $(call gb_CppunitTest_add_exception_objects,emfio,\ - emfio/qa/cppunit/EmfImportTest \ -)) - $(eval $(call gb_CppunitTest_use_ure,emfio)) $(eval $(call gb_CppunitTest_use_vcl,emfio)) diff --git a/emfio/CppunitTest_emfio_wmf_test.mk b/emfio/CppunitTest_emfio_wmf_test.mk new file mode 100644 index 000000000000..82f53ce2f3fe --- /dev/null +++ b/emfio/CppunitTest_emfio_wmf_test.mk @@ -0,0 +1,218 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +$(eval $(call gb_CppunitTest_CppunitTest,emfio)) + +$(eval $(call gb_CppunitTest_set_componentfile,emfio,emfio/emfio)) + +$(eval $(call gb_CppunitTest_set_include,emfio,\ + $$(INCLUDE) \ + -I$(SRCDIR)/emfio/inc \ +)) + +$(eval $(call gb_CppunitTest_use_externals,emfio,\ + boost_headers \ + libxml2 \ + $(if $(filter PDFIUM,$(BUILD_TYPE)),pdfium) \ +)) + +$(eval $(call gb_CppunitTest_add_exception_objects,emfio, \ + emfio/qa/cppunit/wmf/wmfimporttest \ +)) + +$(eval $(call gb_CppunitTest_use_sdk_api,emfio)) + +$(eval $(call gb_CppunitTest_use_library_objects,emfio, \ + emfio \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,emfio,\ + $(call gb_Helper_optional,BREAKPAD, \ + crashreport) \ + basegfx \ + drawinglayer \ + cppu \ + cppuhelper \ + comphelper \ + i18nlangtag \ + i18nutil \ + $(if $(filter OPENCL,$(BUILD_TYPE)),opencl) \ + sal \ + salhelper \ + sot \ + svl \ + svt \ + test \ + test-setupvcl \ + tl \ + ucbhelper \ + unotest \ + vcl \ + utl \ + xmlreader \ +)) + +$(eval $(call gb_CppunitTest_use_externals,emfio,\ + $(if $(filter LINUX MACOSX %BSD SOLARIS,$(OS)), \ + curl) \ + jpeg \ + $(if $(filter-out IOS WNT,$(OS)), \ + nss3 \ + plc4) \ + libeot \ +)) + +ifeq ($(OS),MACOSX) +$(eval $(call gb_CppunitTest_add_libs,emfio,\ + -framework IOKit \ + -F/System/Library/PrivateFrameworks \ + -framework CoreUI \ + -lobjc \ +)) +endif + +ifeq ($(ENABLE_JAVA),TRUE) +$(eval $(call gb_CppunitTest_use_libraries,emfio,\ + jvmaccess \ +)) +endif + +$(eval $(call gb_CppunitTest_use_externals,emfio,\ + gio \ + graphite \ + harfbuzz \ + icuuc \ + lcms2 \ +)) +ifeq ($(ENABLE_HEADLESS),) +$(eval $(call gb_CppunitTest_use_externals,emfio,\ + epoxy \ + )) +endif + +ifeq ($(OS),MACOSX) +$(eval $(call gb_CppunitTest_use_system_darwin_frameworks,emfio,\ + ApplicationServices \ +)) +$(eval $(call gb_CppunitTest_use_system_darwin_frameworks,emfio,\ + $(if $(filter X86_64,$(CPUNAME)),,QuickTime) \ + Cocoa \ + Carbon \ + CoreFoundation \ +)) +ifneq ($(ENABLE_MACOSX_SANDBOX),TRUE) +$(eval $(call gb_CppunitTest_use_libraries,emfio,\ + AppleRemote \ +)) +endif +endif + +ifeq ($(USING_X11),TRUE) +$(eval $(call gb_CppunitTest_use_externals,emfio,\ + cairo \ + cups \ + dbus \ + fontconfig \ + freetype \ + valgrind \ +)) +endif + +ifeq ($(ENABLE_HEADLESS),TRUE) +$(eval $(call gb_CppunitTest_use_externals,emfio,\ + cairo \ + freetype \ + fontconfig \ +)) +else +ifeq ($(OS),LINUX) +$(eval $(call gb_CppunitTest_add_libs,emfio,\ + -lm \ + -ldl \ + -lpthread \ + -lX11 \ +)) +endif +endif + +ifeq ($(OS),ANDROID) +$(eval $(call gb_CppunitTest_add_libs,emfio,\ + -llog \ + -landroid \ + -llo-bootstrap \ +)) +$(eval $(call gb_CppunitTest_use_externals,emfio,\ + cairo \ + fontconfig \ + freetype \ + expat \ +)) +endif + +ifeq ($(OS),IOS) +$(eval $(call gb_CppunitTest_use_system_darwin_frameworks,emfio,\ + UIKit \ + CoreFoundation \ +)) +endif + +ifeq ($(OS),WNT) +$(eval $(call gb_CppunitTest_use_system_win32_libs,emfio,\ + advapi32 \ + crypt32 \ + gdi32 \ + gdiplus \ + imm32 \ + mpr \ + ole32 \ + shell32 \ + usp10 \ + uuid \ + version \ + winspool \ + setupapi \ + shlwapi \ +)) +#$(eval $(call gb_CppunitTest_add_nativeres,emfio,vcl/salsrc)) +endif + +ifeq ($(OS), $(filter LINUX %BSD SOLARIS, $(OS))) +$(eval $(call gb_CppunitTest_add_libs,emfio,\ + -lm $(DLOPEN_LIBS) \ + -lpthread \ + -lX11 \ + -lXext \ +)) +endif + +$(eval $(call gb_CppunitTest_use_ure,emfio)) + +$(eval $(call gb_CppunitTest_use_components,emfio,\ + configmgr/source/configmgr \ + i18npool/util/i18npool \ + ucb/source/core/ucb1 \ + unotools/util/utl \ +)) + +$(eval $(call gb_CppunitTest_use_configuration,emfio)) + +# See gb_CppunitTest__use_vcl (solenv/gbuild/CppunitTest.mk; headless): +ifeq ($(USING_X11),TRUE) +$(call gb_CppunitTest_get_target,emfio): \ + $(call gb_Library_get_target,desktop_detector) +endif + +# Hack to suppress ASan ODR violation warnings about symbols present in both the +# vcl objects linked into this test library and the vcl library (which gets +# dynamically loaded during the test): +$(call gb_CppunitTest_get_target,emfio): \ + EXTRA_ENV_VARS := \ + ASAN_OPTIONS="$${ASAN_OPTIONS+$$ASAN_OPTIONS:}"detect_odr_violation=0 + +# vim: set noet sw=4 ts=4: diff --git a/emfio/Module_emfio.mk b/emfio/Module_emfio.mk index 719bd0180628..c4d5ec70be9c 100644 --- a/emfio/Module_emfio.mk +++ b/emfio/Module_emfio.mk @@ -23,7 +23,8 @@ $(eval $(call gb_Module_add_targets,emfio,\ )) $(eval $(call gb_Module_add_check_targets,emfio,\ - CppunitTest_emfio \ + CppunitTest_emfio_emf_test \ + $(if $(MERGELIBS),,CppunitTest_emfio_wmf_test) \ )) # vim: set noet ts=4 sw=4: diff --git a/emfio/inc/mtftools.hxx b/emfio/inc/mtftools.hxx index 7442a3111f04..2d14d9cfe633 100644 --- a/emfio/inc/mtftools.hxx +++ b/emfio/inc/mtftools.hxx @@ -599,7 +599,7 @@ namespace emfio bool bDrawTo = false, bool bRecordPath = false ); - void DrawPolyBezier(tools::Polygon rPolygin, + void DrawPolyBezier(tools::Polygon rPolygon, bool bDrawTo, bool bRecordPath ); diff --git a/emfio/qa/cppunit/EmfImportTest.cxx b/emfio/qa/cppunit/emf/EmfImportTest.cxx index ccef93ce673f..ccef93ce673f 100644 --- a/emfio/qa/cppunit/EmfImportTest.cxx +++ b/emfio/qa/cppunit/emf/EmfImportTest.cxx diff --git a/emfio/qa/cppunit/data/fdo79679-2.emf b/emfio/qa/cppunit/emf/data/fdo79679-2.emf Binary files differindex 0962dc122152..0962dc122152 100644 --- a/emfio/qa/cppunit/data/fdo79679-2.emf +++ b/emfio/qa/cppunit/emf/data/fdo79679-2.emf diff --git a/emfio/qa/cppunit/wmf/data/ETO_PDY.emf b/emfio/qa/cppunit/wmf/data/ETO_PDY.emf Binary files differnew file mode 100644 index 000000000000..065698eaff2c --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/ETO_PDY.emf diff --git a/emfio/qa/cppunit/wmf/data/ETO_PDY.wmf b/emfio/qa/cppunit/wmf/data/ETO_PDY.wmf Binary files differnew file mode 100644 index 000000000000..bd97740698e3 --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/ETO_PDY.wmf diff --git a/emfio/qa/cppunit/wmf/data/computer_mail.emf b/emfio/qa/cppunit/wmf/data/computer_mail.emf Binary files differnew file mode 100644 index 000000000000..0dbf23f7f330 --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/computer_mail.emf diff --git a/emfio/qa/cppunit/wmf/data/image1.emf b/emfio/qa/cppunit/wmf/data/image1.emf Binary files differnew file mode 100644 index 000000000000..2dcc32a4cf27 --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/image1.emf diff --git a/emfio/qa/cppunit/wmf/data/line_styles.emf b/emfio/qa/cppunit/wmf/data/line_styles.emf Binary files differnew file mode 100644 index 000000000000..07b78327dabb --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/line_styles.emf diff --git a/emfio/qa/cppunit/wmf/data/sine_wave.emf b/emfio/qa/cppunit/wmf/data/sine_wave.emf Binary files differnew file mode 100644 index 000000000000..e5a4fa6759d1 --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/sine_wave.emf diff --git a/emfio/qa/cppunit/wmf/data/tdf39894.emf b/emfio/qa/cppunit/wmf/data/tdf39894.emf Binary files differnew file mode 100644 index 000000000000..c9d5b957b87a --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/tdf39894.emf diff --git a/emfio/qa/cppunit/wmf/data/tdf39894.wmf b/emfio/qa/cppunit/wmf/data/tdf39894.wmf Binary files differnew file mode 100644 index 000000000000..32e41dee9070 --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/tdf39894.wmf diff --git a/emfio/qa/cppunit/wmf/data/tdf93750.emf b/emfio/qa/cppunit/wmf/data/tdf93750.emf Binary files differnew file mode 100644 index 000000000000..3c4c41592be6 --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/tdf93750.emf diff --git a/emfio/qa/cppunit/wmf/data/visio_import_source.wmf b/emfio/qa/cppunit/wmf/data/visio_import_source.wmf Binary files differnew file mode 100644 index 000000000000..88deac9d248d --- /dev/null +++ b/emfio/qa/cppunit/wmf/data/visio_import_source.wmf diff --git a/emfio/qa/cppunit/wmf/wmfimporttest.cxx b/emfio/qa/cppunit/wmf/wmfimporttest.cxx new file mode 100644 index 000000000000..3c7520a7a2f2 --- /dev/null +++ b/emfio/qa/cppunit/wmf/wmfimporttest.cxx @@ -0,0 +1,318 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#include <test/xmltesttools.hxx> +#include <test/mtfxmldump.hxx> +#include <test/setupvcl.hxx> +#include <unotest/bootstrapfixturebase.hxx> +#include <vcl/wmf.hxx> +#include <vcl/metaact.hxx> +#include <mtftools.hxx> + +using namespace css; + +class WmfTest : public test::BootstrapFixtureBase, public XmlTestTools +{ + OUString maDataUrl; + + OUString getFullUrl(const OUString& sFileName) + { + return m_directories.getURLFromSrc(maDataUrl) + sFileName; + } + +public: + WmfTest() : + maDataUrl("/emfio/qa/cppunit/wmf/data/") + {} + + // Hack around missing "once per class" setUp/tearDown in CppUnit; must be + // called before/after all other tests: + void globalSetUp() { test::setUpVcl(); } + // void globalTearDown() { /* DeInitVCL(); */ } + // on e.g. Mac OS X, DeInitVCL() causes more trouble than it's worth, + // calling VclPtr<WorkWindow>::disposeAndClear -> ... -> + // vcl::Window::dispose -> UnoWrapper::WindowDestroy (tk) -> ... -> + // Application::GetSolarMutex in the vcl library (linked from tk) + // instead of the vcl objects linked into the unit test library, which + // isn't initialized + + void testNonPlaceableWmf(); + void testSine(); + void testEmfProblem(); + void testEmfLineStyles(); + void testWorldTransformFontSize(); + void testTdf93750(); + void testTdf99402(); + void testTdf39894(); + void testETO_PDY(); + + CPPUNIT_TEST_SUITE(WmfTest); + CPPUNIT_TEST(globalSetUp); + CPPUNIT_TEST(testNonPlaceableWmf); + CPPUNIT_TEST(testSine); + CPPUNIT_TEST(testEmfProblem); + CPPUNIT_TEST(testEmfLineStyles); + CPPUNIT_TEST(testWorldTransformFontSize); + CPPUNIT_TEST(testTdf93750); + CPPUNIT_TEST(testTdf99402); + CPPUNIT_TEST(testTdf39894); + CPPUNIT_TEST(testETO_PDY); + CPPUNIT_TEST_SUITE_END(); +}; + +void WmfTest::testNonPlaceableWmf() +{ + SvFileStream aFileStream(getFullUrl("visio_import_source.wmf"), StreamMode::READ); + GDIMetaFile aGDIMetaFile; + ReadWindowMetafile(aFileStream, aGDIMetaFile); + + MetafileXmlDump dumper; + dumper.filterAllActionTypes(); + dumper.filterActionType(MetaActionType::POLYLINE, false); + xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); + + CPPUNIT_ASSERT (pDoc); + + assertXPath(pDoc, "/metafile/polyline[1]/point[1]", "x", "16798"); + assertXPath(pDoc, "/metafile/polyline[1]/point[1]", "y", "1003"); + + assertXPath(pDoc, "/metafile/polyline[1]/point[2]", "x", "16798"); + assertXPath(pDoc, "/metafile/polyline[1]/point[2]", "y", "7507"); + + assertXPath(pDoc, "/metafile/polyline[1]/point[3]", "x", "26090"); + assertXPath(pDoc, "/metafile/polyline[1]/point[3]", "y", "7507"); + + assertXPath(pDoc, "/metafile/polyline[1]/point[4]", "x", "26090"); + assertXPath(pDoc, "/metafile/polyline[1]/point[4]", "y", "1003"); + + assertXPath(pDoc, "/metafile/polyline[1]/point[5]", "x", "16798"); + assertXPath(pDoc, "/metafile/polyline[1]/point[5]", "y", "1003"); +} + +void WmfTest::testSine() +{ + SvFileStream aFileStream(getFullUrl("sine_wave.emf"), StreamMode::READ); + GDIMetaFile aGDIMetaFile; + ReadWindowMetafile(aFileStream, aGDIMetaFile); + + MetafileXmlDump dumper; + dumper.filterAllActionTypes(); + dumper.filterActionType(MetaActionType::ISECTRECTCLIPREGION, false); + xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); + + CPPUNIT_ASSERT (pDoc); + + assertXPath(pDoc, "/metafile/sectrectclipregion", 0); +} + +void WmfTest::testEmfProblem() +{ + SvFileStream aFileStream(getFullUrl("computer_mail.emf"), StreamMode::READ); + GDIMetaFile aGDIMetaFile; + ReadWindowMetafile(aFileStream, aGDIMetaFile); + + MetafileXmlDump dumper; + dumper.filterAllActionTypes(); + dumper.filterActionType(MetaActionType::ISECTRECTCLIPREGION, false); + xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); + + CPPUNIT_ASSERT (pDoc); + + assertXPath(pDoc, "/metafile/sectrectclipregion[1]", "top", "427"); + assertXPath(pDoc, "/metafile/sectrectclipregion[1]", "left", "740"); + assertXPath(pDoc, "/metafile/sectrectclipregion[1]", "bottom", "2823"); + assertXPath(pDoc, "/metafile/sectrectclipregion[1]", "right", "1876"); +} + +void WmfTest::testEmfLineStyles() +{ + SvFileStream aFileStream(getFullUrl("line_styles.emf"), StreamMode::READ); + GDIMetaFile aGDIMetaFile; + ReadWindowMetafile(aFileStream, aGDIMetaFile); + + MetafileXmlDump dumper; + dumper.filterAllActionTypes(); + dumper.filterActionType(MetaActionType::LINE, false); + dumper.filterActionType(MetaActionType::LINECOLOR, false); + xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); + + CPPUNIT_ASSERT (pDoc); + + assertXPath(pDoc, "/metafile/line", 4); + assertXPath(pDoc, "/metafile/linecolor", 5); + + assertXPath(pDoc, "/metafile/linecolor[1]", "color", "#ffffff"); + assertXPath(pDoc, "/metafile/linecolor[2]", "color", "#00ff00"); + assertXPath(pDoc, "/metafile/linecolor[3]", "color", "#408080"); + assertXPath(pDoc, "/metafile/linecolor[4]", "color", "#ff0000"); + assertXPath(pDoc, "/metafile/linecolor[5]", "color", "#0000ff"); + + assertXPath(pDoc, "/metafile/line[1]", "style", "dash"); + assertXPath(pDoc, "/metafile/line[1]", "dashlen", "528"); + assertXPath(pDoc, "/metafile/line[1]", "dashcount", "1"); + assertXPath(pDoc, "/metafile/line[1]", "dotlen", "176"); + assertXPath(pDoc, "/metafile/line[1]", "dotcount", "0"); + assertXPath(pDoc, "/metafile/line[1]", "distance", "176"); + assertXPath(pDoc, "/metafile/line[1]", "join", "miter"); + assertXPath(pDoc, "/metafile/line[1]", "cap", "butt"); + + assertXPath(pDoc, "/metafile/line[2]", "style", "dash"); + assertXPath(pDoc, "/metafile/line[2]", "dashlen", "528"); + assertXPath(pDoc, "/metafile/line[2]", "dashcount", "0"); + assertXPath(pDoc, "/metafile/line[2]", "dotlen", "176"); + assertXPath(pDoc, "/metafile/line[2]", "dotcount", "1"); + assertXPath(pDoc, "/metafile/line[2]", "distance", "176"); + assertXPath(pDoc, "/metafile/line[2]", "join", "miter"); + assertXPath(pDoc, "/metafile/line[2]", "cap", "butt"); + + assertXPath(pDoc, "/metafile/line[3]", "style", "dash"); + assertXPath(pDoc, "/metafile/line[3]", "dashlen", "528"); + assertXPath(pDoc, "/metafile/line[3]", "dashcount", "1"); + assertXPath(pDoc, "/metafile/line[3]", "dotlen", "176"); + assertXPath(pDoc, "/metafile/line[3]", "dotcount", "1"); + assertXPath(pDoc, "/metafile/line[3]", "distance", "176"); + assertXPath(pDoc, "/metafile/line[3]", "join", "miter"); + assertXPath(pDoc, "/metafile/line[3]", "cap", "butt"); + + assertXPath(pDoc, "/metafile/line[4]", "style", "dash"); + assertXPath(pDoc, "/metafile/line[4]", "dashlen", "528"); + assertXPath(pDoc, "/metafile/line[4]", "dashcount", "1"); + assertXPath(pDoc, "/metafile/line[4]", "dotlen", "176"); + assertXPath(pDoc, "/metafile/line[4]", "dotcount", "2"); + assertXPath(pDoc, "/metafile/line[4]", "distance", "176"); + assertXPath(pDoc, "/metafile/line[4]", "join", "miter"); + assertXPath(pDoc, "/metafile/line[4]", "cap", "butt"); +}; + +void WmfTest::testWorldTransformFontSize() +{ + SvFileStream aFileStream(getFullUrl("image1.emf"), StreamMode::READ); + GDIMetaFile aGDIMetaFile; + ReadWindowMetafile(aFileStream, aGDIMetaFile); + + MetafileXmlDump dumper; + dumper.filterAllActionTypes(); + dumper.filterActionType(MetaActionType::FONT, false); + xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); + + CPPUNIT_ASSERT (pDoc); + + assertXPath(pDoc, "/metafile/font", 8); + + assertXPath(pDoc, "/metafile/font[1]", "color", "#595959"); + assertXPath(pDoc, "/metafile/font[1]", "width", "0"); + assertXPath(pDoc, "/metafile/font[1]", "height", "389"); + assertXPath(pDoc, "/metafile/font[1]", "orientation", "0"); + assertXPath(pDoc, "/metafile/font[1]", "weight", "bold"); + + // World transform should not affect font size. Rotating text for 90 degrees + // should not exchange font width and height. + assertXPath(pDoc, "/metafile/font[3]", "color", "#000000"); + assertXPath(pDoc, "/metafile/font[3]", "width", "0"); + assertXPath(pDoc, "/metafile/font[3]", "height", "530"); + assertXPath(pDoc, "/metafile/font[3]", "orientation", "900"); + assertXPath(pDoc, "/metafile/font[3]", "weight", "normal"); +} + +void WmfTest::testTdf93750() +{ + SvFileStream aFileStream(getFullUrl("tdf93750.emf"), StreamMode::READ); + GDIMetaFile aGDIMetaFile; + ReadWindowMetafile(aFileStream, aGDIMetaFile); + + MetafileXmlDump dumper; + xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); + + CPPUNIT_ASSERT (pDoc); + + assertXPath(pDoc, "/metafile/push[1]/comment[2]", "datasize", "28"); + assertXPath(pDoc, "/metafile/push[1]/comment[3]", "datasize", "72"); +} + +void WmfTest::testTdf99402() +{ + // Symbol font should arrive with RTL_TEXTENCODING_SYMBOL encoding, + // even if charset is OEM_CHARSET/DEFAULT_CHARSET in WMF + emfio::LOGFONTW logfontw; + logfontw.lfHeight = 0; + logfontw.lfWidth = 0; + logfontw.lfEscapement = 0; + logfontw.lfWeight = 0; + logfontw.lfItalic = 0; + logfontw.lfUnderline = 0; + logfontw.lfStrikeOut = 0; + logfontw.lfCharSet = OEM_CHARSET; + logfontw.lfPitchAndFamily = FF_ROMAN | DEFAULT_PITCH; + logfontw.alfFaceName = "Symbol"; + + emfio::WinMtfFontStyle fontStyle(logfontw); + + CPPUNIT_ASSERT_EQUAL(RTL_TEXTENCODING_SYMBOL, fontStyle.aFont.GetCharSet()); +} + +void WmfTest::testTdf39894() +{ + OUString files[] = { "tdf39894.wmf", "tdf39894.emf" }; + for (const auto& file: files) + { + SvFileStream aFileStream(getFullUrl(file), StreamMode::READ); + GDIMetaFile aGDIMetaFile; + ReadWindowMetafile(aFileStream, aGDIMetaFile); + + MetafileXmlDump dumper; + xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); + + CPPUNIT_ASSERT(pDoc); + + // The x position of the second text must take into account + // the previous text's last Dx (previously was ~300) + auto x = getXPath(pDoc, "/metafile/push[2]/textarray[2]", "x"); + CPPUNIT_ASSERT_MESSAGE(file.toUtf8().getStr(), x.toInt32() > 2700); + } +} + +void WmfTest::testETO_PDY() +{ + OUString files[] = { "ETO_PDY.wmf", "ETO_PDY.emf" }; + for (const auto& file: files) + { + SvFileStream aFileStream(getFullUrl(file), StreamMode::READ); + GDIMetaFile aGDIMetaFile; + ReadWindowMetafile(aFileStream, aGDIMetaFile); + + MetafileXmlDump dumper; + xmlDocPtr pDoc = dumper.dumpAndParse(aGDIMetaFile); + + CPPUNIT_ASSERT(pDoc); + + // The y position of following text + // must be smaller than that of previous + auto y1 = getXPath(pDoc, "/metafile/push[2]/textarray[1]", "y"); + auto y2 = getXPath(pDoc, "/metafile/push[2]/textarray[2]", "y"); + auto y3 = getXPath(pDoc, "/metafile/push[2]/textarray[3]", "y"); + CPPUNIT_ASSERT_MESSAGE(file.toUtf8().getStr(), y2.toInt32() < y1.toInt32()); + CPPUNIT_ASSERT_MESSAGE(file.toUtf8().getStr(), y3.toInt32() < y2.toInt32()); + } +} + +CPPUNIT_TEST_SUITE_REGISTRATION(WmfTest); + +CPPUNIT_PLUGIN_IMPLEMENT(); + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/emfio/source/emfuno/xemfparser.cxx b/emfio/source/emfuno/xemfparser.cxx index 433210c5ecd2..ff4dcccb6589 100644 --- a/emfio/source/emfuno/xemfparser.cxx +++ b/emfio/source/emfuno/xemfparser.cxx @@ -113,7 +113,7 @@ namespace emfio uno::Sequence< uno::Reference< ::graphic::XPrimitive2D > > XEmfParser::getDecomposition( const uno::Reference< ::io::XInputStream >& xEmfStream, - const OUString& aAbsolutePath, + const OUString& /*aAbsolutePath*/, const uno::Sequence< ::beans::PropertyValue >& rProperties) { drawinglayer::primitive2d::Primitive2DContainer aRetval; |