sl@0
|
1 |
/*
|
sl@0
|
2 |
* %W% %E%
|
sl@0
|
3 |
*
|
sl@0
|
4 |
* (C) Copyright IBM Corp. 2002 - All Rights Reserved
|
sl@0
|
5 |
*
|
sl@0
|
6 |
*/
|
sl@0
|
7 |
|
sl@0
|
8 |
#include "LETypes.h"
|
sl@0
|
9 |
#include "OpenTypeTables.h"
|
sl@0
|
10 |
#include "GlyphSubstitutionTables.h"
|
sl@0
|
11 |
#include "LookupProcessor.h"
|
sl@0
|
12 |
#include "ExtensionSubtables.h"
|
sl@0
|
13 |
#include "GlyphIterator.h"
|
sl@0
|
14 |
#include "LESwaps.h"
|
sl@0
|
15 |
|
sl@0
|
16 |
U_NAMESPACE_BEGIN
|
sl@0
|
17 |
|
sl@0
|
18 |
|
sl@0
|
19 |
// FIXME: should look at the format too... maybe have a sub-class for it?
|
sl@0
|
20 |
le_uint32 ExtensionSubtable::process(const LookupProcessor *lookupProcessor, le_uint16 lookupType,
|
sl@0
|
21 |
GlyphIterator *glyphIterator, const LEFontInstance *fontInstance,
|
sl@0
|
22 |
LEErrorCode& success) const
|
sl@0
|
23 |
{
|
sl@0
|
24 |
if (LE_FAILURE(success)) {
|
sl@0
|
25 |
return 0;
|
sl@0
|
26 |
}
|
sl@0
|
27 |
le_uint16 elt = SWAPW(extensionLookupType);
|
sl@0
|
28 |
|
sl@0
|
29 |
if (elt != lookupType) {
|
sl@0
|
30 |
le_uint32 extOffset = SWAPL(extensionOffset);
|
sl@0
|
31 |
LookupSubtable *subtable = (LookupSubtable *) ((char *) this + extOffset);
|
sl@0
|
32 |
|
sl@0
|
33 |
return lookupProcessor->applySubtable(subtable, elt, glyphIterator, fontInstance, success);
|
sl@0
|
34 |
}
|
sl@0
|
35 |
|
sl@0
|
36 |
return 0;
|
sl@0
|
37 |
}
|
sl@0
|
38 |
|
sl@0
|
39 |
U_NAMESPACE_END
|