diff options
Diffstat (limited to 'sfntly/table/core/horizontal_metrics_table.cc')
-rw-r--r-- | sfntly/table/core/horizontal_metrics_table.cc | 53 |
1 files changed, 22 insertions, 31 deletions
diff --git a/sfntly/table/core/horizontal_metrics_table.cc b/sfntly/table/core/horizontal_metrics_table.cc index b2463b9..67e99e0 100644 --- a/sfntly/table/core/horizontal_metrics_table.cc +++ b/sfntly/table/core/horizontal_metrics_table.cc @@ -33,11 +33,10 @@ int32_t HorizontalMetricsTable::NumberOfLSBs() { int32_t HorizontalMetricsTable::HMetricAdvanceWidth(int32_t entry) { if (entry > num_hmetrics_) { -#if defined (SFNTLY_NO_EXCEPTION) - return 0; -#else +#if !defined (SFNTLY_NO_EXCEPTION) throw IndexOutOfBoundException(); #endif + return 0; } int32_t offset = Offset::kHMetricsStart + (entry * Offset::kHMetricsSize) + Offset::kHMetricsAdvanceWidth; @@ -46,11 +45,10 @@ int32_t HorizontalMetricsTable::HMetricAdvanceWidth(int32_t entry) { int32_t HorizontalMetricsTable::HMetricLSB(int32_t entry) { if (entry > num_hmetrics_) { -#if defined (SFNTLY_NO_EXCEPTION) - return 0; -#else +#if !defined (SFNTLY_NO_EXCEPTION) throw IndexOutOfBoundException(); #endif + return 0; } int32_t offset = Offset::kHMetricsStart + (entry * Offset::kHMetricsSize) + Offset::kHMetricsLeftSideBearing; @@ -59,11 +57,10 @@ int32_t HorizontalMetricsTable::HMetricLSB(int32_t entry) { int32_t HorizontalMetricsTable::LsbTableEntry(int32_t entry) { if (entry > num_hmetrics_) { -#if defined (SFNTLY_NO_EXCEPTION) - return 0; -#else +#if !defined (SFNTLY_NO_EXCEPTION) throw IndexOutOfBoundException(); #endif + return 0; } int32_t offset = Offset::kHMetricsStart + (entry * Offset::kHMetricsSize) + Offset::kLeftSideBearingSize; @@ -85,11 +82,6 @@ int32_t HorizontalMetricsTable::LeftSideBearing(int32_t glyph_id) { } HorizontalMetricsTable::HorizontalMetricsTable(Header* header, - ReadableFontData* data) - : Table(header, data) { -} - -HorizontalMetricsTable::HorizontalMetricsTable(Header* header, ReadableFontData* data, int32_t num_hmetrics, int32_t num_glyphs) @@ -101,20 +93,16 @@ HorizontalMetricsTable::HorizontalMetricsTable(Header* header, /****************************************************************************** * HorizontalMetricsTable::Builder class ******************************************************************************/ -HorizontalMetricsTable::Builder::Builder( - FontDataTableBuilderContainer* font_builder, - Header* header, - WritableFontData* data) - : Table::TableBasedTableBuilder(font_builder, header, data) { - Init(); +HorizontalMetricsTable::Builder::Builder(Header* header, WritableFontData* data) + : Table::TableBasedTableBuilder(header, data), + num_hmetrics_(-1), + num_glyphs_(-1) { } -HorizontalMetricsTable::Builder::Builder( - FontDataTableBuilderContainer* font_builder, - Header* header, - ReadableFontData* data) - : Table::TableBasedTableBuilder(font_builder, header, data) { - Init(); +HorizontalMetricsTable::Builder::Builder(Header* header, ReadableFontData* data) + : Table::TableBasedTableBuilder(header, data), + num_hmetrics_(-1), + num_glyphs_(-1) { } HorizontalMetricsTable::Builder::~Builder() {} @@ -126,6 +114,14 @@ CALLER_ATTACH FontDataTable* return table.Detach(); } +CALLER_ATTACH HorizontalMetricsTable::Builder* + HorizontalMetricsTable::Builder::CreateBuilder(Header* header, + WritableFontData* data) { + Ptr<HorizontalMetricsTable::Builder> builder; + builder = new HorizontalMetricsTable::Builder(header, data); + return builder.Detach(); +} + void HorizontalMetricsTable::Builder::SetNumberOfHMetrics( int32_t num_hmetrics) { assert(num_hmetrics >= 0); @@ -143,9 +139,4 @@ void HorizontalMetricsTable::Builder::SetNumGlyphs(int32_t num_glyphs) { table->num_glyphs_ = num_glyphs; } -void HorizontalMetricsTable::Builder::Init() { - num_hmetrics_ = -1; - num_glyphs_ = -1; -} - } // namespace sfntly |