guit  0.1
 All Classes Functions Variables Typedefs Enumerations Friends
gfontbase.hpp
1 //
2 // Font base
3 // Guit GUI Toolkit
4 // Copyright © 2020 Eric Lecolinet. All rights reserved.
5 // http://www.telecom-paris.fr/~elc
6 //
7 
8 #ifndef GuitFontBase_hpp
9 #define GuitFontBase_hpp
10 #include <gtypes.hpp>
11 namespace guit {
12 
13 class GFontFace {
14 public:
15  GFontFace(GString const& family, GString const& style, GString const& path);
16  GString family_, style_, path_;
17 };
18 
19 
25 class GFontBase {
26 public:
28  static GFontFace* findFontFace(GString const& family, GString const& style);
29 
30 private:
31  static void init();
32 
38  static bool makeFontList(GString const& guitdir);
39 
41  static bool readFontList(GString const& guitdir);
42 
44  static bool addFontFace(GString const& font_definition);
45 };
46 
47 
48 class GFontResource {
49 public:
50  ~GFontResource();
51 
57  static GFontResource* obtainFont(GString const& style, uint8_t size,
58  GString const& families);
59 
61  static GFontResource* emptyFont();
62 
63  static void set(GFontResource*&, GFontResource*);
64 
67  bool realize();
68 
69  uint8_t size() const {return size_;}
70  GString const& style() const {return style_;}
71  GString const& families() const {return families_;}
72  class GNatFont* natfont() const {return natfont_;}
73 
74 private:
75  bool cantcreate_{};
76  uint8_t size_{};
77  uint16_t refcount_{};
78  GFontFace* face_{};
79  GString style_, families_;
80  class GNatFont* natfont_{};
81 
82 private:
83  friend class GNatContext;
84  GFontResource(GFontFace*, GString const& style, uint8_t size, GString const& families);
85 };
86 
87 }
88 #endif