FontDatabase.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROCKETCOREFONTDATABASE_H
00029 #define ROCKETCOREFONTDATABASE_H
00030
00031 #include <Rocket/Core/StringUtilities.h>
00032 #include <Rocket/Core/Header.h>
00033 #include <Rocket/Core/Font.h>
00034
00035 namespace Rocket {
00036 namespace Core {
00037
00038 class FontEffect;
00039 class FontFamily;
00040 class FontFaceHandle;
00041 class PropertyDictionary;
00042
00049 class ROCKETCORE_API FontDatabase
00050 {
00051 public:
00052 static bool Initialise();
00053 static void Shutdown();
00054
00058 static bool LoadFontFace(const String& file_name);
00065 static bool LoadFontFace(const String& file_name, const String& family, Font::Style style, Font::Weight weight);
00073 static bool LoadFontFace(const byte* data, int data_length, const String& family, Font::Style style, Font::Weight weight);
00074
00084 static FontFaceHandle* GetFontFaceHandle(const String& family, const String& charset, Font::Style style, Font::Weight weight, int size);
00085
00091 static FontEffect* GetFontEffect(const String& name, const PropertyDictionary& properties);
00092
00095 static void ReleaseFontEffect(const FontEffect* effect);
00096
00097 private:
00098 FontDatabase(void);
00099 ~FontDatabase(void);
00100
00101
00102 bool AddFace(void* face, const String& family, Font::Style style, Font::Weight weight, bool release_stream);
00103
00104 void* LoadFace(const String& file_name);
00105
00106 void* LoadFace(const byte* data, int data_length, const String& source, bool local_data);
00107
00108 typedef std::map< String, FontFamily*, StringUtilities::StringComparei > FontFamilyMap;
00109 FontFamilyMap font_families;
00110
00111 static FontDatabase* instance;
00112 };
00113
00114 }
00115 }
00116
00117 #endif