1 /*
   2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   3  *
   4  * This code is free software; you can redistribute it and/or modify it
   5  * under the terms of the GNU General Public License version 2 only, as
   6  * published by the Free Software Foundation.  Oracle designates this
   7  * particular file as subject to the "Classpath" exception as provided
   8  * by Oracle in the LICENSE file that accompanied this code.
   9  *
  10  * This code is distributed in the hope that it will be useful, but WITHOUT
  11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13  * version 2 for more details (a copy is included in the LICENSE file that
  14  * accompanied this code).
  15  *
  16  * You should have received a copy of the GNU General Public License version
  17  * 2 along with this work; if not, write to the Free Software Foundation,
  18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19  *
  20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21  * or visit www.oracle.com if you need additional information or have any
  22  * questions.
  23  *
  24  */
  25 
  26 /*
  27  *
  28  * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
  29  *
  30  */
  31 
  32 #ifndef __GLYPHDEFINITIONTABLES_H
  33 #define __GLYPHDEFINITIONTABLES_H
  34 
  35 /**
  36  * \file
  37  * \internal
  38  */
  39 
  40 #include "LETypes.h"
  41 #include "OpenTypeTables.h"
  42 #include "ClassDefinitionTables.h"
  43 
  44 U_NAMESPACE_BEGIN
  45 
  46 typedef ClassDefinitionTable GlyphClassDefinitionTable;
  47 
  48 enum GlyphClassDefinitions
  49 {
  50     gcdNoGlyphClass     = 0,
  51     gcdSimpleGlyph      = 1,
  52     gcdLigatureGlyph    = 2,
  53     gcdMarkGlyph        = 3,
  54     gcdComponentGlyph   = 4
  55 };
  56 
  57 struct AttachmentListTable
  58 {
  59     Offset  coverageTableOffset;
  60     le_uint16  glyphCount;
  61     Offset  attachPointTableOffsetArray[ANY_NUMBER];
  62 };
  63 LE_VAR_ARRAY(AttachmentListTable, attachPointTableOffsetArray)
  64 
  65 struct AttachPointTable
  66 {
  67     le_uint16  pointCount;
  68     le_uint16  pointIndexArray[ANY_NUMBER];
  69 };
  70 LE_VAR_ARRAY(AttachPointTable, pointIndexArray)
  71 
  72 struct LigatureCaretListTable
  73 {
  74     Offset  coverageTableOffset;
  75     le_uint16  ligGlyphCount;
  76     Offset  ligGlyphTableOffsetArray[ANY_NUMBER];
  77 };
  78 LE_VAR_ARRAY(LigatureCaretListTable, ligGlyphTableOffsetArray)
  79 
  80 struct LigatureGlyphTable
  81 {
  82     le_uint16  caretCount;
  83     Offset  caretValueTableOffsetArray[ANY_NUMBER];
  84 };
  85 LE_VAR_ARRAY(LigatureGlyphTable, caretValueTableOffsetArray)
  86 
  87 struct CaretValueTable
  88 {
  89     le_uint16  caretValueFormat;
  90 };
  91 
  92 struct CaretValueFormat1Table : CaretValueTable
  93 {
  94     le_int16   coordinate;
  95 };
  96 
  97 struct CaretValueFormat2Table : CaretValueTable
  98 {
  99     le_uint16  caretValuePoint;
 100 };
 101 
 102 struct CaretValueFormat3Table : CaretValueTable
 103 {
 104     le_int16   coordinate;
 105     Offset  deviceTableOffset;
 106 };
 107 
 108 typedef ClassDefinitionTable MarkAttachClassDefinitionTable;
 109 
 110 struct GlyphDefinitionTableHeader
 111 {
 112     fixed32 version;
 113     Offset  glyphClassDefOffset;
 114     Offset  attachListOffset;
 115     Offset  ligCaretListOffset;
 116     Offset  MarkAttachClassDefOffset;
 117 
 118     const LEReferenceTo<GlyphClassDefinitionTable>
 119     getGlyphClassDefinitionTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base,
 120                                  LEErrorCode &success) const;
 121     const LEReferenceTo<AttachmentListTable>
 122     getAttachmentListTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base,
 123                            LEErrorCode &success)const ;
 124     const LEReferenceTo<LigatureCaretListTable>
 125     getLigatureCaretListTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base,
 126                               LEErrorCode &success) const;
 127     const LEReferenceTo<MarkAttachClassDefinitionTable>
 128     getMarkAttachClassDefinitionTable(const LEReferenceTo<GlyphDefinitionTableHeader>& base,
 129                                       LEErrorCode &success) const;
 130 };
 131 
 132 U_NAMESPACE_END
 133 #endif