]> icculus.org git repositories - mikachu/openbox.git/blob - otk/style.hh
might not compile... ob uses its own widgets now, which subclass only the base otk...
[mikachu/openbox.git] / otk / style.hh
1 #ifndef __style_hh
2 #define __style_hh
3
4 #include <string>
5
6 #include "color.hh"
7 #include "font.hh"
8 #include "texture.hh"
9 #include "image.hh"
10 #include "configuration.hh"
11
12 // XXX: document
13
14 namespace otk {
15
16 struct PixmapMask {
17   Pixmap mask;
18   unsigned int w, h;
19   PixmapMask() { mask = None; w = h = 0; }
20 };
21
22 class Style {
23 public:
24
25   enum Type { ButtonFocus, ButtonUnfocus, TitleFocus, TitleUnfocus,
26               LabelFocus, LabelUnfocus, HandleFocus, HandleUnfocus,
27               GripFocus, GripUnfocus };
28
29   enum TextJustify { LeftJustify = 1, RightJustify, CenterJustify };
30   enum BulletType { RoundBullet = 1, TriangleBullet, SquareBullet, NoBullet };
31
32 // private:
33
34   BImageControl *image_control;
35
36   BColor
37     l_text_focus, l_text_unfocus,
38     b_pic_focus, b_pic_unfocus;
39   
40   BColor border_color;
41
42   BFont *font;
43
44   BTexture
45     f_focus, f_unfocus,
46     t_focus, t_unfocus,
47     l_focus, l_unfocus,
48     h_focus, h_unfocus,
49     b_focus, b_unfocus,
50     b_pressed, b_pressed_focus, b_pressed_unfocus,
51     g_focus, g_unfocus;
52
53   PixmapMask close_button, max_button, icon_button, stick_button;
54   TextJustify justify;
55   BulletType bullet_type;
56
57   unsigned int handle_width, bevel_width, frame_width, border_width;
58
59   unsigned int screen_number;
60
61   bool shadow_fonts, aa_fonts;
62
63 public:
64
65   Style();
66   Style(BImageControl *);
67   ~Style();
68
69   void readDatabaseMask(const std::string &rname,
70                         PixmapMask &pixmapMask,
71                         const Configuration &style);
72   
73   BTexture readDatabaseTexture(const std::string &rname,
74                                const std::string &default_color,
75                                const Configuration &style, 
76                                bool allowNoTexture = false);
77
78   BColor readDatabaseColor(const std::string &rname,
79                            const std::string &default_color,
80                            const Configuration &style);
81
82   BFont *readDatabaseFont(const std::string &rbasename,
83                           const Configuration &style);
84
85   void load(const Configuration &style);
86
87   inline BColor *getTextFocus(void) { return &l_text_focus; }
88   inline BColor *getTextUnfocus(void) { return &l_text_unfocus; }
89
90   inline BColor *getButtonPicFocus(void) { return &b_pic_focus; }
91   inline BColor *getButtonPicUnfocus(void) { return &b_pic_unfocus; }
92
93   inline BTexture *getTitleFocus(void) { return &t_focus; }
94   inline BTexture *getTitleUnfocus(void) { return &t_unfocus; }
95
96   inline BTexture *getLabelFocus(void) { return &l_focus; }
97   inline BTexture *getLabelUnfocus(void) { return &l_unfocus; }
98
99   inline BTexture *getHandleFocus(void) { return &h_focus; }
100   inline BTexture *getHandleUnfocus(void) { return &h_unfocus; }
101
102   inline BTexture *getButtonFocus(void) { return &b_focus; }
103   inline BTexture *getButtonUnfocus(void) { return &b_unfocus; }
104
105   inline BTexture *getButtonPressedFocus(void)
106   { return &b_pressed; }
107   inline BTexture *getButtonPressedUnfocus(void)
108   { return &b_pressed_unfocus; }
109
110   inline BTexture *getGripFocus(void) { return &g_focus; }
111   inline BTexture *getGripUnfocus(void) { return &g_unfocus; }
112
113   inline unsigned int getHandleWidth(void) const { return handle_width; }
114   inline unsigned int getBevelWidth(void) const { return bevel_width; }
115   inline unsigned int getFrameWidth(void) const { return frame_width; }
116   inline unsigned int getBorderWidth(void) const { return border_width; }
117
118   inline const BFont *getFont() const { return font; }
119
120   inline void setShadowFonts(bool fonts) { shadow_fonts = fonts; }
121   inline bool hasShadowFonts(void) const { return shadow_fonts; }
122
123   inline void setAAFonts(bool fonts) { aa_fonts = fonts; }
124   inline bool hasAAFonts(void) const { return aa_fonts; }
125
126   inline TextJustify textJustify(void) { return justify; }
127   inline BulletType bulletType(void) { return bullet_type; }
128
129   inline const BColor *getBorderColor() const { return &border_color; }
130
131   inline const BTexture *getFrameFocus() const { return &f_focus; }
132   inline const BTexture *getFrameUnfocus() const { return &f_unfocus; }
133
134   inline void setImageControl(BImageControl *c) {
135     image_control = c;
136     screen_number = c->getScreenInfo()->screen();
137   }
138   inline unsigned int getScreen(void) { return screen_number; }
139
140   // XXX add inline accessors for the rest of the bummy
141 };
142
143 }
144
145 #endif // __style_hh