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
5c02c352
Commit
5c02c352
authored
Nov 05, 2012
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Determine the default anti-aliasing parameters in the null driver SelectFont entry point.
parent
2a208bd2
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
76 additions
and
74 deletions
+76
-74
driver.c
dlls/gdi32/driver.c
+0
-5
font.c
dlls/gdi32/font.c
+44
-49
freetype.c
dlls/gdi32/freetype.c
+31
-17
gdi_private.h
dlls/gdi32/gdi_private.h
+1
-3
No files found.
dlls/gdi32/driver.c
View file @
5c02c352
...
@@ -552,11 +552,6 @@ static HBRUSH nulldrv_SelectBrush( PHYSDEV dev, HBRUSH brush, const struct brush
...
@@ -552,11 +552,6 @@ static HBRUSH nulldrv_SelectBrush( PHYSDEV dev, HBRUSH brush, const struct brush
return
brush
;
return
brush
;
}
}
static
HFONT
nulldrv_SelectFont
(
PHYSDEV
dev
,
HFONT
font
,
UINT
*
aa_flags
)
{
return
0
;
}
static
HPALETTE
nulldrv_SelectPalette
(
PHYSDEV
dev
,
HPALETTE
palette
,
BOOL
bkgnd
)
static
HPALETTE
nulldrv_SelectPalette
(
PHYSDEV
dev
,
HPALETTE
palette
,
BOOL
bkgnd
)
{
{
return
palette
;
return
palette
;
...
...
dlls/gdi32/font.c
View file @
5c02c352
...
@@ -260,8 +260,6 @@ static void FONT_NewTextMetricExWToA(const NEWTEXTMETRICEXW *ptmW, NEWTEXTMETRIC
...
@@ -260,8 +260,6 @@ static void FONT_NewTextMetricExWToA(const NEWTEXTMETRICEXW *ptmW, NEWTEXTMETRIC
memcpy
(
&
ptmA
->
ntmFontSig
,
&
ptmW
->
ntmFontSig
,
sizeof
(
FONTSIGNATURE
));
memcpy
(
&
ptmA
->
ntmFontSig
,
&
ptmW
->
ntmFontSig
,
sizeof
(
FONTSIGNATURE
));
}
}
enum
smoothing
{
no_smoothing
,
aa_smoothing
,
subpixel_smoothing
};
static
DWORD
get_desktop_value
(
const
WCHAR
*
name
,
DWORD
*
value
)
static
DWORD
get_desktop_value
(
const
WCHAR
*
name
,
DWORD
*
value
)
{
{
static
const
WCHAR
desktop
[]
=
{
'C'
,
'o'
,
'n'
,
't'
,
'r'
,
'o'
,
'l'
,
' '
,
'P'
,
'a'
,
'n'
,
'e'
,
'l'
,
'\\'
,
'D'
,
'e'
,
's'
,
'k'
,
't'
,
'o'
,
'p'
,
0
};
static
const
WCHAR
desktop
[]
=
{
'C'
,
'o'
,
'n'
,
't'
,
'r'
,
'o'
,
'l'
,
' '
,
'P'
,
'a'
,
'n'
,
'e'
,
'l'
,
'\\'
,
'D'
,
'e'
,
's'
,
'k'
,
't'
,
'o'
,
'p'
,
0
};
...
@@ -279,28 +277,6 @@ static DWORD get_desktop_value( const WCHAR *name, DWORD *value )
...
@@ -279,28 +277,6 @@ static DWORD get_desktop_value( const WCHAR *name, DWORD *value )
return
err
;
return
err
;
}
}
static
enum
smoothing
get_default_smoothing
(
void
)
{
static
const
WCHAR
smoothing_type
[]
=
{
'F'
,
'o'
,
'n'
,
't'
,
'S'
,
'm'
,
'o'
,
'o'
,
't'
,
'h'
,
'i'
,
'n'
,
'g'
,
'T'
,
'y'
,
'p'
,
'e'
,
0
};
DWORD
type
,
err
;
/* FIXME: Ignoring FontSmoothing for now since this is
set to off by default in wine.inf */
err
=
get_desktop_value
(
smoothing_type
,
&
type
);
if
(
err
)
return
aa_smoothing
;
switch
(
type
)
{
case
1
:
/* FE_FONTSMOOTHINGSTANDARD */
return
aa_smoothing
;
case
2
:
/* FE_FONTSMOOTHINGCLEARTYPE */
return
subpixel_smoothing
;
}
return
aa_smoothing
;
}
static
UINT
get_subpixel_orientation
(
void
)
static
UINT
get_subpixel_orientation
(
void
)
{
{
static
const
WCHAR
smoothing_orientation
[]
=
{
'F'
,
'o'
,
'n'
,
't'
,
'S'
,
'm'
,
'o'
,
'o'
,
't'
,
'h'
,
'i'
,
'n'
,
'g'
,
static
const
WCHAR
smoothing_orientation
[]
=
{
'F'
,
'o'
,
'n'
,
't'
,
'S'
,
'm'
,
'o'
,
'o'
,
't'
,
'h'
,
'i'
,
'n'
,
'g'
,
...
@@ -321,39 +297,28 @@ static UINT get_subpixel_orientation( void )
...
@@ -321,39 +297,28 @@ static UINT get_subpixel_orientation( void )
return
GGO_GRAY4_BITMAP
;
return
GGO_GRAY4_BITMAP
;
}
}
UINT
get_font_aa_flags
(
HDC
hdc
,
const
LOGFONTW
*
lf
)
static
UINT
get_default_smoothing
(
void
)
{
{
enum
smoothing
smoothing
;
static
const
WCHAR
smoothing_type
[]
=
{
'F'
,
'o'
,
'n'
,
't'
,
'S'
,
'm'
,
'o'
,
'o'
,
't'
,
'h'
,
'i'
,
'n'
,
'g'
,
'T'
,
'y'
,
'p'
,
'e'
,
0
};
DWORD
type
,
err
;
switch
(
lf
->
lfQuality
)
/* FIXME: Ignoring FontSmoothing for now since this is
{
set to off by default in wine.inf */
case
NONANTIALIASED_QUALITY
:
return
GGO_BITMAP
;
case
ANTIALIASED_QUALITY
:
smoothing
=
aa_smoothing
;
break
;
case
CLEARTYPE_QUALITY
:
case
CLEARTYPE_NATURAL_QUALITY
:
smoothing
=
subpixel_smoothing
;
break
;
case
DEFAULT_QUALITY
:
case
DRAFT_QUALITY
:
case
PROOF_QUALITY
:
default:
smoothing
=
get_default_smoothing
();
}
switch
(
smoothing
)
err
=
get_desktop_value
(
smoothing_type
,
&
type
);
if
(
err
)
return
0
;
switch
(
type
)
{
{
case
subpixel_smoothing
:
case
1
:
/* FE_FONTSMOOTHINGSTANDARD */
return
get_subpixel_orientation
();
case
aa_smoothing
:
return
GGO_GRAY4_BITMAP
;
return
GGO_GRAY4_BITMAP
;
default:
case
2
:
/* FE_FONTSMOOTHINGCLEARTYPE */
return
GGO_BITMAP
;
return
get_subpixel_orientation
()
;
}
}
return
0
;
}
}
/***********************************************************************
/***********************************************************************
* GdiGetCodePage (GDI32.@)
* GdiGetCodePage (GDI32.@)
*/
*/
...
@@ -697,6 +662,36 @@ static BOOL FONT_DeleteObject( HGDIOBJ handle )
...
@@ -697,6 +662,36 @@ static BOOL FONT_DeleteObject( HGDIOBJ handle )
/***********************************************************************
/***********************************************************************
* nulldrv_SelectFont
*/
HFONT
nulldrv_SelectFont
(
PHYSDEV
dev
,
HFONT
font
,
UINT
*
aa_flags
)
{
LOGFONTW
lf
;
if
(
*
aa_flags
)
return
0
;
GetObjectW
(
font
,
sizeof
(
lf
),
&
lf
);
switch
(
lf
.
lfQuality
)
{
case
NONANTIALIASED_QUALITY
:
*
aa_flags
=
GGO_BITMAP
;
break
;
case
ANTIALIASED_QUALITY
:
*
aa_flags
=
GGO_GRAY4_BITMAP
;
break
;
case
CLEARTYPE_QUALITY
:
case
CLEARTYPE_NATURAL_QUALITY
:
*
aa_flags
=
get_subpixel_orientation
();
break
;
default:
*
aa_flags
=
get_default_smoothing
();
break
;
}
return
0
;
}
/***********************************************************************
* FONT_EnumInstance
* FONT_EnumInstance
*
*
* Note: plf is really an ENUMLOGFONTEXW, and ptm is a NEWTEXTMETRICEXW.
* Note: plf is really an ENUMLOGFONTEXW, and ptm is a NEWTEXTMETRICEXW.
...
...
dlls/gdi32/freetype.c
View file @
5c02c352
...
@@ -4953,27 +4953,41 @@ found_face:
...
@@ -4953,27 +4953,41 @@ found_face:
done:
done:
if
(
ret
)
if
(
ret
)
{
{
if
(
!*
aa_flags
)
*
aa_flags
=
ret
->
aa_flags
;
PHYSDEV
next
=
GET_NEXT_PHYSDEV
(
dev
,
pSelectFont
);
if
(
!*
aa_flags
)
*
aa_flags
=
get_font_aa_flags
(
dev
->
hdc
,
&
lf
);
/* fixup the antialiasing flags for that font */
switch
(
lf
.
lfQuality
)
switch
(
*
aa_flags
)
{
{
case
WINE_GGO_HRGB_BITMAP
:
case
NONANTIALIASED_QUALITY
:
case
WINE_GGO_HBGR_BITMAP
:
case
ANTIALIASED_QUALITY
:
case
WINE_GGO_VRGB_BITMAP
:
next
->
funcs
->
pSelectFont
(
dev
,
hfont
,
aa_flags
);
case
WINE_GGO_VBGR_BITMAP
:
break
;
if
(
is_subpixel_rendering_enabled
())
break
;
case
CLEARTYPE_QUALITY
:
*
aa_flags
=
GGO_GRAY4_BITMAP
;
case
CLEARTYPE_NATURAL_QUALITY
:
/* fall through */
default:
case
GGO_GRAY4_BITMAP
:
if
(
!*
aa_flags
)
*
aa_flags
=
ret
->
aa_flags
;
if
(
is_hinting_enabled
())
next
->
funcs
->
pSelectFont
(
dev
,
hfont
,
aa_flags
);
/* fixup the antialiasing flags for that font */
switch
(
*
aa_flags
)
{
{
WORD
gasp_flags
;
case
WINE_GGO_HRGB_BITMAP
:
if
(
get_gasp_flags
(
ret
,
&
gasp_flags
)
&&
!
(
gasp_flags
&
GASP_DOGRAY
))
case
WINE_GGO_HBGR_BITMAP
:
*
aa_flags
=
GGO_BITMAP
;
case
WINE_GGO_VRGB_BITMAP
:
case
WINE_GGO_VBGR_BITMAP
:
if
(
is_subpixel_rendering_enabled
())
break
;
*
aa_flags
=
GGO_GRAY4_BITMAP
;
/* fall through */
case
GGO_GRAY2_BITMAP
:
case
GGO_GRAY4_BITMAP
:
case
GGO_GRAY8_BITMAP
:
case
WINE_GGO_GRAY16_BITMAP
:
if
(
is_hinting_enabled
())
{
WORD
gasp_flags
;
if
(
get_gasp_flags
(
ret
,
&
gasp_flags
)
&&
!
(
gasp_flags
&
GASP_DOGRAY
))
*
aa_flags
=
GGO_BITMAP
;
}
}
}
break
;
}
}
dc
->
gdiFont
=
ret
;
dc
->
gdiFont
=
ret
;
physdev
->
font
=
ret
;
physdev
->
font
=
ret
;
...
...
dlls/gdi32/gdi_private.h
View file @
5c02c352
...
@@ -278,9 +278,6 @@ extern BOOL DRIVER_GetDriverName( LPCWSTR device, LPWSTR driver, DWORD size ) DE
...
@@ -278,9 +278,6 @@ extern BOOL DRIVER_GetDriverName( LPCWSTR device, LPWSTR driver, DWORD size ) DE
/* enhmetafile.c */
/* enhmetafile.c */
extern
HENHMETAFILE
EMF_Create_HENHMETAFILE
(
ENHMETAHEADER
*
emh
,
BOOL
on_disk
)
DECLSPEC_HIDDEN
;
extern
HENHMETAFILE
EMF_Create_HENHMETAFILE
(
ENHMETAHEADER
*
emh
,
BOOL
on_disk
)
DECLSPEC_HIDDEN
;
/* font.c */
extern
UINT
get_font_aa_flags
(
HDC
hdc
,
const
LOGFONTW
*
lf
)
DECLSPEC_HIDDEN
;
/* freetype.c */
/* freetype.c */
/* Undocumented structure filled in by GdiRealizationInfo */
/* Undocumented structure filled in by GdiRealizationInfo */
...
@@ -394,6 +391,7 @@ extern INT nulldrv_SaveDC( PHYSDEV dev ) DECLSPEC_HIDDEN;
...
@@ -394,6 +391,7 @@ extern INT nulldrv_SaveDC( PHYSDEV dev ) DECLSPEC_HIDDEN;
extern
BOOL
nulldrv_ScaleViewportExtEx
(
PHYSDEV
dev
,
INT
x_num
,
INT
x_denom
,
INT
y_num
,
INT
y_denom
,
SIZE
*
size
)
DECLSPEC_HIDDEN
;
extern
BOOL
nulldrv_ScaleViewportExtEx
(
PHYSDEV
dev
,
INT
x_num
,
INT
x_denom
,
INT
y_num
,
INT
y_denom
,
SIZE
*
size
)
DECLSPEC_HIDDEN
;
extern
BOOL
nulldrv_ScaleWindowExtEx
(
PHYSDEV
dev
,
INT
x_num
,
INT
x_denom
,
INT
y_num
,
INT
y_denom
,
SIZE
*
size
)
DECLSPEC_HIDDEN
;
extern
BOOL
nulldrv_ScaleWindowExtEx
(
PHYSDEV
dev
,
INT
x_num
,
INT
x_denom
,
INT
y_num
,
INT
y_denom
,
SIZE
*
size
)
DECLSPEC_HIDDEN
;
extern
BOOL
nulldrv_SelectClipPath
(
PHYSDEV
dev
,
INT
mode
)
DECLSPEC_HIDDEN
;
extern
BOOL
nulldrv_SelectClipPath
(
PHYSDEV
dev
,
INT
mode
)
DECLSPEC_HIDDEN
;
extern
HFONT
nulldrv_SelectFont
(
PHYSDEV
dev
,
HFONT
font
,
UINT
*
ggo_flags
)
DECLSPEC_HIDDEN
;
extern
INT
nulldrv_SetDIBitsToDevice
(
PHYSDEV
dev
,
INT
x_dst
,
INT
y_dst
,
DWORD
width
,
DWORD
height
,
extern
INT
nulldrv_SetDIBitsToDevice
(
PHYSDEV
dev
,
INT
x_dst
,
INT
y_dst
,
DWORD
width
,
DWORD
height
,
INT
x_src
,
INT
y_src
,
UINT
start
,
UINT
lines
,
INT
x_src
,
INT
y_src
,
UINT
start
,
UINT
lines
,
const
void
*
bits
,
BITMAPINFO
*
info
,
UINT
coloruse
)
DECLSPEC_HIDDEN
;
const
void
*
bits
,
BITMAPINFO
*
info
,
UINT
coloruse
)
DECLSPEC_HIDDEN
;
...
...
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