horizontal_header_table.cc revision 30d4e1f3d81ad9f7a1aa14ce6d2ceb5df56c15cd
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 19namespace sfntly { 20/****************************************************************************** 21 * HorizontalHeaderTable class 22 ******************************************************************************/ 23HorizontalHeaderTable:: ~HorizontalHeaderTable() {} 24 25int32_t HorizontalHeaderTable::TableVersion() { 26 return data_->ReadFixed(Offset::kVersion); 27} 28 29int32_t HorizontalHeaderTable::Ascender() { 30 return data_->ReadShort(Offset::kAscender); 31} 32 33int32_t HorizontalHeaderTable::Descender() { 34 return data_->ReadShort(Offset::kDescender); 35} 36 37int32_t HorizontalHeaderTable::LineGap() { 38 return data_->ReadShort(Offset::kLineGap); 39} 40 41int32_t HorizontalHeaderTable::AdvanceWidthMax() { 42 return data_->ReadUShort(Offset::kAdvanceWidthMax); 43} 44 45int32_t HorizontalHeaderTable::MinLeftSideBearing() { 46 return data_->ReadShort(Offset::kMinLeftSideBearing); 47} 48 49int32_t HorizontalHeaderTable::MinRightSideBearing() { 50 return data_->ReadShort(Offset::kMinRightSideBearing); 51} 52 53int32_t HorizontalHeaderTable::XMaxExtent() { 54 return data_->ReadShort(Offset::kXMaxExtent); 55} 56 57int32_t HorizontalHeaderTable::CaretSlopeRise() { 58 return data_->ReadShort(Offset::kCaretSlopeRise); 59} 60 61int32_t HorizontalHeaderTable::CaretSlopeRun() { 62 return data_->ReadShort(Offset::kCaretSlopeRun); 63} 64 65int32_t HorizontalHeaderTable::CaretOffset() { 66 return data_->ReadShort(Offset::kCaretOffset); 67} 68 69int32_t HorizontalHeaderTable::MetricDataFormat() { 70 return data_->ReadShort(Offset::kMetricDataFormat); 71} 72 73int32_t HorizontalHeaderTable::NumberOfHMetrics() { 74 return data_->ReadUShort(Offset::kNumberOfHMetrics); 75} 76 77HorizontalHeaderTable:: HorizontalHeaderTable(Header* header, 78 ReadableFontData* data) 79 : Table(header, data) { 80} 81 82/****************************************************************************** 83 * HorizontalHeaderTable::Builder class 84 ******************************************************************************/ 85HorizontalHeaderTable::Builder::Builder(Header* header, WritableFontData* data) 86 : TableBasedTableBuilder(header, data) { 87} 88 89HorizontalHeaderTable::Builder::Builder(Header* header, ReadableFontData* data) 90 : TableBasedTableBuilder(header, data) { 91} 92 93HorizontalHeaderTable::Builder::~Builder() {} 94 95CALLER_ATTACH FontDataTable* 96 HorizontalHeaderTable::Builder::SubBuildTable(ReadableFontData* data) { 97 FontDataTablePtr table = new HorizontalHeaderTable(header(), data); 98 return table.Detach(); 99} 100 101CALLER_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 109int32_t HorizontalHeaderTable::Builder::TableVersion() { 110 return InternalReadData()->ReadFixed(Offset::kVersion); 111} 112 113void HorizontalHeaderTable::Builder::SetTableVersion(int32_t version) { 114 InternalWriteData()->WriteFixed(Offset::kVersion, version); 115} 116 117int32_t HorizontalHeaderTable::Builder::Ascender() { 118 return InternalReadData()->ReadShort(Offset::kAscender); 119} 120 121void HorizontalHeaderTable::Builder::SetAscender(int32_t ascender) { 122 InternalWriteData()->WriteShort(Offset::kVersion, ascender); 123} 124 125int32_t HorizontalHeaderTable::Builder::Descender() { 126 return InternalReadData()->ReadShort(Offset::kDescender); 127} 128 129void HorizontalHeaderTable::Builder::SetDescender(int32_t descender) { 130 InternalWriteData()->WriteShort(Offset::kDescender, descender); 131} 132 133int32_t HorizontalHeaderTable::Builder::LineGap() { 134 return InternalReadData()->ReadShort(Offset::kLineGap); 135} 136 137void HorizontalHeaderTable::Builder::SetLineGap(int32_t line_gap) { 138 InternalWriteData()->WriteShort(Offset::kLineGap, line_gap); 139} 140 141int32_t HorizontalHeaderTable::Builder::AdvanceWidthMax() { 142 return InternalReadData()->ReadUShort(Offset::kAdvanceWidthMax); 143} 144 145void HorizontalHeaderTable::Builder::SetAdvanceWidthMax(int32_t value) { 146 InternalWriteData()->WriteUShort(Offset::kAdvanceWidthMax, value); 147} 148 149int32_t HorizontalHeaderTable::Builder::MinLeftSideBearing() { 150 return InternalReadData()->ReadShort(Offset::kMinLeftSideBearing); 151} 152 153void HorizontalHeaderTable::Builder::SetMinLeftSideBearing(int32_t value) { 154 InternalWriteData()->WriteShort(Offset::kMinLeftSideBearing, value); 155} 156 157int32_t HorizontalHeaderTable::Builder::MinRightSideBearing() { 158 return InternalReadData()->ReadShort(Offset::kMinRightSideBearing); 159} 160 161void HorizontalHeaderTable::Builder::SetMinRightSideBearing(int32_t value) { 162 InternalWriteData()->WriteShort(Offset::kMinRightSideBearing, value); 163} 164 165int32_t HorizontalHeaderTable::Builder::XMaxExtent() { 166 return InternalReadData()->ReadShort(Offset::kXMaxExtent); 167} 168 169void HorizontalHeaderTable::Builder::SetXMaxExtent(int32_t value) { 170 InternalWriteData()->WriteShort(Offset::kXMaxExtent, value); 171} 172 173int32_t HorizontalHeaderTable::Builder::CaretSlopeRise() { 174 return InternalReadData()->ReadUShort(Offset::kCaretSlopeRise); 175} 176 177void HorizontalHeaderTable::Builder::SetCaretSlopeRise(int32_t value) { 178 InternalWriteData()->WriteUShort(Offset::kCaretSlopeRise, value); 179} 180 181int32_t HorizontalHeaderTable::Builder::CaretSlopeRun() { 182 return InternalReadData()->ReadUShort(Offset::kCaretSlopeRun); 183} 184 185void HorizontalHeaderTable::Builder::SetCaretSlopeRun(int32_t value) { 186 InternalWriteData()->WriteUShort(Offset::kCaretSlopeRun, value); 187} 188 189int32_t HorizontalHeaderTable::Builder::CaretOffset() { 190 return InternalReadData()->ReadUShort(Offset::kCaretOffset); 191} 192 193void HorizontalHeaderTable::Builder::SetCaretOffset(int32_t value) { 194 InternalWriteData()->WriteUShort(Offset::kCaretOffset, value); 195} 196 197int32_t HorizontalHeaderTable::Builder::MetricDataFormat() { 198 return InternalReadData()->ReadUShort(Offset::kMetricDataFormat); 199} 200 201void HorizontalHeaderTable::Builder::SetMetricDataFormat(int32_t value) { 202 InternalWriteData()->WriteUShort(Offset::kMetricDataFormat, value); 203} 204 205int32_t HorizontalHeaderTable::Builder::NumberOfHMetrics() { 206 return InternalReadData()->ReadUShort(Offset::kNumberOfHMetrics); 207} 208 209void HorizontalHeaderTable::Builder::SetNumberOfHMetrics(int32_t value) { 210 InternalWriteData()->WriteUShort(Offset::kNumberOfHMetrics, value); 211} 212 213} // namespace sfntly 214