X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Frenderstyle.hh;h=0f512148e94e6f503885b13528726a13b541680c;hb=917c5c93490e97a2d6d6a74cb8cd562dd5066fcf;hp=d61c99da26a848a6bc9dee881d67183e9c7a4897;hpb=28b8f67562bb7eb15134f2bf7a8394f0a009b9ba;p=chaz%2Fopenbox diff --git a/otk/renderstyle.hh b/otk/renderstyle.hh index d61c99da..0f512148 100644 --- a/otk/renderstyle.hh +++ b/otk/renderstyle.hh @@ -5,7 +5,9 @@ #include "rendertexture.hh" #include "rendercolor.hh" #include "font.hh" +#include "ustring.hh" +#include #include namespace otk { @@ -16,17 +18,39 @@ struct PixmapMask { PixmapMask() { mask = None; w = h = 0; } }; +class RenderStyle; + +class StyleNotify { +public: + //! Called when the style is changed on the same screen as the handler. + virtual void styleChanged(const RenderStyle &) {} +}; + class RenderStyle { + static RenderStyle **_styles; + static std::list *_notifies; public: - enum TextJustify { - LeftJustify, - RightJustify, + static void initialize(); + static void destroy(); + static void registerNotify(int screen, StyleNotify *n); + static void unregisterNotify(int screen, StyleNotify *n); + static RenderStyle *style(int screen); + static bool setStyle(int screen, const ustring &stylefile); + + enum Justify { + LeftTopJustify, + RightBottomJustify, CenterJustify }; private: + static bool loadStyle(RenderStyle *s, int screen, const ustring &stylefile); + static void defaultStyle(RenderStyle *s, int screen); + int _screen; - std::string _file; + ustring _file; + + std::string _root_args; RenderColor *_text_color_focus; RenderColor *_text_color_unfocus; @@ -59,7 +83,7 @@ private: RenderTexture *_grip_unfocus; Font *_label_font; - TextJustify _label_justify; + Justify _label_justify; PixmapMask *_max_mask; PixmapMask *_icon_mask; @@ -70,11 +94,12 @@ private: int _bevel_width; public: - RenderStyle(int screen, const std::string &stylefile); virtual ~RenderStyle(); inline int screen() const { return _screen; } + inline const std::string& rootArgs() const { return _root_args; } + inline RenderColor *textFocusColor() const { return _text_color_focus; } inline RenderColor *textUnfocusColor() const { return _text_color_unfocus; } @@ -116,7 +141,7 @@ public: inline RenderTexture *gripUnfocusBackground() const { return _grip_unfocus; } inline Font *labelFont() const { return _label_font; } - inline TextJustify labelTextJustify() const { return _label_justify; } + inline Justify labelTextJustify() const { return _label_justify; } inline PixmapMask *maximizeMask() const { return _max_mask; } inline PixmapMask *iconifyMask() const { return _icon_mask; } @@ -129,4 +154,4 @@ public: } -#endif // __rendertexture_hh +#endif // __renderstyle_hh