~alinuxninja/nginx-edge/trunk

« back to all changes in this revision

Viewing changes to debian/modules/ngx_pagespeed/psol/include/third_party/icu/source/layout/ContextualSubstSubtables.h

  • Committer: Vivian
  • Date: 2015-12-04 18:20:11 UTC
  • Revision ID: git-v1:a36f2bc32e884f7473b3a47040e5411306144d7d
* Do not extract psol.tar.gz

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 *
3
 
 * (C) Copyright IBM Corp. 1998-2008 - All Rights Reserved
4
 
 *
5
 
 */
6
 
 
7
 
#ifndef __CONTEXTUALSUBSTITUTIONSUBTABLES_H
8
 
#define __CONTEXTUALSUBSTITUTIONSUBTABLES_H
9
 
 
10
 
/**
11
 
 * \file
12
 
 * \internal
13
 
 */
14
 
 
15
 
#include "LETypes.h"
16
 
#include "LEFontInstance.h"
17
 
#include "OpenTypeTables.h"
18
 
#include "GlyphSubstitutionTables.h"
19
 
#include "GlyphIterator.h"
20
 
#include "LookupProcessor.h"
21
 
 
22
 
U_NAMESPACE_BEGIN
23
 
 
24
 
struct SubstitutionLookupRecord
25
 
{
26
 
    le_uint16  sequenceIndex;
27
 
    le_uint16  lookupListIndex;
28
 
};
29
 
 
30
 
struct ContextualSubstitutionBase : GlyphSubstitutionSubtable
31
 
{
32
 
    static le_bool matchGlyphIDs(
33
 
        const TTGlyphID *glyphArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
34
 
        le_bool backtrack = FALSE);
35
 
 
36
 
    static le_bool matchGlyphClasses(
37
 
        const le_uint16 *classArray, le_uint16 glyphCount, GlyphIterator *glyphIterator,
38
 
        const ClassDefinitionTable *classDefinitionTable, le_bool backtrack = FALSE);
39
 
 
40
 
    static le_bool matchGlyphCoverages(
41
 
        const Offset *coverageTableOffsetArray, le_uint16 glyphCount,
42
 
        GlyphIterator *glyphIterator, const char *offsetBase, le_bool backtrack = FALSE);
43
 
 
44
 
    static void applySubstitutionLookups(
45
 
        const LookupProcessor *lookupProcessor, 
46
 
        const SubstitutionLookupRecord *substLookupRecordArray,
47
 
        le_uint16 substCount,
48
 
        GlyphIterator *glyphIterator,
49
 
        const LEFontInstance *fontInstance,
50
 
        le_int32 position,
51
 
        LEErrorCode& success);
52
 
};
53
 
 
54
 
struct ContextualSubstitutionSubtable : ContextualSubstitutionBase
55
 
{
56
 
    le_uint32  process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
57
 
};
58
 
 
59
 
struct ContextualSubstitutionFormat1Subtable : ContextualSubstitutionSubtable
60
 
{
61
 
    le_uint16  subRuleSetCount;
62
 
    Offset  subRuleSetTableOffsetArray[ANY_NUMBER];
63
 
 
64
 
    le_uint32  process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
65
 
};
66
 
 
67
 
struct SubRuleSetTable
68
 
{
69
 
    le_uint16  subRuleCount;
70
 
    Offset  subRuleTableOffsetArray[ANY_NUMBER];
71
 
 
72
 
};
73
 
 
74
 
// NOTE: Multiple variable size arrays!!
75
 
struct SubRuleTable
76
 
{
77
 
    le_uint16  glyphCount;
78
 
    le_uint16  substCount;
79
 
    TTGlyphID inputGlyphArray[ANY_NUMBER];
80
 
  //SubstitutionLookupRecord substLookupRecordArray[ANY_NUMBER];
81
 
};
82
 
 
83
 
struct ContextualSubstitutionFormat2Subtable : ContextualSubstitutionSubtable
84
 
{
85
 
    Offset  classDefTableOffset;
86
 
    le_uint16  subClassSetCount;
87
 
    Offset  subClassSetTableOffsetArray[ANY_NUMBER];
88
 
 
89
 
    le_uint32  process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
90
 
};
91
 
 
92
 
struct SubClassSetTable
93
 
{
94
 
    le_uint16  subClassRuleCount;
95
 
    Offset  subClassRuleTableOffsetArray[ANY_NUMBER];
96
 
};
97
 
 
98
 
// NOTE: Multiple variable size arrays!!
99
 
struct SubClassRuleTable
100
 
{
101
 
    le_uint16  glyphCount;
102
 
    le_uint16  substCount;
103
 
    le_uint16  classArray[ANY_NUMBER];
104
 
  //SubstitutionLookupRecord substLookupRecordArray[ANY_NUMBER];
105
 
};
106
 
 
107
 
// NOTE: This isn't a subclass of GlyphSubstitutionSubtable 'cause
108
 
// it has an array of coverage tables instead of a single coverage table...
109
 
//
110
 
// NOTE: Multiple variable size arrays!!
111
 
struct ContextualSubstitutionFormat3Subtable
112
 
{
113
 
    le_uint16  substFormat;
114
 
    le_uint16  glyphCount;
115
 
    le_uint16  substCount;
116
 
    Offset  coverageTableOffsetArray[ANY_NUMBER];
117
 
  //SubstitutionLookupRecord substLookupRecord[ANY_NUMBER];
118
 
 
119
 
    le_uint32  process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
120
 
};
121
 
 
122
 
struct ChainingContextualSubstitutionSubtable : ContextualSubstitutionBase
123
 
{
124
 
    le_uint32  process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
125
 
};
126
 
 
127
 
struct ChainingContextualSubstitutionFormat1Subtable : ChainingContextualSubstitutionSubtable
128
 
{
129
 
    le_uint16  chainSubRuleSetCount;
130
 
    Offset  chainSubRuleSetTableOffsetArray[ANY_NUMBER];
131
 
 
132
 
    le_uint32  process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
133
 
};
134
 
 
135
 
struct ChainSubRuleSetTable
136
 
{
137
 
    le_uint16  chainSubRuleCount;
138
 
    Offset  chainSubRuleTableOffsetArray[ANY_NUMBER];
139
 
 
140
 
};
141
 
 
142
 
// NOTE: Multiple variable size arrays!!
143
 
struct ChainSubRuleTable
144
 
{
145
 
    le_uint16  backtrackGlyphCount;
146
 
    TTGlyphID backtrackGlyphArray[ANY_NUMBER];
147
 
  //le_uint16  inputGlyphCount;
148
 
  //TTGlyphID inputGlyphArray[ANY_NUMBER];
149
 
  //le_uint16  lookaheadGlyphCount;
150
 
  //TTGlyphID lookaheadGlyphArray[ANY_NUMBER];
151
 
  //le_uint16  substCount;
152
 
  //SubstitutionLookupRecord substLookupRecordArray[ANY_NUMBER];
153
 
};
154
 
 
155
 
struct ChainingContextualSubstitutionFormat2Subtable : ChainingContextualSubstitutionSubtable
156
 
{
157
 
    Offset  backtrackClassDefTableOffset;
158
 
    Offset  inputClassDefTableOffset;
159
 
    Offset  lookaheadClassDefTableOffset;
160
 
    le_uint16  chainSubClassSetCount;
161
 
    Offset  chainSubClassSetTableOffsetArray[ANY_NUMBER];
162
 
 
163
 
    le_uint32  process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
164
 
};
165
 
 
166
 
struct ChainSubClassSetTable
167
 
{
168
 
    le_uint16  chainSubClassRuleCount;
169
 
    Offset  chainSubClassRuleTableOffsetArray[ANY_NUMBER];
170
 
};
171
 
 
172
 
// NOTE: Multiple variable size arrays!!
173
 
struct ChainSubClassRuleTable
174
 
{
175
 
    le_uint16  backtrackGlyphCount;
176
 
    le_uint16  backtrackClassArray[ANY_NUMBER];
177
 
  //le_uint16  inputGlyphCount;
178
 
  //le_uint16  inputClassArray[ANY_NUMBER];
179
 
  //le_uint16  lookaheadGlyphCount;
180
 
  //le_uint16  lookaheadClassArray[ANY_NUMBER];
181
 
  //le_uint16  substCount;
182
 
  //SubstitutionLookupRecord substLookupRecordArray[ANY_NUMBER];
183
 
};
184
 
 
185
 
// NOTE: This isn't a subclass of GlyphSubstitutionSubtable 'cause
186
 
// it has arrays of coverage tables instead of a single coverage table...
187
 
//
188
 
// NOTE: Multiple variable size arrays!!
189
 
struct ChainingContextualSubstitutionFormat3Subtable
190
 
{
191
 
    le_uint16  substFormat;
192
 
    le_uint16  backtrackGlyphCount;
193
 
    Offset  backtrackCoverageTableOffsetArray[ANY_NUMBER];
194
 
  //le_uint16  inputGlyphCount;
195
 
  //Offset  inputCoverageTableOffsetArray[ANY_NUMBER];
196
 
  //le_uint16  lookaheadGlyphCount;
197
 
  //le_uint16  lookaheadCoverageTableOffsetArray[ANY_NUMBER];
198
 
  //le_uint16  substCount;
199
 
  //SubstitutionLookupRecord substLookupRecord[ANY_NUMBER];
200
 
 
201
 
    le_uint32  process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
202
 
};
203
 
 
204
 
U_NAMESPACE_END
205
 
#endif