Commit graph

3043 commits

Author SHA1 Message Date
Piotr Caban e0513f4dd1 gdi32: Add GdiIsMetaPrintDC implementation. 2023-04-27 18:34:10 +02:00
Piotr Caban ca66b3eb84 gdi32: Add support for creating EMF spool files. 2023-04-27 18:34:10 +02:00
Piotr Caban f79c9f3568 gdi32: Factor out emf_create helper. 2023-04-27 18:34:10 +02:00
Piotr Caban 16b951ccbf gdi32: Factor out emf_eof helper. 2023-04-27 18:34:10 +02:00
Piotr Caban acbccf177e gdi32: Improve EMF DC cleanup when CloseEnhMetafile is not called. 2023-04-27 18:34:10 +02:00
Piotr Caban d317db91f2 gdi32: Store the printer info in a structure. 2023-04-27 18:34:09 +02:00
Piotr Caban 28df39908a gdi32/tests: Add EMF palette tests. 2023-04-22 17:34:32 +02:00
Piotr Caban f45baaa11e gdi32: Store palette in EMR_EOF record. 2023-04-22 17:34:32 +02:00
Piotr Caban b9b159e5a8 gdi32: Fix EMR_CREATEPALETTE recording. 2023-04-22 17:34:32 +02:00
Piotr Caban c752e84543 gdi32: Use EMR_REALIZEPALETTE to record RealizePalette. 2023-04-22 17:34:32 +02:00
Piotr Caban 747fa33bbb gdi32: Handle EMR_TRANSPARENTBLT record in PlayEnhMetaFileRecord. 2023-04-13 21:56:58 +02:00
Piotr Caban 061dc3a480 gdi32: Support stock brush in EMR_FRAMERGN. 2023-04-11 18:22:29 +02:00
Piotr Caban 10dfb4f3b7 gdi32: Support stock brush in EMR_FILLRGN. 2023-04-11 18:22:29 +02:00
Piotr Caban 1fa938c17e gdi32: Factor out function for obtaining gdi object handle. 2023-04-11 18:22:29 +02:00
Paul Gofman c4073d5abf win32u: Set DEVPKEY_Device_RemovalPolicy for GPUs. 2023-04-06 17:02:18 +02:00
Paul Gofman bee387dc8a win32u: Set DEVPKEY_Device_BusNumber for GPUs. 2023-04-06 17:02:18 +02:00
Paul Gofman 80910517d7 win32u: Set DEVPKEY_Device_MatchingDeviceId for GPUs. 2023-04-06 17:02:18 +02:00
Piotr Caban 273f40b6c4 gdi32: Let SetDIBits handle DIB_PAL_INDICES color usage in PlayEnhMetaFileRecord. 2023-04-06 14:32:32 +02:00
Piotr Caban 8ada95cec4 gdi32: Rename DIB_PAL_MONO to DIB_PAL_INDICES. 2023-04-06 14:32:32 +02:00
Piotr Caban 3f051d3b1e win32u: Add support for undocummented DIB_PAL_INDICES color usage in SetDIBits. 2023-04-06 14:32:32 +02:00
Piotr Caban 065fbd206d gdi32: Improve EMR_CREATEDIBPATTERNBRUSHPT playback.
It makes the lbHatch data available after PlayEnhMetaFileRecord returns.
2023-03-09 18:11:28 +01:00
Francois Gouget 9d6a9909c3 gdi32/tests: Fix the SetDeviceGammaRamp() tests on Windows 10 1909.
SetDeviceGammaRamp() checks the specified ramp to prevent applications
from setting malicious gamma ramps (e.g. hiding text by remapping its
color to match the background).
But Windows 10 1909 has fewer checks than later Windows 10 versions.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54593
2023-02-27 16:36:22 +01:00
Francois Gouget 267f612604 gdi32/tests: Make the gamma ramp failures more unique.
Otherwise the only way to identify which failure happened is to check
its line number which is not practical across versions.
2023-02-27 16:36:22 +01:00
Francois Gouget 390ed160ef gdi32/tests: Simplify setting up the non uniform gamma ramps. 2023-02-27 16:36:22 +01:00
Ivan Chikish 907b1b4a36 gdi32/tests: Check last error on ' '. 2023-02-24 22:23:12 +01:00
Francois Gouget 2436964d56 gdi32/tests: Mark a couple other D3DKMTCheckOcclusion() tests as flaky.
They also happen randomly on Windows (see commit 2d19baa6b5).

Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=51313
2023-02-20 23:00:34 +01:00
Hans Leidekker a744265c1e gdi32/tests: Mark another D3DKMTCheckOcclusion() test as flaky.
It shows the same behavior as the one marked by commit 2d19baa6b5.

Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=51313
2023-01-30 18:54:29 +01:00
Piotr Caban b6204639ba gdi32: NULL terminate output string in CreateDCW. 2022-11-29 19:11:19 +01:00
Piotr Caban 1cf1412a12 gdi32: Get printer output file name in StartDoc. 2022-11-22 18:27:30 +01:00
Piotr Caban 4e527045d5 gdi32: Don't crash in StartDoc on NULL DOCINFO. 2022-11-22 18:27:30 +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
Tarcísio Ladeia de Oliveira 61f566260b gdi32/tests: Fix assertion message. 2022-11-07 21:13:32 +01:00
Ziqing Hui b558c87c50 gdi32/uniscribe: Add fallback font for Kana and CJK script.
This fixes Chinese and Japanese text display issue for
Sins of a Solar Empire: Rebellion.
2022-11-04 19:23:55 +01:00
Mark Jansen 4312be1646 gdi32: Fix possible overflow.
According to the documentation of ScriptShape function, the psva argument should have the number of elements indicated by cMaxGlyphs.
2022-10-11 20:54:18 +02:00
Francois Gouget 2d19baa6b5 gdi32/tests: Mark tests failing randomly on Windows as flaky.
Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=51313
2022-10-11 17:13:36 +02:00
Alexandre Julliard 7ab46c4f21 unicode: Update to Unicode 15.0.0. 2022-09-14 22:38:34 +02:00
Alexandre Julliard 3e3caf1efd gdi32/tests: Mark some tests that fail without Vulkan as todo. 2022-09-13 22:07:22 +02:00
Alexandre Julliard 24da06789e unicode: Add data for high Unicode planes to the bidi direction table. 2022-09-05 18:41:47 +02:00
Alexandre Julliard ba58338b21 unicode: Add data for high Unicode planes to the linebreak table. 2022-09-05 18:41:47 +02:00
Zhiyi Zhang 58b477d158 win32u: Choose a smaller ppem to avoid exceeding the requested font height.
When height > 0, CreateFontA/W() should not return a font face exceeding the requested height.
For instance, Tahoma has 2049 units of ascent, 423 units of descent and its units per EM square is
2048. When requesting a font 20 pixels in height, ppem = units_per_EM * requested_height / (ascent + descent)
= 2048 * 20 / (2049 + 423) = 16.57 ~= 17. When getting the resulting height back from the ppem,
resulting_height = (ascent + descent) * ppem / units_per_EM = (2049.0 + 423) * 17 / 2048 = 20.52
~=21. So it ends up getting a larger font than requested and violates the spec.

Fix Nancy Drew: Legend of the Crystal Skull crash at start.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2022-08-19 22:45:18 +02:00
Zhiyi Zhang 821b36e00b gdi32/tests: Add more tests for GetTextMetrics().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2022-08-19 22:45:18 +02:00
Jacek Caban 2b6647cdd5 win32u: Use platform-independent layout for DC_ATTR. 2022-08-09 15:55:43 +02:00
Zhiyi Zhang 546cbdc250 win32u: Create a dummy bitmap for display device contexts.
On Windows 7 and older versions of Windows, calling GetCurrentObject(hdc, OBJ_BITMAP) for a display
device context will return a valid handle. However, this handle will fail for GetObject(). On newer
versions of Windows, GetCurrentObject(hdc, OBJ_BITMAP) for display device contexts returns a bitmap
of virtual screen size and its size changes after display mode changes. This behavior is tested in
the _check_display_dc() function in user32/tests/monitor.c.

The screen shot function of WeChat depends on GetObject() to either return failure or a valid size
for the bitmap from display device contexts. Since Wine currently report Windows 7 as default and to
save memory, the Windows 7 behavior is implemented.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2022-05-30 22:07:42 +02:00
Huw Davies 6a9a80679d gdi32: Free the client-side emf dc info.
Signed-off-by: Huw Davies <huw@codeweavers.com>
2022-05-24 17:34:59 +02:00
Huw Davies 0c8a076e78 gdi32: Remove second initialization of emf->dc_attr.
Signed-off-by: Huw Davies <huw@codeweavers.com>
2022-05-24 17:34:59 +02:00
Zhiyi Zhang 8bc0c8d646 gdi32: Implement D3DKMTQueryVideoMemoryInfo().
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-17 17:50:43 +02:00
Zhiyi Zhang 37b74e644a gdi32/tests: Add D3DKMTQueryVideoMemoryInfo() tests.
Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-05-17 17:50:30 +02:00
Francois Gouget 0519aec310 gdi32/tests: Trace the invalid height in test_max_height().
Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-27 16:14:25 +02:00
Alexandre Julliard 7500fc1ce9 gdi32: Support UTF-8 codepage in TranslateCharsetInfo().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52847
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-22 13:06:15 +02:00
Nikolay Sivov f534e3f499 gdi32: Use NtUserGetSysColor() directly.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-19 17:35:33 +02:00