summaryrefslogtreecommitdiff
path: root/sfntly/table/table.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sfntly/table/table.cc')
-rw-r--r--sfntly/table/table.cc134
1 files changed, 13 insertions, 121 deletions
diff --git a/sfntly/table/table.cc b/sfntly/table/table.cc
index 10276aa..7183d38 100644
--- a/sfntly/table/table.cc
+++ b/sfntly/table/table.cc
@@ -18,6 +18,8 @@
#include "sfntly/font.h"
#include "sfntly/tag.h"
+#include "sfntly/table/bitmap/ebdt_table.h"
+#include "sfntly/table/bitmap/eblc_table.h"
#include "sfntly/table/core/cmap_table.h"
#include "sfntly/table/core/font_header_table.h"
#include "sfntly/table/core/horizontal_header_table.h"
@@ -25,6 +27,7 @@
#include "sfntly/table/core/maximum_profile_table.h"
#include "sfntly/table/core/name_table.h"
#include "sfntly/table/core/os2_table.h"
+#include "sfntly/table/table_based_table_builder.h"
#include "sfntly/table/truetype/glyph_table.h"
#include "sfntly/table/truetype/loca_table.h"
@@ -49,54 +52,6 @@ Table::Table(Header* header, ReadableFontData* data)
}
/******************************************************************************
- * Table::Header class
- ******************************************************************************/
-Table::Header::Header(int32_t tag)
- : tag_(tag),
- offset_(0),
- offset_valid_(false),
- length_(0),
- length_valid_(false),
- checksum_(0),
- checksum_valid_(false) {
-}
-
-Table::Header::Header(int32_t tag, int32_t length)
- : tag_(tag),
- offset_(0),
- offset_valid_(false),
- length_(length),
- length_valid_(true),
- checksum_(0),
- checksum_valid_(false) {
-}
-
-Table::Header::Header(int32_t tag,
- int64_t checksum,
- int32_t offset,
- int32_t length)
- : tag_(tag),
- offset_(offset),
- offset_valid_(true),
- length_(length),
- length_valid_(true),
- checksum_(checksum),
- checksum_valid_(true) {
-}
-
-Table::Header::~Header() {}
-
-bool HeaderComparatorByOffset::operator() (const TableHeaderPtr lhs,
- const TableHeaderPtr rhs) {
- return lhs->offset_ > rhs->offset_;
-}
-
-bool HeaderComparatorByTag::operator() (const TableHeaderPtr lhs,
- const TableHeaderPtr rhs) {
- return lhs->tag_ > rhs->tag_;
-}
-
-/******************************************************************************
* Table::Builder class
******************************************************************************/
Table::Builder::~Builder() {
@@ -155,12 +110,21 @@ Table::Builder* Table::Builder::GetBuilder(Header* header,
}/* else if (tag == Tag::prep) {
builder_raw = static_cast<Table::Builder*>(
ControlProgramTable::Builder::CreateBuilder(header, table_data));
+ }*/ else if (tag == Tag::EBDT || tag == Tag::bdat) {
+ builder_raw = static_cast<Table::Builder*>(
+ EbdtTable::Builder::CreateBuilder(header, table_data));
+ } else if (tag == Tag::EBLC || tag == Tag::bloc) {
+ builder_raw = static_cast<Table::Builder*>(
+ EblcTable::Builder::CreateBuilder(header, table_data));
+ }/* else if (tag == Tag::EBSC) {
+ builder_raw = static_cast<Table::Builder*>(
+ EbscTable::Builder::CreateBuilder(header, table_data));
}*/ else if (tag == Tag::bhed) {
builder_raw = static_cast<Table::Builder*>(
FontHeaderTable::Builder::CreateBuilder(header, table_data));
} else {
builder_raw = static_cast<Table::Builder*>(
- Table::GenericTableBuilder::CreateBuilder(header, table_data));
+ GenericTableBuilder::CreateBuilder(header, table_data));
}
return builder_raw;
@@ -180,76 +144,4 @@ Table::Builder::Builder(Header* header) {
header_ = header;
}
-/******************************************************************************
- * Table::TableBasedTableBuilder class
- ******************************************************************************/
-Table::TableBasedTableBuilder::~TableBasedTableBuilder() {}
-
-int32_t Table::TableBasedTableBuilder::SubSerialize(WritableFontData* data) {
- UNREFERENCED_PARAMETER(data);
- return 0;
-}
-
-bool Table::TableBasedTableBuilder::SubReadyToSerialize() {
- return false;
-}
-
-int32_t Table::TableBasedTableBuilder::SubDataSizeToSerialize() {
- return 0;
-}
-
-void Table::TableBasedTableBuilder::SubDataSet() {
- table_ = NULL;
-}
-
-CALLER_ATTACH FontDataTable* Table::TableBasedTableBuilder::Build() {
- FontDataTablePtr table = static_cast<FontDataTable*>(GetTable());
- return table.Detach();
-}
-
-Table::TableBasedTableBuilder::TableBasedTableBuilder(Header* header,
- WritableFontData* data)
- : Builder(header, data) {
-}
-
-Table::TableBasedTableBuilder::TableBasedTableBuilder(Header* header,
- ReadableFontData* data)
- : Builder(header, data) {
-}
-
-Table::TableBasedTableBuilder::TableBasedTableBuilder(Header* header)
- : Builder(header) {
-}
-
-Table* Table::TableBasedTableBuilder::GetTable() {
- if (table_ == NULL) {
- table_.Attach(down_cast<Table*>(SubBuildTable(InternalReadData())));
- }
- return table_;
-}
-
-/******************************************************************************
- * Table::GenericTableBuilder class
- ******************************************************************************/
-Table::GenericTableBuilder::GenericTableBuilder(Header* header,
- WritableFontData* data)
- : TableBasedTableBuilder(header, data) {
-}
-
-CALLER_ATTACH FontDataTable*
- Table::GenericTableBuilder::SubBuildTable(ReadableFontData* data) {
- // Note: In C++ port, we use GenericTable, the ref-counted version of Table
- UNREFERENCED_PARAMETER(data);
- FontDataTablePtr table = new GenericTable(this->header(), InternalReadData());
- return table.Detach();
-}
-
-CALLER_ATTACH Table::GenericTableBuilder*
- Table::GenericTableBuilder::CreateBuilder(Header* header,
- WritableFontData* data) {
- Ptr<Table::GenericTableBuilder> builder =
- new Table::GenericTableBuilder(header, data);
- return builder.Detach();
-}
-
} // namespace sfntly