LCOV - code coverage report
Current view: top level - gfx/sfntly/cpp/src/sfntly/table - table.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 8 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 9 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_TABLE_H_
      18             : #define SFNTLY_CPP_SRC_SFNTLY_TABLE_TABLE_H_
      19             : 
      20             : #include <set>
      21             : #include <map>
      22             : #include <vector>
      23             : #include <utility>
      24             : 
      25             : #include "sfntly/port/type.h"
      26             : #include "sfntly/table/font_data_table.h"
      27             : #include "sfntly/table/header.h"
      28             : 
      29             : namespace sfntly {
      30             : class Font;
      31             : 
      32             : // A concrete implementation of a root level table in the font. This is the base
      33             : // class used for all specific table implementations and is used as the generic
      34             : // table for all tables which have no specific implementations.
      35             : class Table : public FontDataTable {
      36             :  public:
      37             :   // Note: original version is Builder<T extends Table>
      38             :   //       C++ template is not designed that way so plain old inheritance is
      39             :   //       chosen.
      40             :   class Builder : public FontDataTable::Builder {
      41             :    public:
      42             :     virtual ~Builder();
      43           0 :     virtual Header* header() { return header_; }
      44             :     virtual void NotifyPostTableBuild(FontDataTable* table);
      45             : 
      46             :     // Get a builder for the table type specified by the data in the header.
      47             :     // @param header the header for the table
      48             :     // @param tableData the data to be used to build the table from
      49             :     // @return builder for the table specified
      50             :     static CALLER_ATTACH Builder* GetBuilder(Header* header,
      51             :                                              WritableFontData* table_data);
      52             : 
      53             :     // UNIMPLEMENTED: toString()
      54             : 
      55             :    protected:
      56             :     Builder(Header* header, WritableFontData* data);
      57             :     Builder(Header* header, ReadableFontData* data);
      58             :     Builder(Header* header);
      59             : 
      60             :    private:
      61             :     Ptr<Header> header_;
      62             :   };
      63             : 
      64             :   // Note: GenericTableBuilder moved to table_based_table_builder.h to avoid
      65             :   //       circular inclusion.
      66             : 
      67             :   virtual ~Table();
      68             : 
      69             :   // Get the calculated checksum for the data in the table.
      70             :   virtual int64_t CalculatedChecksum();
      71             : 
      72             :   // Get the header for the table.
      73           0 :   virtual Header* header()          { return header_; }
      74             : 
      75             :   // Get the tag for the table from the record header.
      76           0 :   virtual int32_t header_tag()      { return header_->tag(); }
      77             : 
      78             :   // Get the offset for the table from the record header.
      79           0 :   virtual int32_t header_offset()   { return header_->offset(); }
      80             : 
      81             :   // Get the length of the table from the record header.
      82           0 :   virtual int32_t header_length()   { return header_->length(); }
      83             : 
      84             :   // Get the checksum for the table from the record header.
      85           0 :   virtual int64_t header_checksum() { return header_->checksum(); }
      86             : 
      87             :   // UNIMPLEMENTED: toString()
      88             : 
      89             :   virtual void SetFont(Font* font);
      90             : 
      91             :  protected:
      92             :   Table(Header* header, ReadableFontData* data);
      93             : 
      94             :  private:
      95             :   Ptr<Header> header_;
      96             :   Ptr<Font> font_;
      97             : };
      98             : 
      99             : // C++ port only
     100             : class GenericTable : public Table, public RefCounted<GenericTable> {
     101             :  public:
     102           0 :   GenericTable(Header* header, ReadableFontData* data) : Table(header, data) {}
     103           0 :   virtual ~GenericTable() {}
     104             : };
     105             : 
     106             : typedef Ptr<Table> TablePtr;
     107             : typedef std::vector<HeaderPtr> TableHeaderList;
     108             : typedef Ptr<Table::Builder> TableBuilderPtr;
     109             : typedef std::map<int32_t, TablePtr> TableMap;
     110             : typedef std::pair<int32_t, TablePtr> TableMapEntry;
     111             : 
     112             : typedef std::map<HeaderPtr, WritableFontDataPtr> DataBlockMap;
     113             : typedef std::pair<HeaderPtr, WritableFontDataPtr> DataBlockEntry;
     114             : typedef std::map<int32_t, TableBuilderPtr> TableBuilderMap;
     115             : typedef std::pair<int32_t, TableBuilderPtr> TableBuilderEntry;
     116             : 
     117             : }  // namespace sfntly
     118             : 
     119             : #endif  // SFNTLY_CPP_SRC_SFNTLY_TABLE_TABLE_H_

Generated by: LCOV version 1.13