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
3cfafab3
Commit
3cfafab3
authored
Nov 05, 2020
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Move FreeType support to a new Unix library.
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
54a01ea1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
50 deletions
+42
-50
font.c
dlls/gdi32/font.c
+8
-6
freetype.c
dlls/gdi32/freetype.c
+26
-35
gdi_private.h
dlls/gdi32/gdi_private.h
+8
-9
No files found.
dlls/gdi32/font.c
View file @
3cfafab3
...
@@ -940,11 +940,11 @@ static struct gdi_font_face *create_face( struct gdi_font_family *family, const
...
@@ -940,11 +940,11 @@ static struct gdi_font_face *create_face( struct gdi_font_family *family, const
return
NULL
;
return
NULL
;
}
}
int
add_gdi_face
(
const
WCHAR
*
family_name
,
const
WCHAR
*
second_name
,
static
int
CDECL
add_gdi_face
(
const
WCHAR
*
family_name
,
const
WCHAR
*
second_name
,
const
WCHAR
*
style
,
const
WCHAR
*
fullname
,
const
WCHAR
*
file
,
const
WCHAR
*
style
,
const
WCHAR
*
fullname
,
const
WCHAR
*
file
,
void
*
data_ptr
,
SIZE_T
data_size
,
UINT
index
,
FONTSIGNATURE
fs
,
void
*
data_ptr
,
SIZE_T
data_size
,
UINT
index
,
FONTSIGNATURE
fs
,
DWORD
ntmflags
,
DWORD
version
,
DWORD
flags
,
DWORD
ntmflags
,
DWORD
version
,
DWORD
flags
,
const
struct
bitmap_font_size
*
size
)
const
struct
bitmap_font_size
*
size
)
{
{
struct
gdi_font_face
*
face
;
struct
gdi_font_face
*
face
;
struct
gdi_font_family
*
family
;
struct
gdi_font_family
*
family
;
...
@@ -8040,6 +8040,8 @@ static void load_registry_fonts(void)
...
@@ -8040,6 +8040,8 @@ static void load_registry_fonts(void)
RegCloseKey
(
hkey
);
RegCloseKey
(
hkey
);
}
}
static
const
struct
font_callback_funcs
callback_funcs
=
{
add_gdi_face
};
/***********************************************************************
/***********************************************************************
* font_init
* font_init
*/
*/
...
@@ -8055,7 +8057,7 @@ void font_init(void)
...
@@ -8055,7 +8057,7 @@ void font_init(void)
init_font_options
();
init_font_options
();
update_codepage
();
update_codepage
();
if
(
!
WineEngInit
(
&
font_funcs
))
return
;
if
(
__wine_init_unix_lib
(
gdi32_module
,
DLL_PROCESS_ATTACH
,
&
callback_funcs
,
&
font_funcs
))
return
;
if
(
!
(
mutex
=
CreateMutexW
(
NULL
,
FALSE
,
mutex_nameW
)))
return
;
if
(
!
(
mutex
=
CreateMutexW
(
NULL
,
FALSE
,
mutex_nameW
)))
return
;
WaitForSingleObject
(
mutex
,
INFINITE
);
WaitForSingleObject
(
mutex
,
INFINITE
);
...
...
dlls/gdi32/freetype.c
View file @
3cfafab3
...
@@ -21,6 +21,10 @@
...
@@ -21,6 +21,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
*/
#if 0
#pragma makedep unix
#endif
#include "config.h"
#include "config.h"
#include "wine/port.h"
#include "wine/port.h"
...
@@ -102,16 +106,15 @@
...
@@ -102,16 +106,15 @@
#include "winreg.h"
#include "winreg.h"
#include "wingdi.h"
#include "wingdi.h"
#include "gdi_private.h"
#include "gdi_private.h"
#include "wine/unicode.h"
#include "wine/debug.h"
#include "wine/debug.h"
#include "wine/list.h"
#include "wine/list.h"
#include "resource.h"
#include "resource.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
font
);
#ifdef HAVE_FREETYPE
#ifdef HAVE_FREETYPE
WINE_DEFAULT_DEBUG_CHANNEL
(
font
);
#ifndef HAVE_FT_TRUETYPEENGINETYPE
#ifndef HAVE_FT_TRUETYPEENGINETYPE
typedef
enum
typedef
enum
{
{
...
@@ -247,7 +250,7 @@ static inline FT_Face get_ft_face( struct gdi_font *font )
...
@@ -247,7 +250,7 @@ static inline FT_Face get_ft_face( struct gdi_font *font )
return
((
struct
font_private_data
*
)
font
->
private
)
->
ft_face
;
return
((
struct
font_private_data
*
)
font
->
private
)
->
ft_face
;
}
}
static
const
struct
font_
backend_funcs
font
_funcs
;
static
const
struct
font_
callback_funcs
*
callback
_funcs
;
struct
font_mapping
struct
font_mapping
{
{
...
@@ -1028,9 +1031,10 @@ static int AddFaceToList(FT_Face ft_face, const WCHAR *file, void *data_ptr, SIZ
...
@@ -1028,9 +1031,10 @@ static int AddFaceToList(FT_Face ft_face, const WCHAR *file, void *data_ptr, SIZ
if
(
!
FT_IS_SCALABLE
(
ft_face
))
get_bitmap_size
(
ft_face
,
&
size
);
if
(
!
FT_IS_SCALABLE
(
ft_face
))
get_bitmap_size
(
ft_face
,
&
size
);
if
(
!
HIWORD
(
flags
))
flags
|=
ADDFONT_AA_FLAGS
(
default_aa_flags
);
if
(
!
HIWORD
(
flags
))
flags
|=
ADDFONT_AA_FLAGS
(
default_aa_flags
);
ret
=
add_gdi_face
(
family_name
,
second_name
,
style_name
,
full_name
,
file
,
data_ptr
,
data_size
,
ret
=
callback_funcs
->
add_gdi_face
(
family_name
,
second_name
,
style_name
,
full_name
,
file
,
face_index
,
fs
,
get_ntm_flags
(
ft_face
),
get_font_version
(
ft_face
),
data_ptr
,
data_size
,
face_index
,
fs
,
get_ntm_flags
(
ft_face
),
flags
,
FT_IS_SCALABLE
(
ft_face
)
?
NULL
:
&
size
);
get_font_version
(
ft_face
),
flags
,
FT_IS_SCALABLE
(
ft_face
)
?
NULL
:
&
size
);
TRACE
(
"fsCsb = %08x %08x/%08x %08x %08x %08x
\n
"
,
TRACE
(
"fsCsb = %08x %08x/%08x %08x %08x %08x
\n
"
,
fs
.
fsCsb
[
0
],
fs
.
fsCsb
[
1
],
fs
.
fsUsb
[
0
],
fs
.
fsUsb
[
1
],
fs
.
fsUsb
[
2
],
fs
.
fsUsb
[
3
]);
fs
.
fsCsb
[
0
],
fs
.
fsCsb
[
1
],
fs
.
fsUsb
[
0
],
fs
.
fsUsb
[
1
],
fs
.
fsUsb
[
2
],
fs
.
fsUsb
[
3
]);
...
@@ -1662,24 +1666,6 @@ static void CDECL freetype_load_fonts(void)
...
@@ -1662,24 +1666,6 @@ static void CDECL freetype_load_fonts(void)
#endif
#endif
}
}
/*************************************************************
* WineEngInit
*
* Initialize FreeType library and create a list of available faces
*/
BOOL
WineEngInit
(
const
struct
font_backend_funcs
**
funcs
)
{
if
(
!
init_freetype
())
return
FALSE
;
#ifdef SONAME_LIBFONTCONFIG
init_fontconfig
();
#endif
*
funcs
=
&
font_funcs
;
NtQueryDefaultLocale
(
FALSE
,
&
system_lcid
);
return
TRUE
;
}
/* Some fonts have large usWinDescent values, as a result of storing signed short
/* Some fonts have large usWinDescent values, as a result of storing signed short
in unsigned field. That's probably caused by sTypoDescent vs usWinDescent confusion in
in unsigned field. That's probably caused by sTypoDescent vs usWinDescent confusion in
some font generation tools. */
some font generation tools. */
...
@@ -3471,10 +3457,10 @@ static BOOL CDECL freetype_set_outline_text_metrics( struct gdi_font *font )
...
@@ -3471,10 +3457,10 @@ static BOOL CDECL freetype_set_outline_text_metrics( struct gdi_font *font )
FIXME
(
"failed to read full_nameW for font %s!
\n
"
,
wine_dbgstr_w
((
WCHAR
*
)
font
->
otm
.
otmpFamilyName
));
FIXME
(
"failed to read full_nameW for font %s!
\n
"
,
wine_dbgstr_w
((
WCHAR
*
)
font
->
otm
.
otmpFamilyName
));
font
->
otm
.
otmpFullName
=
(
char
*
)
strdupW
(
fake_nameW
);
font
->
otm
.
otmpFullName
=
(
char
*
)
strdupW
(
fake_nameW
);
}
}
needed
=
sizeof
(
font
->
otm
)
+
(
strlenW
(
(
WCHAR
*
)
font
->
otm
.
otmpFamilyName
)
+
1
+
needed
=
sizeof
(
font
->
otm
)
+
(
l
strlenW
(
(
WCHAR
*
)
font
->
otm
.
otmpFamilyName
)
+
1
+
strlenW
(
(
WCHAR
*
)
font
->
otm
.
otmpStyleName
)
+
1
+
l
strlenW
(
(
WCHAR
*
)
font
->
otm
.
otmpStyleName
)
+
1
+
strlenW
(
(
WCHAR
*
)
font
->
otm
.
otmpFaceName
)
+
1
+
l
strlenW
(
(
WCHAR
*
)
font
->
otm
.
otmpFaceName
)
+
1
+
strlenW
(
(
WCHAR
*
)
font
->
otm
.
otmpFullName
)
+
1
)
*
sizeof
(
WCHAR
);
l
strlenW
(
(
WCHAR
*
)
font
->
otm
.
otmpFullName
)
+
1
)
*
sizeof
(
WCHAR
);
em_scale
=
(
FT_Fixed
)
pFT_MulDiv
(
font
->
ppem
,
1
<<
16
,
ft_face
->
units_per_EM
);
em_scale
=
(
FT_Fixed
)
pFT_MulDiv
(
font
->
ppem
,
1
<<
16
,
ft_face
->
units_per_EM
);
...
@@ -4044,13 +4030,18 @@ static const struct font_backend_funcs font_funcs =
...
@@ -4044,13 +4030,18 @@ static const struct font_backend_funcs font_funcs =
freetype_destroy_font
freetype_destroy_font
};
};
#else
/* HAVE_FREETYPE */
NTSTATUS
CDECL
__wine_init_unix_lib
(
HMODULE
module
,
DWORD
reason
,
const
void
*
ptr_in
,
void
*
ptr_out
)
/*************************************************************************/
BOOL
WineEngInit
(
const
struct
font_backend_funcs
**
funcs
)
{
{
return
FALSE
;
if
(
reason
!=
DLL_PROCESS_ATTACH
)
return
STATUS_SUCCESS
;
callback_funcs
=
ptr_in
;
if
(
!
init_freetype
())
return
STATUS_DLL_NOT_FOUND
;
#ifdef SONAME_LIBFONTCONFIG
init_fontconfig
();
#endif
NtQueryDefaultLocale
(
FALSE
,
&
system_lcid
);
*
(
const
struct
font_backend_funcs
**
)
ptr_out
=
&
font_funcs
;
return
STATUS_SUCCESS
;
}
}
#endif
/* HAVE_FREETYPE */
#endif
/* HAVE_FREETYPE */
dlls/gdi32/gdi_private.h
View file @
3cfafab3
...
@@ -400,18 +400,17 @@ struct font_backend_funcs
...
@@ -400,18 +400,17 @@ struct font_backend_funcs
void
(
CDECL
*
destroy_font
)(
struct
gdi_font
*
font
);
void
(
CDECL
*
destroy_font
)(
struct
gdi_font
*
font
);
};
};
extern
int
add_gdi_face
(
const
WCHAR
*
family_name
,
const
WCHAR
*
second_name
,
struct
font_callback_funcs
const
WCHAR
*
style
,
const
WCHAR
*
fullname
,
const
WCHAR
*
file
,
{
void
*
data_ptr
,
SIZE_T
data_size
,
UINT
index
,
FONTSIGNATURE
fs
,
int
(
CDECL
*
add_gdi_face
)(
const
WCHAR
*
family_name
,
const
WCHAR
*
second_name
,
DWORD
ntmflags
,
DWORD
version
,
DWORD
flags
,
const
WCHAR
*
style
,
const
WCHAR
*
fullname
,
const
WCHAR
*
file
,
const
struct
bitmap_font_size
*
size
)
DECLSPEC_HIDDEN
;
void
*
data_ptr
,
SIZE_T
data_size
,
UINT
index
,
FONTSIGNATURE
fs
,
DWORD
ntmflags
,
DWORD
version
,
DWORD
flags
,
const
struct
bitmap_font_size
*
size
);
};
extern
void
font_init
(
void
)
DECLSPEC_HIDDEN
;
extern
void
font_init
(
void
)
DECLSPEC_HIDDEN
;
/* freetype.c */
extern
BOOL
WineEngInit
(
const
struct
font_backend_funcs
**
funcs
)
DECLSPEC_HIDDEN
;
/* gdiobj.c */
/* gdiobj.c */
extern
HGDIOBJ
alloc_gdi_handle
(
void
*
obj
,
WORD
type
,
const
struct
gdi_obj_funcs
*
funcs
)
DECLSPEC_HIDDEN
;
extern
HGDIOBJ
alloc_gdi_handle
(
void
*
obj
,
WORD
type
,
const
struct
gdi_obj_funcs
*
funcs
)
DECLSPEC_HIDDEN
;
extern
void
*
free_gdi_handle
(
HGDIOBJ
handle
)
DECLSPEC_HIDDEN
;
extern
void
*
free_gdi_handle
(
HGDIOBJ
handle
)
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