Bartosz Kosiorek
f898f206f6
gdiplus: Improve performance of DrawImagePointsRect by avoid TransformMatrixPoints.
...
Using TransformMatrixPoints is not needed and all values could
be taken from transformation matrix:
- ShearX from m11, m12
- ShearY from m21, m22
- Translation mdx, mdy
The result could be calculated by taking destination points values:
{{0.0, 0.0}, {1.0, 0.0}, {0.0, 1.0}}
and calculating it with GdipTransformMatrixPoints function:
dst_to_src_points[0].X = dst_to_src.matrix[4];
dst_to_src_points[0].Y = dst_to_src.matrix[5];
dst_to_src_points[1].X = dst_to_src.matrix[0] + dst_to_src.matrix[4];
dst_to_src_points[1].Y = dst_to_src.matrix[1] + dst_to_src.matrix[5];
dst_to_src_points[2].X = dst_to_src.matrix[2] + dst_to_src.matrix[4];
dst_to_src_points[2].Y = dst_to_src.matrix[3] + dst_to_src.matrix[5];
2023-05-23 22:19:30 +02:00
Bartosz Kosiorek
382603afa7
gdiplus: Use float increment instead of calculation to impove perf.
...
Improves efficiency by using addition instead of float numbers
multiplication for destination points.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53947
2023-05-23 22:19:30 +02:00
Bartosz Kosiorek
9705fbd493
gdiplus: Use iterator instead calculate pointer position every time.
...
With previous implementation, every iteration pointer value was
calculated by taking row and column of the image.
It needs multiply calculation. With current implementation,
pointer value calculation, is replaced with iterator, which takes
next pixel data.
It improves efficiency by using addition instead of multiplication
for iterating through points data.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53947
2023-05-23 22:19:30 +02:00
Bartosz Kosiorek
66ebf9169e
gdiplus: Limit calculating transformation points to resampling.
...
Calculating transformation points and not using it it is a waste
of CPU time. With this patch the code was moved where it is used.
It is improving performance of GdipDrawImagePointsRect when
resampling is not needed.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53947
2023-05-23 22:19:30 +02:00
Bartosz Kosiorek
413fc34be7
gdiplus: Fix GdipGetGenericFontFamily functions according to native gdiplus.dll.
2023-05-22 22:56:13 +02:00
Bartosz Kosiorek
9749caf78e
gdiplus: Improve performance of gdip_transform_points.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53947
2023-05-18 13:48:07 -05:00
Bartosz Kosiorek
9a94647656
gdiplus: Improve performance of GdipInvertMatrix.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53947
2023-05-18 05:29:12 -05:00
David Kahurani
03bc97a8c1
gdiplus: Traverse and draw the whole string.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45698
Signed-off-by: David Kahurani <k.kahurani@gmail.com>
2023-05-01 18:29:12 +02:00
Piotr Caban
333a63c456
gdiplus: Use transparency instead of background color if transparent color flag is set in GIF GCE.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54563
2023-03-06 11:09:39 +01:00
Florian Will
b3bf30e7e2
gdiplus: Use FILE_SHARE_READ in GdipPrivateAddFontFile().
...
ZusiDisplay sometimes loads the same font file into two different
PrivateFontCollections using two threads, so there is a race condition
when the file is opened without the FILE_SHARE_READ sharing mode. The
second call to GdipPrivateAddFontFile() might fail if the first one
hasn't closed the file handle yet.
2023-03-02 10:20:39 +01:00
Florian Will
0ebf3222e5
gdiplus/tests: Test for GdipPrivateAddFontFile() sharing violation.
2023-03-02 10:20:38 +01:00
Alexandre Julliard
fab4d1fd7f
gdiplus: Initialize a variable to avoid a spurious compiler warning.
2023-01-27 13:39:07 +01:00
Bartosz Kosiorek
82d94219cb
gdiplus: Improve performance of GdipTranslateMatrix.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53947
2022-12-09 21:21:59 +01:00
Bartosz Kosiorek
13b16116bf
gdiplus: Improve performance of matrix multiplication by unrolling loop.
2022-12-06 17:17:23 +01:00
Bartosz Kosiorek
a97911fdfe
gdiplus: Improve performance of GdipScaleMatrix.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53947
2022-12-06 17:17:23 +01:00
Bartosz Kosiorek
edee5538e3
gdiplus: Add support for LineCapArrowAnchor.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42809
2022-11-29 21:33:58 +01:00
Bartosz Kosiorek
0fd51346e1
gdiplus: Fix position of Custom Cap when Scale is different that 1.
2022-11-29 21:33:58 +01:00
Bartosz Kosiorek
be7db8457d
gdiplus: Add support for Custom Line Indent.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45273
2022-11-29 21:33:58 +01:00
Bartosz Kosiorek
e0f32f53d5
gdiplus: Add GdipSetCustomLineCapStrokeCaps implementation and usage.
2022-11-23 22:27:38 +01:00
Bartosz Kosiorek
cd17de8827
gdiplus: Fix shape of CustomLineCap created by GdipCreateAdjustableArrowCap.
2022-11-23 22:27:38 +01:00
Bartosz Kosiorek
1271ae3ebd
gdiplus: Add support for widen path with GpCustomLineCap.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45273
2022-11-23 22:27:38 +01:00
Bartosz Kosiorek
a8e8730769
gdiplus: Use GpPointF for drawing in widen_closed_figure.
2022-11-23 22:27:20 +01:00
Bartosz Kosiorek
200652075b
gdiplus: Add GdipSetCustomLineCapBaseInset implementation.
2022-11-23 22:27:20 +01:00
Bartosz Kosiorek
bc8ced226a
gdiplus: Remove not used LineCustomCap parameter.
2022-11-23 22:27:20 +01:00
Bartosz Kosiorek
742c315702
gdiplus: Add GdipSetCustomLineCapBaseCap implementation.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45273
2022-11-23 22:27:20 +01:00
Alexandre Julliard
a1c8232b33
include: Remove custom/undocumented language identifiers.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-11-16 21:24:18 +01:00
Bartosz Kosiorek
2f26b02fd2
gdiplus: Add GdipGetPenCompoundArray implementation.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52196
2022-10-31 12:11:55 +01:00
Bartosz Kosiorek
e2e8487b99
gdiplus: Add GdipGetPenCompoundCount implementation.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52196
2022-10-31 12:05:02 +01:00
Bartosz Kosiorek
9d5d4dba28
gdiplus: Add GdipSetPenCompoundArray implementation.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52196
2022-10-31 12:04:59 +01:00
Jinoh Kang
72c0c88f2a
gdiplus: Replace GpImage's busy flag with SRWLOCK.
...
Today, the image_unlock() helper function has a data race due to
non-atomic write to GpImage's 'busy' flag which is accessible by other
threads. Also, it lacks a release fence, which means that other threads
can observe the unlocked (busy = 0) state too early when the current
thread unlocks the image; specifically, the write to the 'busy' field of
the GpImage can be reordered before the last read/write to any other
fields of the same GpImage.
Fix this by replacing the 'busy' field of GpImage with SRWLOCK.
2022-10-24 11:17:39 +02:00
Jinoh Kang
7abca9742a
gdiplus: Avoid copying GpImage's busy flag in select_frame_wic().
...
The 'busy' field in GpImage is used as an atomic variable. The C11
standard (§5.1.2.4, paragraph 25) states that two conflicting actions to
a memory location shall be both atomic operations, or otherwise properly
synchronized; otherwise, it constitutes a data race.
However, select_frame_wic() performs a non-atomic access to the 'busy'
field on a GpImage that is potentially accessible by other threads.
This happens when select_frame_wic() copies new_image to the old image
object. Although it does attempt to preserve the value of the 'busy'
field by setting new_image->busy = image->busy first, thereby
effectively assigning an identical value to the field, it is unclear
that this does not actually constitute a theoretical, if not practical,
data race. This also prevents replacing the busy flag with a mutex or
other synchronization primitives.
Therefore, skip the 'busy' field when copying fields from the new image
to the original image object.
2022-10-24 11:17:37 +02:00
Jinoh Kang
d6b4321125
gdiplus: Avoid recursively locking image in GdipImageRotateFlip.
...
GdipImageRotateFlip() calls GdipBitmapLockBits() while holding the image
lock, resulting in a recursive lock.
Since GdipImageRotateFlip() uses GdipBitmapLockBits() only to obtain
Scan0 and Stride, replace them with equivalent fields from GpBitmap
itself.
2022-10-24 11:17:35 +02:00
Alexandre Julliard
fe7df46118
gdiplus: Get the compositing mode directly from the graphics object.
...
GdipGetCompositingMode() fails when the object is busy, which happens
when flushing changes in GdipReleaseDC().
Fixes a test crash on Gitlab CI.
2022-09-28 15:39:04 +02:00
Esme Povirk
7d118a25c0
gdiplus: Accept newer version in OpenType header.
...
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-11 11:54:54 +02:00
Eric Pouech
57a8ccf4e8
gdiplus/tests: Enable compilation with long types.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 21:31:56 +01:00
Eric Pouech
eb39c4e4fe
gdiplus/tests: Introduce helper functions (expect*) to handle integral conversions.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-28 21:31:56 +01:00
Eric Pouech
af403bd34f
gdiplus: Get rid of gcc11 warnings (-Warray-bounds).
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-16 08:22:06 +01:00
Eric Pouech
aa9d1bd130
gdiplus/tests: Get rid of some GCC11 warnings (-Warray-bounds).
...
don't pretend using a BITMAPINFO when only a BITMAPINFOHEADER is used
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-16 08:21:29 +01:00
Eric Pouech
846fcc5bf6
gdiplus: Enable compilation with long types.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-14 21:20:41 +01:00
Eric Pouech
e393526855
gdiplus: Use correct integral type.
...
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-04 22:44:48 +01:00
Fabian Maurer
759a93d94d
gdiplus/tests: Avoid "misleading indentation" warnings.
...
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-28 21:10:20 +01:00
Alexandre Julliard
f0cd33c69e
include: Add support for defining Win32 types as 'long' where possible.
...
Add -DWINE_NO_LONG_TYPES to modules that still have compilation
warnings with long types.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-27 20:38:22 +01:00
Florian Will
6090276b3e
gdiplus: Disable PNG encoding filters.
...
This speeds up the encoding process, sometimes at the cost of increased
PNG file sizes. PNGs created using gdiplus on Windows 10 have filters
disabled, too, according to pngcheck.
The application "ZusiDisplay" encodes finished frames in PNG format and
sends them through a named pipe for "Zusi 3" to use as an in-game
texture, so performance matters for that use case to improve "embedded
display" FPS.
Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-25 09:25:40 +01:00
Bernhard Kölbl
d3275f5f6a
gdiplus: Add simple test for bitmap clone from rgb values to indexed.
...
Signed-off-by: Bernhard Kölbl <besentv@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-29 23:25:46 +01:00
Bernhard Kölbl
ec29292141
gdiplus: Introduce dst palette parameter to convert_pixels().
...
Make it possible to define a destination colour palette when
using convert_pixels(), so converting a bitmap from a non
indexed format to an indexed format does not produce an empty image.
Signed-off-by: Bernhard Kölbl <besentv@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-29 23:25:46 +01:00
Esme Povirk
28c35689d2
gdiplus: Mark a Windows behavior as broken.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51989
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-23 22:24:20 +01:00
Bernhard Kölbl
77121b3b23
gdiplus: Add pixel conversions to 4bpp indexed.
...
Signed-off-by: Bernhard Kölbl <besentv@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-19 20:56:26 +01:00
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
Alexandre Julliard
088a787a2c
makefiles: Make -mno-cygwin the default.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-09-20 22:45:48 +02:00
Francois Gouget
53371cc556
gdiplus/tests: Fix a font test crash when "MS Shell Dlg" is not found.
...
When "MS Shell Dlg" is missing GdipCreateFontFamilyFromName() leaves
the GpFontFamily* pointer uninitialised. So initialize it to NULL in
order to get clean failures instead of a crash.
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 20:27:22 +02:00
Francois Gouget
ad663360fa
gdiplus: GdipGetFamilyName() should not crash when given a NULL name.
...
It used to crash on Windows XP and Vista but does not since Windows 7.
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-08-27 20:27:22 +02:00
Esme Povirk
a554079860
gdiplus: Implement reference counting for private font families.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50896
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-27 11:33:16 +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
Haoyang Chen
43e2563f44
gdiplus: Avoid filtering of special characters.
...
Symbols such as ← should also be displayed.
Signed-off-by: Haoyang Chen <chenhaoyang@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-17 09:27: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
Jacek Caban
883298f627
gdiplus: Use nameless unions.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-29 09:24:46 +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
41651d2e16
gdiplus: Forward GdipDrawRectangle() to GdipDrawRectangles().
...
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:40 +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
Jacek Caban
b39b9eea39
include: Don't default to WINE_NO_NAMELESS_EXTENSION for Wine build.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-22 21:48: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
b733e39ae5
gdiplus: Add a helper to check for metafile graphics context.
...
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
Alexandre Julliard
0ec38429f3
gdiplus/tests: Regenerate ttf files with the official fontforge version.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-03 20:44:03 +01:00
Haoyang Chen
cda039943d
gdiplus/tests: Test image brush transformation.
...
Signed-off-by: Haoyang Chen <chenhaoyang@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-03 09:23:39 +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
Haoyang Chen
4c4a5cb799
gdiplus: Avoid negative integer overflow due to implicit type conversion.
...
Signed-off-by: Haoyang Chen <chenhaoyang@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-01 10:47:20 +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
c32be58b47
gdiplus/tests: Add initial tests for metafile created from printer DC.
...
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: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
Ziqing Hui
ae7d81317b
gdiplus/tests: Add tests for drawing on printer DC.
...
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-18 22:46:37 +01:00
Jeff Smith
8eff23cc06
gdiplus/tests: Use wide-char string literals for test strings.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-10 09:41:39 +01:00
Jeff Smith
cf405026cd
gdiplus/tests: Use wide-char string literal for metafile description.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-10 09:41:37 +01:00
Jeff Smith
ebc2d2a39a
gdiplus/tests: Use wide-char string literal for mimetype.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-10 09:41:35 +01:00
Jeff Smith
796550cc72
gdiplus/tests: Use wide-char string literals for file names.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-10 09:41:33 +01:00
Jeff Smith
de0497df87
gdiplus/tests: Use wide-char string literals for font names.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-10 09:41:21 +01:00
Jeff Smith
6aea9b9d77
gdiplus: Guard initialization of installed font collection.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 12:41:10 +01:00
Jeff Smith
4e395ba85b
gdiplus: Fix function name typo in comment.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-23 12:41:07 +01:00
Michael Stefaniuc
60c1035137
gdiplus: Use wide-char string literals.
...
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-13 11:28:44 +01:00
Ziqing Hui
c509060f52
gdiplus: Support StringFormatNoWrap for GdipMeasureString.
...
Signed-off-by: Ziqing Hui <zhui@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-23 10:59:32 +02:00
Ziqing Hui
3f228497a8
gdiplus/tests: Add tests for GdipMeasureString with StringFormatFlagsNoWrap.
...
Signed-off-by: Ziqing Hui <zhui@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-10-23 10:59:30 +02:00
Haoyang Chen
2697b74d67
gdiplus: Fix texture brush rotation.
...
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-10-12 10:42:03 +02: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
Michael Stefaniuc
4e9ad7b305
gdiplus/tests: Use the ARRAY_SIZE() macro.
...
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-24 15:02:08 +02:00
Pengpeng Dong
36e6ea9767
gdiplus: Initialize the dead point coordinates in "GpPointF, *ptf" to 0.
...
Signed-off-by: Pengpeng Dong <dongpengpeng@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-18 22:25:25 +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
Esme Povirk
6a5eed549d
gdiplus/tests: Don't test point type array padding.
...
Since the point types are an array of bytes, padded to a DWORD
boundary, some of the bytes at the end are undefined, and there's
no good reason to test them.
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-17 10:43:52 +02:00
Jiajin Cui
5754bd9c0a
gdiplus: Make gdi_alpha_blend fallback to StretchBlt if current Compositing Mode is SourceCopy.
...
Signed-off-by: Jiajin Cui <cuijiajin@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-09-04 21:16:49 +02:00
Shawn M. Chapla
52fa4fb74e
gdiplus: Implement GdipGetClipBoundsI in terms of GdipGetClipBounds.
...
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-26 21:25:39 +02:00
Shawn M. Chapla
5e40198862
gdiplus/tests: Add cursory GdipGetClipBoundsI checks to graphics clipping test.
...
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-26 21:25:39 +02:00
Shawn M. Chapla
c155b043fd
gdiplus: Add missing allocation failure checks to graphics functions.
...
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-26 21:25:39 +02:00
Shawn M. Chapla
1f8e40e461
gdiplus: Remove outdated FIXME comment about compositing mode.
...
Removes an outdated comment about graphics compositing mode being
unused. Graphics compositing mode has been used in pixel blending since
a16a4d97
.
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-26 21:25:39 +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
14bf19ec5e
gdiplus/tests: Add metafile null frame rect GDI/GDI+ interop test case.
...
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:52 +02:00
Jeff Smith
82eb0a66a2
gdiplus: Avoid a few unnecessary calculations for arc2polybezier.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-08-05 15:06:53 +02:00
Shawn M. Chapla
7c2d5d40e5
gdiplus/tests: Fix 'LogicalDpiY' typos in metafile tests.
...
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-29 11:24:26 +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
6c57cf5eee
gdiplus/tests: Add metafile LinearGradient brush test.
...
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:36 +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
5ccd10fce8
gdiplus/tests: Add metafile FillRegion test.
...
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:17 +02:00
Jiajin Cui
f992bc77c8
gdiplus: Fix crash if failed to create bitmap.
...
Signed-off-by: Jiajin Cui <cuijiajin@uniontech.com>
Signed-off-by: Esme Povirk <esme@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-20 20:17:50 +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
fcc21dbf48
gdiplus/tests: Add metafile unknown font deserialize test.
...
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:37 +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
04d536267e
gdiplus: Set font emSize to height minus internal leading.
...
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codewevers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-15 20:06:37 +02:00
Shawn M. Chapla
bfc8404041
gdiplus/tests: Add additional logfont size tests.
...
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <esme@codewevers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-15 20:06:37 +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
b1f2432505
gdiplus/tests: Add metafile DrawDriverString test.
...
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:10 +02:00
Shawn M. Chapla
b0f6650452
gdiplus: Set GDI world xform to the identity xform on acquisition.
...
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:59:35 +02:00
Shawn M. Chapla
83034c9496
gdiplus/tests: Add GDI/GDI+ HDC constructed graphics interop test.
...
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:59:34 +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
Shawn M. Chapla
139c9be2ba
gdiplus/tests: Add metafile playback test for EMR_RESTOREDC.
...
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:19 +02:00
Shawn M. Chapla
34aa117278
gdiplus: Preserve temp DC state for bitmap backed graphics objects.
...
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-22 16:43:12 +02:00
Shawn M. Chapla
739d0a1dfa
gdiplus/tests: Add GDI/GDI+ graphics interop test.
...
Signed-off-by: Shawn M. Chapla <schapla@codeweavers.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-22 16:43:12 +02:00
Jeff Smith
11c68bb50e
gdiplus/tests: Fix debug value in test_graphics_clear().
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-22 16:43:12 +02:00
Jeff Smith
47b0155f96
gdiplus: Simplify modulo 8 math used for rendering origin.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-22 16:43:12 +02:00
Jeff Smith
da91507491
gdiplus: Handle rendering origin during hatch fill.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-17 11:34:59 +02:00
Jeff Smith
03cefac99b
gdiplus/tests: Test that hatch fill uses rendering origin.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-17 11:34:56 +02:00
Jeff Smith
7bf86e0016
gdiplus: Handle additional hatch styles.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-15 20:55:56 +02:00
Jeff Smith
d0c70facbd
gdiplus: Fix hatch brush patterns that require anti-aliasing.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-15 20:55:53 +02:00
Jeff Smith
a75584ec1b
gdiplus: Fix most hatch brush patterns.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-15 20:55:50 +02:00
Jeff Smith
7735c11d69
gdiplus/tests: Test hatch brush patterns.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-15 20:55:46 +02:00
Jacek Caban
cca639fa64
gdiplus: Introduce absdiff helper.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-01 22:10:28 +02:00
Jacek Caban
10257a9417
gdiplus/tests: Introduce compare_uint helper.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Esme Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-29 10:45:24 +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
Vincent Povirk
606ba15ac5
gdiplus: Add tests for image palette size.
...
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-15 14:08:51 +02:00
Vincent Povirk
8b9cff6e70
gdiplus: Return an error retrieving the palette for a metafile.
...
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-15 14:08:51 +02:00
Vincent Povirk
ed2d0df4f7
gdiplus: Don't set a palette when loading non-indexed images.
...
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-15 14:08:51 +02:00
Vincent Povirk
3250a17e20
gdiplus: Support character offsets in GDI32_GdipDrawDriverString.
...
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-08 13:34:23 +02:00
Jeff Smith
252a53825a
gdiplus: Include palette when writing PNG indexed formats.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-29 19:50:43 +02:00
Jeff Smith
f3c03ecb82
gdiplus/tests: Indicate which encoder failed when attempting to save image.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-29 19:50:38 +02:00
Dmitry Timoshkov
7eb1f5d6ad
windowscodecs: Add initial implementation of the GIF encoder.
...
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-27 21:36:12 +02:00
Jeff Smith
28dde825b3
gdiplus/tests: Use originating line when ok_path reports failures.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-20 12:35:24 +02:00
Jeff Smith
fd15bd22c4
gdiplus: Use internal function to add bezier points for curve.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:04 +02:00
Jeff Smith
7ff16aff06
gdiplus: Reuse point when calling GdipAddPathArc on open figure.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:04 +02:00
Jeff Smith
c5ae902946
gdiplus: Reuse point when calling GdipAddPathLine2 on open figure.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:04 +02:00
Jeff Smith
f54bf06a2a
gdiplus: Reuse point when calling GdipAddPathLine on open figure.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:04 +02:00
Jeff Smith
a7e6cb4a25
gdiplus: Reuse point when calling GdipAddPathBeziers on open figure.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48877
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:04 +02:00
Jeff Smith
1a3a8a0016
gdiplus: Reuse point when calling GdipAddPathBezier on open figure.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-16 22:10:04 +02:00
Jeff Smith
93a5ce2445
gdiplus: Check that GdipAddPathLine2 is passed at least one point.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-14 22:04:07 +02:00
Jeff Smith
efd5f670bd
gdiplus: Clear new multi-point paths that end with Start.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-14 22:04:07 +02:00
Thomas Faber
65c72c93ce
gdiplus/tests: Disable double-freeing test.
...
Signed-off-by: Thomas Faber <thomas.faber@reactos.org>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-13 11:48:32 +02:00
Jeff Smith
09630fc92e
gdiplus: Handle some degenerate cases with GdipCreatePath2.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-10 17:38:50 +02:00
Jacek Caban
af12270ac6
makefiles: Remove no longer needed explicit ucrtbase imports.
...
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 21:21:52 +02:00
Jeff Smith
9f60413630
gdiplus: Widen-path for zero-width lines only emits anchors.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 10:42:17 +02:00
Jeff Smith
5eda570e6d
gdiplus: Do not shrink UnitWorld lines below width 1.0.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 10:42:15 +02:00
Jeff Smith
0cc30160b7
gdiplus: Pass line-width parameter to widen-figure functions.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 10:42:12 +02:00
Jeff Smith
fc45ffa89e
gdiplus/tests: Add widen-path test for UnitWorld zero-width line.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-06 10:42:10 +02:00
Jeff Smith
260fb550be
gdiplus: Caps are added at the end of a path.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-26 21:18:30 +01:00
Jeff Smith
15e8adfcfc
gdiplus/tests: Add tests for multi-figure lines to test_widen_cap.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-26 21:18:27 +01:00
Vincent Povirk
689e94c597
gdiplus/tests: Don't test the exact substitution of MS Shell Dlg.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47872
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-23 12:20:43 +01:00
Vincent Povirk
861811254f
gdiplus/tests: Don't test font face of DEFAULT_GUI_FONT.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47872
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-23 12:20:41 +01:00
Damjan Jovanovic
99a171981c
gdiplus: In CompositingModeSourceCopy, fully transparent pixels are drawn black.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=42585
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-05 20:21:29 +01:00
Piotr Caban
f65cca4de3
gdiplus: Fix leak in SOFTWARE_GdipDrawDriverString.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-05 19:49:56 +01:00
Piotr Caban
c74d909e3b
gdiplus: Fix gdi handles leak in GdipMeasureCharacterRanges.
...
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-05 19:49:53 +01:00
Jeff Smith
0022b7a6cf
gdiplus: Caps do not shrink for line width < 2.0.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-03 23:02:00 +01:00
Jeff Smith
2d4befd4bc
gdiplus/tests: Add thin-line test to test_widen_cap.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-03 23:01:57 +01:00
Jeff Smith
c147f8e3d7
gdiplus/tests: Use much smaller fudge factor in test_widen_cap.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-03 23:01:52 +01:00
Zhiyi Zhang
83e95a609c
gdiplus: Fix a possible NULL pointer reference in GdipGetNearestColor().
...
Fix a regression from 5ca9da2c01
.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48657
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-24 18:50:19 +01:00
Florian Will
a7fc06f62c
gdiplus: Implement GdipSaveAddImage() and GdipSaveAdd().
...
Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:26:53 +01:00
Florian Will
21b62920f6
gdiplus/tests: Add multi-page tiff file saving test.
...
Also move the get_encoder_clsid() helper to the top of the file so it
can be used by the new test.
Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:01:22 +01:00
Florian Will
483aaf3308
gdiplus: Add GdipSaveAddImage() stub.
...
Also update the GdipSaveAdd() stub to return NotImplemented instead of
silently failing.
Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:01:15 +01:00
Florian Will
b31fc78812
gdiplus: Refactor to split up encode_image_wic().
...
New functions initialize_encoder_wic(), encode_frame_wic() and
terminate_encoder_wic() are useful for implementing GdipSaveAdd() and
GdipSaveAddImage() later.
The WIC encoder is now stored in the new GpImage "encoder" field instead
of a local variable. This makes it possible to keep the encoder active
between multiple gdiplus API calls, which is also useful for
GdipSaveAdd() and GdipSaveAddImage().
Signed-off-by: Florian Will <florian.will@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:01:05 +01:00
Jeff Smith
bc49309fe2
gdiplus: Add LineCapDiamondAnchor path widening.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:00:54 +01:00
Jeff Smith
8e7c320df6
gdiplus: Add LineCapRoundAnchor path widening.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:00:54 +01:00
Jeff Smith
1da5cd6a8f
gdiplus: Add LineCapSquareAnchor path widening.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:00:52 +01:00
Jeff Smith
b3a68db9a0
gdiplus: Fix LineCapTriangle path widening.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:00:48 +01:00
Jeff Smith
26ffbf6b8c
gdiplus: Fix LineCapRound path widening.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:00:43 +01:00
Jeff Smith
eff15943ce
gdiplus/tests: Test path widening on capped lines.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-19 20:00:38 +01:00
Jeff Smith
ffd4bb2520
gdiplus: Each pen dash array element must be greater than zero.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-17 18:48:33 +01:00
Dmitry Timoshkov
a99cad4ae7
gdiplus: Print fixme in GdipGetNearestColor only once.
...
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-11 19:47:56 +01:00
Jeff Smith
ddd88fe2f4
gdiplus: Round up when converting from 32-bit ARGB to PARGB.
...
Applies fix from d23bfd8dfc
to
setpixel_32bppPARGB.
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-11 19:47:33 +01:00
Jeff Smith
06bf4283fb
gdiplus: Fix calculation for 32-bit PARGB to ARGB conversion.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-11 19:47:25 +01:00
Dmitry Timoshkov
5ca9da2c01
gdiplus: Make GdipGetNearestColor print FIXME only if indexed bitmap is associated with the graphics object.
...
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-10 22:46:24 +01:00
Dmitry Timoshkov
b9307cfa61
gdiplus: Create FontFamily objects only once for the FontCollection.
...
.Net 4.7+ depends on this behaviour and expects to be able to do pointer
equality tests for FontFamily objects.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-02 16:21:45 +01:00
Dmitry Timoshkov
2884da7ef7
gdiplus/tests: Add tests for FontFamily object management.
...
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-02-02 16:21:43 +01:00
Dmitry Timoshkov
cf6546fb3b
gdiplus/tests: Add more tests for GdipCreateBitmapFromHBITMAP and palette images.
...
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 18:27:17 +01:00
Dmitry Timoshkov
506f3bf53d
gdiplus: Reimplement GdipCreateBitmapFromGdiDib by using GdipCreateBitmapFromHBITMAP.
...
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 18:27:14 +01:00
Dmitry Timoshkov
619ef41f33
gdiplus: GdipCreateBitmapFromHBITMAP should use palette from the GDI bitmap.
...
This patch fixes painting bitmaps with bpp <= 8.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-27 18:27:07 +01:00
Dmitry Timoshkov
b7ca0bc043
gdiplus: If the font unit is not pixels scaling should not be applied.
...
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-23 21:11:29 +01:00
Jeff Smith
1802ca5e34
gdiplus: Calculate centroid of path as default center of path gradient.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-23 21:11:29 +01:00
Jeff Smith
3a092fb616
gdiplus/tests: Add another GdipGetPathGradientCenterPoint test.
...
Signed-off-by: Jeff Smith <whydoubt@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-23 21:11:29 +01:00
Alistair Leslie-Hughes
14adcc694d
gdiplus: Check status as well before using bitmap.
...
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-13 19:41:03 +01:00
André Hentschel
76fea3a990
gdiplus: Fix some spec file entries.
...
Signed-off-by: André Hentschel <nerv@dawncrow.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-08 21:58:06 +01:00
Damjan Jovanovic
3c8784bf9c
gdiplus: GdipGraphicsClear() should overwrite pixels, not alpha blend.
...
All sample code in the Python Pyglet library suffers from terrible
text corruption, caused by the inability to erase the background
between rendering sequential font glyphs, resulting in leftovers
from previous letters mixing with the image of new letters.
This is because it attempts to erase the background by calling
GdipGraphicsClear() with ARGB color 0x00000000 (completely
transparent black), and in our gdiplus alpha blending that into
the background has no effect. It should be using
CompositeModeSourceCopy to overwrite the background with that brush
instead.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30506
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-13 21:01:59 +01:00
Damjan Jovanovic
a16a4d9757
gdiplus: Start implementing CompositingModeSourceCopy.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30506
Signed-off-by: Damjan Jovanovic <damjan.jov@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-13 21:01:59 +01: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