diff options
author | Bartosz Kosiorek <gang65@poczta.onet.pl> | 2021-04-01 16:42:34 +0200 |
---|---|---|
committer | Bartosz Kosiorek <gang65@poczta.onet.pl> | 2021-04-04 14:49:22 +0200 |
commit | 642501ecb94cef11592ecc49b7a13ba5bdbb8d62 (patch) | |
tree | 50ef5f7407b43f341436336dfd4f71109c11add0 /emfio | |
parent | 4b8b7fff01cccc646cd13977066720b3c3b8d305 (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/
Change-Id: I761779713d1200e6079ff798e9c3c9aaba57ad4f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113461
Tested-by: Jenkins
Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113561
Diffstat (limited to 'emfio')
-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 1d1adc2f49aa..24fcf9095e3e 100644 --- a/emfio/source/reader/emfreader.cxx +++ b/emfio/source/reader/emfreader.cxx @@ -1924,6 +1924,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; @@ -1977,7 +1989,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; |