sl@0: /*
sl@0:  *
sl@0:  * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
sl@0:  *
sl@0:  */
sl@0: 
sl@0: #ifndef __GLYPHDEFINITIONTABLES_H
sl@0: #define __GLYPHDEFINITIONTABLES_H
sl@0: 
sl@0: /**
sl@0:  * \file
sl@0:  * \internal
sl@0:  */
sl@0: 
sl@0: #include "LETypes.h"
sl@0: #include "OpenTypeTables.h"
sl@0: #include "ClassDefinitionTables.h"
sl@0: 
sl@0: U_NAMESPACE_BEGIN
sl@0: 
sl@0: typedef ClassDefinitionTable GlyphClassDefinitionTable;
sl@0: 
sl@0: enum GlyphClassDefinitions
sl@0: {
sl@0:     gcdNoGlyphClass     = 0,
sl@0:     gcdSimpleGlyph      = 1,
sl@0:     gcdLigatureGlyph    = 2,
sl@0:     gcdMarkGlyph        = 3,
sl@0:     gcdComponentGlyph   = 4
sl@0: };
sl@0: 
sl@0: struct AttachmentListTable
sl@0: {
sl@0:     Offset  coverageTableOffset;
sl@0:     le_uint16  glyphCount;
sl@0:     Offset  attachPointTableOffsetArray[ANY_NUMBER];
sl@0: };
sl@0: 
sl@0: struct AttachPointTable
sl@0: {
sl@0:     le_uint16  pointCount;
sl@0:     le_uint16  pointIndexArray[ANY_NUMBER];
sl@0: };
sl@0: 
sl@0: struct LigatureCaretListTable
sl@0: {
sl@0:     Offset  coverageTableOffset;
sl@0:     le_uint16  ligGlyphCount;
sl@0:     Offset  ligGlyphTableOffsetArray[ANY_NUMBER];
sl@0: };
sl@0: 
sl@0: struct LigatureGlyphTable
sl@0: {
sl@0:     le_uint16  caretCount;
sl@0:     Offset  caretValueTableOffsetArray[ANY_NUMBER];
sl@0: };
sl@0: 
sl@0: struct CaretValueTable
sl@0: {
sl@0:     le_uint16  caretValueFormat;
sl@0: };
sl@0: 
sl@0: struct CaretValueFormat1Table : CaretValueTable
sl@0: {
sl@0:     le_int16   coordinate;
sl@0: };
sl@0: 
sl@0: struct CaretValueFormat2Table : CaretValueTable
sl@0: {
sl@0:     le_uint16  caretValuePoint;
sl@0: };
sl@0: 
sl@0: struct CaretValueFormat3Table : CaretValueTable
sl@0: {
sl@0:     le_int16   coordinate;
sl@0:     Offset  deviceTableOffset;
sl@0: };
sl@0: 
sl@0: typedef ClassDefinitionTable MarkAttachClassDefinitionTable;
sl@0: 
sl@0: struct GlyphDefinitionTableHeader
sl@0: {
sl@0:     fixed32 version;
sl@0:     Offset  glyphClassDefOffset;
sl@0:     Offset  attachListOffset;
sl@0:     Offset  ligCaretListOffset;
sl@0:     Offset  MarkAttachClassDefOffset;
sl@0: 
sl@0:     const GlyphClassDefinitionTable *getGlyphClassDefinitionTable() const;
sl@0:     const AttachmentListTable *getAttachmentListTable()const ;
sl@0:     const LigatureCaretListTable *getLigatureCaretListTable() const;
sl@0:     const MarkAttachClassDefinitionTable *getMarkAttachClassDefinitionTable() const;
sl@0: };
sl@0: 
sl@0: U_NAMESPACE_END
sl@0: #endif