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
fbafa45e
Commit
fbafa45e
authored
Oct 26, 2011
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Pass a HDC instead of a DC pointer to internal path functions.
parent
507d9290
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
57 additions
and
57 deletions
+57
-57
path.c
dlls/gdi32/path.c
+57
-57
No files found.
dlls/gdi32/path.c
View file @
fbafa45e
...
@@ -683,7 +683,7 @@ HRGN WINAPI PathToRegion(HDC hdc)
...
@@ -683,7 +683,7 @@ HRGN WINAPI PathToRegion(HDC hdc)
return
hrgnRval
;
return
hrgnRval
;
}
}
static
BOOL
PATH_FillPath
(
DC
*
dc
,
GdiPath
*
pPath
)
static
BOOL
PATH_FillPath
(
HDC
hdc
,
GdiPath
*
pPath
)
{
{
INT
mapMode
,
graphicsMode
;
INT
mapMode
,
graphicsMode
;
SIZE
ptViewportExt
,
ptWindowExt
;
SIZE
ptViewportExt
,
ptWindowExt
;
...
@@ -692,7 +692,7 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
...
@@ -692,7 +692,7 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
HRGN
hrgn
;
HRGN
hrgn
;
/* Construct a region from the path and fill it */
/* Construct a region from the path and fill it */
if
(
PATH_PathToRegion
(
pPath
,
dc
->
polyFillMode
,
&
hrgn
))
if
(
PATH_PathToRegion
(
pPath
,
GetPolyFillMode
(
hdc
)
,
&
hrgn
))
{
{
/* Since PaintRgn interprets the region as being in logical coordinates
/* Since PaintRgn interprets the region as being in logical coordinates
* but the points we store for the path are already in device
* but the points we store for the path are already in device
...
@@ -703,11 +703,11 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
...
@@ -703,11 +703,11 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
*/
*/
/* Save the information about the old mapping mode */
/* Save the information about the old mapping mode */
mapMode
=
GetMapMode
(
dc
->
hSelf
);
mapMode
=
GetMapMode
(
hdc
);
GetViewportExtEx
(
dc
->
hSelf
,
&
ptViewportExt
);
GetViewportExtEx
(
hdc
,
&
ptViewportExt
);
GetViewportOrgEx
(
dc
->
hSelf
,
&
ptViewportOrg
);
GetViewportOrgEx
(
hdc
,
&
ptViewportOrg
);
GetWindowExtEx
(
dc
->
hSelf
,
&
ptWindowExt
);
GetWindowExtEx
(
hdc
,
&
ptWindowExt
);
GetWindowOrgEx
(
dc
->
hSelf
,
&
ptWindowOrg
);
GetWindowOrgEx
(
hdc
,
&
ptWindowOrg
);
/* Save world transform
/* Save world transform
* NB: The Windows documentation on world transforms would lead one to
* NB: The Windows documentation on world transforms would lead one to
...
@@ -715,32 +715,32 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
...
@@ -715,32 +715,32 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
* tests show that resetting the graphics mode to GM_COMPATIBLE does
* tests show that resetting the graphics mode to GM_COMPATIBLE does
* not reset the world transform.
* not reset the world transform.
*/
*/
GetWorldTransform
(
dc
->
hSelf
,
&
xform
);
GetWorldTransform
(
hdc
,
&
xform
);
/* Set MM_TEXT */
/* Set MM_TEXT */
SetMapMode
(
dc
->
hSelf
,
MM_TEXT
);
SetMapMode
(
hdc
,
MM_TEXT
);
SetViewportOrgEx
(
dc
->
hSelf
,
0
,
0
,
NULL
);
SetViewportOrgEx
(
hdc
,
0
,
0
,
NULL
);
SetWindowOrgEx
(
dc
->
hSelf
,
0
,
0
,
NULL
);
SetWindowOrgEx
(
hdc
,
0
,
0
,
NULL
);
graphicsMode
=
GetGraphicsMode
(
dc
->
hSelf
);
graphicsMode
=
GetGraphicsMode
(
hdc
);
SetGraphicsMode
(
dc
->
hSelf
,
GM_ADVANCED
);
SetGraphicsMode
(
hdc
,
GM_ADVANCED
);
ModifyWorldTransform
(
dc
->
hSelf
,
&
xform
,
MWT_IDENTITY
);
ModifyWorldTransform
(
hdc
,
&
xform
,
MWT_IDENTITY
);
SetGraphicsMode
(
dc
->
hSelf
,
graphicsMode
);
SetGraphicsMode
(
hdc
,
graphicsMode
);
/* Paint the region */
/* Paint the region */
PaintRgn
(
dc
->
hSelf
,
hrgn
);
PaintRgn
(
hdc
,
hrgn
);
DeleteObject
(
hrgn
);
DeleteObject
(
hrgn
);
/* Restore the old mapping mode */
/* Restore the old mapping mode */
SetMapMode
(
dc
->
hSelf
,
mapMode
);
SetMapMode
(
hdc
,
mapMode
);
SetViewportExtEx
(
dc
->
hSelf
,
ptViewportExt
.
cx
,
ptViewportExt
.
cy
,
NULL
);
SetViewportExtEx
(
hdc
,
ptViewportExt
.
cx
,
ptViewportExt
.
cy
,
NULL
);
SetViewportOrgEx
(
dc
->
hSelf
,
ptViewportOrg
.
x
,
ptViewportOrg
.
y
,
NULL
);
SetViewportOrgEx
(
hdc
,
ptViewportOrg
.
x
,
ptViewportOrg
.
y
,
NULL
);
SetWindowExtEx
(
dc
->
hSelf
,
ptWindowExt
.
cx
,
ptWindowExt
.
cy
,
NULL
);
SetWindowExtEx
(
hdc
,
ptWindowExt
.
cx
,
ptWindowExt
.
cy
,
NULL
);
SetWindowOrgEx
(
dc
->
hSelf
,
ptWindowOrg
.
x
,
ptWindowOrg
.
y
,
NULL
);
SetWindowOrgEx
(
hdc
,
ptWindowOrg
.
x
,
ptWindowOrg
.
y
,
NULL
);
/* Go to GM_ADVANCED temporarily to restore the world transform */
/* Go to GM_ADVANCED temporarily to restore the world transform */
graphicsMode
=
GetGraphicsMode
(
dc
->
hSelf
);
graphicsMode
=
GetGraphicsMode
(
hdc
);
SetGraphicsMode
(
dc
->
hSelf
,
GM_ADVANCED
);
SetGraphicsMode
(
hdc
,
GM_ADVANCED
);
SetWorldTransform
(
dc
->
hSelf
,
&
xform
);
SetWorldTransform
(
hdc
,
&
xform
);
SetGraphicsMode
(
dc
->
hSelf
,
graphicsMode
);
SetGraphicsMode
(
hdc
,
graphicsMode
);
return
TRUE
;
return
TRUE
;
}
}
return
FALSE
;
return
FALSE
;
...
@@ -1630,7 +1630,7 @@ BOOL WINAPI FlattenPath(HDC hdc)
...
@@ -1630,7 +1630,7 @@ BOOL WINAPI FlattenPath(HDC hdc)
}
}
static
BOOL
PATH_StrokePath
(
DC
*
dc
,
GdiPath
*
pPath
)
static
BOOL
PATH_StrokePath
(
HDC
hdc
,
GdiPath
*
pPath
)
{
{
INT
i
,
nLinePts
,
nAlloc
;
INT
i
,
nLinePts
,
nAlloc
;
POINT
*
pLinePts
;
POINT
*
pLinePts
;
...
@@ -1641,21 +1641,21 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
...
@@ -1641,21 +1641,21 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
BOOL
ret
=
TRUE
;
BOOL
ret
=
TRUE
;
/* Save the mapping mode info */
/* Save the mapping mode info */
mapMode
=
GetMapMode
(
dc
->
hSelf
);
mapMode
=
GetMapMode
(
hdc
);
GetViewportExtEx
(
dc
->
hSelf
,
&
szViewportExt
);
GetViewportExtEx
(
hdc
,
&
szViewportExt
);
GetViewportOrgEx
(
dc
->
hSelf
,
&
ptViewportOrg
);
GetViewportOrgEx
(
hdc
,
&
ptViewportOrg
);
GetWindowExtEx
(
dc
->
hSelf
,
&
szWindowExt
);
GetWindowExtEx
(
hdc
,
&
szWindowExt
);
GetWindowOrgEx
(
dc
->
hSelf
,
&
ptWindowOrg
);
GetWindowOrgEx
(
hdc
,
&
ptWindowOrg
);
GetWorldTransform
(
dc
->
hSelf
,
&
xform
);
GetWorldTransform
(
hdc
,
&
xform
);
/* Set MM_TEXT */
/* Set MM_TEXT */
SetMapMode
(
dc
->
hSelf
,
MM_TEXT
);
SetMapMode
(
hdc
,
MM_TEXT
);
SetViewportOrgEx
(
dc
->
hSelf
,
0
,
0
,
NULL
);
SetViewportOrgEx
(
hdc
,
0
,
0
,
NULL
);
SetWindowOrgEx
(
dc
->
hSelf
,
0
,
0
,
NULL
);
SetWindowOrgEx
(
hdc
,
0
,
0
,
NULL
);
graphicsMode
=
GetGraphicsMode
(
dc
->
hSelf
);
graphicsMode
=
GetGraphicsMode
(
hdc
);
SetGraphicsMode
(
dc
->
hSelf
,
GM_ADVANCED
);
SetGraphicsMode
(
hdc
,
GM_ADVANCED
);
ModifyWorldTransform
(
dc
->
hSelf
,
&
xform
,
MWT_IDENTITY
);
ModifyWorldTransform
(
hdc
,
&
xform
,
MWT_IDENTITY
);
SetGraphicsMode
(
dc
->
hSelf
,
graphicsMode
);
SetGraphicsMode
(
hdc
,
graphicsMode
);
/* Allocate enough memory for the worst case without beziers (one PT_MOVETO
/* Allocate enough memory for the worst case without beziers (one PT_MOVETO
* and the rest PT_LINETO with PT_CLOSEFIGURE at the end) plus some buffer
* and the rest PT_LINETO with PT_CLOSEFIGURE at the end) plus some buffer
...
@@ -1678,7 +1678,7 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
...
@@ -1678,7 +1678,7 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
TRACE
(
"Got PT_MOVETO (%d, %d)
\n
"
,
TRACE
(
"Got PT_MOVETO (%d, %d)
\n
"
,
pPath
->
pPoints
[
i
].
x
,
pPath
->
pPoints
[
i
].
y
);
pPath
->
pPoints
[
i
].
x
,
pPath
->
pPoints
[
i
].
y
);
if
(
nLinePts
>=
2
)
if
(
nLinePts
>=
2
)
Polyline
(
dc
->
hSelf
,
pLinePts
,
nLinePts
);
Polyline
(
hdc
,
pLinePts
,
nLinePts
);
nLinePts
=
0
;
nLinePts
=
0
;
pLinePts
[
nLinePts
++
]
=
pPath
->
pPoints
[
i
];
pLinePts
[
nLinePts
++
]
=
pPath
->
pPoints
[
i
];
break
;
break
;
...
@@ -1724,23 +1724,23 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
...
@@ -1724,23 +1724,23 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
pLinePts
[
nLinePts
++
]
=
pLinePts
[
0
];
pLinePts
[
nLinePts
++
]
=
pLinePts
[
0
];
}
}
if
(
nLinePts
>=
2
)
if
(
nLinePts
>=
2
)
Polyline
(
dc
->
hSelf
,
pLinePts
,
nLinePts
);
Polyline
(
hdc
,
pLinePts
,
nLinePts
);
end:
end:
HeapFree
(
GetProcessHeap
(),
0
,
pLinePts
);
HeapFree
(
GetProcessHeap
(),
0
,
pLinePts
);
/* Restore the old mapping mode */
/* Restore the old mapping mode */
SetMapMode
(
dc
->
hSelf
,
mapMode
);
SetMapMode
(
hdc
,
mapMode
);
SetWindowExtEx
(
dc
->
hSelf
,
szWindowExt
.
cx
,
szWindowExt
.
cy
,
NULL
);
SetWindowExtEx
(
hdc
,
szWindowExt
.
cx
,
szWindowExt
.
cy
,
NULL
);
SetWindowOrgEx
(
dc
->
hSelf
,
ptWindowOrg
.
x
,
ptWindowOrg
.
y
,
NULL
);
SetWindowOrgEx
(
hdc
,
ptWindowOrg
.
x
,
ptWindowOrg
.
y
,
NULL
);
SetViewportExtEx
(
dc
->
hSelf
,
szViewportExt
.
cx
,
szViewportExt
.
cy
,
NULL
);
SetViewportExtEx
(
hdc
,
szViewportExt
.
cx
,
szViewportExt
.
cy
,
NULL
);
SetViewportOrgEx
(
dc
->
hSelf
,
ptViewportOrg
.
x
,
ptViewportOrg
.
y
,
NULL
);
SetViewportOrgEx
(
hdc
,
ptViewportOrg
.
x
,
ptViewportOrg
.
y
,
NULL
);
/* Go to GM_ADVANCED temporarily to restore the world transform */
/* Go to GM_ADVANCED temporarily to restore the world transform */
graphicsMode
=
GetGraphicsMode
(
dc
->
hSelf
);
graphicsMode
=
GetGraphicsMode
(
hdc
);
SetGraphicsMode
(
dc
->
hSelf
,
GM_ADVANCED
);
SetGraphicsMode
(
hdc
,
GM_ADVANCED
);
SetWorldTransform
(
dc
->
hSelf
,
&
xform
);
SetWorldTransform
(
hdc
,
&
xform
);
SetGraphicsMode
(
dc
->
hSelf
,
graphicsMode
);
SetGraphicsMode
(
hdc
,
graphicsMode
);
/* If we've moved the current point then get its new position
/* If we've moved the current point then get its new position
which will be in device (MM_TEXT) co-ords, convert it to
which will be in device (MM_TEXT) co-ords, convert it to
...
@@ -1750,9 +1750,9 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
...
@@ -1750,9 +1750,9 @@ static BOOL PATH_StrokePath(DC *dc, GdiPath *pPath)
*/
*/
if
(
i
>
0
)
{
if
(
i
>
0
)
{
POINT
pt
;
POINT
pt
;
GetCurrentPositionEx
(
dc
->
hSelf
,
&
pt
);
GetCurrentPositionEx
(
hdc
,
&
pt
);
DPtoLP
(
dc
->
hSelf
,
&
pt
,
1
);
DPtoLP
(
hdc
,
&
pt
,
1
);
MoveToEx
(
dc
->
hSelf
,
pt
.
x
,
pt
.
y
,
NULL
);
MoveToEx
(
hdc
,
pt
.
x
,
pt
.
y
,
NULL
);
}
}
return
ret
;
return
ret
;
...
@@ -2207,7 +2207,7 @@ BOOL nulldrv_FillPath( PHYSDEV dev )
...
@@ -2207,7 +2207,7 @@ BOOL nulldrv_FillPath( PHYSDEV dev )
SetLastError
(
ERROR_CAN_NOT_COMPLETE
);
SetLastError
(
ERROR_CAN_NOT_COMPLETE
);
return
FALSE
;
return
FALSE
;
}
}
if
(
!
PATH_FillPath
(
dc
,
&
dc
->
path
))
return
FALSE
;
if
(
!
PATH_FillPath
(
d
ev
->
hd
c
,
&
dc
->
path
))
return
FALSE
;
/* FIXME: Should the path be emptied even if conversion failed? */
/* FIXME: Should the path be emptied even if conversion failed? */
PATH_EmptyPath
(
&
dc
->
path
);
PATH_EmptyPath
(
&
dc
->
path
);
return
TRUE
;
return
TRUE
;
...
@@ -2222,8 +2222,8 @@ BOOL nulldrv_StrokeAndFillPath( PHYSDEV dev )
...
@@ -2222,8 +2222,8 @@ BOOL nulldrv_StrokeAndFillPath( PHYSDEV dev )
SetLastError
(
ERROR_CAN_NOT_COMPLETE
);
SetLastError
(
ERROR_CAN_NOT_COMPLETE
);
return
FALSE
;
return
FALSE
;
}
}
if
(
!
PATH_FillPath
(
dc
,
&
dc
->
path
))
return
FALSE
;
if
(
!
PATH_FillPath
(
d
ev
->
hd
c
,
&
dc
->
path
))
return
FALSE
;
if
(
!
PATH_StrokePath
(
dc
,
&
dc
->
path
))
return
FALSE
;
if
(
!
PATH_StrokePath
(
d
ev
->
hd
c
,
&
dc
->
path
))
return
FALSE
;
PATH_EmptyPath
(
&
dc
->
path
);
PATH_EmptyPath
(
&
dc
->
path
);
return
TRUE
;
return
TRUE
;
}
}
...
@@ -2237,7 +2237,7 @@ BOOL nulldrv_StrokePath( PHYSDEV dev )
...
@@ -2237,7 +2237,7 @@ BOOL nulldrv_StrokePath( PHYSDEV dev )
SetLastError
(
ERROR_CAN_NOT_COMPLETE
);
SetLastError
(
ERROR_CAN_NOT_COMPLETE
);
return
FALSE
;
return
FALSE
;
}
}
if
(
!
PATH_StrokePath
(
dc
,
&
dc
->
path
))
return
FALSE
;
if
(
!
PATH_StrokePath
(
d
ev
->
hd
c
,
&
dc
->
path
))
return
FALSE
;
PATH_EmptyPath
(
&
dc
->
path
);
PATH_EmptyPath
(
&
dc
->
path
);
return
TRUE
;
return
TRUE
;
}
}
...
...
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