os/textandloc/fontservices/textshaperplugin/IcuSource/layout/Lookups.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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