[pango/harfbuzz-ng: 28/57] [HB] Move OT file handling out of ot-layout



commit ed1f17cc19458b5a5e775a004cb53c3c89f6b7a4
Author: Behdad Esfahbod <behdad behdad org>
Date:   Sun Aug 2 19:57:00 2009 -0400

    [HB] Move OT file handling out of ot-layout

 pango/opentype/Makefile.am                         |    3 +-
 pango/opentype/hb-open-file-private.h              |  145 ++++++++++++++++++++
 ...yout-open-private.h => hb-open-types-private.h} |  117 +---------------
 pango/opentype/hb-ot-layout-common-private.h       |    4 +-
 pango/opentype/hb-ot-layout.cc                     |    2 +-
 pango/opentype/main.cc                             |    4 +-
 6 files changed, 157 insertions(+), 118 deletions(-)
---
diff --git a/pango/opentype/Makefile.am b/pango/opentype/Makefile.am
index 09b35b4..9f60d26 100644
--- a/pango/opentype/Makefile.am
+++ b/pango/opentype/Makefile.am
@@ -13,13 +13,14 @@ HBSOURCES =  \
 	hb-font.c \
 	hb-font-private.h \
 	hb-private.h \
+	hb-open-file-private.h \
+	hb-open-types-private.h \
 	hb-ot-layout.cc \
 	hb-ot-layout-common-private.h \
 	hb-ot-layout-gdef-private.h \
 	hb-ot-layout-gpos-private.h \
 	hb-ot-layout-gsubgpos-private.h \
 	hb-ot-layout-gsub-private.h \
-	hb-ot-layout-open-private.h \
 	hb-ot-layout-private.h \
 	hb-object-private.h \
 	$(NULL)
diff --git a/pango/opentype/hb-open-file-private.h b/pango/opentype/hb-open-file-private.h
new file mode 100644
index 0000000..9838288
--- /dev/null
+++ b/pango/opentype/hb-open-file-private.h
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2007,2008,2009  Red Hat, Inc.
+ *
+ *  This is part of HarfBuzz, an OpenType Layout engine library.
+ *
+ * Permission is hereby granted, without written agreement and without
+ * license or royalty fees, to use, copy, modify, and distribute this
+ * software and its documentation for any purpose, provided that the
+ * above copyright notice and the following two paragraphs appear in
+ * all copies of this software.
+ *
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ *
+ * Red Hat Author(s): Behdad Esfahbod
+ */
+
+#ifndef HB_OPEN_FILE_PRIVATE_H
+#define HB_OPEN_FILE_PRIVATE_H
+
+#include "hb-open-types-private.h"
+
+
+/*
+ *
+ * The OpenType Font File
+ *
+ */
+
+
+/*
+ * Organization of an OpenType Font
+ */
+
+struct OpenTypeFontFile;
+struct OffsetTable;
+struct TTCHeader;
+
+typedef struct TableDirectory
+{
+  Tag		tag;		/* 4-byte identifier. */
+  CheckSum	checkSum;	/* CheckSum for this table. */
+  ULONG		offset;		/* Offset from beginning of TrueType font
+				 * file. */
+  ULONG		length;		/* Length of this table. */
+} OpenTypeTable;
+ASSERT_SIZE (TableDirectory, 16);
+
+typedef struct OffsetTable
+{
+  friend struct OpenTypeFontFile;
+  friend struct TTCHeader;
+
+  DEFINE_TAG_ARRAY_INTERFACE (OpenTypeTable, table);	/* get_table_count(), get_table(i), get_table_tag(i) */
+  DEFINE_TAG_FIND_INTERFACE  (OpenTypeTable, table);	/* find_table_index(tag), get_table_by_tag(tag) */
+
+  private:
+  /* OpenTypeTables, in no particular order */
+  DEFINE_ARRAY_TYPE (TableDirectory, tableDir, numTables);
+
+  private:
+  Tag		sfnt_version;	/* '\0\001\0\00' if TrueType / 'OTTO' if CFF */
+  USHORT	numTables;	/* Number of tables. */
+  USHORT	searchRange;	/* (Maximum power of 2 <= numTables) x 16 */
+  USHORT	entrySelector;	/* Log2(maximum power of 2 <= numTables). */
+  USHORT	rangeShift;	/* NumTables x 16-searchRange. */
+  TableDirectory tableDir[];	/* TableDirectory entries. numTables items */
+} OpenTypeFontFace;
+ASSERT_SIZE (OffsetTable, 12);
+
+/*
+ * TrueType Collections
+ */
+
+struct TTCHeader
+{
+  friend struct OpenTypeFontFile;
+
+  STATIC_DEFINE_GET_FOR_DATA_CHECK_MAJOR_VERSION (TTCHeader, 2);
+
+  private:
+  Tag		ttcTag;		/* TrueType Collection ID string: 'ttcf' */
+  FixedVersion	version;	/* Version of the TTC Header (1.0 or 2.0),
+				 * 0x00010000 or 0x00020000 */
+  LongOffsetLongArrayOf<OffsetTable>
+		table;		/* Array of offsets to the OffsetTable for each font
+				 * from the beginning of the file */
+};
+ASSERT_SIZE (TTCHeader, 12);
+
+
+/*
+ * OpenType Font File
+ */
+
+struct OpenTypeFontFile
+{
+  static const hb_tag_t TrueTypeTag	= HB_TAG ( 0 , 1 , 0 , 0 );
+  static const hb_tag_t CFFTag		= HB_TAG ('O','T','T','O');
+  static const hb_tag_t TTCTag		= HB_TAG ('t','t','c','f');
+
+  STATIC_DEFINE_GET_FOR_DATA (OpenTypeFontFile);
+
+  unsigned int get_face_count (void) const
+  {
+    switch (tag) {
+    default: return 0;
+    case TrueTypeTag: case CFFTag: return 1;
+    case TTCTag: return TTCHeader::get_for_data ((const char *) this).table.len;
+    }
+  }
+  const OpenTypeFontFace& get_face (unsigned int i) const
+  {
+    switch (tag) {
+    default: return Null(OpenTypeFontFace);
+    /* Note: for non-collection SFNT data we ignore index.  This is because
+     * Apple dfont container is a container of SFNT's.  So each SFNT is a
+     * non-TTC, but the index is more than zero. */
+    case TrueTypeTag: case CFFTag: return *(const OffsetTable*)this;
+    case TTCTag: return this+TTCHeader::get_for_data ((const char *) this).table[i];
+    }
+  }
+
+  /* This is how you get a table */
+  inline const char* get_table_data (const OpenTypeTable& table) const
+  {
+    if (HB_UNLIKELY (table.offset == 0)) return NULL;
+    return ((const char*) this) + table.offset;
+  }
+
+  Tag		tag;		/* 4-byte identifier. */
+};
+ASSERT_SIZE (OpenTypeFontFile, 4);
+
+
+#endif /* HB_OPEN_FILE_PRIVATE_H */
diff --git a/pango/opentype/hb-ot-layout-open-private.h b/pango/opentype/hb-open-types-private.h
similarity index 77%
rename from pango/opentype/hb-ot-layout-open-private.h
rename to pango/opentype/hb-open-types-private.h
index f46e023..051853e 100644
--- a/pango/opentype/hb-ot-layout-open-private.h
+++ b/pango/opentype/hb-open-types-private.h
@@ -24,14 +24,10 @@
  * Red Hat Author(s): Behdad Esfahbod
  */
 
-#ifndef HB_OT_LAYOUT_OPEN_PRIVATE_H
-#define HB_OT_LAYOUT_OPEN_PRIVATE_H
+#ifndef HB_OPEN_TYPES_PRIVATE_H
+#define HB_OPEN_TYPES_PRIVATE_H
 
-#ifndef HB_OT_LAYOUT_CC
-#error "This file should only be included from hb-ot-layout.cc"
-#endif
-
-#include "hb-ot-layout-private.h"
+#include "hb-private.h"
 
 
 #define NO_INDEX		((unsigned int) 0xFFFF)
@@ -387,109 +383,4 @@ struct LongOffsetLongArrayOf : LongArrayOf<LongOffsetTo<Type> > {};
   }
 
 
-/*
- * Organization of an OpenType Font
- */
-
-struct OpenTypeFontFile;
-struct OffsetTable;
-struct TTCHeader;
-
-typedef struct TableDirectory
-{
-  Tag		tag;		/* 4-byte identifier. */
-  CheckSum	checkSum;	/* CheckSum for this table. */
-  ULONG		offset;		/* Offset from beginning of TrueType font
-				 * file. */
-  ULONG		length;		/* Length of this table. */
-} OpenTypeTable;
-ASSERT_SIZE (TableDirectory, 16);
-
-typedef struct OffsetTable
-{
-  friend struct OpenTypeFontFile;
-  friend struct TTCHeader;
-
-  DEFINE_TAG_ARRAY_INTERFACE (OpenTypeTable, table);	/* get_table_count(), get_table(i), get_table_tag(i) */
-  DEFINE_TAG_FIND_INTERFACE  (OpenTypeTable, table);	/* find_table_index(tag), get_table_by_tag(tag) */
-
-  private:
-  /* OpenTypeTables, in no particular order */
-  DEFINE_ARRAY_TYPE (TableDirectory, tableDir, numTables);
-
-  private:
-  Tag		sfnt_version;	/* '\0\001\0\00' if TrueType / 'OTTO' if CFF */
-  USHORT	numTables;	/* Number of tables. */
-  USHORT	searchRange;	/* (Maximum power of 2 <= numTables) x 16 */
-  USHORT	entrySelector;	/* Log2(maximum power of 2 <= numTables). */
-  USHORT	rangeShift;	/* NumTables x 16-searchRange. */
-  TableDirectory tableDir[];	/* TableDirectory entries. numTables items */
-} OpenTypeFontFace;
-ASSERT_SIZE (OffsetTable, 12);
-
-/*
- * TrueType Collections
- */
-
-struct TTCHeader
-{
-  friend struct OpenTypeFontFile;
-
-  STATIC_DEFINE_GET_FOR_DATA_CHECK_MAJOR_VERSION (TTCHeader, 2);
-
-  private:
-  Tag		ttcTag;		/* TrueType Collection ID string: 'ttcf' */
-  FixedVersion	version;	/* Version of the TTC Header (1.0 or 2.0),
-				 * 0x00010000 or 0x00020000 */
-  LongOffsetLongArrayOf<OffsetTable>
-		table;		/* Array of offsets to the OffsetTable for each font
-				 * from the beginning of the file */
-};
-ASSERT_SIZE (TTCHeader, 12);
-
-
-/*
- * OpenType Font File
- */
-
-struct OpenTypeFontFile
-{
-  static const hb_tag_t TrueTypeTag	= HB_TAG ( 0 , 1 , 0 , 0 );
-  static const hb_tag_t CFFTag		= HB_TAG ('O','T','T','O');
-  static const hb_tag_t TTCTag		= HB_TAG ('t','t','c','f');
-
-  STATIC_DEFINE_GET_FOR_DATA (OpenTypeFontFile);
-
-  unsigned int get_face_count (void) const
-  {
-    switch (tag) {
-    default: return 0;
-    case TrueTypeTag: case CFFTag: return 1;
-    case TTCTag: return TTCHeader::get_for_data ((const char *) this).table.len;
-    }
-  }
-  const OpenTypeFontFace& get_face (unsigned int i) const
-  {
-    switch (tag) {
-    default: return Null(OpenTypeFontFace);
-    /* Note: for non-collection SFNT data we ignore index.  This is because
-     * Apple dfont container is a container of SFNT's.  So each SFNT is a
-     * non-TTC, but the index is more than zero. */
-    case TrueTypeTag: case CFFTag: return *(const OffsetTable*)this;
-    case TTCTag: return this+TTCHeader::get_for_data ((const char *) this).table[i];
-    }
-  }
-
-  /* This is how you get a table */
-  inline const char* get_table_data (const OpenTypeTable& table) const
-  {
-    if (HB_UNLIKELY (table.offset == 0)) return NULL;
-    return ((const char*) this) + table.offset;
-  }
-
-  Tag		tag;		/* 4-byte identifier. */
-};
-ASSERT_SIZE (OpenTypeFontFile, 4);
-
-
-#endif /* HB_OT_LAYOUT_OPEN_PRIVATE_H */
+#endif /* HB_OPEN_TYPES_PRIVATE_H */
diff --git a/pango/opentype/hb-ot-layout-common-private.h b/pango/opentype/hb-ot-layout-common-private.h
index c95fc00..2ee2ce2 100644
--- a/pango/opentype/hb-ot-layout-common-private.h
+++ b/pango/opentype/hb-ot-layout-common-private.h
@@ -27,7 +27,9 @@
 #ifndef HB_OT_LAYOUT_COMMON_PRIVATE_H
 #define HB_OT_LAYOUT_COMMON_PRIVATE_H
 
-#include "hb-ot-layout-open-private.h"
+#include "hb-ot-layout-private.h"
+
+#include "hb-open-types-private.h"
 
 
 /*
diff --git a/pango/opentype/hb-ot-layout.cc b/pango/opentype/hb-ot-layout.cc
index a1fcdbe..82ceaee 100644
--- a/pango/opentype/hb-ot-layout.cc
+++ b/pango/opentype/hb-ot-layout.cc
@@ -30,7 +30,7 @@
 
 #include "hb-ot-layout-private.h"
 
-#include "hb-ot-layout-open-private.h"
+#include "hb-open-file-private.h"
 #include "hb-ot-layout-gdef-private.h"
 #include "hb-ot-layout-gsub-private.h"
 #include "hb-ot-layout-gpos-private.h"
diff --git a/pango/opentype/main.cc b/pango/opentype/main.cc
index 775251f..25720c8 100644
--- a/pango/opentype/main.cc
+++ b/pango/opentype/main.cc
@@ -25,9 +25,9 @@
  */
 
 #define HB_OT_LAYOUT_CC
-#include "hb-ot-layout-open-private.h"
+#include "hb-open-file-private.h"
 #include "hb-ot-layout-gdef-private.h"
-#include "hb-ot-layout-gsub-private.h"
+#include "hb-ot-layout-gsubgpos-private.h"
 
 #include <glib.h>
 #include <stdlib.h>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]