diff options
-rw-r--r-- | vcl/qa/cppunit/svm/data/moveclipregion.svm | bin | 0 -> 287 bytes | |||
-rw-r--r-- | vcl/qa/cppunit/svm/svmtest.cxx | 35 | ||||
-rw-r--r-- | vcl/source/gdi/mtfxmldump.cxx | 11 |
3 files changed, 43 insertions, 3 deletions
diff --git a/vcl/qa/cppunit/svm/data/moveclipregion.svm b/vcl/qa/cppunit/svm/data/moveclipregion.svm Binary files differnew file mode 100644 index 000000000000..6b53403741be --- /dev/null +++ b/vcl/qa/cppunit/svm/data/moveclipregion.svm diff --git a/vcl/qa/cppunit/svm/svmtest.cxx b/vcl/qa/cppunit/svm/svmtest.cxx index 3fb91f84f006..02fbcdb5c04f 100644 --- a/vcl/qa/cppunit/svm/svmtest.cxx +++ b/vcl/qa/cppunit/svm/svmtest.cxx @@ -136,7 +136,7 @@ class SvmTest : public test::BootstrapFixture, public XmlTestTools void checkIntersectRegionClipRegion(const GDIMetaFile& rMetaFile); void testIntersectRegionClipRegion(); - //void checkMoveClipRegion(const GDIMetaFile& rMetaFile); + void checkMoveClipRegion(const GDIMetaFile& rMetaFile); void testMoveClipRegion(); void checkLineColor(const GDIMetaFile& rMetaFile); @@ -1647,8 +1647,39 @@ void SvmTest::testIntersectRegionClipRegion() checkIntersectRegionClipRegion(readFile(u"intersectregionclipregion.svm")); } +void SvmTest::checkMoveClipRegion(const GDIMetaFile& rMetaFile) +{ + xmlDocUniquePtr pDoc = dumpMeta(rMetaFile); + + assertXPathAttrs(pDoc, "/metafile/moveclipregion[1]", { + {"horzmove", "1"}, + {"vertmove", "2"} + }); + + assertXPathAttrs(pDoc, "/metafile/moveclipregion[2]", { + {"horzmove", "-3"}, + {"vertmove", "-4"} + }); +} + void SvmTest::testMoveClipRegion() -{} +{ + GDIMetaFile aGDIMetaFile; + ScopedVclPtrInstance<VirtualDevice> pVirtualDev; + setupBaseVirtualDevice(*pVirtualDev, aGDIMetaFile); + + tools::Rectangle aRectangle(Point(1, 2), Size(4, 8)); + + vcl::Region aRegion(aRectangle); + aRegion.Move(2, 2); + pVirtualDev->SetClipRegion(aRegion); + + pVirtualDev->MoveClipRegion(1, 2); + pVirtualDev->MoveClipRegion(-3, -4); + + checkMoveClipRegion(writeAndReadStream(aGDIMetaFile)); + checkMoveClipRegion(readFile(u"moveclipregion.svm")); +} void SvmTest::checkLineColor(const GDIMetaFile& rMetaFile) { diff --git a/vcl/source/gdi/mtfxmldump.cxx b/vcl/source/gdi/mtfxmldump.cxx index 7799a3014f15..e5651906ed57 100644 --- a/vcl/source/gdi/mtfxmldump.cxx +++ b/vcl/source/gdi/mtfxmldump.cxx @@ -1094,7 +1094,16 @@ void MetafileXmlDump::writeXml(const GDIMetaFile& rMetaFile, tools::XmlWriter& r } break; - // case MetaActionType::MOVECLIPREGION: + case MetaActionType::MOVECLIPREGION: + { + const auto* pMetaMoveClipRegionAction = static_cast<MetaMoveClipRegionAction*>(pAction); + rWriter.startElement(sCurrentElementTag); + + rWriter.attribute("horzmove", pMetaMoveClipRegionAction->GetHorzMove()); + rWriter.attribute("vertmove", pMetaMoveClipRegionAction->GetVertMove()); + rWriter.endElement(); + } + break; case MetaActionType::LINECOLOR: { |