Gabriel Ivăncescu
7bb5b074b5
gdi32: Skip scan conversion on overflow.
...
Fixes a regression introduced by 9bc6f004ce
,
which broke when REGION_CreateEdgeTable overflowed.
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>
2020-06-09 21:23:33 +02:00
Huw Davies
31605eb417
gdi32: Move the scan conversion to a helper function.
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-09 21:23:33 +02:00
Fabian Maurer
9bc6f004ce
gdi32: CreatePolyPolygonRgn() returns an empty region when the area is empty.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46655
Signed-off-by: Fabian Maurer <dark.shadow4@web.de>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-22 19:16:05 +02:00
Daniel Lehman
e976e179ae
gdi32: Update edgetable limits with top and bottom.
...
Signed-off-by: Daniel Lehman <dlehman@esri.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-18 14:13:43 +02:00
Alexandre Julliard
0188dc7da8
gdi32: Clip the computed region to the DIB rectangle in PolyPolygon().
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-04 15:43:52 +02:00
Alexandre Julliard
99b64f7432
gdi32: Build the region object directly instead of making a copy in CreatePolyPolygonRgn.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-04 15:43:51 +02:00
Alexandre Julliard
97f996744e
gdi32: Pre-allocate the points array in CreatePolyPolygonRgn.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-04 15:43:33 +02:00
Huw Davies
9fe77b4d7b
gdi32: Exponentially grow successive point buffers.
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-17 11:53:32 +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
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
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
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
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
Frédéric Delanoy
2ab8729020
Assorted spelling/grammar fixes.
2014-06-20 12:19:31 +02:00
Henri Verbeet
9016d1eda0
gdi32: Use FIELD_OFFSET to calculate the structure size in GetRegionData().
2014-05-06 13:51:40 +02:00
Frédéric Delanoy
e7594272fe
gdi32: Use BOOL type where appropriate.
2014-01-06 17:14:32 +01:00
Frédéric Delanoy
28be1f7853
gdi32: Use BOOL type where appropriate.
2013-10-14 10:44:31 +02:00
Alexandre Julliard
31f0079f1c
gdi32: Convert the edges list to a standard list in CreatePolyPolygonRgn.
2013-04-23 15:34:53 +02:00
Alexandre Julliard
6a9b775f36
gdi32: Add helper functions to manage blocks of points in CreatePolyPolygonRgn.
2013-04-22 21:57:32 +02:00
Alexandre Julliard
a34c6f436d
gdi32: Replace some macros by inline functions in the region code.
2013-04-22 21:40:05 +02:00
Alexandre Julliard
456b4c876e
gdi32: Add a helper function to order the points of a rectangle.
2012-12-14 17:37:33 +01:00
Alexandre Julliard
89ecf02ca5
gdi32: Get rid of the RGNOBJ type, instead store a pointer to the region itself.
2012-10-17 13:28:25 +02:00
Michael Stefaniuc
f824030a49
gdi32: Don't bother using the register storage class specifier.
2012-09-14 15:41:45 +02:00
Alexandre Julliard
53c53126d5
gdi32: Fix rounding error for odd ellipse sizes in CreateRoundRectRgn.
2012-03-09 11:38:12 +01:00
Alexandre Julliard
c65de04789
gdi32: Use 64-bit values when computing ellipses to avoid overflows.
2012-02-24 15:55:45 +01:00
Alexandre Julliard
3e51dd7515
gdi32: Use a better algorithm for CreateRoundRectRgn.
2012-01-06 12:53:20 +01:00
Marcus Meissner
15162ddf3c
gdi32: Check return value of REGION_UnionRectWithRegion (Coverity).
2012-01-03 12:37:57 +01:00
Alexandre Julliard
c861284a02
gdi32: Add a helper function to add a rectangle to a region.
2011-12-28 11:04:30 +01:00
Frédéric Delanoy
b5a33dab88
dlls: Assorted spelling fixes.
2011-08-02 20:47:51 +02:00
Huw Davies
1372692fe7
gdi32: Add clipping for horizontal and vertical solid lines.
2011-04-15 15:39:45 +02:00
Alexandre Julliard
97611dca8b
gdi32: Implement MirrorRgn.
2010-09-27 20:45:56 +02:00
Alexandre Julliard
7d776a866e
gdi32: Mirror the clip region when the DC is mirrored, with tests.
2010-07-29 13:36:43 +02:00
Mikhail Maroukhine
8fd8d9e96a
gdi32: Fix compiler warnings with flag -Wcast-qual.
2010-03-29 12:13:55 +02:00
Dan Kegel
f3560ece31
gdi32: Fix minor read buffer overrun in CombineRgn.
2009-11-30 12:47:59 +01:00
Rein Klazes
d145f399ca
gdi32: Fix RectInRegion() if right < left or bottom < top.
2009-06-08 13:18:58 +02:00
Alexandre Julliard
687dfd69e9
gdi32: Check for memory allocation failure in region functions and propagate the error correctly.
2009-01-29 21:45:01 +01:00
Alexandre Julliard
ec4af0764b
gdi32: Replace the MEMCHECK macro in the region code by a proper function.
2009-01-29 21:45:01 +01:00
Alexandre Julliard
919b1076c9
gdi32: Don't hold the GDI lock while creating regions.
2009-01-29 21:45:01 +01:00
Alexandre Julliard
a686b8b583
gdi32: Store the region data directly in the GDI object.
2009-01-29 21:45:01 +01:00
Alexandre Julliard
de831f334c
gdi32: Release GDI handles before freeing the object.
...
This makes it unnecessary to hold the GDI lock during destruction.
2009-01-28 18:45:21 +01:00
Alexandre Julliard
311c53db4f
gdi32: Allocate and initialize GDI objects before giving them a handle.
...
This makes it unnecessary to hold the GDI lock since the object
cannot be accessed before it has a handle.
2009-01-28 18:43:06 +01:00
Alexandre Julliard
5811a2ccb4
gdi32: Use the official constants instead of the old Win9x magic numbers for GDI object types.
2009-01-28 16:20:56 +01:00
Alexandre Julliard
f03871094c
gdi32: Don't hold the GDI lock while calling the DeleteObject method for GDI objects.
2009-01-27 16:19:37 +01:00
Michael Stefaniuc
667a1ed5be
gdi32: Remove superfluous pointer casts.
2009-01-26 14:31:13 +01:00
Michael Stefaniuc
933ec96aa7
gdi32: Don't cast NULL.
2008-10-31 13:27:24 +01:00
Michael Stefaniuc
2d94915f27
gdi32: Don't cast the void pointer returned by GDI_GetObjPtr().
2008-10-24 14:24:59 +02:00
Alexandre Julliard
93cbb7a5db
gdi32: Perform coordinate transformations using doubles instead of floats to avoid precision loss.
2008-05-22 17:43:01 +02:00