summaryrefslogtreecommitdiff
path: root/libfreetype/ftpfr.c
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 17:07:39 +0000
commit37da2899f40661e3e9631e497da8dc59b971cbd0 (patch)
treecbc6d4680e347d906f5fa7fca73214418741df72 /libfreetype/ftpfr.c
parent54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff)
20060303a
Diffstat (limited to 'libfreetype/ftpfr.c')
-rw-r--r--libfreetype/ftpfr.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/libfreetype/ftpfr.c b/libfreetype/ftpfr.c
new file mode 100644
index 00000000..bf2c2a2a
--- /dev/null
+++ b/libfreetype/ftpfr.c
@@ -0,0 +1,105 @@
+/***************************************************************************/
+/* */
+/* ftpfr.c */
+/* */
+/* FreeType API for accessing PFR-specific data */
+/* */
+/* Copyright 2002 by */
+/* David Turner, Robert Wilhelm, and Werner Lemberg. */
+/* */
+/* This file is part of the FreeType project, and may only be used, */
+/* modified, and distributed under the terms of the FreeType project */
+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
+/* this file you indicate that you have read the license and */
+/* understand and accept it fully. */
+/* */
+/***************************************************************************/
+
+#include <ft2build.h>
+#include FT_INTERNAL_PFR_H
+#include FT_INTERNAL_OBJECTS_H
+
+
+ /* check the format */
+ static FT_Error
+ ft_pfr_check( FT_Face face,
+ FT_PFR_Service *aservice )
+ {
+ FT_Error error = FT_Err_Bad_Argument;
+
+ if ( face && face->driver )
+ {
+ FT_Module module = (FT_Module) face->driver;
+ const char* name = module->clazz->module_name;
+
+ if ( name[0] == 'p' &&
+ name[1] == 'f' &&
+ name[2] == 'r' &&
+ name[4] == 0 )
+ {
+ *aservice = (FT_PFR_Service) module->clazz->module_interface;
+ error = 0;
+ }
+ }
+ return error;
+ }
+
+
+
+ FT_EXPORT_DEF( FT_Error )
+ FT_Get_PFR_Metrics( FT_Face face,
+ FT_UInt *aoutline_resolution,
+ FT_UInt *ametrics_resolution,
+ FT_Fixed *ametrics_x_scale,
+ FT_Fixed *ametrics_y_scale )
+ {
+ FT_Error error;
+ FT_PFR_Service service;
+
+ error = ft_pfr_check( face, &service );
+ if ( !error )
+ {
+ error = service->get_metrics( face,
+ aoutline_resolution,
+ ametrics_resolution,
+ ametrics_x_scale,
+ ametrics_y_scale );
+ }
+ return error;
+ }
+
+ FT_EXPORT_DEF( FT_Error )
+ FT_Get_PFR_Kerning( FT_Face face,
+ FT_UInt left,
+ FT_UInt right,
+ FT_Vector *avector )
+ {
+ FT_Error error;
+ FT_PFR_Service service;
+
+ error = ft_pfr_check( face, &service );
+ if ( !error )
+ {
+ error = service->get_kerning( face, left, right, avector );
+ }
+ return error;
+ }
+
+
+ FT_EXPORT_DEF( FT_Error )
+ FT_Get_PFR_Advance( FT_Face face,
+ FT_UInt gindex,
+ FT_Pos *aadvance )
+ {
+ FT_Error error;
+ FT_PFR_Service service;
+
+ error = ft_pfr_check( face, &service );
+ if ( !error )
+ {
+ error = service->get_advance( face, gindex, aadvance );
+ }
+ return error;
+ }
+
+/* END */