LCOV - code coverage report
Current view: top level - gfx/sfntly/cpp/src/sfntly/table/bitmap - bitmap_size_table.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 1 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 2 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_SIZE_TABLE_H_
      18             : #define SFNTLY_CPP_SRC_SFNTLY_TABLE_BITMAP_BITMAP_SIZE_TABLE_H_
      19             : 
      20             : #include "sfntly/port/lock.h"
      21             : #include "sfntly/table/bitmap/bitmap_glyph_info.h"
      22             : #include "sfntly/table/bitmap/index_sub_table.h"
      23             : 
      24             : namespace sfntly {
      25             : // Binary search would be faster but many fonts have index subtables that
      26             : // aren't sorted.
      27             : // Note: preprocessor define is used to avoid const expression warnings in C++
      28             : //       code.
      29             : #define SFNTLY_BITMAPSIZE_USE_BINARY_SEARCH 0
      30             : 
      31             : class BitmapSizeTable : public SubTable,
      32             :                         public RefCounted<BitmapSizeTable> {
      33             :  public:
      34             :   class Builder : public SubTable::Builder,
      35             :                   public RefCounted<Builder> {
      36             :    public:
      37             :     class BitmapGlyphInfoIterator :
      38             :         public RefIterator<BitmapGlyphInfo, Builder> {
      39             :      public:
      40             :       explicit BitmapGlyphInfoIterator(Builder* container);
      41           0 :       virtual ~BitmapGlyphInfoIterator() {}
      42             : 
      43             :       virtual bool HasNext();
      44             :       CALLER_ATTACH virtual BitmapGlyphInfo* Next();
      45             : 
      46             :      private:
      47             :       bool HasNext(BitmapGlyphInfoIter* iterator_base);
      48             :       CALLER_ATTACH BitmapGlyphInfo* Next(BitmapGlyphInfoIter* iterator_base);
      49             : 
      50             :       IndexSubTableBuilderList::iterator sub_table_iter_;
      51             :       BitmapGlyphInfoIterPtr sub_table_glyph_info_iter_;
      52             :     };
      53             : 
      54             :     virtual ~Builder();
      55             : 
      56             :     virtual CALLER_ATTACH FontDataTable* SubBuildTable(ReadableFontData* data);
      57             :     virtual void SubDataSet();
      58             :     virtual int32_t SubDataSizeToSerialize();
      59             :     virtual bool SubReadyToSerialize();
      60             :     virtual int32_t SubSerialize(WritableFontData* new_data);
      61             : 
      62             :     static CALLER_ATTACH Builder* CreateBuilder(WritableFontData* data,
      63             :                                                 ReadableFontData* master_data);
      64             :     static CALLER_ATTACH Builder* CreateBuilder(ReadableFontData* data,
      65             :                                                 ReadableFontData* master_data);
      66             :     // Gets the subtable array offset as set in the original table as read from
      67             :     // the font file. This value cannot be explicitly set and will be generated
      68             :     // during table building.
      69             :     // @return the subtable array offset
      70             :     int32_t IndexSubTableArrayOffset();
      71             : 
      72             :     // Sets the subtable array offset. This is used only during the building
      73             :     // process when the objects are being serialized.
      74             :     // @param offset the offset to the index subtable array
      75             :     void SetIndexSubTableArrayOffset(int32_t offset);
      76             : 
      77             :     // Gets the subtable array size as set in the original table as read from
      78             :     // the font file. This value cannot be explicitly set and will be generated
      79             :     // during table building.
      80             :     // @return the subtable array size
      81             :     int32_t IndexTableSize();
      82             : 
      83             :     // Sets the subtable size. This is used only during the building process
      84             :     // when the objects are being serialized.
      85             :     // @param size the offset to the index subtable array
      86             :     void SetIndexTableSize(int32_t size);
      87             : 
      88             :     int32_t NumberOfIndexSubTables();
      89             :     int32_t ColorRef();
      90             :     // TODO(stuartg): SBitLineMetrics hori();
      91             :     // TODO(stuartg): SBitLineMetrics vert();
      92             :     int32_t StartGlyphIndex();
      93             :     int32_t EndGlyphIndex();
      94             :     int32_t PpemX();
      95             :     int32_t PpemY();
      96             :     int32_t BitDepth();
      97             :     int32_t FlagsAsInt();
      98             : 
      99             :     IndexSubTable::Builder* IndexSubTableBuilder(int32_t index);
     100             :     CALLER_ATTACH BitmapGlyphInfo* GlyphInfo(int32_t glyph_id);
     101             :     int32_t GlyphOffset(int32_t glyph_id);
     102             :     int32_t GlyphLength(int32_t glyph_id);
     103             :     int32_t GlyphFormat(int32_t glyph_id);
     104             :     IndexSubTableBuilderList* IndexSubTableBuilders();
     105             :     // Note: renamed from iterator(), type is the derived type.
     106             :     CALLER_ATTACH BitmapGlyphInfoIterator* GetIterator();
     107             :     void GenerateLocaMap(BitmapGlyphInfoMap* output);
     108             : 
     109             :    protected:
     110             :     void Revert();
     111             : 
     112             :    private:
     113             :     Builder(WritableFontData* data, ReadableFontData* master_data);
     114             :     Builder(ReadableFontData* data, ReadableFontData* master_data);
     115             : 
     116             :     void SetNumberOfIndexSubTables(int32_t count);
     117             :     IndexSubTable::Builder* SearchIndexSubTables(int32_t glyph_id);
     118             :     IndexSubTable::Builder* LinearSearchIndexSubTables(int32_t glyph_id);
     119             :     IndexSubTable::Builder* BinarySearchIndexSubTables(int32_t glyph_id);
     120             :     IndexSubTableBuilderList* GetIndexSubTableBuilders();
     121             :     void Initialize(ReadableFontData* data);
     122             :     CALLER_ATTACH IndexSubTable::Builder* CreateIndexSubTableBuilder(
     123             :         int32_t index);
     124             : 
     125             :     IndexSubTableBuilderList index_sub_tables_;
     126             :   };
     127             : 
     128             :   virtual ~BitmapSizeTable();
     129             : 
     130             :   int32_t IndexSubTableArrayOffset();
     131             :   int32_t IndexTableSize();
     132             :   int32_t NumberOfIndexSubTables();
     133             :   int32_t ColorRef();
     134             :   // TODO(stuartg): SBitLineMetrics hori();
     135             :   // TODO(stuartg): SBitLineMetrics vert();
     136             :   int32_t StartGlyphIndex();
     137             :   int32_t EndGlyphIndex();
     138             :   int32_t PpemX();
     139             :   int32_t PpemY();
     140             :   int32_t BitDepth();
     141             :   int32_t FlagsAsInt();
     142             : 
     143             :   // Note: renamed from indexSubTable()
     144             :   IndexSubTable* GetIndexSubTable(int32_t index);
     145             :   int32_t GlyphOffset(int32_t glyph_id);
     146             :   int32_t GlyphLength(int32_t glyph_id);
     147             :   CALLER_ATTACH BitmapGlyphInfo* GlyphInfo(int32_t glyph_id);
     148             :   int32_t GlyphFormat(int32_t glyph_id);
     149             : 
     150             :  protected:
     151             :   BitmapSizeTable(ReadableFontData* data,
     152             :                   ReadableFontData* master_data);
     153             : 
     154             :  private:
     155             :   static int32_t NumberOfIndexSubTables(ReadableFontData* data,
     156             :                                         int32_t table_offset);
     157             :   IndexSubTable* SearchIndexSubTables(int32_t glyph_id);
     158             :   IndexSubTable* LinearSearchIndexSubTables(int32_t glyph_id);
     159             :   IndexSubTable* BinarySearchIndexSubTables(int32_t glyph_id);
     160             :   CALLER_ATTACH IndexSubTable* CreateIndexSubTable(int32_t index);
     161             :   IndexSubTableList* GetIndexSubTableList();
     162             : 
     163             :   Lock index_subtables_lock_;
     164             :   IndexSubTableList index_subtables_;
     165             : };
     166             : typedef Ptr<BitmapSizeTable> BitmapSizeTablePtr;
     167             : typedef std::vector<BitmapSizeTablePtr> BitmapSizeTableList;
     168             : typedef Ptr<BitmapSizeTable::Builder> BitmapSizeTableBuilderPtr;
     169             : typedef std::vector<BitmapSizeTableBuilderPtr> BitmapSizeTableBuilderList;
     170             : 
     171             : }  // namespace sfntly
     172             : 
     173             : #endif  // SFNTLY_CPP_SRC_SFNTLY_TABLE_BITMAP_BITMAP_SIZE_TABLE_H_

Generated by: LCOV version 1.13