1333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com/*
2333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * Copyright 2011 Google Inc. All Rights Reserved.
3333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com *
4333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * Licensed under the Apache License, Version 2.0 (the "License");
5333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * you may not use this file except in compliance with the License.
6333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * You may obtain a copy of the License at
7333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com *
8333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com *      http://www.apache.org/licenses/LICENSE-2.0
9333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com *
10333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * Unless required by applicable law or agreed to in writing, software
11333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * distributed under the License is distributed on an "AS IS" BASIS,
12333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * See the License for the specific language governing permissions and
14333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * limitations under the License.
15333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com */
16333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
17333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com#include "sfntly/table/bitmap/small_glyph_metrics.h"
18333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
19333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comnamespace sfntly {
20333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com/******************************************************************************
21333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * SmallGlyphMetrics class
22333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com ******************************************************************************/
23333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comSmallGlyphMetrics::SmallGlyphMetrics(ReadableFontData* data)
24333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com    : GlyphMetrics(data) {
25333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
26333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
27333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comSmallGlyphMetrics::~SmallGlyphMetrics() {
28333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
29333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
30333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Height() {
31333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return data_->ReadByte(Offset::kHeight);
32333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
33333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
34333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Width() {
35333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return data_->ReadByte(Offset::kWidth);
36333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
37333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
38333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::BearingX() {
39333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return data_->ReadByte(Offset::kBearingX);
40333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
41333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
42333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::BearingY() {
43333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return data_->ReadByte(Offset::kBearingY);
44333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
45333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
46333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Advance() {
47333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return data_->ReadByte(Offset::kAdvance);
48333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
49333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
50333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com/******************************************************************************
51333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com * SmallGlyphMetrics::Builder class
52333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com ******************************************************************************/
53333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comSmallGlyphMetrics::Builder::Builder(WritableFontData* data)
54333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com    : GlyphMetrics::Builder(data) {
55333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
56333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
57333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comSmallGlyphMetrics::Builder::Builder(ReadableFontData* data)
58333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com    : GlyphMetrics::Builder(data) {
59333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
60333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
61333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comSmallGlyphMetrics::Builder::~Builder() {
62333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
63333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
64333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Builder::Height() {
65333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return InternalReadData()->ReadByte(Offset::kHeight);
66333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
67333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
68333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comvoid SmallGlyphMetrics::Builder::SetHeight(byte_t height) {
69333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  InternalWriteData()->WriteByte(Offset::kHeight, height);
70333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
71333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
72333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Builder::Width() {
73333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return InternalReadData()->ReadByte(Offset::kWidth);
74333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
75333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
76333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comvoid SmallGlyphMetrics::Builder::SetWidth(byte_t width) {
77333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  InternalWriteData()->WriteByte(Offset::kWidth, width);
78333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
79333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
80333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Builder::BearingX() {
81333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return InternalReadData()->ReadByte(Offset::kBearingX);
82333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
83333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
84333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comvoid SmallGlyphMetrics::Builder::SetBearingX(byte_t bearing) {
85333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  InternalWriteData()->WriteByte(Offset::kBearingX, bearing);
86333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
87333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
88333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Builder::BearingY() {
89333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return InternalReadData()->ReadByte(Offset::kBearingY);
90333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
91333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
92333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comvoid SmallGlyphMetrics::Builder::SetBearingY(byte_t bearing) {
93333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  InternalWriteData()->WriteByte(Offset::kBearingY, bearing);
94333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
95333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
96333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Builder::Advance() {
97333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return InternalReadData()->ReadByte(Offset::kAdvance);
98333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
99333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
100333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comvoid SmallGlyphMetrics::Builder::SetAdvance(byte_t advance) {
101333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  InternalWriteData()->WriteByte(Offset::kAdvance, advance);
102333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
103333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
104333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comCALLER_ATTACH FontDataTable*
105333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com    SmallGlyphMetrics::Builder::SubBuildTable(ReadableFontData* data) {
106333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  SmallGlyphMetricsPtr output = new SmallGlyphMetrics(data);
107333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return output.Detach();
108333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
109333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
110333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comvoid SmallGlyphMetrics::Builder::SubDataSet() {
111333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  // NOP.
112333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
113333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
114333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Builder::SubDataSizeToSerialize() {
115333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return 0;
116333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
117333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
118333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.combool SmallGlyphMetrics::Builder::SubReadyToSerialize() {
119333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return false;
120333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
121333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
122333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comint32_t SmallGlyphMetrics::Builder::SubSerialize(WritableFontData* new_data) {
123333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com  return Data()->CopyTo(new_data);
124333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}
125333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com
126333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}  // namespace sfntly
127