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
1fa9e526
Commit
1fa9e526
authored
Feb 18, 2008
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Avoid calling GetObject16 from 32-bit code.
parent
30e2cb16
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
12 deletions
+39
-12
objects.c
dlls/gdi32/mfdrv/objects.c
+39
-12
No files found.
dlls/gdi32/mfdrv/objects.c
View file @
1fa9e526
...
...
@@ -354,14 +354,32 @@ HBRUSH MFDRV_SelectBrush( PHYSDEV dev, HBRUSH hbrush )
* MFDRV_CreateFontIndirect
*/
static
UINT16
MFDRV_CreateFontIndirect
(
PHYSDEV
dev
,
HFONT
hFont
,
LOGFONT
16
*
logfont
)
static
UINT16
MFDRV_CreateFontIndirect
(
PHYSDEV
dev
,
HFONT
hFont
,
LOGFONT
W
*
logfont
)
{
char
buffer
[
sizeof
(
METARECORD
)
-
2
+
sizeof
(
LOGFONT16
)];
METARECORD
*
mr
=
(
METARECORD
*
)
&
buffer
;
LOGFONT16
*
font16
;
mr
->
rdSize
=
(
sizeof
(
METARECORD
)
+
sizeof
(
LOGFONT16
)
-
2
)
/
2
;
mr
->
rdFunction
=
META_CREATEFONTINDIRECT
;
memcpy
(
&
(
mr
->
rdParm
),
logfont
,
sizeof
(
LOGFONT16
));
font16
=
(
LOGFONT16
*
)
&
mr
->
rdParm
;
font16
->
lfHeight
=
logfont
->
lfHeight
;
font16
->
lfWidth
=
logfont
->
lfWidth
;
font16
->
lfEscapement
=
logfont
->
lfEscapement
;
font16
->
lfOrientation
=
logfont
->
lfOrientation
;
font16
->
lfWeight
=
logfont
->
lfWeight
;
font16
->
lfItalic
=
logfont
->
lfItalic
;
font16
->
lfUnderline
=
logfont
->
lfUnderline
;
font16
->
lfStrikeOut
=
logfont
->
lfStrikeOut
;
font16
->
lfCharSet
=
logfont
->
lfCharSet
;
font16
->
lfOutPrecision
=
logfont
->
lfOutPrecision
;
font16
->
lfClipPrecision
=
logfont
->
lfClipPrecision
;
font16
->
lfQuality
=
logfont
->
lfQuality
;
font16
->
lfPitchAndFamily
=
logfont
->
lfPitchAndFamily
;
WideCharToMultiByte
(
CP_ACP
,
0
,
logfont
->
lfFaceName
,
-
1
,
font16
->
lfFaceName
,
LF_FACESIZE
,
NULL
,
NULL
);
font16
->
lfFaceName
[
LF_FACESIZE
-
1
]
=
0
;
if
(
!
(
MFDRV_WriteRecord
(
dev
,
mr
,
mr
->
rdSize
*
2
)))
return
0
;
return
MFDRV_AddHandle
(
dev
,
hFont
);
...
...
@@ -374,15 +392,15 @@ static UINT16 MFDRV_CreateFontIndirect(PHYSDEV dev, HFONT hFont, LOGFONT16 *logf
HFONT
MFDRV_SelectFont
(
PHYSDEV
dev
,
HFONT
hfont
,
HANDLE
gdiFont
)
{
METAFILEDRV_PDEVICE
*
physDev
=
(
METAFILEDRV_PDEVICE
*
)
dev
;
LOGFONT
16
lf16
;
LOGFONT
W
font
;
INT16
index
;
index
=
MFDRV_FindObject
(
dev
,
hfont
);
if
(
index
<
0
)
{
if
(
!
GetObject
16
(
HFONT_16
(
hfont
),
sizeof
(
lf16
),
&
lf16
))
if
(
!
GetObject
W
(
hfont
,
sizeof
(
font
),
&
font
))
return
HGDI_ERROR
;
index
=
MFDRV_CreateFontIndirect
(
dev
,
hfont
,
&
lf16
);
index
=
MFDRV_CreateFontIndirect
(
dev
,
hfont
,
&
font
);
if
(
index
<
0
)
return
HGDI_ERROR
;
GDI_hdc_using_object
(
hfont
,
physDev
->
hdc
);
...
...
@@ -419,15 +437,24 @@ HPEN MFDRV_SelectPen( PHYSDEV dev, HPEN hpen )
index
=
MFDRV_FindObject
(
dev
,
hpen
);
if
(
index
<
0
)
{
if
(
!
GetObject16
(
HPEN_16
(
hpen
),
sizeof
(
logpen
),
&
logpen
))
{
/* must be an extended pen */
EXTLOGPEN
*
elp
;
INT
size
=
GetObjectW
(
hpen
,
0
,
NULL
);
/* must be an extended pen */
INT
size
=
GetObjectW
(
hpen
,
0
,
NULL
);
if
(
!
size
)
return
0
;
if
(
!
size
)
return
0
;
if
(
size
==
sizeof
(
LOGPEN
))
{
LOGPEN
pen
;
elp
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
GetObjectW
(
hpen
,
sizeof
(
pen
),
&
pen
);
logpen
.
lopnStyle
=
pen
.
lopnStyle
;
logpen
.
lopnWidth
.
x
=
pen
.
lopnWidth
.
x
;
logpen
.
lopnWidth
.
y
=
pen
.
lopnWidth
.
y
;
logpen
.
lopnColor
=
pen
.
lopnColor
;
}
else
/* must be an extended pen */
{
EXTLOGPEN
*
elp
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
GetObjectW
(
hpen
,
size
,
elp
);
/* FIXME: add support for user style pens */
...
...
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