Home | History | Annotate | Download | only in bitmap
      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/bitmap/big_glyph_metrics.h"
     18 
     19 namespace sfntly {
     20 /******************************************************************************
     21  * BigGlyphMetrics class
     22  ******************************************************************************/
     23 BigGlyphMetrics::BigGlyphMetrics(ReadableFontData* data)
     24     : GlyphMetrics(data) {
     25 }
     26 
     27 BigGlyphMetrics::~BigGlyphMetrics() {
     28 }
     29 
     30 int32_t BigGlyphMetrics::Height() {
     31   return data_->ReadByte(Offset::kHeight);
     32 }
     33 
     34 int32_t BigGlyphMetrics::Width() {
     35   return data_->ReadByte(Offset::kWidth);
     36 }
     37 
     38 int32_t BigGlyphMetrics::HoriBearingX() {
     39   return data_->ReadByte(Offset::kHoriBearingX);
     40 }
     41 
     42 int32_t BigGlyphMetrics::HoriBearingY() {
     43   return data_->ReadByte(Offset::kHoriBearingY);
     44 }
     45 
     46 int32_t BigGlyphMetrics::HoriAdvance() {
     47   return data_->ReadByte(Offset::kHoriAdvance);
     48 }
     49 
     50 int32_t BigGlyphMetrics::VertBearingX() {
     51   return data_->ReadByte(Offset::kVertBearingX);
     52 }
     53 
     54 int32_t BigGlyphMetrics::VertBearingY() {
     55   return data_->ReadByte(Offset::kVertBearingY);
     56 }
     57 
     58 int32_t BigGlyphMetrics::VertAdvance() {
     59   return data_->ReadByte(Offset::kVertAdvance);
     60 }
     61 
     62 /******************************************************************************
     63  * BigGlyphMetrics::Builder class
     64  ******************************************************************************/
     65 BigGlyphMetrics::Builder::Builder(WritableFontData* data)
     66     : GlyphMetrics::Builder(data) {
     67 }
     68 
     69 BigGlyphMetrics::Builder::Builder(ReadableFontData* data)
     70     : GlyphMetrics::Builder(data) {
     71 }
     72 
     73 BigGlyphMetrics::Builder::~Builder() {
     74 }
     75 
     76 int32_t BigGlyphMetrics::Builder::Height() {
     77   return InternalReadData()->ReadByte(Offset::kHeight);
     78 }
     79 
     80 void BigGlyphMetrics::Builder::SetHeight(byte_t height) {
     81   InternalWriteData()->WriteByte(Offset::kHeight, height);
     82 }
     83 
     84 int32_t BigGlyphMetrics::Builder::Width() {
     85   return InternalReadData()->ReadByte(Offset::kWidth);
     86 }
     87 
     88 void BigGlyphMetrics::Builder::SetWidth(byte_t width) {
     89   InternalWriteData()->WriteByte(Offset::kWidth, width);
     90 }
     91 
     92 int32_t BigGlyphMetrics::Builder::HoriBearingX() {
     93   return InternalReadData()->ReadByte(Offset::kHoriBearingX);
     94 }
     95 
     96 void BigGlyphMetrics::Builder::SetHoriBearingX(byte_t bearing) {
     97   InternalWriteData()->WriteByte(Offset::kHoriBearingX, bearing);
     98 }
     99 
    100 int32_t BigGlyphMetrics::Builder::HoriBearingY() {
    101   return InternalReadData()->ReadByte(Offset::kHoriBearingY);
    102 }
    103 
    104 void BigGlyphMetrics::Builder::SetHoriBearingY(byte_t bearing) {
    105   InternalWriteData()->WriteByte(Offset::kHoriBearingY, bearing);
    106 }
    107 
    108 int32_t BigGlyphMetrics::Builder::HoriAdvance() {
    109   return InternalReadData()->ReadByte(Offset::kHoriAdvance);
    110 }
    111 
    112 void BigGlyphMetrics::Builder::SetHoriAdvance(byte_t advance) {
    113   InternalWriteData()->WriteByte(Offset::kHoriAdvance, advance);
    114 }
    115 
    116 int32_t BigGlyphMetrics::Builder::VertBearingX() {
    117   return InternalReadData()->ReadByte(Offset::kVertBearingX);
    118 }
    119 
    120 void BigGlyphMetrics::Builder::SetVertBearingX(byte_t bearing) {
    121   InternalWriteData()->WriteByte(Offset::kVertBearingX, bearing);
    122 }
    123 
    124 int32_t BigGlyphMetrics::Builder::VertBearingY() {
    125   return InternalReadData()->ReadByte(Offset::kVertBearingY);
    126 }
    127 
    128 void BigGlyphMetrics::Builder::SetVertBearingY(byte_t bearing) {
    129   InternalWriteData()->WriteByte(Offset::kVertBearingY, bearing);
    130 }
    131 
    132 int32_t BigGlyphMetrics::Builder::VertAdvance() {
    133   return InternalReadData()->ReadByte(Offset::kVertAdvance);
    134 }
    135 
    136 void BigGlyphMetrics::Builder::SetVertAdvance(byte_t advance) {
    137   InternalWriteData()->WriteByte(Offset::kVertAdvance, advance);
    138 }
    139 
    140 CALLER_ATTACH FontDataTable*
    141     BigGlyphMetrics::Builder::SubBuildTable(ReadableFontData* data) {
    142   BigGlyphMetricsPtr output = new BigGlyphMetrics(data);
    143   return output.Detach();
    144 }
    145 
    146 void BigGlyphMetrics::Builder::SubDataSet() {
    147   // NOP.
    148 }
    149 
    150 int32_t BigGlyphMetrics::Builder::SubDataSizeToSerialize() {
    151   return 0;
    152 }
    153 
    154 bool BigGlyphMetrics::Builder::SubReadyToSerialize() {
    155   return false;
    156 }
    157 
    158 int32_t BigGlyphMetrics::Builder::SubSerialize(WritableFontData* new_data) {
    159   return Data()->CopyTo(new_data);
    160 }
    161 
    162 // static
    163 CALLER_ATTACH
    164 BigGlyphMetrics::Builder* BigGlyphMetrics::Builder::CreateBuilder() {
    165   WritableFontDataPtr data;
    166   data.Attach(WritableFontData::CreateWritableFontData(Offset::kMetricsLength));
    167   BigGlyphMetricsBuilderPtr output = new BigGlyphMetrics::Builder(data);
    168   return output.Detach();
    169 }
    170 
    171 }  // namespace sfntly
    172