LCOV - app.info - gfx/graphite2/src/inc/Font.h

LCOV - code coverage report
| Current view: | directory - gfx/graphite2/src/inc - Font.h (source / functions) |  | Found | Hit | Coverage |
| Test: | app.info | Lines: | 11 | 0 | 0.0 %
| Date: | 2012-07-07 | Functions: | 11 | 0 | 0.0 %

           1                 : /*  GRAPHITE2 LICENSING
           2                 :
           3                 :     Copyright 2010, SIL International
           4                 :     All rights reserved.
           5                 :
           6                 :     This library is free software; you can redistribute it and/or modify
           7                 :     it under the terms of the GNU Lesser General Public License as published
           8                 :     by the Free Software Foundation; either version 2.1 of License, or
           9                 :     (at your option) any later version.
          10                 :
          11                 :     This program is distributed in the hope that it will be useful,
          12                 :     but WITHOUT ANY WARRANTY; without even the implied warranty of
          13                 :     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
          14                 :     Lesser General Public License for more details.
          15                 :
          16                 :     You should also have received a copy of the GNU Lesser General Public
          17                 :     License along with this library in the file named "LICENSE".
          18                 :     If not, write to the Free Software Foundation, 51 Franklin Street,
          19                 :     Suite 500, Boston, MA 02110-1335, USA or visit their web page on the
          20                 :     internet at http://www.fsf.org/licenses/lgpl.html.
          21                 :
          22                 : Alternatively, the contents of this file may be used under the terms of the
          23                 : Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
          24                 : License, as published by the Free Software Foundation, either version 2
          25                 : of the License or (at your option) any later version.
          26                 : */
          27                 : #pragma once
          28                 : #include <cassert>
          29                 : #include "graphite2/Font.h"
          30                 : #include "inc/Main.h"
          31                 : #include "inc/Face.h"
          32                 :
          33                 : namespace graphite2 {
          34                 :
          35                 : #define INVALID_ADVANCE -1e38f          // can't be a static const because non-integral
          36                 :
          37                 : class Font
          38                 : {
          39                 : public:
          40                 :     Font(float ppm, const Face *face/*needed for scaling*/);
          41                 :     virtual ~Font();
          42                 :
          43               0 :     float advance(unsigned short glyphid) const {
          44               0 :         if (m_advances[glyphid] == INVALID_ADVANCE)
          45               0 :             m_advances[glyphid] = computeAdvance(glyphid);
          46               0 :         return m_advances[glyphid];
          47                 :     }
          48                 : //    Position scale(const Position& p) const { return Position(m_scale * p.x, m_scale * p.y); }
          49                 : //    float scale(float p) const { return m_scale * p; }
          50               0 :     float scale() const { return m_scale; }
          51               0 :     virtual bool isHinted() const { return false; }
          52                 :
          53               0 :     CLASS_NEW_DELETE
          54                 : private:
          55               0 :     virtual float computeAdvance(unsigned short /*glyphid*/) const { assert(false); return .0f; };
          56                 :
          57                 : protected:
          58                 :     float m_scale;      // scales from design units to ppm
          59                 :     float *m_advances;  // One advance per glyph in pixels. Nan if not defined
          60                 :
          61                 : private:                        //defensive on m_advances
          62                 :     Font(const Font&);
          63                 :     Font& operator=(const Font&);
          64                 : };
          65                 :
          66                 :
          67                 : class SimpleFont : public Font      //has no external hints - gets advance information from the face
          68               0 : {
          69                 : public:
          70                 :     SimpleFont(float ppm/*pixels per em*/, const Face *face);
          71                 : private:
          72                 :     virtual float computeAdvance(unsigned short glyphid) const;
          73                 : private:
          74                 :     const Face *m_face;   // GrFace to get the rest of the info from
          75                 : };
          76                 :
          77                 :
          78                 : class HintedFont : public Font
          79               0 : {
          80                 : public:
          81                 :     HintedFont(float ppm/*pixels per em*/, const void* appFontHandle/*non-NULL*/, gr_advance_fn advance, const Face *face/*needed for scaling*/);
          82               0 :     virtual bool isHinted() const { return true; }
          83                 : private:
          84                 :     virtual float computeAdvance(unsigned short glyphid) const;
          85                 :
          86                 : private:
          87                 :     const void* m_appFontHandle/*non-NULL*/;
          88                 :     gr_advance_fn m_advance;
          89                 : };
          90                 :
          91                 : } // namespace graphite2
          92                 :
          93                 : struct gr_font : public graphite2::Font {};

Generated by: LCOV version 1.7