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