Commit Graph

152 Commits

Author SHA1 Message Date
Huw Davies 0d8428fbc5 gdiplus: Switch to STRETCH_HALFTONE mode before playing a blit record.
This is done even if the emf contains a previous EMR_SETSTRETCHBLTMODE
record.

Thanks to Sebastián Aedo for some of the testing.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-20 20:11:46 +02:00
Dongwan Kim aa54278250 gdiplus: Implement GdipEnumerateMetafileSrcRectDestRectI.
Signed-off-by: Dongwan Kim <kdw6485@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-18 21:25:00 +02:00
Nikolay Sivov 2c77f717c8 gdiplus/metafile: Implement rendering origin recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 09:41:21 +02:00
Nikolay Sivov 42cb11b1c1 gdiplus/metafile: Implement SetClipPath() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 09:41:19 +02:00
Nikolay Sivov 24278c4fc7 gdiplus/metafile: Implement ResetClip() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 09:41:16 +02:00
Nikolay Sivov 33d2f6b7ec gdiplus/metafile: Implement TranslateClip() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 09:41:13 +02:00
Nikolay Sivov 7ca2f86f06 gdiplus/metafile: Fully initialize record header on allocation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 09:41:11 +02:00
Nikolay Sivov c17cd0fcab gdiplus/metafile: Implement DrawArc() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-23 21:02:45 +01:00
Nikolay Sivov beefe76c6f gdiplus: Add a helper to initialize RectF.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-23 21:02:43 +01:00
Nikolay Sivov 9b04f1c660 gdiplus/metafile: Implement FillPie() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-23 21:02:38 +01:00
Nikolay Sivov 81bbc4872e gdiplus/metafile: Implement DrawRectangles() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 18:52:58 +01:00
Nikolay Sivov 81b7555da8 gdiplus/metafile: Implement FillEllipse() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 18:52:58 +01:00
Nikolay Sivov 4e55ec2b9e gdiplus/metafile: Implement DrawEllipse() recording.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 18:52:58 +01:00
Chao Long 3c2da5b9c9 gdiplus/metafile: Implement GdipRecordMetafileFileName.
Signed-off-by: Chao Long <longchao@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-08 10:44:51 +01:00
Nikolay Sivov c090b35d99 gdiplus/metafile: Fix copy-paste typo when setting resolution (Coverity).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-01 17:10:04 +01:00
Ziqing Hui 3549097c9e gdiplus: Record logical DPI in metafile.
Signed-off-by: Ziqing Hui <zhui@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 11:12:20 +01:00
Ziqing Hui f40f379f05 gdiplus: Correctly handle UnitDisplay for printer DC.
For printer DC, UnitDisplay specifies that a unit is 1/100 inch,
which is different from display DC.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=17848
Signed-off-by: Ziqing Hui <zhui@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 10:42:14 +01:00
Michael Stefaniuc 812eb3c41d gdiplus: Remove superfluous cast to self.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-28 21:35:01 +02:00
Haoyang Chen bccd754966 gdiplus: Implement GdipEnumerateMetafileSrcRectDestRect.
Signed-off-by: Haoyang Chen <chenhaoyang@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-18 22:25:09 +02:00
Shawn M. Chapla 03e9de4920 gdiplus: Incorporate GDI frame into metafile auto-frame before scaling.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-11 23:18:54 +02:00
Shawn M. Chapla d3de57c2b3 gdiplus: Use FromRect constructor in LinearGradientBrush deserialization.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-24 10:16:53 +02:00
Shawn M. Chapla 6c787852c4 gdiplus: Fix LinearGradientBrush deserialization off-by-one errors.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-24 10:16:51 +02:00
Shawn M. Chapla 60fd827d8b gdiplus: Add LinearGradient brush object serialization.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-24 10:16:49 +02:00
Shawn M. Chapla 1cb437ac25 gdiplus: Add FillRegion serialization.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-22 22:18:22 +02:00
Shawn M. Chapla 8191ed86ca gdiplus: Add FillRegion record deserialization.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-22 22:18:19 +02:00
Shawn M. Chapla a9151e2e2b gdiplus: Use GenericFontFamilySansSerif when missing deserialized font family.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-20 11:44:42 +02:00
Shawn M. Chapla 71bb5cd52a gdiplus: Add DrawDriverString serialization.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 13:25:08 +02:00
Shawn M. Chapla 30c7fe69e0 gdiplus: Add DrawDriverString record deserialization.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 13:25:08 +02:00
Shawn M. Chapla 313c27ad2a gdiplus: Make brush parameter const in brush object serialize helpers.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-15 09:42:15 +02:00
Shawn M. Chapla 947b77215d gdiplus: Play all EMF records using PlayEnhMetaFileRecord.
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-01 10:17:21 +02:00
Vincent Povirk e41058243a gdiplus: Improve GdipSetMetafileDownLevelRasterizationLimit.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-18 12:09:44 +02:00
Vincent Povirk 6c06196497 gdiplus: Implement GdipGetMetafileDownLevelRasterizationLimit.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-18 12:09:41 +02:00
Nikolay Sivov 9d123b5424 gdiplus: Trace GpRectF arguments.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-21 19:56:07 +02:00
Francois Gouget 0bbc9b830e gdiplus: Fix a function name in a FIXME() message.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-16 22:58:42 +02:00
Nikolay Sivov 88207f0c11 gdiplus: Add GdipRecordMetafileStreamI().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-21 20:03:44 +02:00
Alexandre Julliard a22d613321 gdiplus: Build with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-06-05 08:32:33 +02:00
Michael Stefaniuc 50032f4e14 gdiplus: Remove useless casts to self.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-28 21:37:30 +01:00
Vincent Povirk e2f37558a7 gdiplus: Add support for reading nested metafiles.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-25 12:28:27 +01:00
Nikolay Sivov 8463159344 gdiplus: Use ARRAY_SIZE() macro.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-14 23:51:27 +02:00
Nikolay Sivov 394e15e39c gdiplus/metafile: Support linear gradient brushes in playback.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-08 20:21:29 +01:00
Nikolay Sivov baba9a8e48 gdiplus/metafile: Implement playback for EmfPlusRecordTypeSetCompositingMode.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-07 21:24:45 +01:00
Nikolay Sivov 784fe04994 gdiplus/metafile: Implement playback for EmfPlusRecordTypeFillClosedCurve.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-07 21:24:45 +01:00
Nikolay Sivov 3186df2b02 gdiplus/metafile: Implement playback for EmfPlusRecordTypeDrawEllipse.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-06 19:54:25 +01:00
Nikolay Sivov 2f2cbd4150 gdiplus/metafile: Implement playback for EmfPlusRecordTypeDrawArc.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-06 19:54:22 +01:00
Nikolay Sivov fd8185132e gdiplus/metafile: Add brush object if needed in FillRectangles().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-03 23:44:52 +01:00
Nikolay Sivov 9c47baa3fc gdiplus/metafile: Implement playback for EmfPlusRecordTypeFillPie.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-03 23:44:52 +01:00
Nikolay Sivov f75b57ad81 gdiplus/metafile: Implement playback for EmfPlusRecordTypeFillEllipse.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-03 23:44:52 +01:00
Nikolay Sivov e934c4c06f gdiplus/metafile: Implement playback for EmfPlusRecordTypeDrawRects.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-03 23:44:52 +01:00
Nikolay Sivov 6931e629cd gdiplus/metafile: Implement EmfPlusRecordTypeDrawPie playback.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-03 23:44:52 +01:00
Nikolay Sivov 5787727f9e gdiplus/metafile: Implement playback for EmfPlusRecordTypeDrawImage.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-02 19:12:08 +01:00