1472N/A * or visit www.oracle.com if you need additional information or have any
0N/A#include "OpenTypeTables.h"
0N/A#include "GlyphDefinitionTables.h"
0N/A#include "GlyphPositionAdjustments.h"
0N/A#include "GlyphIterator.h"
0N/A#include "LEGlyphStorage.h"
0N/AGlyphIterator::GlyphIterator(LEGlyphStorage &theGlyphStorage, GlyphPositionAdjustments *theGlyphPositionAdjustments, le_bool rightToLeft, le_uint16 theLookupFlags,
0N/A FeatureMask theFeatureMask, const LEReferenceTo<GlyphDefinitionTableHeader> &theGlyphDefinitionTableHeader)
0N/A srcIndex(-1), destIndex(-1), lookupFlags(theLookupFlags), featureMask(theFeatureMask), glyphGroup(0),
0N/A if (rightToLeft) {
0N/A glyphGroup = 0;
0N/A glyphGroup = 0;
0N/A return newGlyphCount;
if (direction < 0) {
if (direction < 0) {
if (direction < 0) {
if (direction < 0) {
next();
if (direction < 0) {
void GlyphIterator::adjustCurrGlyphPositionAdjustment(float xPlacementAdjust, float yPlacementAdjust,
if (direction < 0) {
if (direction < 0) {
if (direction < 0) {
if (direction < 0) {
if (direction < 0) {
if (direction < 0) {
if (direction < 0) {
return TRUE;
switch (glyphClass)
case gcdNoGlyphClass:
return FALSE;
case gcdSimpleGlyph:
case gcdLigatureGlyph:
case gcdMarkGlyph:
return TRUE;
return FALSE;
case gcdComponentGlyph:
return FALSE;
if (featureMask == 0) {
return TRUE;
return ((fm & featureMask) == featureMask) && (!matchGroup || (le_int32)(fm & LE_GLYPH_GROUP_MASK) == glyphGroup);
while (nextInternal()) {
return TRUE;
return FALSE;
//fprintf(stderr,"%s:%d:%s: newPosition = %d, delta = %d\n", __FILE__, __LINE__, __FUNCTION__, newPosition, delta);
//fprintf(stderr,"%s:%d:%s: exit position = %d, delta = %d\n", __FILE__, __LINE__, __FUNCTION__, position, delta);
//fprintf(stderr,"%s:%d:%s: newPosition = %d, delta = %d\n", __FILE__, __LINE__, __FUNCTION__, newPosition, delta);
//fprintf(stderr,"%s:%d:%s: exit position = %d, delta = %d\n", __FILE__, __LINE__, __FUNCTION__, position, delta);
return component;
} while (newPosition != prevLimit && glyphStorage[newPosition] != 0xFFFE && filterGlyph(newPosition));