~ubuntu-branches/ubuntu/wily/hedgewars/wily

« back to all changes in this revision

Viewing changes to misc/libfreetype/src/type42/t42drivr.c

  • Committer: Package Import Robot
  • Author(s): Dmitry E. Oboukhov
  • Date: 2011-09-23 10:16:55 UTC
  • mfrom: (1.2.11 upstream)
  • Revision ID: package-import@ubuntu.com-20110923101655-3977th2gc5n0a3pv
Tags: 0.9.16-1
* New upstream version.
 + Downloadable content! Simply click to install any content.
   New voices, hats, maps, themes, translations, music, scripts...
   Hedgewars is now more customisable than ever before! As time goes
   by we will be soliciting community content to feature on this page,
   so remember to check it from time to time. If you decide you want
   to go back to standard Hedgewars, just remove the Data directory
   from your Hedgewars config directory.
 + 3-D rendering! Diorama-like rendering of the game in a variety
   of 3D modes. Let us know which ones work best for you, we didn't
   really have the equipment to test them all.
 + Resizable game window.
 + New utilities! The Time Box will remove one of your hedgehogs
   from the game for a while, protecting from attack until it returns,
   somewhere else on the map. Land spray will allow you to build bridges,
   seal up holes, or just make life unpleasant for your enemies.
 + New single player: Bamboo Thicket, That Sinking Feeling, Newton and
   the Tree and multi-player: The Specialists, Space Invaders,
   Racer - scripts! And a ton more script hooks for scripters
 + New twists on old weapons. Drill strike, seduction and fire have
   been adjusted. Defective mines have been added, rope can attach to
   hogs/crates/barrels again, grenades now have variable bounce (use
   precise key + 1-5). Portal gun is now more usable in flight and
   all game actions are a lot faster.
 + New theme - Golf, dozens of new community hats and a new
   localised Default voice, Ukranian.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************/
 
2
/*                                                                         */
 
3
/*  t42drivr.c                                                             */
 
4
/*                                                                         */
 
5
/*    High-level Type 42 driver interface (body).                          */
 
6
/*                                                                         */
 
7
/*  Copyright 2002, 2003, 2004, 2006, 2007, 2009 by Roberto Alameda.       */
 
8
/*                                                                         */
 
9
/*  This file is part of the FreeType project, and may only be used,       */
 
10
/*  modified, and distributed under the terms of the FreeType project      */
 
11
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
 
12
/*  this file you indicate that you have read the license and              */
 
13
/*  understand and accept it fully.                                        */
 
14
/*                                                                         */
 
15
/***************************************************************************/
 
16
 
 
17
 
 
18
  /*************************************************************************/
 
19
  /*                                                                       */
 
20
  /* This driver implements Type42 fonts as described in the               */
 
21
  /* Technical Note #5012 from Adobe, with these limitations:              */
 
22
  /*                                                                       */
 
23
  /* 1) CID Fonts are not currently supported.                             */
 
24
  /* 2) Incremental fonts making use of the GlyphDirectory keyword         */
 
25
  /*    will be loaded, but the rendering will be using the TrueType       */
 
26
  /*    tables.                                                            */
 
27
  /* 3) As for Type1 fonts, CDevProc is not supported.                     */
 
28
  /* 4) The Metrics dictionary is not supported.                           */
 
29
  /* 5) AFM metrics are not supported.                                     */
 
30
  /*                                                                       */
 
31
  /* In other words, this driver supports Type42 fonts derived from        */
 
32
  /* TrueType fonts in a non-CID manner, as done by usual conversion       */
 
33
  /* programs.                                                             */
 
34
  /*                                                                       */
 
35
  /*************************************************************************/
 
36
 
 
37
 
 
38
#include "t42drivr.h"
 
39
#include "t42objs.h"
 
40
#include "t42error.h"
 
41
#include FT_INTERNAL_DEBUG_H
 
42
 
 
43
#include FT_SERVICE_XFREE86_NAME_H
 
44
#include FT_SERVICE_GLYPH_DICT_H
 
45
#include FT_SERVICE_POSTSCRIPT_NAME_H
 
46
#include FT_SERVICE_POSTSCRIPT_INFO_H
 
47
 
 
48
#undef  FT_COMPONENT
 
49
#define FT_COMPONENT  trace_t42
 
50
 
 
51
 
 
52
  /*
 
53
   *
 
54
   *  GLYPH DICT SERVICE
 
55
   *
 
56
   */
 
57
 
 
58
  static FT_Error
 
59
  t42_get_glyph_name( T42_Face    face,
 
60
                      FT_UInt     glyph_index,
 
61
                      FT_Pointer  buffer,
 
62
                      FT_UInt     buffer_max )
 
63
  {
 
64
    FT_STRCPYN( buffer, face->type1.glyph_names[glyph_index], buffer_max );
 
65
 
 
66
    return T42_Err_Ok;
 
67
  }
 
68
 
 
69
 
 
70
  static FT_UInt
 
71
  t42_get_name_index( T42_Face    face,
 
72
                      FT_String*  glyph_name )
 
73
  {
 
74
    FT_Int      i;
 
75
    FT_String*  gname;
 
76
 
 
77
 
 
78
    for ( i = 0; i < face->type1.num_glyphs; i++ )
 
79
    {
 
80
      gname = face->type1.glyph_names[i];
 
81
 
 
82
      if ( glyph_name[0] == gname[0] && !ft_strcmp( glyph_name, gname ) )
 
83
        return (FT_UInt)ft_atol( (const char *)face->type1.charstrings[i] );
 
84
    }
 
85
 
 
86
    return 0;
 
87
  }
 
88
 
 
89
 
 
90
  static const FT_Service_GlyphDictRec  t42_service_glyph_dict =
 
91
  {
 
92
    (FT_GlyphDict_GetNameFunc)  t42_get_glyph_name,
 
93
    (FT_GlyphDict_NameIndexFunc)t42_get_name_index
 
94
  };
 
95
 
 
96
 
 
97
  /*
 
98
   *
 
99
   *  POSTSCRIPT NAME SERVICE
 
100
   *
 
101
   */
 
102
 
 
103
  static const char*
 
104
  t42_get_ps_font_name( T42_Face  face )
 
105
  {
 
106
    return (const char*)face->type1.font_name;
 
107
  }
 
108
 
 
109
 
 
110
  static const FT_Service_PsFontNameRec  t42_service_ps_font_name =
 
111
  {
 
112
    (FT_PsName_GetFunc)t42_get_ps_font_name
 
113
  };
 
114
 
 
115
 
 
116
  /*
 
117
   *
 
118
   *  POSTSCRIPT INFO SERVICE
 
119
   *
 
120
   */
 
121
 
 
122
  static FT_Error
 
123
  t42_ps_get_font_info( FT_Face          face,
 
124
                        PS_FontInfoRec*  afont_info )
 
125
  {
 
126
    *afont_info = ((T42_Face)face)->type1.font_info;
 
127
 
 
128
    return T42_Err_Ok;
 
129
  }
 
130
 
 
131
 
 
132
  static FT_Error
 
133
  t42_ps_get_font_extra( FT_Face           face,
 
134
                         PS_FontExtraRec*  afont_extra )
 
135
  {
 
136
    *afont_extra = ((T42_Face)face)->type1.font_extra;
 
137
 
 
138
    return T42_Err_Ok;
 
139
  }
 
140
 
 
141
 
 
142
  static FT_Int
 
143
  t42_ps_has_glyph_names( FT_Face  face )
 
144
  {
 
145
    FT_UNUSED( face );
 
146
 
 
147
    return 1;
 
148
  }
 
149
 
 
150
 
 
151
  static FT_Error
 
152
  t42_ps_get_font_private( FT_Face         face,
 
153
                           PS_PrivateRec*  afont_private )
 
154
  {
 
155
    *afont_private = ((T42_Face)face)->type1.private_dict;
 
156
 
 
157
    return T42_Err_Ok;
 
158
  }
 
159
 
 
160
 
 
161
  static const FT_Service_PsInfoRec  t42_service_ps_info =
 
162
  {
 
163
    (PS_GetFontInfoFunc)   t42_ps_get_font_info,
 
164
    (PS_GetFontExtraFunc)   t42_ps_get_font_extra,
 
165
    (PS_HasGlyphNamesFunc) t42_ps_has_glyph_names,
 
166
    (PS_GetFontPrivateFunc)t42_ps_get_font_private
 
167
  };
 
168
 
 
169
 
 
170
  /*
 
171
   *
 
172
   *  SERVICE LIST
 
173
   *
 
174
   */
 
175
 
 
176
  static const FT_ServiceDescRec  t42_services[] =
 
177
  {
 
178
    { FT_SERVICE_ID_GLYPH_DICT,           &t42_service_glyph_dict },
 
179
    { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &t42_service_ps_font_name },
 
180
    { FT_SERVICE_ID_POSTSCRIPT_INFO,      &t42_service_ps_info },
 
181
    { FT_SERVICE_ID_XF86_NAME,            FT_XF86_FORMAT_TYPE_42 },
 
182
    { NULL, NULL }
 
183
  };
 
184
 
 
185
 
 
186
  static FT_Module_Interface
 
187
  T42_Get_Interface( FT_Driver         driver,
 
188
                     const FT_String*  t42_interface )
 
189
  {
 
190
    FT_UNUSED( driver );
 
191
 
 
192
    return ft_service_list_lookup( t42_services, t42_interface );
 
193
  }
 
194
 
 
195
 
 
196
  const FT_Driver_ClassRec  t42_driver_class =
 
197
  {
 
198
    {
 
199
      FT_MODULE_FONT_DRIVER       |
 
200
      FT_MODULE_DRIVER_SCALABLE   |
 
201
#ifdef TT_USE_BYTECODE_INTERPRETER
 
202
      FT_MODULE_DRIVER_HAS_HINTER,
 
203
#else
 
204
      0,
 
205
#endif
 
206
 
 
207
      sizeof ( T42_DriverRec ),
 
208
 
 
209
      "type42",
 
210
      0x10000L,
 
211
      0x20000L,
 
212
 
 
213
      0,    /* format interface */
 
214
 
 
215
      (FT_Module_Constructor)T42_Driver_Init,
 
216
      (FT_Module_Destructor) T42_Driver_Done,
 
217
      (FT_Module_Requester)  T42_Get_Interface,
 
218
    },
 
219
 
 
220
    sizeof ( T42_FaceRec ),
 
221
    sizeof ( T42_SizeRec ),
 
222
    sizeof ( T42_GlyphSlotRec ),
 
223
 
 
224
    (FT_Face_InitFunc)        T42_Face_Init,
 
225
    (FT_Face_DoneFunc)        T42_Face_Done,
 
226
    (FT_Size_InitFunc)        T42_Size_Init,
 
227
    (FT_Size_DoneFunc)        T42_Size_Done,
 
228
    (FT_Slot_InitFunc)        T42_GlyphSlot_Init,
 
229
    (FT_Slot_DoneFunc)        T42_GlyphSlot_Done,
 
230
 
 
231
#ifdef FT_CONFIG_OPTION_OLD_INTERNALS
 
232
    ft_stub_set_char_sizes,
 
233
    ft_stub_set_pixel_sizes,
 
234
#endif
 
235
    (FT_Slot_LoadFunc)        T42_GlyphSlot_Load,
 
236
 
 
237
    (FT_Face_GetKerningFunc)  0,
 
238
    (FT_Face_AttachFunc)      0,
 
239
 
 
240
    (FT_Face_GetAdvancesFunc) 0,
 
241
    (FT_Size_RequestFunc)     T42_Size_Request,
 
242
    (FT_Size_SelectFunc)      T42_Size_Select
 
243
  };
 
244
 
 
245
 
 
246
/* END */