summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Kosiorek <gang65@poczta.onet.pl>2021-04-01 16:42:34 +0200
committerMiklos Vajna <vmiklos@collabora.com>2022-11-09 09:32:07 +0100
commit7cc61ddcf81cd1af209521367fe048ca9d8c6822 (patch)
tree4832046d68985cb28b6177b836f3c0208d6e7366
parentfcd39b0165feed52e90fa51056adbedb5f5a948f (diff)
tdf#55058 EMF: Implement PAINTRGN record
The EMR_PAINTRGN record paints the specified region by using the brush currently selected into the playback device context. After implement support for PAINTRGN record, the reference image is displayed correctly: https://sourceforge.net/projects/libuemf/ (cherry picked from commit 036053b969bf95a4cb9b16601f2651ca227dd429) Conflicts: emfio/source/reader/emfreader.cxx Change-Id: I761779713d1200e6079ff798e9c3c9aaba57ad4f
-rw-r--r--emfio/source/reader/emfreader.cxx13
1 files changed, 12 insertions, 1 deletions
diff --git a/emfio/source/reader/emfreader.cxx b/emfio/source/reader/emfreader.cxx
index 65b577fed052..22b518fe456a 100644
--- a/emfio/source/reader/emfreader.cxx
+++ b/emfio/source/reader/emfreader.cxx
@@ -1859,6 +1859,18 @@ namespace emfio
}
break;
+ case EMR_PAINTRGN :
+ {
+ sal_uInt32 nRgnDataSize;
+ tools::PolyPolygon aPolyPoly;
+ mpInputStream->SeekRel( 0x10 ); // Skipping RectL bounds
+ mpInputStream->ReadUInt32( nRgnDataSize );
+
+ if ( ImplReadRegion( aPolyPoly, *mpInputStream, nRecSize ) )
+ DrawPolyPolygon( aPolyPoly );
+ }
+ break;
+
case EMR_CREATEDIBPATTERNBRUSHPT :
{
sal_uInt32 nStart = mpInputStream->Tell() - 8;
@@ -1912,7 +1924,6 @@ namespace emfio
case EMR_SETDIBITSTODEVICE : SAL_WARN("emfio", "not implemented 'SetDIBitsToDevice'"); break;
case EMR_FRAMERGN : SAL_WARN("emfio", "not implemented 'FrameRgn'"); break;
case EMR_INVERTRGN : SAL_WARN("emfio", "not implemented 'InvertRgn'"); break;
- case EMR_PAINTRGN : SAL_WARN("emfio", "not implemented 'PaintRgn'"); break;
case EMR_FLATTENPATH : SAL_WARN("emfio", "not implemented 'FlattenPath'"); break;
case EMR_WIDENPATH : SAL_WARN("emfio", "not implemented 'WidenPath'"); break;
case EMR_POLYDRAW : SAL_WARN("emfio", "not implemented 'Polydraw'"); break;