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#ifndef SFNTLY_CPP_SRC_SFNTLY_TABLE_BITMAP_BIG_GLYPH_METRICS_H_ 18333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com#define SFNTLY_CPP_SRC_SFNTLY_TABLE_BITMAP_BIG_GLYPH_METRICS_H_ 19333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 20333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com#include "sfntly/table/bitmap/glyph_metrics.h" 21333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 22333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comnamespace sfntly { 23333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 24333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comclass BigGlyphMetrics : public GlyphMetrics, 25333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com public RefCounted<BigGlyphMetrics> { 26333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com public: 27333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com struct Offset { 28333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com enum { 29333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kMetricsLength = 8, 30333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 31333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kHeight = 0, 32333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kWidth = 1, 33333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kHoriBearingX = 2, 34333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kHoriBearingY = 3, 35333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kHoriAdvance = 4, 36333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kVertBearingX = 5, 37333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kVertBearingY = 6, 38333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com kVertAdvance = 7, 39333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com }; 40333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com }; 41333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 42333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com class Builder : public GlyphMetrics::Builder, 43333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com public RefCounted<Builder> { 44333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com public: 45333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com // Constructor scope altered to public because C++ does not allow base 46333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com // class to instantiate derived class with protected constructors. 47333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com explicit Builder(WritableFontData* data); 48333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com explicit Builder(ReadableFontData* data); 4953847b66af7e0c1af9928e4da2e978ed3b7c2a25arthurhsu@google.com 50333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com virtual ~Builder(); 51333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 52333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t Height(); 53333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com void SetHeight(byte_t height); 54333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t Width(); 55333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com void SetWidth(byte_t width); 56333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t HoriBearingX(); 57333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com void SetHoriBearingX(byte_t bearing); 58333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t HoriBearingY(); 59333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com void SetHoriBearingY(byte_t bearing); 60333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t HoriAdvance(); 61333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com void SetHoriAdvance(byte_t advance); 62333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t VertBearingX(); 63333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com void SetVertBearingX(byte_t bearing); 64333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t VertBearingY(); 65333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com void SetVertBearingY(byte_t bearing); 66333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t VertAdvance(); 67333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com void SetVertAdvance(byte_t advance); 68333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 69333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com virtual CALLER_ATTACH FontDataTable* SubBuildTable(ReadableFontData* data); 70333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com virtual void SubDataSet(); 71333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com virtual int32_t SubDataSizeToSerialize(); 72333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com virtual bool SubReadyToSerialize(); 73333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com virtual int32_t SubSerialize(WritableFontData* new_data); 7453847b66af7e0c1af9928e4da2e978ed3b7c2a25arthurhsu@google.com 7553847b66af7e0c1af9928e4da2e978ed3b7c2a25arthurhsu@google.com // Static instantiation function. 7653847b66af7e0c1af9928e4da2e978ed3b7c2a25arthurhsu@google.com static CALLER_ATTACH Builder* CreateBuilder(); 77333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com }; 78333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 79333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com explicit BigGlyphMetrics(ReadableFontData* data); 80333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com virtual ~BigGlyphMetrics(); 81333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 82333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t Height(); 83333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t Width(); 84333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t HoriBearingX(); 85333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t HoriBearingY(); 86333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t HoriAdvance(); 87333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t VertBearingX(); 88333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t VertBearingY(); 89333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com int32_t VertAdvance(); 90333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com}; 91333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comtypedef Ptr<BigGlyphMetrics> BigGlyphMetricsPtr; 92333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.comtypedef Ptr<BigGlyphMetrics::Builder> BigGlyphMetricsBuilderPtr; 93333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 94333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com} // namespace sfntly 95333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com 96333edd91cb32d6acfd0307ba2ae8f60baed75ff4arthurhsu@google.com#endif // SFNTLY_CPP_SRC_SFNTLY_TABLE_BITMAP_BIG_GLYPH_METRICS_H_ 97