Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
cbfc79aa
Commit
cbfc79aa
authored
Jun 28, 2012
by
Vincent Povirk
Committed by
Alexandre Julliard
Jul 12, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdiplus: Implement LineJoinMiterClipped and partially implement LineJoinMiter.
parent
198fb25d
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
32 additions
and
1 deletion
+32
-1
graphicspath.c
dlls/gdiplus/graphicspath.c
+32
-1
No files found.
dlls/gdiplus/graphicspath.c
View file @
cbfc79aa
...
@@ -1704,6 +1704,37 @@ static void widen_joint(const GpPointF *p1, const GpPointF *p2, const GpPointF *
...
@@ -1704,6 +1704,37 @@ static void widen_joint(const GpPointF *p1, const GpPointF *p2, const GpPointF *
{
{
switch
(
pen
->
join
)
switch
(
pen
->
join
)
{
{
case
LineJoinMiter
:
case
LineJoinMiterClipped
:
{
if
((
p2
->
X
-
p1
->
X
)
*
(
p3
->
Y
-
p1
->
Y
)
>
(
p2
->
Y
-
p1
->
Y
)
*
(
p3
->
X
-
p1
->
X
))
{
float
distance
=
pen
->
width
/
2
.
0
;
float
length_0
=
sqrtf
((
p2
->
X
-
p1
->
X
)
*
(
p2
->
X
-
p1
->
X
)
+
(
p2
->
Y
-
p1
->
Y
)
*
(
p2
->
Y
-
p1
->
Y
));
float
length_1
=
sqrtf
((
p3
->
X
-
p2
->
X
)
*
(
p3
->
X
-
p2
->
X
)
+
(
p3
->
Y
-
p2
->
Y
)
*
(
p3
->
Y
-
p2
->
Y
));
float
dx0
=
distance
*
(
p2
->
X
-
p1
->
X
)
/
length_0
;
float
dy0
=
distance
*
(
p2
->
Y
-
p1
->
Y
)
/
length_0
;
float
dx1
=
distance
*
(
p3
->
X
-
p2
->
X
)
/
length_1
;
float
dy1
=
distance
*
(
p3
->
Y
-
p2
->
Y
)
/
length_1
;
float
det
=
(
dy0
*
dx1
-
dx0
*
dy1
);
float
dx
=
(
dx0
*
dx1
*
(
dx0
-
dx1
)
+
dy0
*
dy0
*
dx1
-
dy1
*
dy1
*
dx0
)
/
det
;
float
dy
=
(
dy0
*
dy1
*
(
dy0
-
dy1
)
+
dx0
*
dx0
*
dy1
-
dx1
*
dx1
*
dy0
)
/
det
;
if
(
dx
*
dx
+
dy
*
dy
<
pen
->
miterlimit
*
pen
->
miterlimit
*
distance
*
distance
)
{
*
last_point
=
add_path_list_node
(
*
last_point
,
p2
->
X
+
dx
,
p2
->
Y
+
dy
,
PathPointTypeLine
);
break
;
}
else
if
(
pen
->
join
==
LineJoinMiter
)
{
static
int
once
;
if
(
!
once
++
)
FIXME
(
"should add a clipped corner
\n
"
);
}
/* else fall-through */
}
/* else fall-through */
}
default:
default:
case
LineJoinBevel
:
case
LineJoinBevel
:
add_bevel_point
(
p2
,
p1
,
pen
,
1
,
last_point
);
add_bevel_point
(
p2
,
p1
,
pen
,
1
,
last_point
);
...
@@ -1838,7 +1869,7 @@ GpStatus WINGDIPAPI GdipWidenPath(GpPath *path, GpPen *pen, GpMatrix *matrix,
...
@@ -1838,7 +1869,7 @@ GpStatus WINGDIPAPI GdipWidenPath(GpPath *path, GpPen *pen, GpMatrix *matrix,
if
(
pen
->
dashcap
!=
DashCapFlat
)
if
(
pen
->
dashcap
!=
DashCapFlat
)
FIXME
(
"unimplemented dash cap %d
\n
"
,
pen
->
dashcap
);
FIXME
(
"unimplemented dash cap %d
\n
"
,
pen
->
dashcap
);
if
(
pen
->
join
!=
LineJoinBevel
)
if
(
pen
->
join
==
LineJoinRound
)
FIXME
(
"unimplemented line join %d
\n
"
,
pen
->
join
);
FIXME
(
"unimplemented line join %d
\n
"
,
pen
->
join
);
if
(
pen
->
dash
!=
DashStyleSolid
)
if
(
pen
->
dash
!=
DashStyleSolid
)
...
...
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