Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
c125612c
Commit
c125612c
authored
Oct 23, 2015
by
Henri Verbeet
Committed by
Alexandre Julliard
Oct 23, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
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
>
parent
1b580e70
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
3 deletions
+14
-3
geometry.c
dlls/d2d1/geometry.c
+14
-3
No files found.
dlls/d2d1/geometry.c
View file @
c125612c
...
...
@@ -1314,6 +1314,7 @@ static void d2d_cdt_cut_edges(struct d2d_cdt *cdt, struct d2d_cdt_edge_ref *end_
const
struct
d2d_cdt_edge_ref
*
base_edge
,
size_t
start_vertex
,
size_t
end_vertex
)
{
struct
d2d_cdt_edge_ref
next
;
float
ccw
;
d2d_cdt_edge_next_left
(
cdt
,
&
next
,
base_edge
);
if
(
d2d_cdt_edge_destination
(
cdt
,
&
next
)
==
end_vertex
)
...
...
@@ -1322,7 +1323,14 @@ static void d2d_cdt_cut_edges(struct d2d_cdt *cdt, struct d2d_cdt_edge_ref *end_
return
;
}
if
(
d2d_cdt_ccw
(
cdt
,
d2d_cdt_edge_destination
(
cdt
,
&
next
),
end_vertex
,
start_vertex
)
>
0
.
0
f
)
ccw
=
d2d_cdt_ccw
(
cdt
,
d2d_cdt_edge_destination
(
cdt
,
&
next
),
end_vertex
,
start_vertex
);
if
(
ccw
==
0
.
0
f
)
{
*
end_edge
=
next
;
return
;
}
if
(
ccw
>
0
.
0
f
)
d2d_cdt_edge_next_left
(
cdt
,
&
next
,
&
next
);
d2d_cdt_edge_sym
(
&
next
,
&
next
);
...
...
@@ -1333,7 +1341,7 @@ static void d2d_cdt_cut_edges(struct d2d_cdt *cdt, struct d2d_cdt_edge_ref *end_
static
BOOL
d2d_cdt_insert_segment
(
struct
d2d_cdt
*
cdt
,
struct
d2d_geometry
*
geometry
,
const
struct
d2d_cdt_edge_ref
*
origin
,
struct
d2d_cdt_edge_ref
*
edge
,
size_t
end_vertex
)
{
struct
d2d_cdt_edge_ref
base_edge
,
current
,
next
,
target
;
struct
d2d_cdt_edge_ref
base_edge
,
current
,
ne
w_origin
,
ne
xt
,
target
;
for
(
current
=
*
origin
;;
current
=
next
)
{
...
...
@@ -1362,7 +1370,10 @@ static BOOL d2d_cdt_insert_segment(struct d2d_cdt *cdt, struct d2d_geometry *geo
if
(
!
d2d_cdt_fixup
(
cdt
,
&
base_edge
))
return
FALSE
;
return
TRUE
;
if
(
d2d_cdt_edge_origin
(
cdt
,
edge
)
==
end_vertex
)
return
TRUE
;
new_origin
=
*
edge
;
return
d2d_cdt_insert_segment
(
cdt
,
geometry
,
&
new_origin
,
edge
,
end_vertex
);
}
if
(
next
.
idx
==
origin
->
idx
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment