all repos — openbox @ 6e29605d41cab8fd7e8ad6f28d6132bbd521f106

openbox fork - make it a bit more like ryudo

otk/renderstyle.hh (raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
#ifndef __renderstyle_hh
#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:
  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_color_focus;
  RenderColor *_text_color_unfocus;

  RenderColor *_button_color_focus;
  RenderColor *_button_color_unfocus;

  RenderColor *_frame_border_color;
  int _frame_border_width;

  RenderColor *_client_border_color_focus; 
  RenderColor *_client_border_color_unfocus;
  int _client_border_width;
 
  RenderTexture *_titlebar_focus;
  RenderTexture *_titlebar_unfocus;

  RenderTexture *_label_focus;
  RenderTexture *_label_unfocus;

  RenderTexture *_handle_focus;
  RenderTexture *_handle_unfocus;

  RenderTexture *_button_unpress_focus;
  RenderTexture *_button_unpress_unfocus;
  RenderTexture *_button_press_focus;
  RenderTexture *_button_press_unfocus;

  RenderTexture *_grip_focus;
  RenderTexture *_grip_unfocus;

  Font *_label_font;
  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 // __renderstyle_hh