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

« back to all changes in this revision

Viewing changes to misc/libfreetype/include/freetype/internal/ftvalid.h

  • 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
/*  ftvalid.h                                                              */
 
4
/*                                                                         */
 
5
/*    FreeType validation support (specification).                         */
 
6
/*                                                                         */
 
7
/*  Copyright 2004 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
 
 
19
#ifndef __FTVALID_H__
 
20
#define __FTVALID_H__
 
21
 
 
22
#include <ft2build.h>
 
23
#include FT_CONFIG_STANDARD_LIBRARY_H   /* for ft_setjmp and ft_longjmp */
 
24
 
 
25
 
 
26
FT_BEGIN_HEADER
 
27
 
 
28
 
 
29
  /*************************************************************************/
 
30
  /*************************************************************************/
 
31
  /*************************************************************************/
 
32
  /****                                                                 ****/
 
33
  /****                                                                 ****/
 
34
  /****                    V A L I D A T I O N                          ****/
 
35
  /****                                                                 ****/
 
36
  /****                                                                 ****/
 
37
  /*************************************************************************/
 
38
  /*************************************************************************/
 
39
  /*************************************************************************/
 
40
 
 
41
  /* handle to a validation object */
 
42
  typedef struct FT_ValidatorRec_ volatile*  FT_Validator;
 
43
 
 
44
 
 
45
  /*************************************************************************/
 
46
  /*                                                                       */
 
47
  /* There are three distinct validation levels defined here:              */
 
48
  /*                                                                       */
 
49
  /* FT_VALIDATE_DEFAULT ::                                                */
 
50
  /*   A table that passes this validation level can be used reliably by   */
 
51
  /*   FreeType.  It generally means that all offsets have been checked to */
 
52
  /*   prevent out-of-bound reads, that array counts are correct, etc.     */
 
53
  /*                                                                       */
 
54
  /* FT_VALIDATE_TIGHT ::                                                  */
 
55
  /*   A table that passes this validation level can be used reliably and  */
 
56
  /*   doesn't contain invalid data.  For example, a charmap table that    */
 
57
  /*   returns invalid glyph indices will not pass, even though it can     */
 
58
  /*   be used with FreeType in default mode (the library will simply      */
 
59
  /*   return an error later when trying to load the glyph).               */
 
60
  /*                                                                       */
 
61
  /*   It also checks that fields which must be a multiple of 2, 4, or 8,  */
 
62
  /*   don't have incorrect values, etc.                                   */
 
63
  /*                                                                       */
 
64
  /* FT_VALIDATE_PARANOID ::                                               */
 
65
  /*   Only for font debugging.  Checks that a table follows the           */
 
66
  /*   specification by 100%.  Very few fonts will be able to pass this    */
 
67
  /*   level anyway but it can be useful for certain tools like font       */
 
68
  /*   editors/converters.                                                 */
 
69
  /*                                                                       */
 
70
  typedef enum  FT_ValidationLevel_
 
71
  {
 
72
    FT_VALIDATE_DEFAULT = 0,
 
73
    FT_VALIDATE_TIGHT,
 
74
    FT_VALIDATE_PARANOID
 
75
 
 
76
  } FT_ValidationLevel;
 
77
 
 
78
 
 
79
  /* validator structure */
 
80
  typedef struct  FT_ValidatorRec_
 
81
  {
 
82
    const FT_Byte*      base;        /* address of table in memory       */
 
83
    const FT_Byte*      limit;       /* `base' + sizeof(table) in memory */
 
84
    FT_ValidationLevel  level;       /* validation level                 */
 
85
    FT_Error            error;       /* error returned. 0 means success  */
 
86
 
 
87
    ft_jmp_buf          jump_buffer; /* used for exception handling      */
 
88
 
 
89
  } FT_ValidatorRec;
 
90
 
 
91
 
 
92
#define FT_VALIDATOR( x )  ((FT_Validator)( x ))
 
93
 
 
94
 
 
95
  FT_BASE( void )
 
96
  ft_validator_init( FT_Validator        valid,
 
97
                     const FT_Byte*      base,
 
98
                     const FT_Byte*      limit,
 
99
                     FT_ValidationLevel  level );
 
100
 
 
101
  /* Do not use this. It's broken and will cause your validator to crash */
 
102
  /* if you run it on an invalid font.                                   */
 
103
  FT_BASE( FT_Int )
 
104
  ft_validator_run( FT_Validator  valid );
 
105
 
 
106
  /* Sets the error field in a validator, then calls `longjmp' to return */
 
107
  /* to high-level caller.  Using `setjmp/longjmp' avoids many stupid    */
 
108
  /* error checks within the validation routines.                        */
 
109
  /*                                                                     */
 
110
  FT_BASE( void )
 
111
  ft_validator_error( FT_Validator  valid,
 
112
                      FT_Error      error );
 
113
 
 
114
 
 
115
  /* Calls ft_validate_error.  Assumes that the `valid' local variable */
 
116
  /* holds a pointer to the current validator object.                  */
 
117
  /*                                                                   */
 
118
  /* Use preprocessor prescan to pass FT_ERR_PREFIX.                   */
 
119
  /*                                                                   */
 
120
#define FT_INVALID( _prefix, _error )  FT_INVALID_( _prefix, _error )
 
121
#define FT_INVALID_( _prefix, _error ) \
 
122
          ft_validator_error( valid, _prefix ## _error )
 
123
 
 
124
  /* called when a broken table is detected */
 
125
#define FT_INVALID_TOO_SHORT \
 
126
          FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
 
127
 
 
128
  /* called when an invalid offset is detected */
 
129
#define FT_INVALID_OFFSET \
 
130
          FT_INVALID( FT_ERR_PREFIX, Invalid_Offset )
 
131
 
 
132
  /* called when an invalid format/value is detected */
 
133
#define FT_INVALID_FORMAT \
 
134
          FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
 
135
 
 
136
  /* called when an invalid glyph index is detected */
 
137
#define FT_INVALID_GLYPH_ID \
 
138
          FT_INVALID( FT_ERR_PREFIX, Invalid_Glyph_Index )
 
139
 
 
140
  /* called when an invalid field value is detected */
 
141
#define FT_INVALID_DATA \
 
142
          FT_INVALID( FT_ERR_PREFIX, Invalid_Table )
 
143
 
 
144
 
 
145
FT_END_HEADER
 
146
 
 
147
#endif /* __FTVALID_H__ */
 
148
 
 
149
 
 
150
/* END */