]> Dogcows Code - chaz/openbox/blobdiff - otk/renderstyle.hh
Add the "obsetroot" tool. Use it to set the root background.
[chaz/openbox] / otk / renderstyle.hh
index 4385e6b9af6f4eedc4f09f6a3e56652996557b30..0f512148e94e6f503885b13528726a13b541680c 100644 (file)
@@ -3,25 +3,64 @@
 #define __renderstyle_hh
 
 #include "rendertexture.hh"
+#include "rendercolor.hh"
+#include "font.hh"
+#include "ustring.hh"
+
+#include <list>
+#include <string>
 
 namespace otk {
 
+struct PixmapMask {
+  Pixmap mask;
+  unsigned int w, h;
+  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<StyleNotify*> *_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;
+  ustring _file;
+
+  std::string _root_args;
   
-  RenderColor *_text_focus_color;
-  RenderColor *_text_unfocus_color;
+  RenderColor *_text_color_focus;
+  RenderColor *_text_color_unfocus;
+
+  RenderColor *_button_color_focus;
+  RenderColor *_button_color_unfocus;
 
   RenderColor *_frame_border_color;
-  int _frame_border_wirth;
+  int _frame_border_width;
+
   RenderColor *_client_border_color_focus; 
   RenderColor *_client_border_color_unfocus;
   int _client_border_width;
@@ -44,12 +83,75 @@ private:
   RenderTexture *_grip_unfocus;
 
   Font *_label_font;
-  TextJustify _label_justify;
+  Justify _label_justify;
+
+  PixmapMask *_max_mask;
+  PixmapMask *_icon_mask;
+  PixmapMask *_alldesk_mask;
+  PixmapMask *_close_mask;
 
   int _handle_width;
   int _bevel_width;
+
+public:
+  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; }
+
+  inline RenderColor *buttonFocusColor() const { return _button_color_focus; }
+  inline RenderColor *buttonUnfocusColor() const
+    { return _button_color_unfocus; }
+
+  inline RenderColor *frameBorderColor() const { return _frame_border_color; }
+  inline int frameBorderWidth() const { return _frame_border_width; }
+
+  inline RenderColor *clientBorderFocusColor() const
+    { return _client_border_color_focus; }
+  inline RenderColor *clientBorderUnfocusColor() const
+    { return _client_border_color_unfocus; }
+  inline int clientBorderWidth() const { return _client_border_width; }
+  inline RenderTexture *titlebarFocusBackground() const
+    { return _titlebar_focus; }
+  inline RenderTexture *titlebarUnfocusBackground() const
+    { return _titlebar_unfocus; }
+
+  inline RenderTexture *labelFocusBackground() const { return _label_focus; }
+  inline RenderTexture *labelUnfocusBackground() const { return _label_unfocus;}
+
+  inline RenderTexture *handleFocusBackground() const { return _handle_focus; }
+  inline RenderTexture *handleUnfocusBackground() const
+    { return _handle_unfocus; }
+
+  inline RenderTexture *buttonUnpressFocusBackground() const
+    { return _button_unpress_focus; }
+  inline RenderTexture *buttonUnpressUnfocusBackground() const
+    { return _button_unpress_unfocus; }
+  inline RenderTexture *buttonPressFocusBackground() const
+    { return _button_press_focus; }
+  inline RenderTexture *buttonPressUnfocusBackground() const
+    { return _button_press_unfocus; }
+
+  inline RenderTexture *gripFocusBackground() const { return _grip_focus; }
+  inline RenderTexture *gripUnfocusBackground() const { return _grip_unfocus; }
+
+  inline Font *labelFont() const { return _label_font; }
+  inline Justify labelTextJustify() const { return _label_justify; }
+
+  inline PixmapMask *maximizeMask() const { return _max_mask; }
+  inline PixmapMask *iconifyMask() const { return _icon_mask; }
+  inline PixmapMask *alldesktopsMask() const { return _alldesk_mask; }
+  inline PixmapMask *closeMask() const { return _close_mask; }
+  
+  inline int handleWidth() const { return _handle_width; }
+  inline int bevelWidth() const { return _bevel_width; }
 };
 
 }
 
-#endif // __rendertexture_hh
+#endif // __renderstyle_hh
This page took 0.023592 seconds and 4 git commands to generate.