summaryrefslogtreecommitdiff
path: root/emfio
diff options
context:
space:
mode:
authorArmin Le Grand <Armin.Le.Grand@cib.de>2017-06-23 12:16:33 +0200
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2017-07-15 11:01:30 +0200
commit48af0b9310023f3789d46d5714498e62728a8d8c (patch)
treeef6f71c5e0eda29bb47453b7bd3dbd5d8b43ecfe /emfio
parent762c52346f8e6a6b91fe1c758494b2c152361e73 (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')
-rw-r--r--emfio/CppunitTest_emfio_emf_test.mk (renamed from emfio/CppunitTest_emfio.mk)8
-rw-r--r--emfio/CppunitTest_emfio_wmf_test.mk218
-rw-r--r--emfio/Module_emfio.mk3
-rw-r--r--emfio/inc/mtftools.hxx2
-rw-r--r--emfio/qa/cppunit/emf/EmfImportTest.cxx (renamed from emfio/qa/cppunit/EmfImportTest.cxx)0
-rw-r--r--emfio/qa/cppunit/emf/data/fdo79679-2.emf (renamed from emfio/qa/cppunit/data/fdo79679-2.emf)bin34236 -> 34236 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/ETO_PDY.emfbin0 -> 1644 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/ETO_PDY.wmfbin0 -> 306 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/computer_mail.emfbin0 -> 45876 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/image1.emfbin0 -> 233976 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/line_styles.emfbin0 -> 2748 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/sine_wave.emfbin0 -> 15456 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/tdf39894.emfbin0 -> 1628 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/tdf39894.wmfbin0 -> 300 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/tdf93750.emfbin0 -> 66416 bytes
-rw-r--r--emfio/qa/cppunit/wmf/data/visio_import_source.wmfbin0 -> 13801 bytes
-rw-r--r--emfio/qa/cppunit/wmf/wmfimporttest.cxx318
-rw-r--r--emfio/source/emfuno/xemfparser.cxx2
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
index 0962dc122152..0962dc122152 100644
--- a/emfio/qa/cppunit/data/fdo79679-2.emf
+++ b/emfio/qa/cppunit/emf/data/fdo79679-2.emf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/ETO_PDY.emf b/emfio/qa/cppunit/wmf/data/ETO_PDY.emf
new file mode 100644
index 000000000000..065698eaff2c
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/ETO_PDY.emf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/ETO_PDY.wmf b/emfio/qa/cppunit/wmf/data/ETO_PDY.wmf
new file mode 100644
index 000000000000..bd97740698e3
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/ETO_PDY.wmf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/computer_mail.emf b/emfio/qa/cppunit/wmf/data/computer_mail.emf
new file mode 100644
index 000000000000..0dbf23f7f330
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/computer_mail.emf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/image1.emf b/emfio/qa/cppunit/wmf/data/image1.emf
new file mode 100644
index 000000000000..2dcc32a4cf27
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/image1.emf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/line_styles.emf b/emfio/qa/cppunit/wmf/data/line_styles.emf
new file mode 100644
index 000000000000..07b78327dabb
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/line_styles.emf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/sine_wave.emf b/emfio/qa/cppunit/wmf/data/sine_wave.emf
new file mode 100644
index 000000000000..e5a4fa6759d1
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/sine_wave.emf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/tdf39894.emf b/emfio/qa/cppunit/wmf/data/tdf39894.emf
new file mode 100644
index 000000000000..c9d5b957b87a
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/tdf39894.emf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/tdf39894.wmf b/emfio/qa/cppunit/wmf/data/tdf39894.wmf
new file mode 100644
index 000000000000..32e41dee9070
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/tdf39894.wmf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/tdf93750.emf b/emfio/qa/cppunit/wmf/data/tdf93750.emf
new file mode 100644
index 000000000000..3c4c41592be6
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/tdf93750.emf
Binary files differ
diff --git a/emfio/qa/cppunit/wmf/data/visio_import_source.wmf b/emfio/qa/cppunit/wmf/data/visio_import_source.wmf
new file mode 100644
index 000000000000..88deac9d248d
--- /dev/null
+++ b/emfio/qa/cppunit/wmf/data/visio_import_source.wmf
Binary files differ
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;