~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to tests/freetype/src/base/ftpfr.c

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************/
 
2
/*                                                                         */
 
3
/*  ftpfr.c                                                                */
 
4
/*                                                                         */
 
5
/*    FreeType API for accessing PFR-specific data (body).                 */
 
6
/*                                                                         */
 
7
/*  Copyright 2002, 2003, 2004, 2008, 2010 by                              */
 
8
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 
9
/*                                                                         */
 
10
/*  This file is part of the FreeType project, and may only be used,       */
 
11
/*  modified, and distributed under the terms of the FreeType project      */
 
12
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 
13
/*  this file you indicate that you have read the license and              */
 
14
/*  understand and accept it fully.                                        */
 
15
/*                                                                         */
 
16
/***************************************************************************/
 
17
 
 
18
#include <ft2build.h>
 
19
#include FT_INTERNAL_OBJECTS_H
 
20
#include FT_SERVICE_PFR_H
 
21
 
 
22
 
 
23
  /* check the format */
 
24
  static FT_Service_PfrMetrics
 
25
  ft_pfr_check( FT_Face  face )
 
26
  {
 
27
    FT_Service_PfrMetrics  service = NULL;
 
28
 
 
29
 
 
30
    if ( face )
 
31
      FT_FACE_LOOKUP_SERVICE( face, service, PFR_METRICS );
 
32
 
 
33
    return service;
 
34
  }
 
35
 
 
36
 
 
37
  /* documentation is in ftpfr.h */
 
38
 
 
39
  FT_EXPORT_DEF( FT_Error )
 
40
  FT_Get_PFR_Metrics( FT_Face    face,
 
41
                      FT_UInt   *aoutline_resolution,
 
42
                      FT_UInt   *ametrics_resolution,
 
43
                      FT_Fixed  *ametrics_x_scale,
 
44
                      FT_Fixed  *ametrics_y_scale )
 
45
  {
 
46
    FT_Error               error = FT_Err_Ok;
 
47
    FT_Service_PfrMetrics  service;
 
48
 
 
49
 
 
50
    if ( !face )
 
51
      return FT_Err_Invalid_Argument;
 
52
 
 
53
    service = ft_pfr_check( face );
 
54
    if ( service )
 
55
    {
 
56
      error = service->get_metrics( face,
 
57
                                    aoutline_resolution,
 
58
                                    ametrics_resolution,
 
59
                                    ametrics_x_scale,
 
60
                                    ametrics_y_scale );
 
61
    }
 
62
    else
 
63
    {
 
64
      FT_Fixed  x_scale, y_scale;
 
65
 
 
66
 
 
67
      /* this is not a PFR font */
 
68
      if ( aoutline_resolution )
 
69
        *aoutline_resolution = face->units_per_EM;
 
70
 
 
71
      if ( ametrics_resolution )
 
72
        *ametrics_resolution = face->units_per_EM;
 
73
 
 
74
      x_scale = y_scale = 0x10000L;
 
75
      if ( face->size )
 
76
      {
 
77
        x_scale = face->size->metrics.x_scale;
 
78
        y_scale = face->size->metrics.y_scale;
 
79
      }
 
80
 
 
81
      if ( ametrics_x_scale )
 
82
        *ametrics_x_scale = x_scale;
 
83
 
 
84
      if ( ametrics_y_scale )
 
85
        *ametrics_y_scale = y_scale;
 
86
 
 
87
      error = FT_Err_Unknown_File_Format;
 
88
    }
 
89
 
 
90
    return error;
 
91
  }
 
92
 
 
93
 
 
94
  /* documentation is in ftpfr.h */
 
95
 
 
96
  FT_EXPORT_DEF( FT_Error )
 
97
  FT_Get_PFR_Kerning( FT_Face     face,
 
98
                      FT_UInt     left,
 
99
                      FT_UInt     right,
 
100
                      FT_Vector  *avector )
 
101
  {
 
102
    FT_Error               error;
 
103
    FT_Service_PfrMetrics  service;
 
104
 
 
105
 
 
106
    if ( !face )
 
107
      return FT_Err_Invalid_Argument;
 
108
 
 
109
    service = ft_pfr_check( face );
 
110
    if ( service )
 
111
      error = service->get_kerning( face, left, right, avector );
 
112
    else
 
113
      error = FT_Get_Kerning( face, left, right,
 
114
                              FT_KERNING_UNSCALED, avector );
 
115
 
 
116
    return error;
 
117
  }
 
118
 
 
119
 
 
120
  /* documentation is in ftpfr.h */
 
121
 
 
122
  FT_EXPORT_DEF( FT_Error )
 
123
  FT_Get_PFR_Advance( FT_Face   face,
 
124
                      FT_UInt   gindex,
 
125
                      FT_Pos   *aadvance )
 
126
  {
 
127
    FT_Error               error;
 
128
    FT_Service_PfrMetrics  service;
 
129
 
 
130
 
 
131
    service = ft_pfr_check( face );
 
132
    if ( service )
 
133
    {
 
134
      error = service->get_advance( face, gindex, aadvance );
 
135
    }
 
136
    else
 
137
      /* XXX: TODO: PROVIDE ADVANCE-LOADING METHOD TO ALL FONT DRIVERS */
 
138
      error = FT_Err_Invalid_Argument;
 
139
 
 
140
    return error;
 
141
  }
 
142
 
 
143
 
 
144
/* END */