os/textandloc/fontservices/textshaperplugin/IcuSource/layout/LigatureSubstProc.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-2004 - All Rights Reserved
     4  *
     5  */
     6 
     7 #ifndef __LIGATURESUBSTITUTIONPROCESSOR_H
     8 #define __LIGATURESUBSTITUTIONPROCESSOR_H
     9 
    10 /**
    11  * \file
    12  * \internal
    13  */
    14 
    15 #include "LETypes.h"
    16 #include "MorphTables.h"
    17 #include "SubtableProcessor.h"
    18 #include "StateTableProcessor.h"
    19 #include "LigatureSubstitution.h"
    20 
    21 U_NAMESPACE_BEGIN
    22 
    23 class LEGlyphStorage;
    24 
    25 #define nComponents 16
    26 
    27 class LigatureSubstitutionProcessor : public StateTableProcessor
    28 {
    29 public:
    30     virtual void beginStateTable();
    31 
    32     virtual ByteOffset processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex index);
    33 
    34     virtual void endStateTable();
    35 
    36     LigatureSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader);
    37     virtual ~LigatureSubstitutionProcessor();
    38 
    39     /**
    40      * ICU "poor man's RTTI", returns a UClassID for the actual class.
    41      *
    42      * @stable ICU 2.8
    43      */
    44     virtual UClassID getDynamicClassID() const;
    45 
    46     /**
    47      * ICU "poor man's RTTI", returns a UClassID for this class.
    48      *
    49      * @stable ICU 2.8
    50      */
    51     static UClassID getStaticClassID();
    52 
    53 private:
    54     LigatureSubstitutionProcessor();
    55 
    56 protected:
    57     ByteOffset ligatureActionTableOffset;
    58     ByteOffset componentTableOffset;
    59     ByteOffset ligatureTableOffset;
    60 
    61     const LigatureSubstitutionStateEntry *entryTable;
    62 
    63     le_int32 componentStack[nComponents];
    64     le_int16 m;
    65 
    66     const LigatureSubstitutionHeader *ligatureSubstitutionHeader;
    67 
    68 };
    69 
    70 U_NAMESPACE_END
    71 #endif