ReactOS  0.4.15-dev-2704-gd5265b0
gxvmort.h File Reference
#include "gxvalid.h"
#include "gxvcommn.h"
Include dependency graph for gxvmort.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  GXV_mort_featureRec_
 

Macros

#define GXV_MORT_FEATURE_OFF   {0, 1, 0x00000000UL, 0x00000000UL}
 
#define IS_GXV_MORT_FEATURE_OFF(f)
 

Typedefs

typedef struct GXV_mort_featureRec_ GXV_mort_featureRec
 
typedef struct GXV_mort_featureRec_GXV_mort_feature
 

Functions

 gxv_mort_featurearray_validate (FT_Bytes table, FT_Bytes limit, FT_ULong nFeatureFlags, GXV_Validator gxvalid)
 
 gxv_mort_coverage_validate (FT_UShort coverage, GXV_Validator gxvalid)
 
 gxv_mort_subtable_type0_validate (FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
 
 gxv_mort_subtable_type1_validate (FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
 
 gxv_mort_subtable_type2_validate (FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
 
 gxv_mort_subtable_type4_validate (FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
 
 gxv_mort_subtable_type5_validate (FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
 

Macro Definition Documentation

◆ GXV_MORT_FEATURE_OFF

#define GXV_MORT_FEATURE_OFF   {0, 1, 0x00000000UL, 0x00000000UL}

Definition at line 46 of file gxvmort.h.

◆ IS_GXV_MORT_FEATURE_OFF

#define IS_GXV_MORT_FEATURE_OFF (   f)
Value:
( (f).featureType == 0 || \
(f).featureSetting == 1 || \
(f).enableFlags == 0x00000000UL || \
(f).disableFlags == 0x00000000UL )
GLfloat f
Definition: glext.h:7540
#define f
Definition: ke_i.h:83
#define UL
Definition: tui.h:82

Definition at line 48 of file gxvmort.h.

Typedef Documentation

◆ GXV_mort_feature

◆ GXV_mort_featureRec

Function Documentation

◆ gxv_mort_coverage_validate()

gxv_mort_coverage_validate ( FT_UShort  coverage,
GXV_Validator  gxvalid 
)

Definition at line 122 of file gxvmort.c.

124  {
125  FT_UNUSED( gxvalid );
126 
127 #ifdef FT_DEBUG_LEVEL_TRACE
128  if ( coverage & 0x8000U )
129  GXV_TRACE(( " this subtable is for vertical text only\n" ));
130  else
131  GXV_TRACE(( " this subtable is for horizontal text only\n" ));
132 
133  if ( coverage & 0x4000 )
134  GXV_TRACE(( " this subtable is applied to glyph array "
135  "in descending order\n" ));
136  else
137  GXV_TRACE(( " this subtable is applied to glyph array "
138  "in ascending order\n" ));
139 
140  if ( coverage & 0x2000 )
141  GXV_TRACE(( " this subtable is forcibly applied to "
142  "vertical/horizontal text\n" ));
143 
144  if ( coverage & 0x1FF8 )
145  GXV_TRACE(( " coverage has non-zero bits in reserved area\n" ));
146 #endif
147  }
#define GXV_TRACE(s)
Definition: gxvcommn.h:304
#define FT_UNUSED(arg)
Definition: ftconfig.h:101

Referenced by gxv_mort_subtables_validate(), and gxv_morx_subtables_validate().

◆ gxv_mort_featurearray_validate()

gxv_mort_featurearray_validate ( FT_Bytes  table,
FT_Bytes  limit,
FT_ULong  nFeatureFlags,
GXV_Validator  gxvalid 
)

Definition at line 90 of file gxvmort.c.

94  {
95  FT_Bytes p = table;
96  FT_ULong i;
97 
99 
100 
101  GXV_NAME_ENTER( "mort feature list" );
102  for ( i = 0; i < nFeatureFlags; i++ )
103  {
104  GXV_LIMIT_CHECK( 2 + 2 + 4 + 4 );
105  f.featureType = FT_NEXT_USHORT( p );
106  f.featureSetting = FT_NEXT_USHORT( p );
107  f.enableFlags = FT_NEXT_ULONG( p );
108  f.disableFlags = FT_NEXT_ULONG( p );
109 
110  gxv_mort_feature_validate( &f, gxvalid );
111  }
112 
113  if ( !IS_GXV_MORT_FEATURE_OFF( f ) )
115 
116  gxvalid->subtable_length = (FT_ULong)( p - table );
117  GXV_EXIT;
118  }
unsigned long FT_ULong
Definition: fttypes.h:253
#define GXV_NAME_ENTER(name)
Definition: gxvcommn.h:301
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
static void gxv_mort_feature_validate(GXV_mort_feature f, GXV_Validator gxvalid)
Definition: gxvmort.c:43
#define GXV_MORT_FEATURE_OFF
Definition: gxvmort.h:46
#define IS_GXV_MORT_FEATURE_OFF(f)
Definition: gxvmort.h:48
#define GXV_EXIT
Definition: gxvcommn.h:302
GLfloat f
Definition: glext.h:7540
const FT_Byte * FT_Bytes
Definition: fttypes.h:165
#define FT_NEXT_USHORT(buffer)
Definition: ftstream.h:226
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define FT_NEXT_ULONG(buffer)
Definition: ftstream.h:238
#define FT_INVALID_DATA
Definition: ftvalid.h:150
FT_ULong subtable_length
Definition: gxvcommn.h:244
GLfloat GLfloat p
Definition: glext.h:8902
#define GXV_LIMIT_CHECK(_count)
Definition: gxvcommn.h:272

Referenced by gxv_mort_chain_validate(), and gxv_morx_chain_validate().

◆ gxv_mort_subtable_type0_validate()

gxv_mort_subtable_type0_validate ( FT_Bytes  table,
FT_Bytes  limit,
GXV_Validator  gxvalid 
)

Definition at line 127 of file gxvmort0.c.

130  {
131  FT_Bytes p = table;
132 
133 
135  "mort chain subtable type0 (Indic-Script Rearrangement)" );
136 
138 
139  gxvalid->statetable.optdata = NULL;
140  gxvalid->statetable.optdata_load_func = NULL;
145 
146  gxv_StateTable_validate( p, limit, gxvalid );
147 
148  GXV_EXIT;
149  }
gxv_StateTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvcommn.c:1208
#define GXV_NAME_ENTER(name)
Definition: gxvcommn.h:301
GXV_StateTable_Entry_Validate_Func entry_validate_func
Definition: gxvcommn.h:185
GXV_StateTable_OptData_Load_Func optdata_load_func
Definition: gxvcommn.h:186
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
GLint limit
Definition: glext.h:10326
GXV_StateTable_Subtable_Setup_Func subtable_setup_func
Definition: gxvcommn.h:184
#define GXV_EXIT
Definition: gxvcommn.h:302
const FT_Byte * FT_Bytes
Definition: fttypes.h:165
GXV_StateTable_ValidatorRec statetable
Definition: gxvcommn.h:254
static void gxv_mort_subtable_type0_entry_validate(FT_Byte state, FT_UShort flags, GXV_StateTable_GlyphOffsetCPtr glyphOffset_p, FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvmort0.c:65
#define GXV_STATETABLE_HEADER_SIZE
Definition: gxvcommn.h:520
#define NULL
Definition: types.h:112
GXV_GlyphOffset_Format entry_glyphoffset_fmt
Definition: gxvcommn.h:181
GLfloat GLfloat p
Definition: glext.h:8902
#define GXV_LIMIT_CHECK(_count)
Definition: gxvcommn.h:272

Referenced by gxv_mort_subtables_validate().

◆ gxv_mort_subtable_type1_validate()

gxv_mort_subtable_type1_validate ( FT_Bytes  table,
FT_Bytes  limit,
GXV_Validator  gxvalid 
)

Definition at line 225 of file gxvmort1.c.

228  {
229  FT_Bytes p = table;
230 
232 
233 
234  GXV_NAME_ENTER( "mort chain subtable type1 (Contextual Glyph Subst)" );
235 
237 
238  gxvalid->statetable.optdata =
239  &st_rec;
240  gxvalid->statetable.optdata_load_func =
247 
249  gxv_StateTable_validate( p, limit, gxvalid );
250 
252  table + st_rec.substitutionTable,
254  gxvalid );
255 
256  GXV_EXIT;
257  }
gxv_StateTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvcommn.c:1208
#define GXV_NAME_ENTER(name)
Definition: gxvcommn.h:301
GXV_StateTable_Entry_Validate_Func entry_validate_func
Definition: gxvcommn.h:185
GXV_StateTable_OptData_Load_Func optdata_load_func
Definition: gxvcommn.h:186
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
#define GXV_MORT_SUBTABLE_TYPE1_HEADER_SIZE
Definition: gxvmort1.c:50
GLint limit
Definition: glext.h:10326
GXV_StateTable_Subtable_Setup_Func subtable_setup_func
Definition: gxvcommn.h:184
#define GXV_EXIT
Definition: gxvcommn.h:302
static void gxv_mort_subtable_type1_substitutionTable_load(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvmort1.c:55
const FT_Byte * FT_Bytes
Definition: fttypes.h:165
GXV_StateTable_ValidatorRec statetable
Definition: gxvcommn.h:254
static void gxv_mort_subtable_type1_subtable_setup(FT_UShort table_size, FT_UShort classTable, FT_UShort stateArray, FT_UShort entryTable, FT_UShort *classTable_length_p, FT_UShort *stateArray_length_p, FT_UShort *entryTable_length_p, GXV_Validator gxvalid)
Definition: gxvmort1.c:71
static void gxv_mort_subtable_type1_entry_validate(FT_Byte state, FT_UShort flags, GXV_StateTable_GlyphOffsetCPtr glyphOffset_p, FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvmort1.c:135
GXV_GlyphOffset_Format entry_glyphoffset_fmt
Definition: gxvcommn.h:181
static void gxv_mort_subtable_type1_substTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvmort1.c:183
GLfloat GLfloat p
Definition: glext.h:8902
#define GXV_LIMIT_CHECK(_count)
Definition: gxvcommn.h:272

Referenced by gxv_mort_subtables_validate().

◆ gxv_mort_subtable_type2_validate()

gxv_mort_subtable_type2_validate ( FT_Bytes  table,
FT_Bytes  limit,
GXV_Validator  gxvalid 
)

Definition at line 277 of file gxvmort2.c.

280  {
281  FT_Bytes p = table;
282 
284 
285 
286  GXV_NAME_ENTER( "mort chain subtable type2 (Ligature Substitution)" );
287 
289 
290  gxvalid->statetable.optdata =
291  &lig_rec;
292  gxvalid->statetable.optdata_load_func =
300 
301  gxv_StateTable_validate( p, limit, gxvalid );
302 
303  p += gxvalid->subtable_length;
305 
306  gxvalid->subtable_length = (FT_ULong)( p - table );
307 
308  GXV_EXIT;
309  }
unsigned long FT_ULong
Definition: fttypes.h:253
gxv_StateTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvcommn.c:1208
#define GXV_NAME_ENTER(name)
Definition: gxvcommn.h:301
GXV_StateTable_Entry_Validate_Func entry_validate_func
Definition: gxvcommn.h:185
GXV_StateTable_OptData_Load_Func optdata_load_func
Definition: gxvcommn.h:186
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
static void gxv_mort_subtable_type2_ligatureTable_validate(FT_Bytes table, GXV_Validator gxvalid)
Definition: gxvmort2.c:245
GLint limit
Definition: glext.h:10326
#define GXV_MORT_SUBTABLE_TYPE2_HEADER_SIZE
Definition: gxvmort2.c:54
GXV_StateTable_Subtable_Setup_Func subtable_setup_func
Definition: gxvcommn.h:184
#define GXV_EXIT
Definition: gxvcommn.h:302
static void gxv_mort_subtable_type2_subtable_setup(FT_UShort table_size, FT_UShort classTable, FT_UShort stateArray, FT_UShort entryTable, FT_UShort *classTable_length_p, FT_UShort *stateArray_length_p, FT_UShort *entryTable_length_p, GXV_Validator gxvalid)
Definition: gxvmort2.c:83
static void gxv_mort_subtable_type2_opttable_load(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvmort2.c:59
const FT_Byte * FT_Bytes
Definition: fttypes.h:165
GXV_StateTable_ValidatorRec statetable
Definition: gxvcommn.h:254
static void gxv_mort_subtable_type2_entry_validate(FT_Byte state, FT_UShort flags, GXV_StateTable_GlyphOffsetCPtr glyphOffset_p, FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvmort2.c:212
FT_ULong subtable_length
Definition: gxvcommn.h:244
GXV_GlyphOffset_Format entry_glyphoffset_fmt
Definition: gxvcommn.h:181
GLfloat GLfloat p
Definition: glext.h:8902
#define GXV_LIMIT_CHECK(_count)
Definition: gxvcommn.h:272

Referenced by gxv_mort_subtables_validate().

◆ gxv_mort_subtable_type4_validate()

gxv_mort_subtable_type4_validate ( FT_Bytes  table,
FT_Bytes  limit,
GXV_Validator  gxvalid 
)

Definition at line 106 of file gxvmort4.c.

109  {
110  FT_Bytes p = table;
111 
112 
113  GXV_NAME_ENTER( "mort chain subtable type4 "
114  "(Non-Contextual Glyph Substitution)" );
115 
119 
120  gxv_LookupTable_validate( p, limit, gxvalid );
121 
122  GXV_EXIT;
123  }
#define GXV_NAME_ENTER(name)
Definition: gxvcommn.h:301
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
GXV_LookupValue_SignSpec lookupval_sign
Definition: gxvcommn.h:246
GLint limit
Definition: glext.h:10326
GXV_Lookup_Fmt4_Transit_Func lookupfmt4_trans
Definition: gxvcommn.h:248
GXV_Lookup_Value_Validate_Func lookupval_func
Definition: gxvcommn.h:247
gxv_LookupTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvcommn.c:755
#define GXV_EXIT
Definition: gxvcommn.h:302
static void gxv_mort_subtable_type4_lookupval_validate(FT_UShort glyph, GXV_LookupValueCPtr value_p, GXV_Validator gxvalid)
Definition: gxvmort4.c:43
const FT_Byte * FT_Bytes
Definition: fttypes.h:165
static GXV_LookupValueDesc gxv_mort_subtable_type4_lookupfmt4_transit(FT_UShort relative_gindex, GXV_LookupValueCPtr base_value_p, FT_Bytes lookuptbl_limit, GXV_Validator gxvalid)
Definition: gxvmort4.c:80
GLfloat GLfloat p
Definition: glext.h:8902

Referenced by gxv_mort_subtables_validate(), and gxv_morx_subtable_type4_validate().

◆ gxv_mort_subtable_type5_validate()

gxv_mort_subtable_type5_validate ( FT_Bytes  table,
FT_Bytes  limit,
GXV_Validator  gxvalid 
)

Definition at line 203 of file gxvmort5.c.

206  {
207  FT_Bytes p = table;
208 
211 
212 
213  GXV_NAME_ENTER( "mort chain subtable type5 (Glyph Insertion)" );
214 
216 
217  gxvalid->statetable.optdata =
218  et;
219  gxvalid->statetable.optdata_load_func =
220  NULL;
227 
228  gxv_StateTable_validate( p, limit, gxvalid );
229 
230  GXV_EXIT;
231  }
gxv_StateTable_validate(FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvcommn.c:1208
#define GXV_NAME_ENTER(name)
Definition: gxvcommn.h:301
#define GXV_MORT_SUBTABLE_TYPE5_HEADER_SIZE
Definition: gxvmort5.c:56
GXV_StateTable_Entry_Validate_Func entry_validate_func
Definition: gxvcommn.h:185
GXV_StateTable_OptData_Load_Func optdata_load_func
Definition: gxvcommn.h:186
GLenum GLsizei GLenum GLenum const GLvoid * table
Definition: glext.h:5644
GLint limit
Definition: glext.h:10326
GXV_StateTable_Subtable_Setup_Func subtable_setup_func
Definition: gxvcommn.h:184
static void gxv_mort_subtable_type5_entry_validate(FT_Byte state, FT_UShort flags, GXV_StateTable_GlyphOffsetCPtr glyphOffset, FT_Bytes table, FT_Bytes limit, GXV_Validator gxvalid)
Definition: gxvmort5.c:143
#define GXV_EXIT
Definition: gxvcommn.h:302
const FT_Byte * FT_Bytes
Definition: fttypes.h:165
GXV_StateTable_ValidatorRec statetable
Definition: gxvcommn.h:254
#define NULL
Definition: types.h:112
gxv_mort_subtable_type5_subtable_setup(FT_UShort table_size, FT_UShort classTable, FT_UShort stateArray, FT_UShort entryTable, FT_UShort *classTable_length_p, FT_UShort *stateArray_length_p, FT_UShort *entryTable_length_p, GXV_Validator gxvalid)
Definition: gxvmort5.c:67
GXV_GlyphOffset_Format entry_glyphoffset_fmt
Definition: gxvcommn.h:181
GLfloat GLfloat p
Definition: glext.h:8902
#define GXV_LIMIT_CHECK(_count)
Definition: gxvcommn.h:272

Referenced by gxv_mort_subtables_validate().