Commit Graph

2538 Commits

Author SHA1 Message Date
Gabriel Ivăncescu 02a94ecc86 gdi32: Use a lazy-init lookup cache when converting RGB values to colour table indices.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-16 22:39:46 +02:00
Gabriel Ivăncescu d4dc8fd2c2 gdi32: Move the loop through each clipped rectangle to the primitive blend funcs.
This is to prepare so we don't recalculate the lookup cache map for color
tables on every clipped rect (which is expensive).

Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-16 22:39:46 +02:00
Akihiro Sagawa 629ba19200 gdi32: Get rid of redundant ntmCellHeight member.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-07 22:36:11 +02:00
Akihiro Sagawa 837c4f4b87 gdi32: Fix text metrics used in EnumFonts families.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50818
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-07 22:36:11 +02:00
Akihiro Sagawa 8f6f1c8f7a gdi32: Move otmEMSquare initialization to freetype_load_font.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-07 22:36:11 +02:00
Akihiro Sagawa 67093e3b4a gdi32/tests: Remove unreliable height tests.
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-07 22:36:11 +02:00
Alexandre Julliard 23389127ec gdi32: Try to load the printer driver from the printer driver directory.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-31 19:26:09 +02:00
Zhiyi Zhang efdd6f46c9 gdi32: Fix handling of ModifyWorldTransform( MWT_IDENTITY ) on an emf dc.
When the mode parameter is MWT_IDENTITY, the xform parameter can be NULL because it should be
ignored and use the identity matrix.

Fix Tally crashing when exporting a JPEG image.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-31 19:26:09 +02:00
Byeongsik Jeon 56b16ff466 gdi32: Remove needTransform variable of freetype_get_glyph_outline().
Signed-off-by: Byeongsik Jeon <bsjeon@hanmail.net>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 21:33:43 +01:00
Byeongsik Jeon bb86ae80c8 gdi32: Remove metrics, vertical_metrics arguments of get_advance_metric().
Signed-off-by: Byeongsik Jeon <bsjeon@hanmail.net>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 21:33:43 +01:00
Byeongsik Jeon 64ca79529b gdi32: Remove incoming_font argument of get_advance_metric().
Signed-off-by: Byeongsik Jeon <bsjeon@hanmail.net>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 21:33:43 +01:00
Byeongsik Jeon 062aa9a614 gdi32: Fix typo in get_transformed_bbox() trace message.
Signed-off-by: Byeongsik Jeon <bsjeon@hanmail.net>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 21:33:43 +01:00
Byeongsik Jeon d6e83e3027 gdi32: Move FT_Library_SetLcdFilter() to init_freetype().
Signed-off-by: Byeongsik Jeon <bsjeon@hanmail.net>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-03-09 21:33:43 +01:00
Gabriel Ivăncescu 14a9551a94 gdi32: ExtTextOut should fail if count is larger than INT_MAX.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-03 21:01:38 +01:00
Alexandre Julliard 9581b2df8c gdi32: Cache the codepage tables also for OpenType names mapping.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-03 20:55:06 +01:00
Alexandre Julliard 8d373a67e1 gdi32/tests: Regenerate ttf files with the official fontforge version.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-02-03 20:43:55 +01:00
Zhiyi Zhang 8fad0b146d gdi32: Report real VREFRESH values for GetDeviceCaps() with display DCs.
Even though MSDN says 0 and 1 are both valid and they represent the default refresh rate of display
hardware. Some games rely on the value being the real refresh rate and use it to cap frame rates.

Fix an issue that Sakuna: Of Rice and Ruin reports monitors of 1Hz and cap to 1fps.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-27 21:12:06 +01:00
Zhiyi Zhang 2006f76b5f gdi32: Report correct HORZRES and VERTRES values for GetDeviceCaps() with DCs on a specific monitor.
Fix DLC Quest uses the primary monitor size to render when in fullscreen mode on non-primary monitors.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-27 21:12:01 +01:00
Alexandre Julliard b67f39ccc6 gdi32: Merge rectangles horizontally when possible in CreatePolyPolygonRgn.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50539
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-22 11:12:21 +01:00
Byeongsik Jeon f026739564 gdi32: Preserve the GGO_UNHINTED bits until used.
Fix a regression caused by 044315c0b3.

Signed-off-by: Byeongsik Jeon <bsjeon@hanmail.net>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-21 20:46:13 +01:00
Nikolay Sivov 016eeb5109 gdi32/uniscribe: Get rid of shaping group values in Arabic shaping data table.
It's not used right now, Syriac specific groups will be accomodated
as additional joining types.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-20 22:11:40 +01:00
Nikolay Sivov f734d98a98 gdi32/uniscribe: Merge Arabic joining types C and D.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-20 22:11:15 +01:00
Dmitry Timoshkov f45606c5f8 gdi32: Avoid best fit chars when mapping unicode character to a glyph index.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-20 22:09:48 +01:00
Zebediah Figura 96fdbabc72 gdi32: Do not compare face file names in insert_face_in_family_list() if either is NULL.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50486
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-01-15 10:09:47 +01:00
Alexandre Julliard 5e648e8967 gdi32: Don't fail font creation when we are out of handles.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50354
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-21 21:04:55 +01:00
Dmitry Timoshkov 22d776fc1b gdi32/tests: Add some tests to show that GetGlyphIndices() should avoid best fit chars.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-21 16:55:53 +01:00
Zhiyi Zhang aa3e02e193 gdi32/tests: Fix test failures on Win10 1909+.
Memory DC, metafile DC and enhanced metafile DC support gamma ramp on Win10 1909+.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-21 16:41:46 +01:00
Zhiyi Zhang d93412ca67 gdi32/tests: Fix possible test failures in test_clip_box().
When there are multiple monitors and their monitor region union can still be represented by a simple
rectangle, the clip box region type for the screen DC is still SIMPLEREGION.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-21 16:41:43 +01:00
Michael Stefaniuc f6a0c60618 gdi32/tests: Use wide-char string literals.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-18 15:21:37 +01:00
Jacek Caban fcf545f449 winapi: Use __alignof__ on clang.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-16 15:30:07 +01:00
Alexandre Julliard a0559ad5c3 gdi32: Properly fail mapping glyph for invalid characters in fonts without encoding.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50252
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-14 17:02:39 +01:00
Alexandre Julliard 057b4b4148 gdi32: Don't create font substitutes for identical names.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-14 17:02:39 +01:00
Rémi Bernon 76c9dbd4fb gdi32: Fix gdi font leak in CreateScalableFontResourceW.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50273
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-09 22:09:53 +01:00
Rémi Bernon 06206f1628 gdi32: Don't try to get glyph index when default char is 0.
Fixes a regression from 5bdc6e0fe6, this
is what the code was originally doing.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50175
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-08 22:25:59 +01:00
Rémi Bernon 6245f07201 gdi32/tests: Test GetGlyphIndices with '\0' default and a glyph.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50175
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-08 22:25:59 +01:00
Alexandre Julliard 5f70191470 gdi32: Always let the Freetype driver fixup the AA flags.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50127
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-07 22:35:29 +01:00
Rémi Bernon 8aa404bba0 gdi32: Use FreeType as a fallback when loading font faces.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-03 20:18:38 +01:00
Rémi Bernon 3ea171dee5 gdi32: Try to parse font props without FreeType.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-03 20:18:38 +01:00
Rémi Bernon 93ef83e903 gdi32: Try to parse font names without FreeType.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-03 20:18:38 +01:00
Rémi Bernon e338d04697 gdi32: Introduce new opentype font parsing helpers.
Mostly taken from dwrite source, adapted to make it more flexible.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-03 20:18:38 +01:00
Rémi Bernon dece7fa9eb gdi32: Store ft_face font props on unix_face.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-03 20:18:38 +01:00
Rémi Bernon dbe4462057 gdi32: Introduce struct unix_face as a ft_face wrapper.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-03 20:18:38 +01:00
Rémi Bernon 63de94839c gdi32: Only use the registry cache for application fonts.
And load system fonts outside of the global font mutex. We now only use
the mutex to protect the registry fonts initialization.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 12:35:55 +01:00
Rémi Bernon cae74aa7d9 gdi32: Only request registry font path when necessary.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 12:35:47 +01:00
Rémi Bernon a0b7a0da40 gdi32: Update the external keys after all fonts are loaded.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 12:35:42 +01:00
Rémi Bernon 7f4a889078 gdi32: Index scalable faces by full name in rbtree.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 12:35:28 +01:00
Rémi Bernon 3c0137f81e gdi32: Load registry fonts after system fonts.
This fixes an issue when, if an external font path was modified in the
Windows key, it was then not considered as external anymore, but still
present in the external key, and then dropped from both on update.

This now forcefully updates the font path in both keys if needed.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 12:35:10 +01:00
Rémi Bernon c06cacff11 gdi32: Compare font face names using RtlDowncaseUnicodeChar.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-26 23:25:24 +01:00
Rémi Bernon c57a53147f gdi32/tests: Add locale-dependent face matching test.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-26 21:31:53 +01:00
Francois Gouget c4310f6943 gdi32/tests: Fix the spelling of an ok() message.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-25 22:51:35 +01:00