Commit Graph

2254 Commits

Author SHA1 Message Date
Michael Stefaniuc 68f1df237a gdi32/tests: Make use of todo_wine_if().
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-05 09:14:34 -05:00
Nikolay Sivov 41fa3f02ef gdi32: Fix its vs it's typo.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-03 09:56:19 -05:00
Huw Davies 28bb9d15a6 gdi32: Only reselect the objects if the linear transform portion changes.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-01 05:30:17 -05:00
Sebastian Lackner aa4a1e17a2 gdi32/enhmfdrv: Remove unused debug channel.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-01 05:30:11 -05:00
Huw Davies 0f2a776a59 gdi32: Convert a few uses of get_dc_ptr() to get_physdev_dc().
In these cases we have the PHYSDEV meaning we own the DC already.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:35 +09:00
Huw Davies 199ca9258a gdi32: Access several more properties directly from the DC.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:35 +09:00
Huw Davies aa4934783f gdi32: Where possible directly access the DC instead of using GetCurrentObject().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:35 +09:00
Huw Davies d4d65e2df9 gdi32: Move the release until after the final dc access.
Also only reselect the font if the graphics mode changes.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:35 +09:00
Huw Davies e1130cbb99 gdi32: Add an internal version of DPtoLP that takes a DC pointer.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:35 +09:00
Huw Davies 637c99f675 gdi32: Remove an unnecessary call to get_dc_ptr().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:35 +09:00
Huw Davies e767a60790 gdi32: Access a few more properties directly from the DC in the path driver.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:34 +09:00
Huw Davies 377010dcfc gdi32: Pass a DC pointer to PATH_CheckCorners().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:34 +09:00
Huw Davies f1aaf0efb0 gdi32: Pass a DC pointer to the point adding routines.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:34 +09:00
Huw Davies 1b4f0f8a07 gdi32: Pass the path directly to start_new_stroke().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:34 +09:00
Huw Davies 67520ebaf5 gdi32: Pass a DC pointer to get_gdi_flat_path().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:34 +09:00
Huw Davies 0c1e42235a gdi32: Don't call GetObjectW() unless necessary.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:33 +09:00
Huw Davies 41f763ea87 gdi32: Add an internal version of GetTextCharsetInfo() that takes a DC pointer.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:32 +09:00
Huw Davies 22202eae59 gdi32: Use a buffer on the stack if the number of points is small.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-29 23:43:32 +09:00
Huw Davies 5118d1312c gdi32: Access a few more properties directly from the DC in the dib driver.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-28 21:38:09 +09:00
Huw Davies d8e353f99f gdi32: Pass a DC pointer to get_pixel_color().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-28 21:38:09 +09:00
Huw Davies cf386b8b64 gdi32: Pass a DC pointer to get_mono_dc_colors().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-28 21:38:08 +09:00
Huw Davies 9efe66a83a gdi32: Use lp_to_dp() instead of LPtoDP() in the dib driver.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-27 22:21:10 +09:00
Huw Davies 7fa6dfecc9 gdi32: Pass a DC pointer to get_device_rect() to avoid accesses via the handle.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-27 22:21:09 +09:00
Huw Davies 36a0bb0f52 gdi32: Avoid unnecessary calls to get_dc_ptr().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-27 22:21:09 +09:00
Huw Davies 6a8cfea99b gdi32: Use POINT and SIZE to hold positions and extents.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-27 22:21:08 +09:00
Huw Davies f4bc213ce5 gdi32: Use an internal version of LPtoDP that takes a DC * where possible.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-18 19:38:14 +09:00
Huw Davies af5014f4c8 gdi32: Add a small rectangle buffer to reduce memory allocation.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-18 19:38:12 +09:00
Huw Davies 01c33fb983 gdi32: Add helpers to allocate, grow and free regions.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-18 19:38:09 +09:00
Huw Davies 778faedbae gdi32: Copy 1-bpp pixels one byte at a time.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 19:56:38 +09:00
Huw Davies da8834609a gdi32: Reduce the number of memory allocations required for gdi paths.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 11:26:10 +09:00
Huw Davies 54ec86021a gdi32: Change get_gdi_flat_path() to return an opaque path pointer.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 11:26:10 +09:00
Huw Davies 23751e0ac2 gdi32: Use alloc_gdi_path() to create the path.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 11:18:31 +09:00
Jacek Caban 585f6074b0 gdi32: Make CreateDIBSection hotpatchable.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-15 11:18:27 +09:00
Huw Davies a8044bebe8 gdi32: Add a mask_rect primitive for use when the src is 1bpp.
This essentially combines the format conversion with a copy_rect.

It cannot be used when stretching, since stretching of 1bpp is
slightly special.  Similarly, it cannot be used if the dst is also
1bpp (hence there is no mask_rect_1) or if the rop involves the brush.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-14 17:52:35 +09:00
Huw Davies f5bffe0ef7 gdi32: Use the get_mono_dc_colors() helper.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-14 17:52:35 +09:00
Huw Davies 622c01c5e1 gdi32: Add back the extents test.
Spotted by Sebastian Lackner.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-09 11:03:55 +09:00
Huw Davies fc2d310949 gdi32: Add get_any_obj_ptr() to retrieve the ptr and type of a GDI handle.
This enables get_dc_obj() to check the type without calling GetObjectType()
and thus it saves additional calls to Enter/LeaveCriticalSection().

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-08 23:07:22 +09:00
Michael Stefaniuc 0b96693f75 gdi32: Remove a redundant NULL check before HeapFree().
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-08 20:12:19 +09:00
Huw Davies f7b6a7d77a gdi32: Precompute the destination colours for sources with a colour table.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-07 21:23:24 +09:00
Huw Davies f59d3f60e1 gdi32: Use a binary search for PtInRegion() and RectInRegion().
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-07 21:23:24 +09:00
Huw Davies 7fd44a511f gdi32: Use a binary search to generate the clipped rects.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-07 21:23:24 +09:00
Sebastian Lackner 69d895ac86 gdi32: Fix copy & paste mistake in a comment.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-07 19:55:57 +09:00
Michael Stefaniuc 8acdf5e7bf gdi32: Use wine_dbgstr_rect() to trace a RECT.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-05 23:22:04 +09:00
Huw Davies 6526ac1999 gdi32: Try to compact the region.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-05 21:03:58 +09:00
Huw Davies 27375d8476 gdi32: Try to coalesce into wider bands.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-05 21:03:42 +09:00
Huw Davies 0e93387d9b gdi32: Use the add_rect() helper to add a rectangle.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-05 21:03:33 +09:00
Francois Gouget d7e18f6540 mfdrv: Fix a typo in a comment.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-04 11:01:25 +09:00
Alexandre Julliard b70cda9a1e gdi32/tests: Add a test to run once through all functions supported on paths.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-24 15:33:04 +09:00
Alexandre Julliard 06234a081a gdi32: Reimplement Ellipse in paths to avoid calling imprecise arc helper functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-24 15:33:04 +09:00
Alexandre Julliard 0b38f16767 gdi32: Reimplement RoundRect in paths to avoid calling imprecise arc helper functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-24 15:33:04 +09:00
Alexandre Julliard 1fcf8f547a gdi32: Compatibility fixes for Rectangle in paths, with tests.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-24 15:33:03 +09:00
Alexandre Julliard 57d2009035 gdi32: Add a helper function to reverse an array of points in paths.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-24 13:21:47 +09:00
Alexandre Julliard 117f862ce5 gdi32: Validate the point count in Polyline and Polygon.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-23 12:36:23 +09:00
Alexandre Julliard b2702b2d6f gdi32/tests: Get rid of the todo mechanism in the path tests.
All the tests succeed now.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-23 12:36:15 +09:00
Michael Stefaniuc 6d21655ed9 gdi32/tests: Use SetRect() instead of open coding it.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-22 22:09:17 +09:00
Alexandre Julliard 84ce9dfba7 gdi32: Start a new path stroke when the current position differs from the last.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-22 22:09:17 +09:00
Alexandre Julliard e68d68fb7d gdi32: Fix setting the path flags in PolyPolyline and PolyPolygon.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-22 22:09:17 +09:00
Alexandre Julliard c7bbc83062 gdi32: Implement bounds for FillPath, StrokeAndFillPath and StrokePath in enhanced metafiles.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-22 00:58:54 +09:00
Alexandre Julliard 625ff9b528 gdi32: Implement a path driver for enhanced metafiles.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-21 14:54:49 +09:00
Alexandre Julliard 6bab6ad40d gdi32: Add a helper function to return the metafile device.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-21 14:54:02 +09:00
Alexandre Julliard 234daa7522 gdi32: Implement DeleteDC in the path driver.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-21 14:53:06 +09:00
Michael Stefaniuc 75426bb926 gdi32/tests: Use wine_dbgstr_rect() to print RECTs.
Two old (win95 and winnt) broken() removed en passant.

Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-21 00:23:56 +09:00
Alexandre Julliard c500713dd3 gdi32: Fix updating the current position in PolyDraw.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-21 00:23:50 +09:00
Alexandre Julliard dfa3c68854 gdi32: Don't modify the DC arc direction in AngleArc.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-20 20:06:39 +09:00
Alexandre Julliard 4ea7190361 gdi32: Keep track of the last move position in a path.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-20 20:06:39 +09:00
Alexandre Julliard 3c63993f7e gdi32: Add path helper functions to add points and close figures.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-20 20:06:39 +09:00
Michael Stefaniuc 27f80dab77 gdi32/tests: Compare RECTs with EqualRect instead of memcmp.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-20 20:06:39 +09:00
Alexandre Julliard ef3494c623 gdi32: Implement AngleArc in enhanced metafiles.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 22:27:49 +09:00
Alexandre Julliard b06e6147d1 gdi32: Implement PolyDraw in enhanced metafiles.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 22:27:49 +09:00
Alexandre Julliard 1f004c42bf gdi32: Add a few helper functions to manipulate point arrays in enhanced metafiles.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 22:27:49 +09:00
Alexandre Julliard 91ef88a9e3 gdi32: Implement PolylineTo in enhanced metafiles.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 14:00:17 +09:00
Alexandre Julliard e92e5ec376 gdi32: Implement ArcTo in enhanced metafiles.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 13:51:05 +09:00
Alexandre Julliard 7cfcd23878 gdi32: Take the transform rotation into account to compute pen width.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 00:09:20 +09:00
Alexandre Julliard 04e7215faf gdi32: Remove the no longer needed (and broken) null driver implementation of some path functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 00:09:20 +09:00
Alexandre Julliard b5cf73edd9 gdi32: Implement FillPath, StrokeAndFillPath and StrokePath in the DIB driver.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-17 00:09:20 +09:00
Alexandre Julliard 7373a7c71d gdi32: Fix PathToRegion and SelectClipPath behavior with an empty path.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-16 01:21:47 +09:00
Alexandre Julliard bd53a012b4 gdi32/tests: Add a few more path tests.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-16 00:25:34 +09:00
Huw Davies 078f192c66 gdi32: Rename the struct representing an embedded WMF in an EMF.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-08 23:25:16 +09:00
Huw Davies 19d1416cef gdi32: If the WMF was created by GetWinMetaFileBits() then return the original EMF.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-08 23:25:16 +09:00
Huw Davies 7be1c53d82 gdi32: Rename the struct representing an embedded EMF in a WMF.
Also, use an array rather than a pointer to represent the start of the data.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-08 23:08:00 +09:00
Alexandre Julliard d341b0c381 user32: Completely free owned DCEs when the corresponding window/class is destroyed.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-21 09:55:03 +09:00
Andrey Gusev 9a80284e1a gdi32: Fix a typo in a pointer name in primitive_funcs.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-19 23:42:23 +09:00
Andrey Gusev 6fae520e1c gdi32/tests: Fix a typo in trace() message.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-02 12:27:18 +09:00
Piotr Caban dfb750b9c2 gdi32/enhmfdrv: Don't update document bounds in PolyPolyline within a path.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:44 +09:00
Piotr Caban 67e26bec8d gdi32/enhmfdrv: Don't update document bounds in Polyline within a path.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:44 +09:00
Piotr Caban 0d84feaf49 gdi32/enhmfdrv: Don't update document bounds in RoundRect within a path.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:44 +09:00
Piotr Caban 661bc10bfe gdi32/enhmfdrv: Don't update document bounds in Ellipse within a path.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:44 +09:00
Piotr Caban c36f365329 gdi32/enhmfdrv: Don't update document bounds in Arc/Chord/Pie within a path.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:44 +09:00
Piotr Caban d307bba0f4 gdi32/enhmfdrv: Add enhanced metafile bounds tests.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:43 +09:00
Piotr Caban c019c68b45 gdi32/enhmfdrv: Don't update document bounds in LineTo within a path.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:43 +09:00
Piotr Caban 44f860daff gdi32/enhmfdrv: Don't update document bounds in Rectangle within a path.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:43 +09:00
Piotr Caban 3a12eb2083 gdi32/enhmfdrv: Add ExtTextOut tests with unmatched BeginPath/EndPath calls.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:43 +09:00
Piotr Caban 269b2519a7 gdi32/enhmfdrv: Always set ExtTextOut bounding rect if we're not inside path bracket.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:43 +09:00
Piotr Caban a3e741fd4c gdi32/enhmfdrv: Fix PolyBezierTo bounding box computation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-29 20:02:43 +09:00
Piotr Caban d9e7c4d820 gdi32/enhmfdrv: Don't drop viewport/window transformation in StretchBlt.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-22 21:04:35 +09:00
Michael Stefaniuc 4b7adc087a gdi32: Use wine_dbgstr_rect() to trace RECTs.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-21 18:42:02 +09:00
Piotr Caban 69e37ff05e gdi32: Use advanced graphics mode when setting world transform in PlayEnhMetaFileRecord.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-21 18:26:52 +09:00
Francois Gouget bf5508f9e0 gdi32/tests: A spelling fix in a comment.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-19 21:30:22 +09:00
Huw Davies ef34222131 gdi32/tests: Allocate the font enum data structures.
These are in excess of 250kB and may overflow the stack.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-14 19:26:11 +09:00
Henri Verbeet 0a41694b53 gdi32: Implement DC creation from pre-existing memory.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-13 23:01:07 +09:00
Huw Davies bb4ead4c7c gdi32: Use abs() on an integer argument to avoid a clang warning.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-12 21:00:52 +09:00
Huw Davies 66351b3de3 gdi32: Implement playback of the GradientFill EMF record.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-08 23:01:38 +09:00
Huw Davies ac0959cdf6 gdi32: Implement recording of the GradientFill EMF record.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-08 23:01:28 +09:00
Nikolay Sivov 4161f5120b gdi32: Increase first gdi handle value.
Due to 32->16bit handle truncation low enough handle values could be
misinterpreted as stock brushes indices in FillRect().

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-08 23:00:58 +09:00
Jactry Zeng 5bf4345824 gdi32: Load system fonts on Android.
Signed-off-by: Jactry Zeng <jzeng@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-04-07 17:08:30 +09:00
Alexandre Julliard 1eac54ef7d gdi32: Take into account the fontdir directory specified at build time.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-17 19:44:01 +09:00
Huw Davies a36b4a6abb gdi32/tests: Add tests for EMF PolyPolyline record creation.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-09 21:22:34 +09:00
Huw Davies 6e05189ba4 gdi32: Don't update the bounds if any poly{line|gon} has fewer than two points.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-09 21:22:32 +09:00
Huw Davies 2e4a37f2cf gdi32: Generate EMR_POLYPOLY{LINE|GON}16 records if the co-ords fit.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-09 21:22:28 +09:00
Michael Stefaniuc a23038217d gdi32/tests: Use SetRectEmpty() instead of open coding it.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-04 18:43:04 +09:00
Nikolay Sivov 4b05cac391 gdi32: Use a macro instead of accessing FT_Face flags directly.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-03-01 19:20:50 +09:00
Alexandre Julliard 0bbeaae678 make_unicode: Mark most data tables as hidden.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-25 00:25:01 +09:00
Alistair Leslie-Hughes bd571e7d1d gdi32/tests: Add tests for GetPath using metafile.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-23 20:24:17 +09:00
Alistair Leslie-Hughes 9ac1744b80 gdi32/tests: Check values returned from GetPath.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-19 19:59:07 +09:00
Charles Davis c94336f381 gdi32: Declare our intent explicitly to the compiler.
Clang warns about this abs(3) call because the argument is of unsigned
type.

Signed-off-by: Charles Davis <cdavis5x@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-18 02:06:11 +09:00
Nikolay Sivov 932838faa3 gdi32: Only REG_SZ and REG_MULTI_SZ types make sense for font replacement, ignore the rest.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-12 23:06:54 +09:00
Nikolay Sivov 10437c027f gdi32/tests: Simplify tests using todo_wine_if().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-11 12:17:28 +09:00
Nikolay Sivov c98f40e227 gdi32: Fix otmfsSelection to have bold style set in case of bold simulation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-10 13:40:28 +09:00
Nikolay Sivov 11be16ca79 gdi32/tests: Turn some asserts in font tests into regular tests.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-09 23:27:16 +09:00
Nikolay Sivov 6389f41135 gdi32: Fix otmfsSelection to have italic style set in case of oblique simulation.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-09 23:27:13 +09:00
Alexandre Julliard 232dc29ff8 make_unicode: Update vertical orientation table to the latest version.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-09 17:23:31 +09:00
Akihiro Sagawa a8d426e93a gdi32: Implement synthesizing bold glyphs for bitmap fonts.
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>
2016-01-15 23:49:54 +09:00
Akihiro Sagawa ba79c19d09 gdi32: Return an boolean value whether synthesizing bold glyph is success.
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>
2016-01-15 23:49:49 +09:00
Akihiro Sagawa 34e7361790 gdi32: Fix the advance width in synthetic bold glyphs with scaling.
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>
2016-01-15 23:49:43 +09:00
Akihiro Sagawa f0831ecd2f gdi32: Add a helper function to calculate the glyph advance metric.
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>
2016-01-15 23:49:39 +09:00
Akihiro Sagawa 79ab7456ed gdi32: Fixup the internal ntmFlags for bitmap fonts.
The value is used not for APIs, but for our fake-bold implementation.

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>
2016-01-05 11:48:47 +01:00
Akihiro Sagawa 37fdc50097 gdi32/tests: Add font advance tests for synthetic bold face with scaling.
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>
2016-01-05 11:48:44 +01:00
Akihiro Sagawa 6cd42f3df7 gdi32/tests: Refactor test_fake_bold_font() to avoid code duplications.
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>
2016-01-05 11:48:41 +01:00
Nikolay Sivov 1aa53bc470 gdi32: Initialize 'param' field (Coverity).
For consistency with the rest of the code, initialize both
'free' and 'param' fields.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-22 10:46:35 +01:00
Andrey Melnikov d4d304f436 gdi32: Handle NULL filename in GetICMProfileA().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Andrey Melnikov <temnota.am@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-21 18:18:45 +01:00
Nikolay Sivov f0223182af gdi32/tests: Some tests for GetICMProfile().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-15 09:12:40 +01:00
Alexandre Julliard eddc4609ec gdi32: Fix StretchDIBits color mapping for monochrome bitmaps without a color table.
This is the equivalent of df924f6a8c for
the StretchDIBits case.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-04 21:56:20 +09:00
Alexandre Julliard 89f12fc101 gdi32: Periodically flush a window surface if the app is continuously painting.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-27 20:53:31 +09:00
Sebastian Lackner a1790df348 gdi32: Add check for NULL pointer in dibdrv_wglDescribePixelFormat.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-26 23:57:49 +09:00
Nikolay Sivov 0e92f07f41 gdi32/tests: Some empty string tests for GetTextExtentPoint.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-16 17:09:31 +09:00
Qian Hong e50cd3b06b gdi32: Initialize system font link registry.
Signed-off-by: Qian Hong <qhong@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-09 23:10:06 +09:00
Huw Davies 3d58c354ae gdi32: Take into account the mask's offset.
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-03 21:11:26 +09:00
Anton Baskanov 18dc14ed9a gdi32: Return default palette entries from GetSystemPaletteEntries for non-palette-based devices.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-21 19:19:09 +09:00
Dmitry Timoshkov d774442e8d gdi32: Fix heap corruption.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-21 00:25:34 +09:00
Sebastian Lackner 04bd68409a gdi32: Use RtlIsCriticalSectionLockedByThread to check lock owner.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-11 13:47:40 +09:00
Nikolay Sivov 819d36786e gdi32: Improve structure layout of data returned by GetFontRealizationInfo().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-09 13:00:32 +09:00
Aric Stewart fc94e5dd5f gdi32/tests: Mark Hebrew stock font test as different, like Arabic.
Signed-off-by: Aric Stewart <aric@codeweavers.com>
2015-10-06 00:01:56 +09:00
Michael Müller cde2fbb08e gdi32: Make BitBlt and StretchDIBits hotpatchable.
Signed-off-by: Michael Müller <michael@fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
2015-10-05 22:27:13 +09:00
Nikolay Sivov 6f7dfe2cea gdi32: Implement GetFontFileInfo().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
2015-10-05 22:27:11 +09:00
Aric Stewart 781b88b7c5 gdi32/tests: Expand tests skipped in Arabic to also skip in Hebrew.
Signed-off-by: Aric Stewart <aric@codeweavers.com>
2015-10-01 23:29:57 +09:00
Nikolay Sivov 7f4c158a39 gdi32: Return font ids from GetFontRealizationInfo(). 2015-10-01 23:00:24 +09:00
Ken Thomases a05cdaa1b8 gdi32: Antialias fake bold or italic fonts regardless of GASP table.
If the client requests a bold typeface of a font which doesn't actually provide
a bold typeface, Wine fakes it using FT_Outline_Embolden().  Likewise, it fakes
italic by apply a shear transform.

These techniques work passably when antialiasing is in effect.  However, when
antialiasing is disabled at small sizes by the font's GASP table, the results
are horrible.  The glyphs have many spurs or appear furry.

On the theory that fonts disable antialiasing via the GASP table at small sizes
because hinting should produce pixel-perfect results and that that rationale is
voided by the application of procedural bolding or italicizing, we ignore the
GASP table and always antialias for fake bold or italic fonts.

There is a new registry setting to disable this and revert to the previous
behavior:

[HKEY_CURRENT_USER\Software\Wine\Fonts]
"AntialiasFakeBoldOrItalic"="n"

Signed-off-by: Ken Thomases <ken@codeweavers.com>
2015-10-01 16:31:54 +09:00
Nikolay Sivov af5884ffe5 gdi32/freetype: Handle fonts with broken usWinDescent values. 2015-10-01 16:29:40 +09:00
Nikolay Sivov efb8afcfdc gdi32/tests: Avoid excessive traces for fonts with OS/2 version 4 tables. 2015-09-11 16:05:23 +09:00
Alexandre Julliard 58fe3afff5 gdi32: Add an intermediate pointer to avoid a compiler warning. 2015-09-10 19:47:24 +09:00