nuclear@3: #ifndef THEME_H_ nuclear@3: #define THEME_H_ nuclear@3: nuclear@3: #include nuclear@3: #include nuclear@5: #include "goatkit.h" nuclear@3: nuclear@4: namespace goatkit { nuclear@3: nuclear@3: class Widget; nuclear@3: nuclear@5: void add_theme_path(const char *path); nuclear@3: void default_draw_func(const Widget *w); nuclear@3: nuclear@3: class Theme { nuclear@3: private: nuclear@3: void *so; nuclear@5: WidgetDrawFunc (*lookup_theme_draw_func)(const char*); nuclear@5: mutable std::map func_cache; nuclear@3: nuclear@3: public: nuclear@3: Theme(); nuclear@3: ~Theme(); nuclear@3: nuclear@3: bool load(const char *name); nuclear@5: void unload(); nuclear@3: nuclear@5: WidgetDrawFunc get_draw_func(const char *type) const; nuclear@3: }; nuclear@3: nuclear@3: extern Theme *theme; // the current theme nuclear@3: nuclear@4: } // namespace goatkit nuclear@3: nuclear@3: #endif // THEME_H_