00001 00015 #ifndef CUI_REGISTRY_H 00016 #define CUI_REGISTRY_H 00017 00018 #include <map> 00019 #include <string> 00020 #include <vector> 00021 #include <list> 00022 00023 #include "UI_Lib.h" 00024 #include "UI_types.h" 00025 #include "IUI_Renderer.h" 00026 #include "IUI_Font.h" 00027 #include "IUI_Border.h" 00028 #include "CUI_CoordSys.h" 00029 #include "CUI_Frame.h" 00030 00032 00041 class CUI_Registry 00042 { 00043 public: 00045 CUI_Registry(); 00046 00048 virtual ~CUI_Registry(); 00049 00051 typedef std::vector<CUI_Frame*> FRAMEVECTOR; 00052 typedef std::vector<IUI_Shader*> SHADERVECTOR; 00053 typedef std::vector<IUI_Font*> FONTVECTOR; 00054 typedef std::vector<CUI_CoordSys*> COORDSYSVECTOR; 00055 typedef std::vector<IUI_Border*> BORDERVECTOR; 00056 00058 00062 virtual FRAMEVECTOR * FlushFrames( FRAMEVECTOR *vec = NULL ); 00063 00065 00069 virtual SHADERVECTOR * FlushShaders( SHADERVECTOR *vec = NULL ); 00070 00072 00076 virtual FONTVECTOR * FlushFonts( FONTVECTOR *vec = NULL ); 00077 00079 00083 virtual COORDSYSVECTOR * FlushCoordSys( COORDSYSVECTOR *vec = NULL ); 00084 00086 00090 virtual BORDERVECTOR * FlushBorders( BORDERVECTOR *vec = NULL ); 00091 00093 virtual bool AddFrame( CUI_Frame *frame ); 00094 00096 virtual CUI_Frame *GetFrame( unsigned long id ); 00097 00099 virtual bool AddShader( std::string name, IUI_Shader *shader ); 00100 00102 virtual IUI_Shader *GetShader( std::string name ); 00103 00105 virtual bool AddFont( std::string name, IUI_Font *font ); 00106 00108 virtual IUI_Font *GetFont( std::string name ); 00109 00111 virtual bool AddCoordSys( std::string name, CUI_CoordSys *coordsys ); 00112 00114 virtual CUI_CoordSys *GetCoordSys( std::string name ); 00115 00117 virtual bool AddBorder( std::string name, IUI_Border *border ); 00118 00120 virtual IUI_Border *GetBorder( std::string name ); 00121 00122 protected: 00124 typedef std::multimap<int, CUI_Frame *, std::less<int> > FRAMEMAP; 00126 FRAMEMAP m_frameMap; 00127 00129 typedef std::map<std::string, IUI_Shader *, std::less<std::string> > SHADERMAP; 00131 SHADERMAP m_shaderMap; 00132 00134 typedef std::map<std::string, IUI_Font *, std::less<std::string> > FONTMAP; 00136 FONTMAP m_fontMap; 00137 00139 typedef std::map<std::string, CUI_CoordSys *, std::less<std::string> > COORDSYSMAP; 00141 COORDSYSMAP m_coordSysMap; 00142 00144 typedef std::map<std::string, IUI_Border *, std::less<std::string> > BORDERMAP; 00146 BORDERMAP m_borderMap; 00147 00148 }; 00149 00150 #endif