X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Frenderstyle.cc;h=d45e421265666d323018284a98f897e3bd7d937f;hb=e451c08ac5a103362adbece9b8a11a16ade739c1;hp=41745ea07e7899dae00934980d7b770a443c81e6;hpb=f9249a35be406e8286561e97fad911b83d6aa430;p=chaz%2Fopenbox diff --git a/otk/renderstyle.cc b/otk/renderstyle.cc index 41745ea0..d45e4212 100644 --- a/otk/renderstyle.cc +++ b/otk/renderstyle.cc @@ -1,19 +1,63 @@ // -*- 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 + namespace otk { +RenderStyle **RenderStyle::_styles = 0; +std::list *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(i, ""); // XXX get a path + _notifies = new std::list[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]; +} + RenderStyle::RenderStyle(int screen, const std::string &stylefile) : _screen(screen), _file(stylefile) { +// pick one.. +#define FIERON +//#define MERRY + +#ifdef FIERON _root_color = new RenderColor(_screen, 0x272a2f); _text_color_focus = new RenderColor(_screen, 0x272a2f); @@ -170,7 +214,7 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile) 0x0); _label_font = new Font(_screen, "Arial,Sans-9:bold", true, 1, 0x40); - _label_justify = RightJustify; + _label_justify = RightBottomJustify; _max_mask = new PixmapMask(); _max_mask->w = _max_mask->h = 8; @@ -218,6 +262,215 @@ RenderStyle::RenderStyle(int screen, const std::string &stylefile) _bevel_width = 1; _handle_width = 4; +#else +# ifdef MERRY + _root_color = new RenderColor(_screen, 0x7b756a); + + _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, + false, + RenderTexture::Flat, + RenderTexture::Bevel1, + false, + RenderTexture::Solid, + false, + 0xe6e6e6, + 0xe6e6e6, + 0x0, + 0x0); + _titlebar_unfocus = new RenderTexture(_screen, + false, + RenderTexture::Flat, + RenderTexture::Bevel1, + false, + RenderTexture::Vertical, + false, + 0xe6e6e6, + 0xd9d9d9, + 0x0, + 0x0); + + _label_focus = new RenderTexture(_screen, + false, + RenderTexture::Flat, + RenderTexture::Bevel1, + true, + RenderTexture::Vertical, + false, + //0x6a6973, + //0x6a6973, + 0x4c59a6, + 0x5a6dbd, + 0x222222, + 0x0); + //urg this ain't so hot +_label_unfocus = new RenderTexture(_screen, + false, + RenderTexture::Flat, + RenderTexture::Bevel1, + true, + RenderTexture::Vertical, + false, + 0xb4b2ad, + 0xc3c1bc, + 0x6a696a, + 0x0); + + + _handle_focus = new RenderTexture(_screen, + false, + RenderTexture::Flat, + RenderTexture::Bevel1, + false, + RenderTexture::Vertical, + false, + 0xe6e6e6, + 0xd9d9d9, + 0x0, + 0x0); + _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, + 0xe6e6e6, + 0xe6e6e6, + 0x0, + 0x0); + + _button_press_focus = new RenderTexture(_screen, + false, + RenderTexture::Sunken, + RenderTexture::Bevel2, + false, + RenderTexture::Vertical, + false, + 0xe6e6e6, + 0xe6e6e6, + 0x0, + 0x0); + _button_press_unfocus = new RenderTexture(_screen, + false, + RenderTexture::Sunken, + RenderTexture::Bevel2, + false, + RenderTexture::Vertical, + false, + 0xe6e6e6, + 0xe6e6e6, + 0x0, + 0x0); + + _grip_focus = new RenderTexture(_screen, + false, + RenderTexture::Flat, + RenderTexture::Bevel1, + false, + RenderTexture::Vertical, + false, + 0xe6e6e6, + 0xd9d9d9, + 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-8", true, 1, 0x3e); + _label_justify = CenterJustify; + + _max_mask = new PixmapMask(); + _max_mask->w = _max_mask->h = 7; + { + char data [] = {0x7c, 0x44, 0x47, 0x47, 0x7f, 0x1f, 0x1f }; + _max_mask->mask = + XCreateBitmapFromData(**display, + display->screenInfo(_screen)->rootWindow(), + data, 7, 7); + } + + _icon_mask = new PixmapMask(); + _icon_mask->w = _icon_mask->h = 7; + { + char data[] = {0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e }; + _icon_mask->mask = + XCreateBitmapFromData(**display, + display->screenInfo(_screen)->rootWindow(), + data, 7, 7); + } + + _alldesk_mask = new PixmapMask(); + _alldesk_mask->w = _alldesk_mask->h = 7; + { + char data[] = {0x00, 0x36, 0x36, 0x00, 0x36, 0x36, 0x00 }; + _alldesk_mask->mask = + XCreateBitmapFromData(**display, + display->screenInfo(_screen)->rootWindow(), + data, 7, 7); + } + + _close_mask = new PixmapMask(); + _close_mask->w = _close_mask->h = 7; + { + char data[] = { 0x22, 0x77, 0x3e, 0x1c, 0x3e, 0x77, 0x22 }; + _close_mask->mask = + XCreateBitmapFromData(**display, + display->screenInfo(_screen)->rootWindow(), + data, 7, 7); + } + + _bevel_width = 1; + _handle_width = 3; +# else +# error 1 +# endif +#endif } RenderStyle::~RenderStyle()