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
092531df
Commit
092531df
authored
Oct 13, 2016
by
Vincent Povirk
Committed by
Alexandre Julliard
Oct 14, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdiplus: Add non-gdi32 implementation of GdipDrawPath.
Signed-off-by:
Vincent Povirk
<
vincent@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
dd5fd46c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
69 additions
and
15 deletions
+69
-15
graphics.c
dlls/gdiplus/graphics.c
+69
-15
No files found.
dlls/gdiplus/graphics.c
View file @
092531df
...
...
@@ -3375,26 +3375,12 @@ GpStatus WINGDIPAPI GdipDrawLinesI(GpGraphics *graphics, GpPen *pen, GDIPCONST
return
retval
;
}
GpStatus
WINGDIPAPI
GdipDrawPath
(
GpGraphics
*
graphics
,
GpPen
*
pen
,
GpPath
*
path
)
GpStatus
GDI32_
GdipDrawPath
(
GpGraphics
*
graphics
,
GpPen
*
pen
,
GpPath
*
path
)
{
INT
save_state
;
GpStatus
retval
;
HRGN
hrgn
=
NULL
;
TRACE
(
"(%p, %p, %p)
\n
"
,
graphics
,
pen
,
path
);
if
(
!
pen
||
!
graphics
)
return
InvalidParameter
;
if
(
graphics
->
busy
)
return
ObjectBusy
;
if
(
!
graphics
->
hdc
)
{
FIXME
(
"graphics object has no HDC
\n
"
);
return
Ok
;
}
save_state
=
prepare_dc
(
graphics
,
pen
);
retval
=
get_clip_hrgn
(
graphics
,
&
hrgn
);
...
...
@@ -3415,6 +3401,74 @@ end:
return
retval
;
}
GpStatus
SOFTWARE_GdipDrawPath
(
GpGraphics
*
graphics
,
GpPen
*
pen
,
GpPath
*
path
)
{
GpStatus
stat
;
GpPath
*
wide_path
;
GpMatrix
*
transform
=
NULL
;
stat
=
GdipClonePath
(
path
,
&
wide_path
);
if
(
stat
!=
Ok
)
return
stat
;
if
(
pen
->
unit
==
UnitPixel
)
{
/* We have to transform this to device coordinates to get the widths right. */
stat
=
GdipCreateMatrix
(
&
transform
);
if
(
stat
==
Ok
)
stat
=
get_graphics_transform
(
graphics
,
CoordinateSpaceDevice
,
CoordinateSpaceWorld
,
transform
);
}
if
(
stat
==
Ok
)
stat
=
GdipWidenPath
(
wide_path
,
pen
,
transform
,
1
.
0
);
if
(
pen
->
unit
==
UnitPixel
)
{
/* Transform the path back to world coordinates */
if
(
stat
==
Ok
)
stat
=
GdipInvertMatrix
(
transform
);
if
(
stat
==
Ok
)
stat
=
GdipTransformPath
(
wide_path
,
transform
);
}
/* Actually draw the path */
if
(
stat
==
Ok
)
stat
=
GdipFillPath
(
graphics
,
pen
->
brush
,
wide_path
);
GdipDeleteMatrix
(
transform
);
GdipDeletePath
(
wide_path
);
return
stat
;
}
GpStatus
WINGDIPAPI
GdipDrawPath
(
GpGraphics
*
graphics
,
GpPen
*
pen
,
GpPath
*
path
)
{
GpStatus
retval
;
TRACE
(
"(%p, %p, %p)
\n
"
,
graphics
,
pen
,
path
);
if
(
!
pen
||
!
graphics
)
return
InvalidParameter
;
if
(
graphics
->
busy
)
return
ObjectBusy
;
if
(
path
->
pathdata
.
Count
==
0
)
return
Ok
;
if
(
!
graphics
->
hdc
)
retval
=
SOFTWARE_GdipDrawPath
(
graphics
,
pen
,
path
);
else
retval
=
GDI32_GdipDrawPath
(
graphics
,
pen
,
path
);
return
retval
;
}
GpStatus
WINGDIPAPI
GdipDrawPie
(
GpGraphics
*
graphics
,
GpPen
*
pen
,
REAL
x
,
REAL
y
,
REAL
width
,
REAL
height
,
REAL
startAngle
,
REAL
sweepAngle
)
{
...
...
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