MyGUI  3.0.1
MyGUI_ResourceManualFont.h
Go to the documentation of this file.
1 
7 /*
8  This file is part of MyGUI.
9 
10  MyGUI is free software: you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  MyGUI is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  GNU Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with MyGUI. If not, see <http://www.gnu.org/licenses/>.
22 */
23 #ifndef __MYGUI_RESOURCE_MANUAL_FONT_H__
24 #define __MYGUI_RESOURCE_MANUAL_FONT_H__
25 
26 #include "MyGUI_Prerequest.h"
27 #include "MyGUI_ITexture.h"
28 #include "MyGUI_IFont.h"
29 
30 namespace MyGUI
31 {
32 
34  public IFont
35  {
37 
38  private:
39  typedef std::vector<RangeInfo> VectorRangeInfo;
40  typedef std::vector<PairCodeCoord> VectorPairCodeCoord;
41 
42  public:
44  virtual ~ResourceManualFont();
45 
46  virtual void deserialization(xml::ElementPtr _node, Version _version);
47 
48  virtual GlyphInfo* getGlyphInfo(Char _id);
49 
50  virtual ITexture* getTextureFont() { return mTexture; }
51 
52  // дефолтная высота, указанная в настройках шрифта
53  virtual int getDefaultHeight() { return mDefaultHeight; }
54 
55  private:
56  void addGlyph(Char _index, const IntCoord& _coord);
57 
58  void initialise();
59 
60  void addGlyph(GlyphInfo * _info, Char _index, int _left, int _top, int _right, int _bottom, int _finalw, int _finalh, float _aspect, int _addHeight = 0);
61 
62  void addRange(VectorPairCodeCoord& _info, size_t _first, size_t _last, int _width, int _height, float _aspect);
63  void checkTexture();
64 
65  private:
66  std::string mSource;
67  int mDefaultHeight;
68 
69  // отдельная информация о символах
70  GlyphInfo mSpaceGlyphInfo;
71 
72  // символы созданные руками
73  VectorPairCodeCoord mVectorPairCodeCoord;
74 
75  // вся информация о символах
76  VectorRangeInfo mVectorRangeInfo;
77 
78  MyGUI::ITexture* mTexture;
79  };
80 
81 } // namespace MyGUI
82 
83 #endif // __MYGUI_RESOURCE_MANUAL_FONT_H__