3  * (C) Copyright IBM Corp.  and others 1998-2013 - All Rights Reserved 
   8 #include "MorphTables.h" 
   9 #include "SubtableProcessor2.h" 
  10 #include "NonContextualGlyphSubst.h" 
  11 #include "NonContextualGlyphSubstProc2.h" 
  12 #include "TrimmedArrayProcessor2.h" 
  13 #include "LEGlyphStorage.h" 
  18 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(TrimmedArrayProcessor2
) 
  20 TrimmedArrayProcessor2::TrimmedArrayProcessor2() 
  24 TrimmedArrayProcessor2::TrimmedArrayProcessor2(const MorphSubtableHeader2 
*morphSubtableHeader
) 
  25   : NonContextualGlyphSubstitutionProcessor2(morphSubtableHeader
) 
  27     const NonContextualGlyphSubstitutionHeader2 
*header 
= (const NonContextualGlyphSubstitutionHeader2 
*) morphSubtableHeader
; 
  29     trimmedArrayLookupTable 
= (const TrimmedArrayLookupTable 
*) &header
->table
; 
  30     firstGlyph 
= SWAPW(trimmedArrayLookupTable
->firstGlyph
); 
  31     lastGlyph 
= firstGlyph 
+ SWAPW(trimmedArrayLookupTable
->glyphCount
); 
  34 TrimmedArrayProcessor2::~TrimmedArrayProcessor2() 
  38 void TrimmedArrayProcessor2::process(LEGlyphStorage 
&glyphStorage
) 
  40     le_int32 glyphCount 
= glyphStorage
.getGlyphCount(); 
  43     for (glyph 
= 0; glyph 
< glyphCount
; glyph 
+= 1) { 
  44         LEGlyphID thisGlyph 
= glyphStorage
[glyph
]; 
  45         TTGlyphID ttGlyph 
= (TTGlyphID
) LE_GET_GLYPH(thisGlyph
); 
  47         if ((ttGlyph 
> firstGlyph
) && (ttGlyph 
< lastGlyph
)) { 
  48             TTGlyphID newGlyph 
= SWAPW(trimmedArrayLookupTable
->valueArray
[ttGlyph 
- firstGlyph
]); 
  50             glyphStorage
[glyph
] = LE_SET_GLYPH(thisGlyph
, newGlyph
);