X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/b75a7d8f3b4adbae880cab104ce2c6a50eee4db2..ef6cf650f4a75c3f97de06b51fa104f2069b9ea2:/icuSources/layout/GlyphSubstitutionTables.cpp diff --git a/icuSources/layout/GlyphSubstitutionTables.cpp b/icuSources/layout/GlyphSubstitutionTables.cpp index b5231a7d..e5eeff21 100644 --- a/icuSources/layout/GlyphSubstitutionTables.cpp +++ b/icuSources/layout/GlyphSubstitutionTables.cpp @@ -1,7 +1,6 @@ /* - * @(#)GlyphSubstitutionTables.cpp 1.9 00/03/15 * - * (C) Copyright IBM Corp. 1998-2003 - All Rights Reserved + * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved * */ @@ -10,36 +9,32 @@ #include "OpenTypeTables.h" #include "Lookups.h" #include "GlyphDefinitionTables.h" -#include "GlyphPositionAdjustments.h" #include "GlyphSubstitutionTables.h" #include "GlyphSubstLookupProc.h" #include "ScriptAndLanguage.h" +#include "LEGlyphStorage.h" #include "LESwaps.h" U_NAMESPACE_BEGIN -void GlyphSubstitutionTableHeader::process(LEGlyphID *glyphs, const LETag **glyphTags, le_int32 glyphCount, - le_bool rightToLeft, LETag scriptTag, LETag languageTag, - const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, - const LEGlyphFilter *filter, const LETag *featureOrder) const +le_int32 GlyphSubstitutionTableHeader::process(const LEReferenceTo &base, + LEGlyphStorage &glyphStorage, + le_bool rightToLeft, + LETag scriptTag, + LETag languageTag, + const LEReferenceTo &glyphDefinitionTableHeader, + const LEGlyphFilter *filter, + const FeatureMap *featureMap, + le_int32 featureMapCount, + le_bool featureOrder, + LEErrorCode &success) const { - GlyphSubstitutionLookupProcessor processor(this, scriptTag, languageTag, filter, featureOrder); + if (LE_FAILURE(success)) { + return 0; + } - processor.process(glyphs, NULL, glyphTags, glyphCount, rightToLeft, glyphDefinitionTableHeader, NULL); -} - -le_bool GlyphSubstitutionTableHeader::coversScript(LETag scriptTag) const -{ - const ScriptListTable *scriptListTable = (const ScriptListTable *) ((char *)this + SWAPW(scriptListOffset)); - - return scriptListTable->findScript(scriptTag) != NULL; -} - -le_bool GlyphSubstitutionTableHeader::coversScriptAndLanguage(LETag scriptTag, LETag languageTag) const -{ - const ScriptListTable *scriptListTable = (const ScriptListTable *) ((char *)this + SWAPW(scriptListOffset)); - - return scriptListTable->findLanguage(scriptTag, languageTag, true) != NULL; + GlyphSubstitutionLookupProcessor processor(base, scriptTag, languageTag, filter, featureMap, featureMapCount, featureOrder, success); + return processor.process(glyphStorage, NULL, rightToLeft, glyphDefinitionTableHeader, NULL, success); } U_NAMESPACE_END