LCOV - code coverage report
Current view: top level - gfx/sfntly/cpp/src/sfntly/table/bitmap - bitmap_glyph.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 1 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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             : #ifndef SFNTLY_CPP_SRC_SFNTLY_TABLE_BITMAP_BITMAP_GLYPH_H_
      18             : #define SFNTLY_CPP_SRC_SFNTLY_TABLE_BITMAP_BITMAP_GLYPH_H_
      19             : 
      20             : #include <vector>
      21             : #include <map>
      22             : 
      23             : #include "sfntly/table/subtable.h"
      24             : 
      25             : namespace sfntly {
      26             : 
      27             : class BitmapGlyph : public SubTable {
      28             :  public:
      29             :   struct Offset {
      30             :     enum {
      31             :       // header
      32             :       kVersion = 0,
      33             : 
      34             :       kSmallGlyphMetricsLength = 5,
      35             :       kBigGlyphMetricsLength = 8,
      36             :       // format 1
      37             :       kGlyphFormat1_imageData = kSmallGlyphMetricsLength,
      38             : 
      39             :       // format 2
      40             :       kGlyphFormat2_imageData = kSmallGlyphMetricsLength,
      41             : 
      42             :       // format 3
      43             : 
      44             :       // format 4
      45             : 
      46             :       // format 5
      47             :       kGlyphFormat5_imageData = 0,
      48             : 
      49             :       // format 6
      50             :       kGlyphFormat6_imageData = kBigGlyphMetricsLength,
      51             : 
      52             :       // format 7
      53             :       kGlyphFormat7_imageData = kBigGlyphMetricsLength,
      54             : 
      55             :       // format 8
      56             :       kGlyphFormat8_numComponents = kSmallGlyphMetricsLength + 1,
      57             :       kGlyphFormat8_componentArray = kGlyphFormat8_numComponents +
      58             :                                      DataSize::kUSHORT,
      59             : 
      60             :       // format 9
      61             :       kGlyphFormat9_numComponents = kBigGlyphMetricsLength,
      62             :       kGlyphFormat9_componentArray = kGlyphFormat9_numComponents +
      63             :                                      DataSize::kUSHORT,
      64             : 
      65             :       // ebdtComponent
      66             :       kEbdtComponentLength = DataSize::kUSHORT + 2 * DataSize::kCHAR,
      67             :       kEbdtComponent_glyphCode = 0,
      68             :       kEbdtComponent_xOffset = 2,
      69             :       kEbdtComponent_yOffset = 3,
      70             :     };
      71             :   };
      72             : 
      73             :   // TODO(stuartg): builder is not functional at all
      74             :   // - need to add subclasses for each type of bitmap glyph
      75             :   class Builder : public SubTable::Builder {
      76             :    public:
      77             :     virtual ~Builder();
      78             : 
      79             :     virtual CALLER_ATTACH FontDataTable* SubBuildTable(ReadableFontData* data);
      80             :     virtual void SubDataSet();
      81             :     virtual int32_t SubDataSizeToSerialize();
      82             :     virtual bool SubReadyToSerialize();
      83             :     virtual int32_t SubSerialize(WritableFontData* new_data);
      84             : 
      85           0 :     int32_t format() { return format_; }
      86             : 
      87             :     static CALLER_ATTACH Builder* CreateGlyphBuilder(ReadableFontData* data,
      88             :                                                      int32_t format);
      89             : 
      90             :    protected:
      91             :     Builder(WritableFontData* data, int32_t format);
      92             :     Builder(ReadableFontData* data, int32_t format);
      93             : 
      94             :    private:
      95             :     int32_t format_;
      96             :   };
      97             : 
      98             :   virtual ~BitmapGlyph();
      99             : 
     100             :   static CALLER_ATTACH BitmapGlyph* CreateGlyph(ReadableFontData* data,
     101             :                                                 int32_t format);
     102             :   int32_t format() { return format_; }
     103             : 
     104             :   // UNIMPLEMENTED: toString()
     105             : 
     106             :  protected:
     107             :   BitmapGlyph(ReadableFontData* data, int32_t format);
     108             : 
     109             :  private:
     110             :   int32_t format_;
     111             : };
     112             : typedef Ptr<BitmapGlyph> BitmapGlyphPtr;
     113             : typedef Ptr<BitmapGlyph::Builder> BitmapGlyphBuilderPtr;
     114             : typedef std::map<int32_t, BitmapGlyphBuilderPtr> BitmapGlyphBuilderMap;
     115             : typedef std::vector<BitmapGlyphBuilderMap> BitmapGlyphBuilderList;
     116             : 
     117             : }  // namespace sfntly
     118             : 
     119             : #endif  // SFNTLY_CPP_SRC_SFNTLY_TABLE_BITMAP_BITMAP_GLYPH_H_

Generated by: LCOV version 1.13