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 UABSTRACTTOOLKIT_HPP
00029
#define UABSTRACTTOOLKIT_HPP
00030
00031
#include "utoolkit.hpp"
00032
00033
#include <map>
00034
00035
namespace ufo {
00036
00037
class UProperties;
00038
00039
00040
00041
bool operator<(
const UPluginInfo & p1,
const UPluginInfo & p2);
00042
00053 class UFO_EXPORT UAbstractToolkit :
public UToolkit {
00054 UFO_DECLARE_ABSTRACT_CLASS(UAbstractToolkit)
00055
public:
00056
00059 UAbstractToolkit(
UProperties * prop);
00060
virtual ~UAbstractToolkit();
00061
00062
public:
00063
virtual UVersionInfo getVersionInfo()
const;
00064
00065
virtual std::string getUserName()
const;
00066
virtual std::string getRealName()
const;
00067
00068
virtual std::string getHomeDir()
const;
00069
virtual std::string getTmpDir()
const;
00070
00071
virtual std::string getPrgName()
const;
00072
virtual void setPrgName(
const std::string & prgName);
00073
00074
virtual std::string getFontDir()
const;
00075
00076
virtual std::string getProperty(
const std::string & keyA)
const;
00077
virtual void putProperty(
const std::string & keyA,
const std::string & valueA);
00078
00079
public:
00080
virtual void loadPlugin(
const std::string & fileName);
00081
virtual void loadPlugin(
UPluginInfo plugin);
00082
00083
virtual void unloadPlugin(
const std::string & pluginName);
00084
virtual void unloadPlugin(
UPluginInfo plugin);
00085
00086
virtual std::vector<UPluginInfo> getPluginInfos()
const;
00087
00088
virtual UVideoDriver * createVideoDriver();
00090
virtual ULookAndFeel * createLookAndFeel();
00091
virtual UStyleManager * getStyleManager();
00092
00093
virtual UFontRenderer * createFontRenderer(
const UFontInfo & fontInfo);
00094
virtual UFontInfo queryFont(
const UFontInfo & fontInfo);
00095
virtual std::vector<UFontInfo> listFonts(
const UFontInfo & fontInfo);
00096
virtual std::vector<UFontInfo> listFonts();
00097
00098
protected:
00100
virtual void initUFO();
00101
virtual void deinitUFO();
00103
virtual void initPlugins();
00104
00105
private:
00113
void initMissing();
00114
UFontInfo privateQueryFont(
const UFontInfo & fontInfo, std::string * renderer);
00115
00116
private:
00117
UProperties * m_properties;
00118
typedef std::list<std::pair<UPluginInfo, UFontPlugin*> > FontPluginCache;
00119
typedef std::list<std::pair<UPluginInfo, UVideoPlugin*> > VideoPluginCache;
00120 FontPluginCache m_fontPlugins;
00121 VideoPluginCache m_videoPlugins;
00122 };
00123
00124 }
00125
00126
#endif // UABSTRACTTOOLKIT_HPP