Henri Verbeet
fa4d5b6151
d2d1: Replace d2d_calloc() with a global heap_calloc() helper.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-01 22:24:49 +01:00
Henri Verbeet
d9f4390488
d2d1: Use d2d_array_reserve() in d2d_clip_stack_push().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-31 17:54:55 +01:00
Henri Verbeet
fdaa6d8e2a
d2d1: Introduce a helper function to allocate arrays.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-31 17:54:55 +01:00
Henri Verbeet
6d8ebf1d1a
d2d1: Use the global memory allocation helpers.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-30 20:42:06 +01:00
Henri Verbeet
24dc5c7409
d2d1: Implement radial gradient brushes.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-09-28 17:53:51 +02:00
Nikolay Sivov
e6c18792f1
d2d1: Improve figure bounds updating for quadratic beziers.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-09-18 14:15:58 +02:00
Nikolay Sivov
00fea0298b
d2d1: Implement GetBounds() for path geometries.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-09-15 17:00:53 +02:00
Nikolay Sivov
dcccaaf7f3
d2d1: Use better bezier segment bounds approximation when updating figure bounds.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-09-15 17:00:53 +02:00
Henri Verbeet
2187a1edb3
d2d1: Split overlapping bezier control triangles.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-18 08:07:04 +09:00
Henri Verbeet
3895f07c4b
d2d1: Use segment indices in d2d_geometry_resolve_beziers().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-18 08:07:02 +09:00
Henri Verbeet
00fafb27e3
d2d1: Implement bezier/bezier intersections.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-18 08:06:59 +09:00
Henri Verbeet
a4f23ea148
d2d1: Implement bezier/line intersections.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-18 08:06:57 +09:00
Henri Verbeet
a5f02132d3
d2d1: Introduce a separate function for calculating line/line intersections.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-18 08:06:55 +09:00
Henri Verbeet
0ede13e1df
d2d1: Return S_OK on success in d2d_geometry_resolve_beziers().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-18 08:06:50 +09:00
Henri Verbeet
4dcdc80ad5
d2d1: Fix the segment count for open figures.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-07 22:55:05 +02:00
Henri Verbeet
09ff685aa0
d2d1: Implement d2d_path_geometry_Simplify().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-07 22:55:02 +02:00
Henri Verbeet
208eb09e3c
d2d1: Implement d2d_transformed_geometry_Simplify().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-07 22:54:59 +02:00
Henri Verbeet
e5733e7cd4
d2d1: Implement d2d_rectangle_geometry_Simplify().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-02 18:41:20 +02:00
Henri Verbeet
828e62c8e2
d2d1: Implement d2d_transformed_geometry_GetBounds().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-02 18:41:19 +02:00
Henri Verbeet
2485305b55
d2d1: Implement d2d_rectangle_geometry_GetBounds().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-06-02 18:41:17 +02:00
Henri Verbeet
bd2141e521
d2d1: Implement initial support for quadratic bezier outlines.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-22 13:45:08 +02:00
Henri Verbeet
a525b69781
d2d1: Properly invert join directions when needed.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-13 18:50:10 +01:00
Henri Verbeet
d10dfd4102
d2d1: Take the source transformation into account when creating a transformed geometry.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-03 19:05:11 +01:00
Henri Verbeet
7ed032a014
d2d1: Implement rectangle geometry outlines.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-03 19:05:11 +01:00
Henri Verbeet
39406039c0
d2d1: Implement initial support for line joins.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-03 19:05:11 +01:00
Henri Verbeet
f3563f4e62
d2d1: Add an initial d2d_d3d_render_target_DrawGeometry() implementation.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-03 19:05:11 +01:00
Henri Verbeet
ac3824fe63
d2d1: Avoid degenerate line segments.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-02-03 19:05:11 +01:00
Henri Verbeet
df63a7f890
d2d1: Update "p0" after inserting a vertex in d2d_geometry_resolve_beziers().
...
This fixes a failure in the d2d1 tests when run with warn+heap.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-01-04 11:11:27 +01:00
Henri Verbeet
74735f327c
d2d1: Use d2d_point_set() in d2d_rectangle_geometry_init().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-08 16:07:05 +01:00
Henri Verbeet
91baf67e4a
d2d1: Store separate bezier vertices.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-08 16:07:03 +01:00
Henri Verbeet
ad40557103
d2d1: Introduce a separate structure for fill specific geometry fields.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-08 16:07:01 +01:00
Henri Verbeet
e9fc8c7c52
d2d1: Properly test which side of a bezier curve is the inside.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-05 16:11:04 +01:00
Henri Verbeet
e37ba63d2f
d2d1: Properly set an error state when adding the vertex fails in d2d_geometry_sink_BeginFigure().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-12-05 16:11:04 +01:00
Nikolay Sivov
97e52ab673
d2d1: Implement FillContainsPoint() for rectangle geometry.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-03 17:13:40 +01:00
Nikolay Sivov
306d062f46
d2d1: For transformed geometry forward StrokeContainsPoint() to its source geometry.
...
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-11-01 14:38:24 +01:00
Andrew Eikum
2e08bc0ffc
d2d1: Implement d2d_path_geometry_FillContainsPoint().
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-26 15:35:58 +02:00
Andrew Eikum
930dd951b3
d2d1: Implement d2d_transformed_geometry_FillContainsPoint().
...
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-10-26 15:35:55 +02:00
Henri Verbeet
3fb1fb9616
d2d1: Calculate intersections in a more robust way in d2d_geometry_intersect_self().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-11-19 12:59:39 +09:00
Henri Verbeet
a84658f928
d2d1: Properly handle collinear edges in d2d_cdt_insert_segment().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-23 20:57:16 +09:00
Henri Verbeet
c125612cbb
d2d1: Properly handle collinear edges in d2d_cdt_cut_edges().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-23 20:57:03 +09:00
Henri Verbeet
c575f04b68
d2d1: Properly check if a face is real in d2d_path_geometry_add_face().
...
In particular, the existing test may fail if the convex hull has only three
vertices.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-09 12:58:23 +09:00
Henri Verbeet
76aa675da3
d2d1: Only search for the initial edge for each figure in d2d_cdt_insert_segments().
...
For each subsequent segment we can just re-use the edge we just inserted.
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-08 12:53:23 +09:00
Henri Verbeet
e6da1a780e
d2d1: Only test figures that overlap the probe in d2d_path_geometry_point_inside().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-08 12:53:18 +09:00
Henri Verbeet
c98d34d745
d2d1: Only test overlapping figures in d2d_geometry_intersect_self().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-08 12:53:10 +09:00
Henri Verbeet
7e6b52e88b
d2d1: Implement d2d_cdt_incircle() in a more robust way.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2015-10-07 13:03:22 +09:00
Henri Verbeet
e8b4d8e0d0
d2d1: Implement d2d_point_ccw() in a more robust way.
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2015-10-07 13:01:07 +09:00
Henri Verbeet
f35bfff4fc
d2d1: Properly handle the candidate being the last vertex before the base edge origin in d2d_cdt_fixup().
...
Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
2015-10-07 13:00:53 +09:00
Piotr Caban
f5b64c0d35
d2d1: Avoid possible infinite loop in d2d_geometry_intersect_self caused by rounding errors.
2015-08-27 21:43:47 +09:00
Henri Verbeet
acbb0bdfac
d2d1: Implement d2d_factory_CreateTransformedGeometry().
2015-08-20 20:26:41 +09:00
Henri Verbeet
69906b59d8
d2d1: Properly cleanup in d2d_rectangle_geometry_init() failure paths.
...
This avoids leaking the factory reference in particular.
2015-08-20 20:26:36 +09:00