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
4e1de86d
Commit
4e1de86d
authored
May 07, 2023
by
Piotr Caban
Committed by
Alexandre Julliard
May 10, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wineps: Don't use BUILTIN structure on PE side.
parent
96a6d1fd
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
28 deletions
+53
-28
builtin.c
dlls/wineps.drv/builtin.c
+29
-28
unixlib.c
dlls/wineps.drv/unixlib.c
+16
-0
unixlib.h
dlls/wineps.drv/unixlib.h
+8
-0
No files found.
dlls/wineps.drv/builtin.c
View file @
4e1de86d
...
...
@@ -68,30 +68,26 @@ static VOID ScaleFont(const AFM *afm, LONG lfHeight, PSFONT *font,
const
WINMETRICS
*
wm
=
&
(
afm
->
WinMetrics
);
USHORT
usUnitsPerEm
,
usWinAscent
,
usWinDescent
;
SHORT
sAscender
,
sDescender
,
sLineGap
,
sAvgCharWidth
;
float
scale
;
TRACE
(
"'%s' %li
\n
"
,
afm
->
FontName
,
lfHeight
);
if
(
lfHeight
<
0
)
/* match em height */
{
font
->
fontinfo
.
Builtin
.
scale
=
-
((
float
)
lfHeight
/
(
float
)(
wm
->
usUnitsPerEm
));
}
scale
=
-
((
float
)
lfHeight
/
(
float
)(
wm
->
usUnitsPerEm
));
else
/* match cell height */
{
font
->
fontinfo
.
Builtin
.
scale
=
(
float
)
lfHeight
/
(
float
)(
wm
->
usWinAscent
+
wm
->
usWinDescent
);
}
scale
=
(
float
)
lfHeight
/
(
float
)(
wm
->
usWinAscent
+
wm
->
usWinDescent
);
font
->
size
.
xx
=
(
INT
)
Round
(
font
->
fontinfo
.
Builtin
.
scale
*
(
float
)
wm
->
usUnitsPerEm
);
font
->
size
.
xx
=
(
INT
)
Round
(
scale
*
(
float
)
wm
->
usUnitsPerEm
);
font
->
size
.
xy
=
font
->
size
.
yx
=
0
;
font
->
size
.
yy
=
-
(
INT
)
Round
(
font
->
fontinfo
.
Builtin
.
scale
*
(
float
)
wm
->
usUnitsPerEm
);
font
->
size
.
yy
=
-
(
INT
)
Round
(
scale
*
(
float
)
wm
->
usUnitsPerEm
);
usUnitsPerEm
=
(
USHORT
)
Round
((
float
)(
wm
->
usUnitsPerEm
)
*
font
->
fontinfo
.
Builtin
.
scale
);
sAscender
=
(
SHORT
)
Round
((
float
)(
wm
->
sAscender
)
*
font
->
fontinfo
.
Builtin
.
scale
);
sDescender
=
(
SHORT
)
Round
((
float
)(
wm
->
sDescender
)
*
font
->
fontinfo
.
Builtin
.
scale
);
sLineGap
=
(
SHORT
)
Round
((
float
)(
wm
->
sLineGap
)
*
font
->
fontinfo
.
Builtin
.
scale
);
usWinAscent
=
(
USHORT
)
Round
((
float
)(
wm
->
usWinAscent
)
*
font
->
fontinfo
.
Builtin
.
scale
);
usWinDescent
=
(
USHORT
)
Round
((
float
)(
wm
->
usWinDescent
)
*
font
->
fontinfo
.
Builtin
.
scale
);
sAvgCharWidth
=
(
SHORT
)
Round
((
float
)(
wm
->
sAvgCharWidth
)
*
font
->
fontinfo
.
Builtin
.
scale
);
usUnitsPerEm
=
(
USHORT
)
Round
((
float
)(
wm
->
usUnitsPerEm
)
*
scale
);
sAscender
=
(
SHORT
)
Round
((
float
)(
wm
->
sAscender
)
*
scale
);
sDescender
=
(
SHORT
)
Round
((
float
)(
wm
->
sDescender
)
*
scale
);
sLineGap
=
(
SHORT
)
Round
((
float
)(
wm
->
sLineGap
)
*
scale
);
usWinAscent
=
(
USHORT
)
Round
((
float
)(
wm
->
usWinAscent
)
*
scale
);
usWinDescent
=
(
USHORT
)
Round
((
float
)(
wm
->
usWinDescent
)
*
scale
);
sAvgCharWidth
=
(
SHORT
)
Round
((
float
)(
wm
->
sAvgCharWidth
)
*
scale
);
tm
->
tmAscent
=
(
LONG
)
usWinAscent
;
tm
->
tmDescent
=
(
LONG
)
usWinDescent
;
...
...
@@ -133,10 +129,10 @@ static VOID ScaleFont(const AFM *afm, LONG lfHeight, PSFONT *font,
* similarly adjusted..
*/
font
->
fontinfo
.
Builtin
.
scale
*=
(
float
)
wm
->
usUnitsPerEm
/
1000
.
0
;
scale
*=
(
float
)
wm
->
usUnitsPerEm
/
1000
.
0
;
tm
->
tmMaxCharWidth
=
(
LONG
)
Round
(
(
afm
->
FontBBox
.
urx
-
afm
->
FontBBox
.
llx
)
*
font
->
fontinfo
.
Builtin
.
scale
);
(
afm
->
FontBBox
.
urx
-
afm
->
FontBBox
.
llx
)
*
scale
);
TRACE
(
"Selected PS font '%s' size %d weight %ld.
\n
"
,
afm
->
FontName
,
font
->
size
.
xx
,
tm
->
tmWeight
);
...
...
@@ -159,6 +155,7 @@ BOOL PSDRV_SelectBuiltinFont(PHYSDEV dev, HFONT hfont,
AFMLISTENTRY
*
afmle
;
FONTFAMILY
*
family
;
BOOL
bd
=
FALSE
,
it
=
FALSE
;
TEXTMETRICW
tm
;
LONG
height
;
TRACE
(
"Trying to find facename %s
\n
"
,
debugstr_w
(
face_name
));
...
...
@@ -207,7 +204,6 @@ BOOL PSDRV_SelectBuiltinFont(PHYSDEV dev, HFONT hfont,
TRACE
(
"Got font '%s'
\n
"
,
afmle
->
afm
->
FontName
);
physDev
->
font
.
fontloc
=
Builtin
;
physDev
->
font
.
fontinfo
.
Builtin
.
afm
=
afmle
->
afm
;
height
=
plf
->
lfHeight
;
/* stock fonts ignore the mapping mode */
...
...
@@ -218,24 +214,29 @@ BOOL PSDRV_SelectBuiltinFont(PHYSDEV dev, HFONT hfont,
LPtoDP
(
dev
->
hdc
,
pts
,
2
);
height
=
pts
[
1
].
y
-
pts
[
0
].
y
;
}
ScaleFont
(
physDev
->
font
.
fontinfo
.
Builtin
.
afm
,
height
,
&
(
physDev
->
font
),
&
(
physDev
->
font
.
fontinfo
.
Builtin
.
tm
)
);
ScaleFont
(
afmle
->
afm
,
height
,
&
(
physDev
->
font
),
&
tm
);
/* Does anyone know if these are supposed to be reversed like this? */
physDev
->
font
.
fontinfo
.
Builtin
.
tm
.
tmDigitizedAspectX
=
physDev
->
logPixelsY
;
physDev
->
font
.
fontinfo
.
Builtin
.
tm
.
tmDigitizedAspectY
=
physDev
->
logPixelsX
;
tm
.
tmDigitizedAspectX
=
physDev
->
logPixelsY
;
tm
.
tmDigitizedAspectY
=
physDev
->
logPixelsX
;
return
TRUE
;
}
BOOL
PSDRV_WriteSetBuiltinFont
(
PHYSDEV
dev
)
{
PSDRV_PDEVICE
*
physDev
=
get_psdrv_dev
(
dev
);
return
PSDRV_WriteSetFont
(
dev
,
physDev
->
font
.
fontinfo
.
Builtin
.
afm
->
FontName
,
physDev
->
font
.
size
,
physDev
->
font
.
escapement
,
FALSE
);
struct
font_info
font_info
;
matrix
size
;
ExtEscape
(
dev
->
hdc
,
PSDRV_GET_BUILTIN_FONT_INFO
,
0
,
NULL
,
sizeof
(
font_info
),
(
char
*
)
&
font_info
);
size
.
xx
=
font_info
.
size
.
cx
;
size
.
yy
=
font_info
.
size
.
cy
;
size
.
xy
=
size
.
yx
=
0
;
return
PSDRV_WriteSetFont
(
dev
,
font_info
.
font_name
,
size
,
font_info
.
escapement
,
FALSE
);
}
BOOL
PSDRV_WriteBuiltinGlyphShow
(
PHYSDEV
dev
,
LPCWSTR
str
,
INT
count
)
...
...
dlls/wineps.drv/unixlib.c
View file @
4e1de86d
...
...
@@ -809,6 +809,22 @@ static int CDECL ext_escape(PHYSDEV dev, int escape, int input_size, const void
return
1
;
}
case
PSDRV_GET_BUILTIN_FONT_INFO
:
{
PSDRV_PDEVICE
*
pdev
=
get_psdrv_dev
(
dev
);
struct
font_info
*
font_info
=
(
struct
font_info
*
)
output
;
if
(
pdev
->
font
.
fontloc
!=
Builtin
)
return
0
;
lstrcpynA
(
font_info
->
font_name
,
pdev
->
font
.
fontinfo
.
Builtin
.
afm
->
FontName
,
sizeof
(
font_info
->
font_name
));
font_info
->
size
.
cx
=
pdev
->
font
.
size
.
xx
;
font_info
->
size
.
cy
=
pdev
->
font
.
size
.
yy
;
font_info
->
escapement
=
pdev
->
font
.
escapement
;
return
1
;
}
default:
FIXME
(
"Unimplemented code %d
\n
"
,
escape
);
return
0
;
...
...
dlls/wineps.drv/unixlib.h
View file @
4e1de86d
...
...
@@ -20,6 +20,14 @@
#include "wine/unixlib.h"
#define PSDRV_GET_GLYPH_NAME 0x10000
#define PSDRV_GET_BUILTIN_FONT_INFO 0x10001
struct
font_info
{
char
font_name
[
LF_FACESIZE
];
SIZE
size
;
int
escapement
;
};
enum
wineps_funcs
{
...
...
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