Home | History | Annotate | Download | only in layout
      1 /*
      2  *
      3  * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved
      4  *
      5  */
      6 
      7 #ifndef __LOOKUPS_H
      8 #define __LOOKUPS_H
      9 
     10 /**
     11  * \file
     12  * \internal
     13  */
     14 
     15 #include "LETypes.h"
     16 #include "OpenTypeTables.h"
     17 
     18 U_NAMESPACE_BEGIN
     19 
     20 enum LookupFlags
     21 {
     22     lfBaselineIsLogicalEnd  = 0x0001,  // The MS spec. calls this flag "RightToLeft" but this name is more accurate
     23     lfIgnoreBaseGlyphs      = 0x0002,
     24     lfIgnoreLigatures       = 0x0004,
     25     lfIgnoreMarks           = 0x0008,
     26     lfReservedMask          = 0x00F0,
     27     lfMarkAttachTypeMask    = 0xFF00,
     28     lfMarkAttachTypeShift   = 8
     29 };
     30 
     31 struct LookupSubtable
     32 {
     33     le_uint16 subtableFormat;
     34     Offset    coverageTableOffset;
     35 
     36     inline le_int32  getGlyphCoverage(LEGlyphID glyphID) const;
     37 
     38     le_int32  getGlyphCoverage(Offset tableOffset, LEGlyphID glyphID) const;
     39 };
     40 
     41 struct LookupTable
     42 {
     43     le_uint16       lookupType;
     44     le_uint16       lookupFlags;
     45     le_uint16       subTableCount;
     46     Offset          subTableOffsetArray[ANY_NUMBER];
     47 
     48     const LookupSubtable  *getLookupSubtable(le_uint16 subtableIndex) const;
     49 };
     50 
     51 struct LookupListTable
     52 {
     53     le_uint16   lookupCount;
     54     Offset      lookupTableOffsetArray[ANY_NUMBER];
     55 
     56     const LookupTable *getLookupTable(le_uint16 lookupTableIndex) const;
     57 };
     58 
     59 inline le_int32 LookupSubtable::getGlyphCoverage(LEGlyphID glyphID) const
     60 {
     61     return getGlyphCoverage(coverageTableOffset, glyphID);
     62 }
     63 
     64 U_NAMESPACE_END
     65 #endif
     66