X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..d5d484b0fbe924d3663b177965538d517ee412c1:/icuSources/layout/ContextualSubstSubtables.cpp?ds=sidebyside diff --git a/icuSources/layout/ContextualSubstSubtables.cpp b/icuSources/layout/ContextualSubstSubtables.cpp index 863b9ab2..1d8f28c8 100644 --- a/icuSources/layout/ContextualSubstSubtables.cpp +++ b/icuSources/layout/ContextualSubstSubtables.cpp @@ -1,7 +1,5 @@ /* - * @(#)ContextualSubstSubtables.cpp 1.11 00/03/15 - * - * (C) Copyright IBM Corp. 1998-2003 - All Rights Reserved + * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved * */ @@ -57,20 +55,20 @@ le_bool ContextualSubstitutionBase::matchGlyphIDs(const TTGlyphID *glyphArray, l while (glyphCount > 0) { if (! glyphIterator->next()) { - return false; + return FALSE; } TTGlyphID glyph = (TTGlyphID) glyphIterator->getCurrGlyphID(); if (glyph != SWAPW(glyphArray[match])) { - return false; + return FALSE; } glyphCount -= 1; match += direction; } - return true; + return TRUE; } le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArray, le_uint16 glyphCount, @@ -88,7 +86,7 @@ le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArra while (glyphCount > 0) { if (! glyphIterator->next()) { - return false; + return FALSE; } LEGlyphID glyph = glyphIterator->getCurrGlyphID(); @@ -101,7 +99,7 @@ le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArra // table. If we're looking for such a class, pretend that // we found it. if (classDefinitionTable->hasGlyphClass(matchClass)) { - return false; + return FALSE; } } @@ -109,7 +107,7 @@ le_bool ContextualSubstitutionBase::matchGlyphClasses(const le_uint16 *classArra match += direction; } - return true; + return TRUE; } le_bool ContextualSubstitutionBase::matchGlyphCoverages(const Offset *coverageTableOffsetArray, le_uint16 glyphCount, @@ -128,18 +126,18 @@ le_bool ContextualSubstitutionBase::matchGlyphCoverages(const Offset *coverageTa const CoverageTable *coverageTable = (const CoverageTable *) (offsetBase + coverageTableOffset); if (! glyphIterator->next()) { - return false; + return FALSE; } if (coverageTable->getGlyphCoverage((LEGlyphID) glyphIterator->getCurrGlyphID()) < 0) { - return false; + return FALSE; } glyphCount -= 1; glyph += direction; } - return true; + return TRUE; } le_uint32 ContextualSubstitutionSubtable::process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, @@ -326,7 +324,11 @@ le_uint32 ChainingContextualSubstitutionSubtable::process(const LookupProcessor } } -const LETag emptyTag = 0; +// NOTE: This could be a #define, but that seems to confuse +// the Visual Studio .NET 2003 compiler on the calls to the +// GlyphIterator constructor. It somehow can't decide if +// emptyFeatureList matches an le_uint32 or an le_uint16... +static const FeatureMask emptyFeatureList = 0x00000000UL; le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupProcessor *lookupProcessor, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const @@ -343,7 +345,7 @@ le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupPro (const ChainSubRuleSetTable *) ((char *) this + chainSubRuleSetTableOffset); le_uint16 chainSubRuleCount = SWAPW(chainSubRuleSetTable->chainSubRuleCount); le_int32 position = glyphIterator->getCurrStreamPosition(); - GlyphIterator tempIterator(*glyphIterator, emptyTag); + GlyphIterator tempIterator(*glyphIterator, emptyFeatureList); for (le_uint16 subRule = 0; subRule < chainSubRuleCount; subRule += 1) { Offset chainSubRuleTableOffset = @@ -364,7 +366,7 @@ le_uint32 ChainingContextualSubstitutionFormat1Subtable::process(const LookupPro } tempIterator.prev(); - if (! matchGlyphIDs(chainSubRuleTable->backtrackGlyphArray, backtrackGlyphCount, &tempIterator, true)) { + if (! matchGlyphIDs(chainSubRuleTable->backtrackGlyphArray, backtrackGlyphCount, &tempIterator, TRUE)) { continue; } @@ -415,7 +417,7 @@ le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LookupPro (const ChainSubClassSetTable *) ((char *) this + chainSubClassSetTableOffset); le_uint16 chainSubClassRuleCount = SWAPW(chainSubClassSetTable->chainSubClassRuleCount); le_int32 position = glyphIterator->getCurrStreamPosition(); - GlyphIterator tempIterator(*glyphIterator, emptyTag); + GlyphIterator tempIterator(*glyphIterator, emptyFeatureList); for (le_uint16 scRule = 0; scRule < chainSubClassRuleCount; scRule += 1) { Offset chainSubClassRuleTableOffset = @@ -438,7 +440,7 @@ le_uint32 ChainingContextualSubstitutionFormat2Subtable::process(const LookupPro tempIterator.prev(); if (! matchGlyphClasses(chainSubClassRuleTable->backtrackClassArray, backtrackGlyphCount, - &tempIterator, backtrackClassDefinitionTable, true)) { + &tempIterator, backtrackClassDefinitionTable, TRUE)) { continue; } @@ -477,7 +479,7 @@ le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LookupPro const Offset *lookaheadCoverageTableOffsetArray = &inputCoverageTableOffsetArray[inputGlyphCount + 1]; le_uint16 substCount = (le_uint16) SWAPW(lookaheadCoverageTableOffsetArray[lookaheadGlyphCount]); le_int32 position = glyphIterator->getCurrStreamPosition(); - GlyphIterator tempIterator(*glyphIterator, emptyTag); + GlyphIterator tempIterator(*glyphIterator, emptyFeatureList); if (! tempIterator.prev(backtrkGlyphCount)) { return 0; @@ -485,7 +487,7 @@ le_uint32 ChainingContextualSubstitutionFormat3Subtable::process(const LookupPro tempIterator.prev(); if (! ContextualSubstitutionBase::matchGlyphCoverages(backtrackCoverageTableOffsetArray, - backtrkGlyphCount, &tempIterator, (const char *) this, true)) { + backtrkGlyphCount, &tempIterator, (const char *) this, TRUE)) { return 0; }