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