]> Dogcows Code - chaz/openbox/blobdiff - otk/renderstyle.cc
Add the "obsetroot" tool. Use it to set the root background.
[chaz/openbox] / otk / renderstyle.cc
index 9139c0bf8c7c20e211d2f905f7c343911335703c..88c8d7871fca4fd7e62022ab32c40c2c24d303a9 100644 (file)
 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
 
-#ifdef    HAVE_CONFIG_H
-#  include "../config.h"
-#endif // HAVE_CONFIG_H
+#include "config.h"
 
 #include "renderstyle.hh"
 #include "display.hh"
 #include "screeninfo.hh"
 
+#include <cassert>
+
 namespace otk {
 
-RenderStyle::RenderStyle(int screen, const std::string &stylefile)
-  : _screen(screen),
-    _file(stylefile)
+RenderStyle **RenderStyle::_styles = 0;
+std::list<StyleNotify*> *RenderStyle::_notifies = 0;
+
+void RenderStyle::initialize()
 {
+  int screens = ScreenCount(**display);
+  _styles = new RenderStyle*[screens];
+  for (int i = 0; i < screens; ++i) {
+    _styles[i] = new RenderStyle();
+    defaultStyle(_styles[i], i);
+    }
+  _notifies = new std::list<StyleNotify*>[screens];
+}
+
+void RenderStyle::destroy()
+{
+  int screens = ScreenCount(**display);
+  for (int i = 0; i < screens; ++i)
+    delete _styles[i];
+  delete [] _styles;
+  delete [] _notifies;
+}
+
+void RenderStyle::registerNotify(int screen, StyleNotify *n)
+{
+  assert(screen >= 0 && screen < ScreenCount(**display));
+  _notifies[screen].push_back(n);
+}
+
+void RenderStyle::unregisterNotify(int screen, StyleNotify *n)
+{
+  assert(screen >= 0 && screen < ScreenCount(**display));
+  _notifies[screen].remove(n);
+}
+
+RenderStyle *RenderStyle::style(int screen)
+{
+  assert(screen >= 0 && screen < ScreenCount(**display));
+  return _styles[screen];
+}
+
+bool RenderStyle::setStyle(int screen, const ustring &stylefile)
+{
+  RenderStyle *s = new RenderStyle();
+  if (!loadStyle(s, screen, stylefile)) {
+    delete s;
+    return false;
+  }
+  delete _styles[screen];
+  _styles[screen] = s;
+
+  std::list<StyleNotify*>::iterator it, end = _notifies[screen].end();
+  for (it = _notifies[screen].begin(); it != end; ++it)
+    (*it)->styleChanged(*s);
+  return true;
+}
+
+bool RenderStyle::loadStyle(RenderStyle *s, int screen,
+                            const ustring &stylefile)
+{
+  s->_screen = screen;
+  s->_file = stylefile;
 // pick one..
 #define FIERON
 //#define MERRY
 
 #ifdef FIERON
-  _root_color = new RenderColor(_screen, 0x272a2f);
+  s->_root_args = "#272a2f";
   
-  _text_color_focus = new RenderColor(_screen, 0x272a2f);
-  _text_color_unfocus = new RenderColor(_screen, 0x676869);
-
-  _button_color_focus = new RenderColor(_screen, 0x96ba86);
-  _button_color_unfocus = new RenderColor(_screen, 0x676869);
-
-  _frame_border_color = new RenderColor(_screen, 0x181f24);
-  _frame_border_width = 1;
-
-  _client_border_color_focus = new RenderColor(_screen, 0x858687);
-  _client_border_color_unfocus = new RenderColor(_screen, 0x555657);
-  _client_border_width = 1;
+  s->_text_color_focus = new RenderColor(screen, 0x272a2f);
+  s->_text_color_unfocus = new RenderColor(screen, 0x676869);
+
+  s->_button_color_focus = new RenderColor(screen, 0x96ba86);
+  s->_button_color_unfocus = new RenderColor(screen, 0x676869);
+
+  s->_frame_border_color = new RenderColor(screen, 0x181f24);
+  s->_frame_border_width = 1;
+
+  s->_client_border_color_focus = new RenderColor(screen, 0x858687);
+  s->_client_border_color_unfocus = new RenderColor(screen, 0x555657);
+  s->_client_border_width = 1;
+
+  s->_titlebar_focus = new RenderTexture(screen,
+                                         false,
+                                         RenderTexture::Flat,
+                                         RenderTexture::Bevel1,
+                                         false,
+                                         RenderTexture::Vertical,
+                                         false,
+                                         0x858687,
+                                         0x373a3f,
+                                         0x0,
+                                         0x0);
+  s->_titlebar_unfocus = new RenderTexture(screen,
+                                           false,
+                                           RenderTexture::Flat,
+                                           RenderTexture::Bevel1,
+                                           false,
+                                           RenderTexture::Vertical,
+                                        false,
+                                           0x555657,
+                                           0x171a1f,
+                                           0x0,
+                                           0x0);
 
-  _titlebar_focus = new RenderTexture(_screen,
+  s->_label_focus = new RenderTexture(screen,
                                       false,
                                       RenderTexture::Flat,
                                       RenderTexture::Bevel1,
-                                      false,
+                                      true,
                                       RenderTexture::Vertical,
                                       false,
-                                      0x858687,
-                                      0x373a3f,
-                                      0x0,
+                                      0x96ba86,
+                                      0x5a724c,
+                                      0x181f24,
                                       0x0);
-  _titlebar_unfocus = new RenderTexture(_screen,
+  s->_label_unfocus = new RenderTexture(screen,
                                         false,
-                                        RenderTexture::Flat,
+                                        RenderTexture::Sunken,
                                         RenderTexture::Bevel1,
                                         false,
-                                        RenderTexture::Vertical,
+                                        RenderTexture::CrossDiagonal,
                                         false,
                                         0x555657,
-                                        0x171a1f,
+                                        0x272a2f,
                                         0x0,
                                         0x0);
 
-  _label_focus = new RenderTexture(_screen,
-                                   false,
-                                   RenderTexture::Flat,
-                                   RenderTexture::Bevel1,
-                                   true,
-                                   RenderTexture::Vertical,
-                                   false,
-                                   0x96ba86,
-                                   0x5a724c,
-                                   0x181f24,
-                                   0x0);
-  _label_unfocus = new RenderTexture(_screen,
+  s->_handle_focus = new RenderTexture(screen,
+                                       false,
+                                       RenderTexture::Flat,
+                                       RenderTexture::Bevel1,
+                                       false,
+                                       RenderTexture::Vertical,
+                                       false,
+                                       0x858687,
+                                       0x373a3f,
+                                       0x0,
+                                       0x0);
+  s->_handle_unfocus = new RenderTexture(screen,
+                                         false,
+                                         RenderTexture::Flat,
+                                         RenderTexture::Bevel1,
+                                         false,
+                                         RenderTexture::Vertical,
+                                         false,
+                                         0x555657,
+                                         0x171a1f,
+                                         0x0,
+                                         0x0);
+  
+  s->_button_unpress_focus = new RenderTexture(screen,
+                                               false,
+                                               RenderTexture::Raised,
+                                               RenderTexture::Bevel2,
+                                               false,
+                                               RenderTexture::CrossDiagonal,
+                                               false,
+                                               0x858687,
+                                               0x272a2f,
+                                               0x0,
+                                               0x0);
+  s->_button_unpress_unfocus = new RenderTexture(screen,
+                                                 false,
+                                                 RenderTexture::Raised,
+                                                 RenderTexture::Bevel2,
+                                                 false,
+                                                 RenderTexture::CrossDiagonal,
+                                                 false,
+                                                 0x555657,
+                                                 0x171a1f,
+                                                 0x0,
+                                                 0x0);
+
+  s->_button_press_focus = new RenderTexture(screen,
+                                             false,
+                                             RenderTexture::Sunken,
+                                             RenderTexture::Bevel2,
+                                             false,
+                                             RenderTexture::CrossDiagonal,
+                                             false,
+                                             0x96ba86,
+                                             0x5a724c,
+                                             0x0,
+                                             0x0);
+  s->_button_press_unfocus = new RenderTexture(screen,
+                                               false,
+                                               RenderTexture::Sunken,
+                                               RenderTexture::Bevel2,
+                                               false,
+                                               RenderTexture::CrossDiagonal,
+                                               false,
+                                               0x555657,
+                                               0x171a1f,
+                                               0x0,
+                                               0x0);
+  
+  s->_grip_focus = new RenderTexture(screen,
                                      false,
-                                     RenderTexture::Sunken,
+                                     RenderTexture::Flat,
                                      RenderTexture::Bevel1,
                                      false,
-                                     RenderTexture::CrossDiagonal,
+                                     RenderTexture::Vertical,
                                      false,
-                                     0x555657,
-                                     0x272a2f,
+                                     0x96ba86,
+                                     0x5a724c,
                                      0x0,
                                      0x0);
-
-
-  _handle_focus = new RenderTexture(_screen,
-                                    false,
-                                    RenderTexture::Flat,
-                                    RenderTexture::Bevel1,
-                                    false,
-                                    RenderTexture::Vertical,
-                                    false,
-                                    0x858687,
-                                    0x373a3f,
-                                    0x0,
-                                    0x0);
-  _handle_unfocus = new RenderTexture(_screen,
-                                      false,
-                                      RenderTexture::Flat,
-                                      RenderTexture::Bevel1,
-                                      false,
-                                      RenderTexture::Vertical,
-                                      false,
-                                      0x555657,
-                                      0x171a1f,
-                                      0x0,
-                                      0x0);
-
-  
-  _button_unpress_focus = new RenderTexture(_screen,
-                                            false,
-                                            RenderTexture::Raised,
-                                            RenderTexture::Bevel2,
-                                            false,
-                                            RenderTexture::CrossDiagonal,
-                                            false,
-                                            0x858687,
-                                            0x272a2f,
-                                            0x0,
-                                            0x0);
-  _button_unpress_unfocus = new RenderTexture(_screen,
-                                              false,
-                                              RenderTexture::Raised,
-                                              RenderTexture::Bevel2,
-                                              false,
-                                              RenderTexture::CrossDiagonal,
-                                              false,
-                                              0x555657,
-                                              0x171a1f,
-                                              0x0,
-                                              0x0);
-
-  _button_press_focus = new RenderTexture(_screen,
-                                          false,
-                                          RenderTexture::Sunken,
-                                          RenderTexture::Bevel2,
-                                          false,
-                                          RenderTexture::CrossDiagonal,
-                                          false,
-                                          0x96ba86,
-                                          0x5a724c,
-                                          0x0,
-                                          0x0);
-  _button_press_unfocus = new RenderTexture(_screen,
-                                            false,
-                                            RenderTexture::Sunken,
-                                            RenderTexture::Bevel2,
-                                            false,
-                                            RenderTexture::CrossDiagonal,
-                                            false,
-                                            0x555657,
-                                            0x171a1f,
-                                            0x0,
-                                            0x0);
-
-  _grip_focus = new RenderTexture(_screen,
-                                  false,
-                                  RenderTexture::Flat,
-                                  RenderTexture::Bevel1,
-                                  false,
-                                  RenderTexture::Vertical,
-                                  false,
-                                  0x96ba86,
-                                  0x5a724c,
-                                  0x0,
-                                  0x0);
-  _grip_unfocus = new RenderTexture(_screen,
-                                    false,
-                                    RenderTexture::Flat,
-                                    RenderTexture::Bevel1,
-                                    false,
-                                    RenderTexture::Vertical,
-                                    false,
-                                    0x555657,
-                                    0x171a1f,
-                                    0x0,
-                                    0x0);
-
-  _label_font = new Font(_screen, "Arial,Sans-9:bold", true, 1, 0x40);
-  _label_justify = RightJustify;
-
-  _max_mask = new PixmapMask();
-  _max_mask->w = _max_mask->h = 8;
+  s->_grip_unfocus = new RenderTexture(screen,
+                                       false,
+                                       RenderTexture::Flat,
+                                       RenderTexture::Bevel1,
+                                       false,
+                                       RenderTexture::Vertical,
+                                       false,
+                                       0x555657,
+                                       0x171a1f,
+                                       0x0,
+                                       0x0);
+
+  s->_label_font = new Font(screen, "Arial,Sans-9:bold", true, 1, 0x40);
+  s->_label_justify = RightBottomJustify;
+
+  s->_max_mask = new PixmapMask();
+  s->_max_mask->w = s->_max_mask->h = 8;
   {
     //char data[] = { 0x7e, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0x7e };
     char data []  = {0x00, 0x00, 0x18, 0x3c, 0x66, 0x42, 0x00, 0x00 };
-    _max_mask->mask =
+    s->_max_mask->mask =
       XCreateBitmapFromData(**display,
-                            display->screenInfo(_screen)->rootWindow(),
+                            display->screenInfo(screen)->rootWindow(),
                             data, 8, 8);
   }
 
-  _icon_mask = new PixmapMask();
-  _icon_mask->w = _icon_mask->h = 8;
+  s->_icon_mask = new PixmapMask();
+  s->_icon_mask->w = s->_icon_mask->h = 8;
   {
     //char data[] = { 0x00, 0x00, 0xc3, 0xe7, 0x7e, 0x3c, 0x18, 0x00 };
     char data[] = { 0x00, 0x00, 0x42, 0x66, 0x3c, 0x18, 0x00, 0x00 };
-    _icon_mask->mask =
+    s->_icon_mask->mask =
       XCreateBitmapFromData(**display,
-                            display->screenInfo(_screen)->rootWindow(),
+                            display->screenInfo(screen)->rootWindow(),
                             data, 8, 8);
   }
   
-  _alldesk_mask = new PixmapMask();
-  _alldesk_mask->w = _alldesk_mask->h = 8;
+  s->_alldesk_mask = new PixmapMask();
+  s->_alldesk_mask->w = s->_alldesk_mask->h = 8;
   {
     //char data[] = { 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00 };
     char data[] = { 0x00, 0x66, 0x66, 0x00, 0x00, 0x66, 0x66, 0x00 };
-    _alldesk_mask->mask =
+    s->_alldesk_mask->mask =
       XCreateBitmapFromData(**display,
-                            display->screenInfo(_screen)->rootWindow(),
+                            display->screenInfo(screen)->rootWindow(),
                             data, 8, 8);
   }
   
-  _close_mask = new PixmapMask();
-  _close_mask->w = _close_mask->h = 8;
+  s->_close_mask = new PixmapMask();
+  s->_close_mask->w = s->_close_mask->h = 8;
   {
     //char data[] = { 0xc3, 0xe7, 0x7e, 0x3c, 0x3c, 0x7e, 0xe7, 0xc3 };
     char data[] = { 0x00, 0xc3, 0x66, 0x3c, 0x3c, 0x66, 0xc3, 0x00 };
-    _close_mask->mask =
+    s->_close_mask->mask =
       XCreateBitmapFromData(**display,
-                            display->screenInfo(_screen)->rootWindow(),
+                            display->screenInfo(screen)->rootWindow(),
                             data, 8, 8);
   }
 
-  _bevel_width = 1;
-  _handle_width = 4;
+  s->_bevel_width = 1;
+  s->_handle_width = 4;
 #else
 #  ifdef MERRY
-  _root_color = new RenderColor(_screen, 0x7b756a);
+  s->_root_args = "#7b756a";
   
-  _text_color_focus = new RenderColor(_screen, 0xffffff);
-  _text_color_unfocus = new RenderColor(_screen, 0xffffff);
-
-  _button_color_focus = new RenderColor(_screen, 0x222222);
-  _button_color_unfocus = new RenderColor(_screen, 0x333333);
-
-  _frame_border_color = new RenderColor(_screen, 0x222222);
-  _frame_border_width = 1;
-
-  _client_border_color_focus = new RenderColor(_screen, 0x858687);
-  _client_border_color_unfocus = new RenderColor(_screen, 0x555657);
-  _client_border_width = 0;
-
-  _titlebar_focus = new RenderTexture(_screen,
+  s->_text_color_focus = new RenderColor(screen, 0xffffff);
+  s->_text_color_unfocus = new RenderColor(screen, 0xffffff);
+
+  s->_button_color_focus = new RenderColor(screen, 0x222222);
+  s->_button_color_unfocus = new RenderColor(screen, 0x333333);
+
+  s->_frame_border_color = new RenderColor(screen, 0x222222);
+  s->_frame_border_width = 1;
+
+  s->_client_border_color_focus = new RenderColor(screen, 0x858687);
+  s->_client_border_color_unfocus = new RenderColor(screen, 0x555657);
+  s->_client_border_width = 0;
+
+  s->_titlebar_focus = new RenderTexture(screen,
+                                         false,
+                                         RenderTexture::Flat,
+                                         RenderTexture::Bevel1,
+                                         false,
+                                         RenderTexture::Solid,
+                                         false,
+                                         0xe6e6e6,
+                                         0xe6e6e6,  
+                                         0x0,
+                                         0x0);
+  s->_titlebar_unfocus = new RenderTexture(screen,
+                                           false,
+                                           RenderTexture::Flat,
+                                           RenderTexture::Bevel1,
+                                           false,
+                                           RenderTexture::Solid,
+                                           false,
+                                           0xe6e6e6,
+                                           0xd9d9d9,
+                                           0x0,
+                                           0x0);
+
+  s->_label_focus = new RenderTexture(screen,
                                       false,
                                       RenderTexture::Flat,
                                       RenderTexture::Bevel1,
+                                      true,
+                                      RenderTexture::Vertical,
                                       false,
-                                      RenderTexture::Solid,
-                                      false,
-                                      0xe6e6e6,
-                                      0xe6e6e6,  
-                                     0x0,
+                                      //0x6a6973,
+                                      //0x6a6973,
+                                      0x4c59a6,
+                                      0x5a6dbd,
+                                      0x222222,
                                       0x0);
-  _titlebar_unfocus = new RenderTexture(_screen,
+  //urg this ain't so hot
+  s->_label_unfocus = new RenderTexture(screen,
                                         false,
                                         RenderTexture::Flat,
                                         RenderTexture::Bevel1,
+                                        true,
+                                        RenderTexture::Vertical,
                                         false,
-                                        RenderTexture::Solid,
-                                        false,
-                                        0xe6e6e6,
-                                        0xe6e6e6,
-                                        0x0,
+                                        0xb4b2ad,
+                                        0xc3c1bc,
+                                        0x6a696a,
                                         0x0);
 
-  _label_focus = new RenderTexture(_screen,
-                                   false,
-                                   RenderTexture::Flat,
-                                   RenderTexture::Bevel1,
-                                   true,
-                                   RenderTexture::Solid,
-                                   false,
-                                   //0x6a6973,
-                                   //0x6a6973,
-                                   0x4c59a6,
-                                  0x4c59a6,
-                                  0x222222,
-                                   0x0);
-  _label_unfocus = new RenderTexture(_screen,
-                                       false,
-                                   RenderTexture::Flat,
-                                   RenderTexture::Bevel1,
-                                   true,
-                                   RenderTexture::Solid,
-                                   false,
-                                   0xcdcac7,
-                                   0xcdcac7,
-                               0xb0ada9,
-                                   0x0);
-
-
-  _handle_focus = new RenderTexture(_screen,
-                                    false,
-                                    RenderTexture::Flat,
-                                    RenderTexture::Bevel1,
-                                    false,
-                                    RenderTexture::Solid,
-                                    false,
-                                    0xe6e6e6,
-                                        0xe6e6e6,
-                                    0x0,
-                                    0x0);
-  _handle_unfocus = new RenderTexture(_screen,
-                                      false,
-                                      RenderTexture::Flat,
-                                      RenderTexture::Bevel1,
-                                      false,
-                                      RenderTexture::Solid,
-                                      false,
-                                     0xe6e6e6,
-                                        0xe6e6e6,
-                                      0x0,
-                                      0x0);
+
+  s->_handle_focus = new RenderTexture(screen,
+                                       false,
+                                       RenderTexture::Flat,
+                                       RenderTexture::Bevel1,
+                                       false,
+                                       RenderTexture::Vertical,
+                                       false,
+                                       0xe6e6e6,
+                                       0xd9d9d9,
+                                       0x0,
+                                       0x0);
+  s->_handle_unfocus = new RenderTexture(screen,
+                                         false,
+                                         RenderTexture::Flat,
+                                         RenderTexture::Bevel1,
+                                         false,
+                                         RenderTexture::Solid,
+                                         false,
+                                         0xe6e6e6,
+                                         0xe6e6e6,
+                                         0x0,
+                                         0x0);
 
   
-  _button_unpress_focus = new RenderTexture(_screen,
-                                            false,
-                                            RenderTexture::Flat,
-                                            RenderTexture::Bevel1,
-                                            false,
-                                            RenderTexture::Solid,
-                                            false,
-                                            0xe6e6e6,
-                                        0xe6e6e6,
-                                            0x0,
-                                            0x0);
-  _button_unpress_unfocus = new RenderTexture(_screen,
-                                              false,
-                                              RenderTexture::Flat,
-                                              RenderTexture::Bevel1,
-                                              false,
-                                              RenderTexture::Solid,
-                                              false,
+  s->_button_unpress_focus = new RenderTexture(screen,
+                                               false,
+                                               RenderTexture::Flat,
+                                               RenderTexture::Bevel1,
+                                               false,
+                                               RenderTexture::Solid,
+                                               false,
+                                               0xe6e6e6,
+                                               0xe6e6e6,
+                                               0x0,
+                                               0x0);
+  s->_button_unpress_unfocus = new RenderTexture(screen,
+                                                 false,
+                                                 RenderTexture::Flat,
+                                                 RenderTexture::Bevel1,
+                                                 false,
+                                                 RenderTexture::Solid,
+                                                 false,
+                                                 0xe6e6e6,
+                                                 0xe6e6e6,
+                                                 0x0,
+                                                 0x0);
+
+  s->_button_press_focus = new RenderTexture(screen,
+                                             false,
+                                             RenderTexture::Sunken,
+                                             RenderTexture::Bevel2,
+                                             false,
+                                             RenderTexture::Vertical,
+                                             false,
+                                             0xe6e6e6,
                                              0xe6e6e6,
-                                        0xe6e6e6,
-                                              0x0,
-                                              0x0);
-
-  _button_press_focus = new RenderTexture(_screen,
-                                          false,
-                                            RenderTexture::Sunken,
-                                            RenderTexture::Bevel1,
-                                          false,
-                                          RenderTexture::Solid,
-                                          false,
-                                          0xe6e6e6,
-                                          0xe6e6e6,
-                                          0x0,
-                                          0x0);
-  _button_press_unfocus = new RenderTexture(_screen,
-                                            false,
-                                              RenderTexture::Sunken,
-                                            RenderTexture::Bevel1,
-                                            false,
-                                            RenderTexture::Solid,
-                                            false,
-                                              0xe6e6e6,
-                                        0xe6e6e6,
-                                            0x0,
-                                            0x0);
-
-  _grip_focus = new RenderTexture(_screen,
-                                  false,
-                                  RenderTexture::Flat,
-                                  RenderTexture::Bevel1,
-                                  false,
-                                  RenderTexture::Solid,
-                                  false,
-                                    0xe6e6e6,
-                                        0xe6e6e6,
-                                  0x0,
-                                  0x0);
-  _grip_unfocus = new RenderTexture(_screen,
-                                    false,
-                                    RenderTexture::Flat,
-                                    RenderTexture::Bevel1,
-                                    false,
-                                    RenderTexture::Solid,
-                                    false,
-                                      0xe6e6e6,
-                                        0xe6e6e6,
-                                    0x0,
-                                    0x0);
-
-  _label_font = new Font(_screen, "Arial,Sans-9", true, 1, 0x3e);
-  _label_justify = CenterJustify;
-
-  _max_mask = new PixmapMask();
-  _max_mask->w = _max_mask->h = 7;
+                                             0x0,
+                                             0x0);
+  s->_button_press_unfocus = new RenderTexture(screen,
+                                               false,
+                                               RenderTexture::Sunken,
+                                               RenderTexture::Bevel2,
+                                               false,
+                                               RenderTexture::Vertical,
+                                               false,
+                                               0xe6e6e6,
+                                               0xe6e6e6,
+                                               0x0,
+                                               0x0);
+
+  s->_grip_focus = new RenderTexture(screen,
+                                     false,
+                                     RenderTexture::Flat,
+                                     RenderTexture::Bevel1,
+                                     false,
+                                     RenderTexture::Vertical,
+                                     false,
+                                     0xe6e6e6,
+                                     0xd9d9d9,
+                                     0x0,
+                                     0x0);
+  s->_grip_unfocus = new RenderTexture(screen,
+                                       false,
+                                       RenderTexture::Flat,
+                                       RenderTexture::Bevel1,
+                                       false,
+                                       RenderTexture::Solid,
+                                       false,
+                                       0xe6e6e6,
+                                       0xe6e6e6,
+                                       0x0,
+                                       0x0);
+
+  s->_label_font = new Font(screen, "Arial,Sans-8", true, 1, 0x3e);
+  s->_label_justify = CenterJustify;
+
+  s->_max_mask = new PixmapMask();
+  s->_max_mask->w = s->_max_mask->h = 7;
   {
-    //char data[] = { 0x7e, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0x7e };
     char data []  = {0x7c, 0x44, 0x47, 0x47, 0x7f, 0x1f, 0x1f  };
-    _max_mask->mask =
+    s->_max_mask->mask =
       XCreateBitmapFromData(**display,
-                            display->screenInfo(_screen)->rootWindow(),
+                            display->screenInfo(screen)->rootWindow(),
                             data, 7, 7);
   }
 
-  _icon_mask = new PixmapMask();
-  _icon_mask->w = _icon_mask->h = 7;
+  s->_icon_mask = new PixmapMask();
+  s->_icon_mask->w = s->_icon_mask->h = 7;
   {
-    //char data[] = { 0x00, 0x00, 0xc3, 0xe7, 0x7e, 0x3c, 0x18, 0x00 };
     char data[] = {0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e };
-    _icon_mask->mask =
+    s->_icon_mask->mask =
       XCreateBitmapFromData(**display,
-                            display->screenInfo(_screen)->rootWindow(),
+                            display->screenInfo(screen)->rootWindow(),
                             data, 7, 7);
   }
   
-  _alldesk_mask = new PixmapMask();
-  _alldesk_mask->w = _alldesk_mask->h = 7;
+  s->_alldesk_mask = new PixmapMask();
+  s->_alldesk_mask->w = s->_alldesk_mask->h = 7;
   {
-    //char data[] = { 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x00, 0x00 };
     char data[] = {0x00, 0x36, 0x36, 0x00, 0x36, 0x36, 0x00 };
-    _alldesk_mask->mask =
+    s->_alldesk_mask->mask =
       XCreateBitmapFromData(**display,
-                            display->screenInfo(_screen)->rootWindow(),
+                            display->screenInfo(screen)->rootWindow(),
                             data, 7, 7);
   }
   
-  _close_mask = new PixmapMask();
-  _close_mask->w = _close_mask->h = 7;
+  s->_close_mask = new PixmapMask();
+  s->_close_mask->w = s->_close_mask->h = 7;
   {
-    //char data[] = { 0xc3, 0xe7, 0x7e, 0x3c, 0x3c, 0x7e, 0xe7, 0xc3 };
     char data[] = {  0x22, 0x77, 0x3e, 0x1c, 0x3e, 0x77, 0x22 };
-    _close_mask->mask =
+    s->_close_mask->mask =
       XCreateBitmapFromData(**display,
-                            display->screenInfo(_screen)->rootWindow(),
+                            display->screenInfo(screen)->rootWindow(),
                             data, 7, 7);
   }
 
-  _bevel_width = 1;
-  _handle_width = 3;
+  s->_bevel_width = 1;
+  s->_handle_width = 3;
 #  else
 #    error 1
 #  endif
 #endif
+
+  return true;
 }
 
-RenderStyle::~RenderStyle()
+void RenderStyle::defaultStyle(RenderStyle *s, int screen)
 {
-  delete _root_color;
+  s->_screen = screen;
+  s->_file = "";
+
+  s->_root_args = "#000000";
+  s->_text_color_focus = new RenderColor(screen, 0xffffff);
+  s->_text_color_unfocus = new RenderColor(screen, 0xffffff);
+  s->_button_color_focus = new RenderColor(screen, 0);
+  s->_button_color_unfocus = new RenderColor(screen, 0);
+  s->_frame_border_color = new RenderColor(screen, 0);
+  s->_frame_border_width = 1;
+  s->_client_border_color_focus = new RenderColor(screen, 0);
+  s->_client_border_color_unfocus = new RenderColor(screen, 0);
+  s->_client_border_width = 1;
+  s->_titlebar_focus = new RenderTexture(screen,
+                                         false,
+                                         RenderTexture::Flat,
+                                         RenderTexture::Bevel1,
+                                         false,
+                                         RenderTexture::Solid,
+                                         false,
+                                         0, 0, 0, 0);
+  s->_titlebar_unfocus = new RenderTexture(screen,
+                                           false,
+                                           RenderTexture::Flat,
+                                           RenderTexture::Bevel1,
+                                           false,
+                                           RenderTexture::Solid,
+                                           false,
+                                           0, 0, 0, 0);
+
+  s->_label_focus = new RenderTexture(screen,
+                                      false,
+                                      RenderTexture::Flat,
+                                      RenderTexture::Bevel1,
+                                      true,
+                                      RenderTexture::Solid,
+                                      false,
+                                      0, 0, 0, 0);
+  s->_label_unfocus = new RenderTexture(screen,
+                                        false,
+                                        RenderTexture::Flat,
+                                        RenderTexture::Bevel1,
+                                        false,
+                                        RenderTexture::Solid,
+                                        false,
+                                        0, 0, 0, 0);
+
+  s->_handle_focus = new RenderTexture(screen,
+                                       false,
+                                       RenderTexture::Flat,
+                                       RenderTexture::Bevel1,
+                                       false,
+                                       RenderTexture::Solid,
+                                       false,
+                                       0, 0, 0, 0);
+  s->_handle_unfocus = new RenderTexture(screen,
+                                         false,
+                                         RenderTexture::Flat,
+                                         RenderTexture::Bevel1,
+                                         false,
+                                         RenderTexture::Solid,
+                                         false,
+                                         0, 0, 0, 0);
   
+  s->_button_unpress_focus = new RenderTexture(screen,
+                                               false,
+                                               RenderTexture::Flat,
+                                               RenderTexture::Bevel1,
+                                               false,
+                                               RenderTexture::Solid,
+                                               false,
+                                               0, 0, 0, 0);
+  s->_button_unpress_unfocus = new RenderTexture(screen,
+                                                 false,
+                                                 RenderTexture::Flat,
+                                                 RenderTexture::Bevel1,
+                                                 false,
+                                                 RenderTexture::Solid,
+                                                 false,
+                                                 0, 0, 0, 0);
+
+  s->_button_press_focus = new RenderTexture(screen,
+                                             false,
+                                             RenderTexture::Flat,
+                                             RenderTexture::Bevel1,
+                                             false,
+                                             RenderTexture::Solid,
+                                             false,
+                                             0, 0, 0, 0);
+  s->_button_press_unfocus = new RenderTexture(screen,
+                                               false,
+                                               RenderTexture::Flat,
+                                               RenderTexture::Bevel1,
+                                               false,
+                                               RenderTexture::Solid,
+                                               false,
+                                               0, 0, 0, 0);
+  
+  s->_grip_focus = new RenderTexture(screen,
+                                     false,
+                                     RenderTexture::Flat,
+                                     RenderTexture::Bevel1,
+                                     false,
+                                     RenderTexture::Solid,
+                                     false,
+                                     0, 0, 0, 0);
+  s->_grip_unfocus = new RenderTexture(screen,
+                                       false,
+                                       RenderTexture::Flat,
+                                       RenderTexture::Bevel1,
+                                       false,
+                                       RenderTexture::Solid,
+                                       false,
+                                       0, 0, 0, 0);
+
+  s->_label_font = new Font(screen, "Sans-9", false, 0, 0);
+  s->_label_justify = LeftTopJustify;
+
+  s->_max_mask = new PixmapMask();
+  s->_max_mask->w = s->_max_mask->h = 0;
+  s->_max_mask->mask = None;
+
+  s->_icon_mask = new PixmapMask();
+  s->_icon_mask->w = s->_icon_mask->h = 0;
+  s->_icon_mask->mask = None;
+  
+  s->_alldesk_mask = new PixmapMask();
+  s->_alldesk_mask->w = s->_alldesk_mask->h = 0;
+  s->_alldesk_mask->mask = 0;
+  
+  s->_close_mask = new PixmapMask();
+  s->_close_mask->w = s->_close_mask->h = 8;
+  s->_close_mask->mask = 0;
+
+  s->_bevel_width = 1;
+  s->_handle_width = 4;
+}
+
+RenderStyle::~RenderStyle()
+{
+  assert(_text_color_focus);
   delete _text_color_focus;
+  assert(_text_color_unfocus);
   delete _text_color_unfocus;
 
+  assert(_button_color_focus);
   delete _button_color_focus;
+  assert(_button_color_unfocus);
   delete _button_color_unfocus;
 
+  assert(_frame_border_color);
   delete _frame_border_color;
 
+  assert(_client_border_color_focus);
   delete _client_border_color_focus; 
+  assert(_client_border_color_unfocus);
   delete _client_border_color_unfocus;
  
+  assert(_titlebar_focus);
   delete _titlebar_focus;
+  assert(_titlebar_unfocus);
   delete _titlebar_unfocus;
 
+  assert(_label_focus);
   delete _label_focus;
+  assert(_label_unfocus);
   delete _label_unfocus;
 
+  assert(_handle_focus);
   delete _handle_focus;
+  assert(_handle_unfocus);
   delete _handle_unfocus;
 
+  assert(_button_unpress_focus);
   delete _button_unpress_focus;
+  assert(_button_unpress_unfocus);
   delete _button_unpress_unfocus;
+  assert(_button_press_focus);
   delete _button_press_focus;
+  assert(_button_press_unfocus);
   delete _button_press_unfocus;
 
+  assert(_grip_focus);
   delete _grip_focus;
+  assert(_grip_unfocus);
   delete _grip_unfocus;
 
+  assert(_label_font);
   delete _label_font;
 
+  assert(_max_mask);
   delete _max_mask;
+  assert(_icon_mask);
   delete _icon_mask;
+  assert(_alldesk_mask);
   delete _alldesk_mask;
+  assert(_close_mask);
   delete _close_mask;
 }
 
This page took 0.043017 seconds and 4 git commands to generate.