cfb1934f0593cc3e96ac6b0c6c2aa1ceadbab3f4
[occt.git] / src / Font / Font_FontMgr.hxx
1 // Created on: 2008-01-20
2 // Created by: Alexander A. BORODIN
3 // Copyright (c) 2008-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 #ifndef _Font_FontMgr_HeaderFile
17 #define _Font_FontMgr_HeaderFile
18
19 #include <Standard.hxx>
20 #include <Standard_Type.hxx>
21
22 #include <Font_NListOfSystemFont.hxx>
23 #include <Standard_Transient.hxx>
24 #include <TColStd_SequenceOfHAsciiString.hxx>
25 #include <Font_FontAspect.hxx>
26 #include <Standard_Integer.hxx>
27 #include <Standard_CString.hxx>
28 #include <Standard_Boolean.hxx>
29 class Font_SystemFont;
30 class TCollection_HAsciiString;
31
32
33 class Font_FontMgr;
34 DEFINE_STANDARD_HANDLE(Font_FontMgr, Standard_Transient)
35
36 //! Collects and provides information about available fonts in system.
37 class Font_FontMgr : public Standard_Transient
38 {
39
40 public:
41
42   
43   Standard_EXPORT static Handle(Font_FontMgr) GetInstance();
44   
45   Standard_EXPORT const Font_NListOfSystemFont& GetAvailableFonts() const;
46   
47   //! Returns sequence of available fonts names
48   Standard_EXPORT void GetAvailableFontsNames (TColStd_SequenceOfHAsciiString& theFontsNames) const;
49   
50   //! Returns font that match given parameters.
51   //! If theFontName is empty string returned font can have any FontName.
52   //! If theFontAspect is Font_FA_Undefined returned font can have any FontAspect.
53   //! If theFontSize is "-1" returned font can have any FontSize.
54   Standard_EXPORT Handle(Font_SystemFont) GetFont (const Handle(TCollection_HAsciiString)& theFontName, const Font_FontAspect theFontAspect, const Standard_Integer theFontSize) const;
55   
56   //! Tries to find font by given parameters.
57   //! If the specified font is not found tries to use font names mapping.
58   //! If the requested family name not found -> search for any font family
59   //! with given aspect and height. If the font is still not found, returns
60   //! any font available in the system. Returns NULL in case when the fonts
61   //! are not found in the system.
62   Standard_EXPORT Handle(Font_SystemFont) FindFont (const Handle(TCollection_HAsciiString)& theFontName, const Font_FontAspect theFontAspect, const Standard_Integer theFontSize) const;
63   
64   //! Read font file and retrieve information from it.
65   Standard_EXPORT Handle(Font_SystemFont) CheckFont (const Standard_CString theFontPath) const;
66   
67   //! Register new font.
68   //! If there is existing entity with the same name and properties but different path
69   //! then font will will be overridden or ignored depending on theToOverride flag.
70   Standard_EXPORT Standard_Boolean RegisterFont (const Handle(Font_SystemFont)& theFont, const Standard_Boolean theToOverride);
71
72
73
74
75   DEFINE_STANDARD_RTTIEXT(Font_FontMgr,Standard_Transient)
76
77 protected:
78
79
80
81
82 private:
83
84   
85   //! Creates empty font object
86   Standard_EXPORT Font_FontMgr();
87   
88   //! Collects available fonts paths.
89   Standard_EXPORT void InitFontDataBase();
90
91   Font_NListOfSystemFont myListOfFonts;
92
93
94 };
95
96
97
98
99
100
101
102 #endif // _Font_FontMgr_HeaderFile