all repos — openbox @ 104c1a164b1e4e881e141d14263895401779d453

openbox fork - make it a bit more like ryudo

otk/style.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
// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
#ifndef __style_hh
#define __style_hh

#include <string>

#include "color.hh"
#include "font.hh"
#include "texture.hh"
#include "image.hh"
#include "configuration.hh"

// XXX: document

namespace otk {

struct PixmapMask {
  Pixmap mask;
  unsigned int w, h;
  PixmapMask() { mask = None; w = h = 0; }
};

class Style {
public:

  enum Type { ButtonFocus, ButtonUnfocus, TitleFocus, TitleUnfocus,
              LabelFocus, LabelUnfocus, HandleFocus, HandleUnfocus,
              GripFocus, GripUnfocus };

  enum TextJustify { LeftJustify = 1, RightJustify, CenterJustify };
  enum BulletType { RoundBullet = 1, TriangleBullet, SquareBullet, NoBullet };

// private:

  ImageControl *image_control;

  Color
    l_text_focus, l_text_unfocus,
    b_pic_focus, b_pic_unfocus;
  
  Color border_color;

  Font *font;

  Texture
    f_focus, f_unfocus,
    t_focus, t_unfocus,
    l_focus, l_unfocus,
    h_focus, h_unfocus,
    b_focus, b_unfocus,
    b_pressed_focus, b_pressed_unfocus,
    g_focus, g_unfocus;

  PixmapMask close_button, max_button, icon_button, stick_button;
  TextJustify justify;
  BulletType bullet_type;

  unsigned int handle_width, bevel_width, frame_width, border_width;

  unsigned int screen_number;

  bool shadow_fonts, aa_fonts;

public:

  Style();
  Style(ImageControl *);
  ~Style();

  void readDatabaseMask(const std::string &rname,
                        PixmapMask &pixmapMask,
                        const Configuration &style);
  
  Texture readDatabaseTexture(const std::string &rname,
                               const std::string &default_color,
                               const Configuration &style, 
                               bool allowNoTexture = false);

  Color readDatabaseColor(const std::string &rname,
                           const std::string &default_color,
                           const Configuration &style);

  Font *readDatabaseFont(const std::string &rbasename,
                          const Configuration &style);

  void load(const Configuration &style);

  inline PixmapMask *getCloseButtonMask(void) { return &close_button; }
  inline PixmapMask *getMaximizeButtonMask(void) { return &max_button; }
  inline PixmapMask *getIconifyButtonMask(void) { return &icon_button; }
  inline PixmapMask *getStickyButtonMask(void) { return &stick_button; }

  inline Color *getTextFocus(void) { return &l_text_focus; }
  inline Color *getTextUnfocus(void) { return &l_text_unfocus; }

  inline Color *getButtonPicFocus(void) { return &b_pic_focus; }
  inline Color *getButtonPicUnfocus(void) { return &b_pic_unfocus; }

  inline Texture *getTitleFocus(void) { return &t_focus; }
  inline Texture *getTitleUnfocus(void) { return &t_unfocus; }

  inline Texture *getLabelFocus(void) { return &l_focus; }
  inline Texture *getLabelUnfocus(void) { return &l_unfocus; }

  inline Texture *getHandleFocus(void) { return &h_focus; }
  inline Texture *getHandleUnfocus(void) { return &h_unfocus; }

  inline Texture *getButtonFocus(void) { return &b_focus; }
  inline Texture *getButtonUnfocus(void) { return &b_unfocus; }

  inline Texture *getButtonPressedFocus(void)
  { return &b_pressed_focus; }
  inline Texture *getButtonPressedUnfocus(void)
  { return &b_pressed_unfocus; }

  inline Texture *getGripFocus(void) { return &g_focus; }
  inline Texture *getGripUnfocus(void) { return &g_unfocus; }

  inline unsigned int getHandleWidth(void) const { return handle_width; }
  inline unsigned int getBevelWidth(void) const { return bevel_width; }
  inline unsigned int getFrameWidth(void) const { return frame_width; }
  inline unsigned int getBorderWidth(void) const { return border_width; }

  inline const Font *getFont() const { return font; }

  inline void setShadowFonts(bool fonts) { shadow_fonts = fonts; }
  inline bool hasShadowFonts(void) const { return shadow_fonts; }

  inline void setAAFonts(bool fonts) { aa_fonts = fonts; }
  inline bool hasAAFonts(void) const { return aa_fonts; }

  inline TextJustify textJustify(void) { return justify; }
  inline BulletType bulletType(void) { return bullet_type; }

  inline const Color *getBorderColor() const { return &border_color; }

  inline const Texture *getFrameFocus() const { return &f_focus; }
  inline const Texture *getFrameUnfocus() const { return &f_unfocus; }

  inline void setImageControl(ImageControl *c) {
    image_control = c;
    screen_number = c->getScreenInfo()->screen();
  }
  inline unsigned int getScreen(void) { return screen_number; }

  // XXX add inline accessors for the rest of the bummy
};

}

#endif // __style_hh