[ots] Shuffle code around
diff --git a/src/ots.cc b/src/ots.cc
index 3887f8a..715e508 100644
--- a/src/ots.cc
+++ b/src/ots.cc
@@ -47,67 +47,6 @@
#include "vmtx.h"
#include "vorg.h"
-namespace ots {
-
-Font::~Font() {
- m_tables.clear();
-}
-
-bool Font::ParseTable(uint32_t tag, const uint8_t* data, size_t length) {
- Table *table = NULL;
- bool ret = false;
-
- switch (tag) {
- case OTS_TAG_CFF: table = new OpenTypeCFF(this); break;
- case OTS_TAG_CMAP: table = new OpenTypeCMAP(this); break;
- case OTS_TAG_CVT: table = new OpenTypeCVT(this); break;
- case OTS_TAG_FPGM: table = new OpenTypeFPGM(this); break;
- case OTS_TAG_GASP: table = new OpenTypeGASP(this); break;
- case OTS_TAG_GDEF: table = new OpenTypeGDEF(this); break;
- case OTS_TAG_GLYF: table = new OpenTypeGLYF(this); break;
- case OTS_TAG_GPOS: table = new OpenTypeGPOS(this); break;
- case OTS_TAG_GSUB: table = new OpenTypeGSUB(this); break;
- case OTS_TAG_HDMX: table = new OpenTypeHDMX(this); break;
- case OTS_TAG_HEAD: table = new OpenTypeHEAD(this); break;
- case OTS_TAG_HHEA: table = new OpenTypeHHEA(this); break;
- case OTS_TAG_HMTX: table = new OpenTypeHMTX(this); break;
- case OTS_TAG_KERN: table = new OpenTypeKERN(this); break;
- case OTS_TAG_LOCA: table = new OpenTypeLOCA(this); break;
- case OTS_TAG_LTSH: table = new OpenTypeLTSH(this); break;
- case OTS_TAG_MATH: table = new OpenTypeMATH(this); break;
- case OTS_TAG_MAXP: table = new OpenTypeMAXP(this); break;
- case OTS_TAG_NAME: table = new OpenTypeNAME(this); break;
- case OTS_TAG_OS2: table = new OpenTypeOS2(this); break;
- case OTS_TAG_POST: table = new OpenTypePOST(this); break;
- case OTS_TAG_PREP: table = new OpenTypePREP(this); break;
- case OTS_TAG_VDMX: table = new OpenTypeVDMX(this); break;
- case OTS_TAG_VORG: table = new OpenTypeVORG(this); break;
- case OTS_TAG_VHEA: table = new OpenTypeVHEA(this); break;
- case OTS_TAG_VMTX: table = new OpenTypeVMTX(this); break;
- default: break;
- }
-
- if (table) {
- // FIXME: Parsing some tables will fail if the table is not added to
- // m_tables first.
- m_tables[tag] = table;
- ret = table->Parse(data, length);
- if (!ret)
- m_tables.erase(tag);
- }
-
- return ret;
-}
-
-Table* Font::GetTable(uint32_t tag) const {
- const std::map<uint32_t, Table*>::const_iterator it = m_tables.find(tag);
- if (it != m_tables.end())
- return it->second;
- return NULL;
-}
-
-} // namespace ots
-
namespace {
// Generate a message with or without a table tag, when 'header' is the FontFile pointer
@@ -928,6 +867,63 @@
namespace ots {
+Font::~Font() {
+ m_tables.clear();
+}
+
+bool Font::ParseTable(uint32_t tag, const uint8_t* data, size_t length) {
+ Table *table = NULL;
+ bool ret = false;
+
+ switch (tag) {
+ case OTS_TAG_CFF: table = new OpenTypeCFF(this); break;
+ case OTS_TAG_CMAP: table = new OpenTypeCMAP(this); break;
+ case OTS_TAG_CVT: table = new OpenTypeCVT(this); break;
+ case OTS_TAG_FPGM: table = new OpenTypeFPGM(this); break;
+ case OTS_TAG_GASP: table = new OpenTypeGASP(this); break;
+ case OTS_TAG_GDEF: table = new OpenTypeGDEF(this); break;
+ case OTS_TAG_GLYF: table = new OpenTypeGLYF(this); break;
+ case OTS_TAG_GPOS: table = new OpenTypeGPOS(this); break;
+ case OTS_TAG_GSUB: table = new OpenTypeGSUB(this); break;
+ case OTS_TAG_HDMX: table = new OpenTypeHDMX(this); break;
+ case OTS_TAG_HEAD: table = new OpenTypeHEAD(this); break;
+ case OTS_TAG_HHEA: table = new OpenTypeHHEA(this); break;
+ case OTS_TAG_HMTX: table = new OpenTypeHMTX(this); break;
+ case OTS_TAG_KERN: table = new OpenTypeKERN(this); break;
+ case OTS_TAG_LOCA: table = new OpenTypeLOCA(this); break;
+ case OTS_TAG_LTSH: table = new OpenTypeLTSH(this); break;
+ case OTS_TAG_MATH: table = new OpenTypeMATH(this); break;
+ case OTS_TAG_MAXP: table = new OpenTypeMAXP(this); break;
+ case OTS_TAG_NAME: table = new OpenTypeNAME(this); break;
+ case OTS_TAG_OS2: table = new OpenTypeOS2(this); break;
+ case OTS_TAG_POST: table = new OpenTypePOST(this); break;
+ case OTS_TAG_PREP: table = new OpenTypePREP(this); break;
+ case OTS_TAG_VDMX: table = new OpenTypeVDMX(this); break;
+ case OTS_TAG_VORG: table = new OpenTypeVORG(this); break;
+ case OTS_TAG_VHEA: table = new OpenTypeVHEA(this); break;
+ case OTS_TAG_VMTX: table = new OpenTypeVMTX(this); break;
+ default: break;
+ }
+
+ if (table) {
+ // FIXME: Parsing some tables will fail if the table is not added to
+ // m_tables first.
+ m_tables[tag] = table;
+ ret = table->Parse(data, length);
+ if (!ret)
+ m_tables.erase(tag);
+ }
+
+ return ret;
+}
+
+Table* Font::GetTable(uint32_t tag) const {
+ const std::map<uint32_t, Table*>::const_iterator it = m_tables.find(tag);
+ if (it != m_tables.end())
+ return it->second;
+ return NULL;
+}
+
Table::Table(Font *font, uint32_t tag)
: m_tag(tag),
m_font(font),