diff options
author | Bartosz Kosiorek <gang65@poczta.onet.pl> | 2021-04-01 16:42:34 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2022-11-09 09:32:07 +0100 |
commit | 7cc61ddcf81cd1af209521367fe048ca9d8c6822 (patch) | |
tree | 4832046d68985cb28b6177b836f3c0208d6e7366 | |
parent | fcd39b0165feed52e90fa51056adbedb5f5a948f (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.cxx | 13 |
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; |