Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright 2011 Google Inc. All Rights Reserved.
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #include "sfntly/table/core/horizontal_header_table.h"
     18 
     19 namespace sfntly {
     20 /******************************************************************************
     21  * HorizontalHeaderTable class
     22  ******************************************************************************/
     23 HorizontalHeaderTable:: ~HorizontalHeaderTable() {}
     24 
     25 int32_t HorizontalHeaderTable::TableVersion() {
     26   return data_->ReadFixed(Offset::kVersion);
     27 }
     28 
     29 int32_t HorizontalHeaderTable::Ascender() {
     30   return data_->ReadShort(Offset::kAscender);
     31 }
     32 
     33 int32_t HorizontalHeaderTable::Descender() {
     34   return data_->ReadShort(Offset::kDescender);
     35 }
     36 
     37 int32_t HorizontalHeaderTable::LineGap() {
     38   return data_->ReadShort(Offset::kLineGap);
     39 }
     40 
     41 int32_t HorizontalHeaderTable::AdvanceWidthMax() {
     42   return data_->ReadUShort(Offset::kAdvanceWidthMax);
     43 }
     44 
     45 int32_t HorizontalHeaderTable::MinLeftSideBearing() {
     46   return data_->ReadShort(Offset::kMinLeftSideBearing);
     47 }
     48 
     49 int32_t HorizontalHeaderTable::MinRightSideBearing() {
     50   return data_->ReadShort(Offset::kMinRightSideBearing);
     51 }
     52 
     53 int32_t HorizontalHeaderTable::XMaxExtent() {
     54   return data_->ReadShort(Offset::kXMaxExtent);
     55 }
     56 
     57 int32_t HorizontalHeaderTable::CaretSlopeRise() {
     58   return data_->ReadShort(Offset::kCaretSlopeRise);
     59 }
     60 
     61 int32_t HorizontalHeaderTable::CaretSlopeRun() {
     62   return data_->ReadShort(Offset::kCaretSlopeRun);
     63 }
     64 
     65 int32_t HorizontalHeaderTable::CaretOffset() {
     66   return data_->ReadShort(Offset::kCaretOffset);
     67 }
     68 
     69 int32_t HorizontalHeaderTable::MetricDataFormat() {
     70   return data_->ReadShort(Offset::kMetricDataFormat);
     71 }
     72 
     73 int32_t HorizontalHeaderTable::NumberOfHMetrics() {
     74   return data_->ReadUShort(Offset::kNumberOfHMetrics);
     75 }
     76 
     77 HorizontalHeaderTable:: HorizontalHeaderTable(Header* header,
     78                                               ReadableFontData* data)
     79     : Table(header, data) {
     80 }
     81 
     82 /******************************************************************************
     83  * HorizontalHeaderTable::Builder class
     84  ******************************************************************************/
     85 HorizontalHeaderTable::Builder::Builder(Header* header, WritableFontData* data)
     86     : TableBasedTableBuilder(header, data) {
     87 }
     88 
     89 HorizontalHeaderTable::Builder::Builder(Header* header, ReadableFontData* data)
     90     : TableBasedTableBuilder(header, data) {
     91 }
     92 
     93 HorizontalHeaderTable::Builder::~Builder() {}
     94 
     95 CALLER_ATTACH FontDataTable*
     96     HorizontalHeaderTable::Builder::SubBuildTable(ReadableFontData* data) {
     97   FontDataTablePtr table = new HorizontalHeaderTable(header(), data);
     98   return table.Detach();
     99 }
    100 
    101 CALLER_ATTACH HorizontalHeaderTable::Builder*
    102     HorizontalHeaderTable::Builder::CreateBuilder(Header* header,
    103                                                   WritableFontData* data) {
    104   Ptr<HorizontalHeaderTable::Builder> builder;
    105   builder = new HorizontalHeaderTable::Builder(header, data);
    106   return builder.Detach();
    107 }
    108 
    109 int32_t HorizontalHeaderTable::Builder::TableVersion() {
    110   return InternalReadData()->ReadFixed(Offset::kVersion);
    111 }
    112 
    113 void HorizontalHeaderTable::Builder::SetTableVersion(int32_t version) {
    114   InternalWriteData()->WriteFixed(Offset::kVersion, version);
    115 }
    116 
    117 int32_t HorizontalHeaderTable::Builder::Ascender() {
    118   return InternalReadData()->ReadShort(Offset::kAscender);
    119 }
    120 
    121 void HorizontalHeaderTable::Builder::SetAscender(int32_t ascender) {
    122   InternalWriteData()->WriteShort(Offset::kVersion, ascender);
    123 }
    124 
    125 int32_t HorizontalHeaderTable::Builder::Descender() {
    126   return InternalReadData()->ReadShort(Offset::kDescender);
    127 }
    128 
    129 void HorizontalHeaderTable::Builder::SetDescender(int32_t descender) {
    130   InternalWriteData()->WriteShort(Offset::kDescender, descender);
    131 }
    132 
    133 int32_t HorizontalHeaderTable::Builder::LineGap() {
    134   return InternalReadData()->ReadShort(Offset::kLineGap);
    135 }
    136 
    137 void HorizontalHeaderTable::Builder::SetLineGap(int32_t line_gap) {
    138   InternalWriteData()->WriteShort(Offset::kLineGap, line_gap);
    139 }
    140 
    141 int32_t HorizontalHeaderTable::Builder::AdvanceWidthMax() {
    142   return InternalReadData()->ReadUShort(Offset::kAdvanceWidthMax);
    143 }
    144 
    145 void HorizontalHeaderTable::Builder::SetAdvanceWidthMax(int32_t value) {
    146   InternalWriteData()->WriteUShort(Offset::kAdvanceWidthMax, value);
    147 }
    148 
    149 int32_t HorizontalHeaderTable::Builder::MinLeftSideBearing() {
    150   return InternalReadData()->ReadShort(Offset::kMinLeftSideBearing);
    151 }
    152 
    153 void HorizontalHeaderTable::Builder::SetMinLeftSideBearing(int32_t value) {
    154   InternalWriteData()->WriteShort(Offset::kMinLeftSideBearing, value);
    155 }
    156 
    157 int32_t HorizontalHeaderTable::Builder::MinRightSideBearing() {
    158   return InternalReadData()->ReadShort(Offset::kMinRightSideBearing);
    159 }
    160 
    161 void HorizontalHeaderTable::Builder::SetMinRightSideBearing(int32_t value) {
    162   InternalWriteData()->WriteShort(Offset::kMinRightSideBearing, value);
    163 }
    164 
    165 int32_t HorizontalHeaderTable::Builder::XMaxExtent() {
    166   return InternalReadData()->ReadShort(Offset::kXMaxExtent);
    167 }
    168 
    169 void HorizontalHeaderTable::Builder::SetXMaxExtent(int32_t value) {
    170   InternalWriteData()->WriteShort(Offset::kXMaxExtent, value);
    171 }
    172 
    173 int32_t HorizontalHeaderTable::Builder::CaretSlopeRise() {
    174   return InternalReadData()->ReadUShort(Offset::kCaretSlopeRise);
    175 }
    176 
    177 void HorizontalHeaderTable::Builder::SetCaretSlopeRise(int32_t value) {
    178   InternalWriteData()->WriteUShort(Offset::kCaretSlopeRise, value);
    179 }
    180 
    181 int32_t HorizontalHeaderTable::Builder::CaretSlopeRun() {
    182   return InternalReadData()->ReadUShort(Offset::kCaretSlopeRun);
    183 }
    184 
    185 void HorizontalHeaderTable::Builder::SetCaretSlopeRun(int32_t value) {
    186   InternalWriteData()->WriteUShort(Offset::kCaretSlopeRun, value);
    187 }
    188 
    189 int32_t HorizontalHeaderTable::Builder::CaretOffset() {
    190   return InternalReadData()->ReadUShort(Offset::kCaretOffset);
    191 }
    192 
    193 void HorizontalHeaderTable::Builder::SetCaretOffset(int32_t value) {
    194   InternalWriteData()->WriteUShort(Offset::kCaretOffset, value);
    195 }
    196 
    197 int32_t HorizontalHeaderTable::Builder::MetricDataFormat() {
    198   return InternalReadData()->ReadUShort(Offset::kMetricDataFormat);
    199 }
    200 
    201 void HorizontalHeaderTable::Builder::SetMetricDataFormat(int32_t value) {
    202   InternalWriteData()->WriteUShort(Offset::kMetricDataFormat, value);
    203 }
    204 
    205 int32_t HorizontalHeaderTable::Builder::NumberOfHMetrics() {
    206   return InternalReadData()->ReadUShort(Offset::kNumberOfHMetrics);
    207 }
    208 
    209 void HorizontalHeaderTable::Builder::SetNumberOfHMetrics(int32_t value) {
    210   InternalWriteData()->WriteUShort(Offset::kNumberOfHMetrics, value);
    211 }
    212 
    213 }  // namespace sfntly
    214