ReactOS 0.4.16-dev-2358-g0df3463
pfrdrivr.c File Reference
Include dependency graph for pfrdrivr.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

 pfr_get_kerning (FT_Face pfrface, FT_UInt left, FT_UInt right, FT_Vector *avector)
 
 pfr_get_advance (FT_Face pfrface, FT_UInt gindex, FT_Pos *anadvance)
 
 pfr_get_metrics (FT_Face pfrface, FT_UInt *anoutline_resolution, FT_UInt *ametrics_resolution, FT_Fixed *ametrics_x_scale, FT_Fixed *ametrics_y_scale)
 
 pfr_get_service (FT_Module module, const FT_String *service_id)
 

Variables

static const FT_Service_PfrMetricsRec pfr_metrics_service_rec
 
static const FT_ServiceDescRec pfr_services []
 
FT_CALLBACK_TABLE_DEF const FT_Driver_ClassRec pfr_driver_class
 

Function Documentation

◆ pfr_get_advance()

pfr_get_advance ( FT_Face  pfrface,
FT_UInt  gindex,
FT_Pos anadvance 
)

Definition at line 65 of file pfrdrivr.c.

68 {
69 PFR_Face face = (PFR_Face)pfrface;
70 FT_Error error = FT_ERR( Invalid_Argument );
71
72
73 *anadvance = 0;
74
75 if ( !gindex )
76 goto Exit;
77
78 gindex--;
79
80 if ( face )
81 {
82 PFR_PhyFont phys = &face->phy_font;
83
84
85 if ( gindex < phys->num_chars )
86 {
87 *anadvance = phys->chars[gindex].advance;
89 }
90 }
91
92 Exit:
93 return error;
94 }
return FT_Err_Ok
Definition: ftbbox.c:526
int FT_Error
Definition: fttypes.h:299
#define FT_ERR(e)
Definition: fttypes.h:599
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
#define error(str)
Definition: mkdosfs.c:1605
typedefFT_BEGIN_HEADER struct PFR_FaceRec_ * PFR_Face
Definition: pfrobjs.h:27
static void Exit(void)
Definition: sock.c:1330
FT_Int advance
Definition: pfrtypes.h:157
PFR_Char chars
Definition: pfrtypes.h:238

◆ pfr_get_kerning()

pfr_get_kerning ( FT_Face  pfrface,
FT_UInt  left,
FT_UInt  right,
FT_Vector avector 
)

Definition at line 30 of file pfrdrivr.c.

34 {
35 PFR_Face face = (PFR_Face)pfrface;
36 PFR_PhyFont phys = &face->phy_font;
37
38
39 (void)pfr_face_get_kerning( pfrface, left, right, avector );
40
41 /* convert from metrics to outline units when necessary */
42 if ( phys->outline_resolution != phys->metrics_resolution )
43 {
44 if ( avector->x != 0 )
45 avector->x = FT_MulDiv( avector->x,
48
49 if ( avector->y != 0 )
50 avector->y = FT_MulDiv( avector->y,
53 }
54
55 return FT_Err_Ok;
56 }
FT_MulDiv(FT_Long a, FT_Long b, FT_Long c)
Definition: ftcalc.c:415
signed long FT_Long
Definition: fttypes.h:242
GLdouble GLdouble right
Definition: glext.h:10859
GLint left
Definition: glext.h:7726
pfr_face_get_kerning(FT_Face pfrface, FT_UInt glyph1, FT_UInt glyph2, FT_Vector *kerning)
Definition: pfrobjs.c:471
FT_Pos x
Definition: ftimage.h:77
FT_Pos y
Definition: ftimage.h:78
FT_UInt outline_resolution
Definition: pfrtypes.h:210
FT_UInt metrics_resolution
Definition: pfrtypes.h:211

◆ pfr_get_metrics()

pfr_get_metrics ( FT_Face  pfrface,
FT_UInt anoutline_resolution,
FT_UInt ametrics_resolution,
FT_Fixed ametrics_x_scale,
FT_Fixed ametrics_y_scale 
)

Definition at line 98 of file pfrdrivr.c.

103 {
104 PFR_Face face = (PFR_Face)pfrface;
105 PFR_PhyFont phys = &face->phy_font;
106 FT_Fixed x_scale, y_scale;
107 FT_Size size = face->root.size;
108
109
110 if ( anoutline_resolution )
111 *anoutline_resolution = phys->outline_resolution;
112
113 if ( ametrics_resolution )
114 *ametrics_resolution = phys->metrics_resolution;
115
116 x_scale = 0x10000L;
117 y_scale = 0x10000L;
118
119 if ( size )
120 {
121 x_scale = FT_DivFix( size->metrics.x_ppem << 6,
123
124 y_scale = FT_DivFix( size->metrics.y_ppem << 6,
126 }
127
128 if ( ametrics_x_scale )
129 *ametrics_x_scale = x_scale;
130
131 if ( ametrics_y_scale )
132 *ametrics_y_scale = y_scale;
133
134 return FT_Err_Ok;
135 }
FT_DivFix(FT_Long a, FT_Long b)
Definition: ftcalc.c:607
signed long FT_Fixed
Definition: fttypes.h:287
GLsizeiptr size
Definition: glext.h:5919

◆ pfr_get_service()

pfr_get_service ( FT_Module  module,
const FT_String service_id 
)

Definition at line 161 of file pfrdrivr.c.

163 {
164 FT_UNUSED( module );
165
166 return ft_service_list_lookup( pfr_services, service_id );
167 }
ft_service_list_lookup(FT_ServiceDesc service_descriptors, const char *service_id)
Definition: ftobjs.c:109
static const FT_ServiceDescRec pfr_services[]
Definition: pfrdrivr.c:152
#define FT_UNUSED(arg)

Variable Documentation

◆ pfr_driver_class

Definition at line 171 of file pfrdrivr.c.

◆ pfr_metrics_service_rec

const FT_Service_PfrMetricsRec pfr_metrics_service_rec
static
Initial value:
=
{
}
pfr_get_metrics(FT_Face pfrface, FT_UInt *anoutline_resolution, FT_UInt *ametrics_resolution, FT_Fixed *ametrics_x_scale, FT_Fixed *ametrics_y_scale)
Definition: pfrdrivr.c:98
pfr_get_advance(FT_Face pfrface, FT_UInt gindex, FT_Pos *anadvance)
Definition: pfrdrivr.c:65

Definition at line 139 of file pfrdrivr.c.

◆ pfr_services

const FT_ServiceDescRec pfr_services[]
static
Initial value:
=
{
{ NULL, NULL }
}
#define NULL
Definition: types.h:112
static const FT_Service_PfrMetricsRec pfr_metrics_service_rec
Definition: pfrdrivr.c:139
#define FT_SERVICE_ID_FONT_FORMAT
Definition: svfntfmt.h:34
#define FT_FONT_FORMAT_PFR
Definition: svfntfmt.h:43
#define FT_SERVICE_ID_PFR_METRICS
Definition: svpfr.h:29

Definition at line 152 of file pfrdrivr.c.

Referenced by pfr_get_service().