From 033e9843bcec8340c9e657fe0f0519f86075424b Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 22 Jan 2003 22:46:16 +0000 Subject: [PATCH] otk using new render shit.. supposedly --- otk/application.cc | 17 +++-------------- otk/application.hh | 10 +++------- otk/appwidget.cc | 2 +- otk/button.cc | 11 +++++------ otk/button.hh | 2 +- otk/focuslabel.cc | 23 +++++++++++------------ otk/focuslabel.hh | 2 +- otk/focuswidget.cc | 2 +- otk/focuswidget.hh | 10 +++++----- otk/label.cc | 19 +++++++++---------- otk/label.hh | 2 +- otk/otk_test.cc | 22 +++++++++++----------- otk/rendercolor.cc | 3 ++- otk/rendercolor.hh | 2 ++ otk/rendercontrol.cc | 5 +++-- otk/rendercontrol.hh | 5 +++-- otk/renderstyle.hh | 4 +++- otk/widget.cc | 24 +++++++++++++++++------- otk/widget.hh | 16 ++++++++-------- 19 files changed, 90 insertions(+), 91 deletions(-) diff --git a/otk/application.cc b/otk/application.cc index e325a582..e4de62c1 100644 --- a/otk/application.cc +++ b/otk/application.cc @@ -30,22 +30,16 @@ Application::Application(int argc, char **argv) (void)argc; (void)argv; - const ScreenInfo *s_info = _display.screenInfo(DefaultScreen(*_display)); - Timer::initialize(); RenderColor::initialize(); Property::initialize(); - _img_ctrl = new ImageControl(s_info, True, 4, 5, 200); - _style_conf = new Configuration(False); - _style = new Style(_img_ctrl); + _style = new RenderStyle(DefaultScreen(*_display), ""); // XXX: get a path! loadStyle(); } Application::~Application() { - delete _style_conf; - delete _img_ctrl; delete _style; RenderColor::destroy(); Timer::destroy(); @@ -53,14 +47,9 @@ Application::~Application() void Application::loadStyle(void) { - // find the style name as a property + // XXX: find the style name as a property std::string style = "/usr/local/share/openbox/styles/artwiz"; - _style_conf->setFile(style); - if (!_style_conf->load()) { - std::cerr << "ERROR: Unable to load style \"" << style << "\".\n"; - ::exit(1); - } - _style->load(*_style_conf); + //_style->load(style); } void Application::run(void) diff --git a/otk/application.hh b/otk/application.hh index 4d7b0d89..6f1cebc6 100644 --- a/otk/application.hh +++ b/otk/application.hh @@ -4,9 +4,7 @@ #include "eventdispatcher.hh" #include "display.hh" -#include "configuration.hh" -#include "image.hh" -#include "style.hh" +#include "renderstyle.hh" namespace otk { @@ -25,16 +23,14 @@ public: void setDockable(bool dockable) { _dockable = dockable; } inline bool isDockable(void) const { return _dockable; } - inline Style *getStyle(void) const { return _style; } + inline RenderStyle *getStyle(void) const { return _style; } // more accessors private: void loadStyle(void); Display _display; - ImageControl *_img_ctrl; - Configuration *_style_conf; - Style *_style; + RenderStyle *_style; bool _dockable; int _appwidget_count; diff --git a/otk/appwidget.cc b/otk/appwidget.cc index 5b1225f7..c62a0d92 100644 --- a/otk/appwidget.cc +++ b/otk/appwidget.cc @@ -15,7 +15,7 @@ extern "C" { namespace otk { AppWidget::AppWidget(Application *app, Direction direction, - Cursor cursor, int bevel_width) + Cursor cursor, int bevel_width) : Widget(app, app->getStyle(), direction, cursor, bevel_width), _application(app) { diff --git a/otk/button.cc b/otk/button.cc index 04906fe5..e7340d1b 100644 --- a/otk/button.cc +++ b/otk/button.cc @@ -19,15 +19,14 @@ Button::~Button() } -void Button::setStyle(Style *style) +void Button::setStyle(RenderStyle *style) { FocusLabel::setStyle(style); - // XXX: do this again - //setTexture(style->getButtonFocus()); - //setUnfocusTexture(style->getButtonUnfocus()); - //_pressed_focus_tx = style->getButtonPressedFocus(); - //_pressed_unfocus_tx = style->getButtonPressedUnfocus(); + setTexture(style->buttonUnpressFocusBackground()); + setUnfocusTexture(style->buttonUnpressUnfocusBackground()); + _pressed_focus_tx = style->buttonPressFocusBackground(); + _pressed_unfocus_tx = style->buttonPressUnfocusBackground(); } diff --git a/otk/button.hh b/otk/button.hh index dd3c78b9..1483677e 100644 --- a/otk/button.hh +++ b/otk/button.hh @@ -33,7 +33,7 @@ public: void buttonPressHandler(const XButtonEvent &e); void buttonReleaseHandler(const XButtonEvent &e); - virtual void setStyle(Style *style); + virtual void setStyle(RenderStyle *style); private: diff --git a/otk/focuslabel.cc b/otk/focuslabel.cc index 6869d231..24f3ff52 100644 --- a/otk/focuslabel.cc +++ b/otk/focuslabel.cc @@ -20,22 +20,21 @@ FocusLabel::~FocusLabel() } -void FocusLabel::setStyle(Style *style) +void FocusLabel::setStyle(RenderStyle *style) { FocusWidget::setStyle(style); - // XXX: do this again - //setTexture(style->getLabelFocus()); - //setUnfocusTexture(style->getLabelUnfocus()); + setTexture(style->labelFocusBackground()); + setUnfocusTexture(style->labelUnfocusBackground()); } void FocusLabel::renderForeground(void) { - const Font *ft = style()->getFont(); - Color *text_color = (isFocused() ? style()->getTextFocus() - : style()->getTextUnfocus()); - unsigned int sidemargin = style()->getBevelWidth() * 2; + const Font *ft = style()->labelFont(); + RenderColor *text_color = (isFocused() ? style()->textFocusColor() + : style()->textUnfocusColor()); + unsigned int sidemargin = style()->bevelWidth() * 2; ustring t = _text; // the actual text to draw int x = sidemargin; // x coord for the text @@ -54,14 +53,14 @@ void FocusLabel::renderForeground(void) } while (length > max_length && text_len-- > 0); // justify the text - switch (style()->textJustify()) { - case Style::RightJustify: + switch (style()->labelTextJustify()) { + case RenderStyle::RightJustify: x += max_length - length; break; - case Style::CenterJustify: + case RenderStyle::CenterJustify: x += (max_length - length) / 2; break; - case Style::LeftJustify: + case RenderStyle::LeftJustify: break; } } diff --git a/otk/focuslabel.hh b/otk/focuslabel.hh index 5d5af64e..e5fd4529 100644 --- a/otk/focuslabel.hh +++ b/otk/focuslabel.hh @@ -18,7 +18,7 @@ public: void renderForeground(void); - virtual void setStyle(Style *style); + virtual void setStyle(RenderStyle *style); private: //! Text displayed in the label diff --git a/otk/focuswidget.cc b/otk/focuswidget.cc index 9af8b37d..12b872c4 100644 --- a/otk/focuswidget.cc +++ b/otk/focuswidget.cc @@ -55,7 +55,7 @@ void FocusWidget::setTexture(RenderTexture *texture) _focus_texture = texture; } -void FocusWidget::setBorderColor(const Color *color) +void FocusWidget::setBorderColor(const RenderColor *color) { Widget::setBorderColor(color); _focus_bcolor = color; diff --git a/otk/focuswidget.hh b/otk/focuswidget.hh index b951dcbd..886a2e31 100644 --- a/otk/focuswidget.hh +++ b/otk/focuswidget.hh @@ -18,16 +18,16 @@ public: virtual void unfocus(void); virtual void setTexture(RenderTexture *texture); - virtual void setBorderColor(const Color *color); + virtual void setBorderColor(const RenderColor *color); inline void setUnfocusTexture(RenderTexture *texture) { _unfocus_texture = texture; } inline RenderTexture *getUnfocusTexture(void) const { return _unfocus_texture; } - inline void setUnfocusBorderColor(const Color *color) + inline void setUnfocusBorderColor(const RenderColor *color) { _unfocus_bcolor = color; } - inline const Color *getUnfocusBorderColor(void) const + inline const RenderColor *getUnfocusBorderColor(void) const { return _unfocus_bcolor; } inline bool isFocused(void) const { return _focused; } @@ -38,8 +38,8 @@ private: RenderTexture *_unfocus_texture; RenderTexture *_focus_texture; - const Color *_unfocus_bcolor; - const Color *_focus_bcolor; + const RenderColor *_unfocus_bcolor; + const RenderColor *_focus_bcolor; }; } diff --git a/otk/label.cc b/otk/label.cc index b536451e..8757d8a9 100644 --- a/otk/label.cc +++ b/otk/label.cc @@ -17,19 +17,18 @@ Label::~Label() { } -void Label::setStyle(Style *style) +void Label::setStyle(RenderStyle *style) { Widget::setStyle(style); - // XXX: do this again - //setTexture(style->getLabelUnfocus()); + setTexture(style->labelUnfocusBackground()); } void Label::renderForeground(void) { - const Font *ft = style()->getFont(); - unsigned int sidemargin = style()->getBevelWidth() * 2; + const Font *ft = style()->labelFont(); + unsigned int sidemargin = style()->bevelWidth() * 2; ustring t = _text; // the actual text to draw int x = sidemargin; // x coord for the text @@ -48,20 +47,20 @@ void Label::renderForeground(void) } while (length > max_length && text_len-- > 0); // justify the text - switch (style()->textJustify()) { - case Style::RightJustify: + switch (style()->labelTextJustify()) { + case RenderStyle::RightJustify: x += max_length - length; break; - case Style::CenterJustify: + case RenderStyle::CenterJustify: x += (max_length - length) / 2; break; - case Style::LeftJustify: + case RenderStyle::LeftJustify: break; } } display->renderControl(_screen)-> - drawString(*_surface, *ft, x, 0, *style()->getTextUnfocus(), t); + drawString(*_surface, *ft, x, 0, *style()->textUnfocusColor(), t); } } diff --git a/otk/label.hh b/otk/label.hh index ff1755d7..e24858f1 100644 --- a/otk/label.hh +++ b/otk/label.hh @@ -18,7 +18,7 @@ public: virtual void renderForeground(void); - virtual void setStyle(Style *style); + virtual void setStyle(RenderStyle *style); private: //! Text to be displayed in the label diff --git a/otk/otk_test.cc b/otk/otk_test.cc index 778f0f8f..06de3a16 100644 --- a/otk/otk_test.cc +++ b/otk/otk_test.cc @@ -15,8 +15,8 @@ int main(int argc, char **argv) { otk::AppWidget foo(&app); foo.resize(600, 500); - foo.setTexture(app.getStyle()->getTitleFocus()); -// foo.setUnfocusTexture(app.getStyle()->getTitleUnfocus()); + foo.setTexture(app.getStyle()->titlebarFocusBackground()); +// foo.setUnfocusTexture(app.getStyle()->titlebarUnfocusBackground()); foo.setBevelWidth(2); foo.setDirection(otk::Widget::Horizontal); @@ -27,15 +27,15 @@ int main(int argc, char **argv) { left.setDirection(otk::Widget::Horizontal); left.setStretchableVert(true); left.setStretchableHorz(true); - left.setTexture(app.getStyle()->getTitleFocus()); - left.setUnfocusTexture(app.getStyle()->getTitleUnfocus()); + left.setTexture(app.getStyle()->titlebarFocusBackground()); + left.setUnfocusTexture(app.getStyle()->titlebarUnfocusBackground()); right.setDirection(otk::Widget::Vertical); right.setBevelWidth(10); right.setStretchableVert(true); right.setWidth(300); - right.setTexture(app.getStyle()->getTitleFocus()); - right.setUnfocusTexture(app.getStyle()->getTitleUnfocus()); + right.setTexture(app.getStyle()->titlebarFocusBackground()); + right.setUnfocusTexture(app.getStyle()->titlebarUnfocusBackground()); otk::Button iconb(&left); iconb.resize(40,20); @@ -51,8 +51,8 @@ int main(int argc, char **argv) { //label.setHeight(20); label.setStretchableVert(true); label.setStretchableHorz(true); - label.setTexture(app.getStyle()->getLabelFocus()); - label.setUnfocusTexture(app.getStyle()->getLabelUnfocus()); + label.setTexture(app.getStyle()->labelFocusBackground()); + label.setUnfocusTexture(app.getStyle()->labelUnfocusBackground()); // fixed size maxb.setText("bar"); @@ -66,8 +66,8 @@ int main(int argc, char **argv) { rblef.setStretchableHorz(true); rblef.setHeight(50); - rblef.setTexture(app.getStyle()->getHandleFocus()); - rblef.setUnfocusTexture(app.getStyle()->getHandleUnfocus()); + rblef.setTexture(app.getStyle()->handleFocusBackground()); + rblef.setUnfocusTexture(app.getStyle()->handleUnfocusBackground()); rbutt1.setText("this is fucking tight"); rbutt2.setText("heh, WOOP"); @@ -77,7 +77,7 @@ int main(int argc, char **argv) { foo.show(); - app.exec(); + app.run(); return 0; } diff --git a/otk/rendercolor.cc b/otk/rendercolor.cc index bfc8d461..b5e037d3 100644 --- a/otk/rendercolor.cc +++ b/otk/rendercolor.cc @@ -71,7 +71,8 @@ void RenderColor::create() xcol.pixel = 0; } - gcv.foreground = xcol.pixel; + _pixel = xcol.pixel; + gcv.foreground = _pixel; gcv.cap_style = CapProjecting; _gc = XCreateGC(**display, info->rootWindow(), GCForeground | GCCapStyle, &gcv); diff --git a/otk/rendercolor.hh b/otk/rendercolor.hh index 1152e767..4eeb8158 100644 --- a/otk/rendercolor.hh +++ b/otk/rendercolor.hh @@ -36,6 +36,7 @@ private: unsigned char _red; unsigned char _green; unsigned char _blue; + unsigned long _pixel; GC _gc; @@ -54,6 +55,7 @@ public: inline unsigned char red() const { return _red; } inline unsigned char green() const { return _green; } inline unsigned char blue() const { return _blue; } + inline unsigned long pixel() const { return _pixel; } inline GC gc() const { return _gc; } }; diff --git a/otk/rendercontrol.cc b/otk/rendercontrol.cc index 189bbd6e..90229d88 100644 --- a/otk/rendercontrol.cc +++ b/otk/rendercontrol.cc @@ -7,10 +7,10 @@ #include "rendercontrol.hh" #include "truerendercontrol.hh" #include "rendertexture.hh" +#include "rendercolor.hh" #include "display.hh" #include "screeninfo.hh" #include "surface.hh" -#include "color.hh" #include "font.hh" #include "ustring.hh" @@ -61,7 +61,8 @@ RenderControl::~RenderControl() } void RenderControl::drawString(Surface& sf, const Font &font, int x, int y, - const Color &color, const ustring &string) const + const RenderColor &color, + const ustring &string) const { assert(sf._screen == _screen); XftDraw *d = sf._xftdraw; diff --git a/otk/rendercontrol.hh b/otk/rendercontrol.hh index f4ae6493..1d9ab7e7 100644 --- a/otk/rendercontrol.hh +++ b/otk/rendercontrol.hh @@ -13,7 +13,7 @@ class ScreenInfo; class Surface; class RenderTexture; class Font; -class Color; +class RenderColor; class ustring; class RenderControl { @@ -73,7 +73,8 @@ public: //! Draws a string onto a Surface virtual void drawString(Surface& sf, const Font& font, int x, int y, - const Color& color, const ustring& string) const; + const RenderColor& color, + const ustring& string) const; //! Draws a background onto a Surface, as specified by a RenderTexture virtual void drawBackground(Surface& sf, diff --git a/otk/renderstyle.hh b/otk/renderstyle.hh index c23d45aa..ccdf3ebf 100644 --- a/otk/renderstyle.hh +++ b/otk/renderstyle.hh @@ -62,6 +62,8 @@ public: RenderStyle(int screen, const std::string &stylefile); virtual ~RenderStyle(); + inline int screen() const { return _screen; } + inline RenderColor *textFocusColor() const { return _text_color_focus; } inline RenderColor *textUnfocusColor() const { return _text_color_unfocus; } @@ -96,7 +98,7 @@ public: { return _button_unpress_unfocus; } inline RenderTexture *buttonPressFocusBackground() const { return _button_press_focus; } - inline RenderTexture *buttonPressUnfocusBackgrounf() const + inline RenderTexture *buttonPressUnfocusBackground() const { return _button_press_unfocus; } inline RenderTexture *gripdFocusBackground() const { return _grip_focus; } diff --git a/otk/widget.cc b/otk/widget.cc index 2e2ec2ca..036ed1c3 100644 --- a/otk/widget.cc +++ b/otk/widget.cc @@ -35,9 +35,9 @@ Widget::Widget(Widget *parent, Direction direction) setStyle(_style); // let the widget initialize stuff } -Widget::Widget(EventDispatcher *event_dispatcher, Style *style, - Direction direction, Cursor cursor, int bevel_width, - bool override_redirect) +Widget::Widget(EventDispatcher *event_dispatcher, RenderStyle *style, + Direction direction, Cursor cursor, int bevel_width, + bool override_redirect) : EventHandler(), _dirty(false),_focused(false), _parent(0), _style(style), _direction(direction), _cursor(cursor), @@ -45,7 +45,7 @@ Widget::Widget(EventDispatcher *event_dispatcher, Style *style, _grabbed_mouse(false), _grabbed_keyboard(false), _stretchable_vert(false), _stretchable_horz(false), _texture(0), _bg_pixmap(0), _bg_pixel(0), _bcolor(0), _bwidth(0), _rect(0, 0, 1, 1), - _screen(style->getScreen()), _fixed_width(false), _fixed_height(false), + _screen(style->screen()), _fixed_width(false), _fixed_height(false), _surface(0), _event_dispatcher(event_dispatcher) { @@ -444,7 +444,7 @@ void Widget::removeChild(Widget *child) _children.erase(it); } -void Widget::setStyle(Style *style) +void Widget::setStyle(RenderStyle *style) { assert(style); _style = style; @@ -473,12 +473,22 @@ void Widget::exposeHandler(const XExposeEvent &e) void Widget::configureHandler(const XConfigureEvent &e) { EventHandler::configureHandler(e); + if (_ignore_config) { _ignore_config--; } else { - if (!(e.width == _rect.width() && e.height == _rect.height())) { + int width = e.width; + int height = e.height; + + XEvent ev; + while (XCheckTypedWindowEvent(**display, _window, ConfigureNotify, &ev)) { + width = ev.xconfigure.width; + height = ev.xconfigure.height; + } + + if (!(width == _rect.width() && height == _rect.height())) { _dirty = true; - _rect.setSize(e.width, e.height); + _rect.setSize(width, height); } update(); } diff --git a/otk/widget.hh b/otk/widget.hh index c7fc713b..2b030093 100644 --- a/otk/widget.hh +++ b/otk/widget.hh @@ -5,7 +5,7 @@ #include "rect.hh" #include "point.hh" #include "rendertexture.hh" -#include "style.hh" +#include "renderstyle.hh" #include "eventdispatcher.hh" #include "display.hh" #include "surface.hh" @@ -28,7 +28,7 @@ public: typedef std::list WidgetList; Widget(Widget *parent, Direction = Horizontal); - Widget(EventDispatcher *event_dispatcher, Style *style, + Widget(EventDispatcher *event_dispatcher, RenderStyle *style, Direction direction = Horizontal, Cursor cursor = 0, int bevel_width = 1, bool override_redirect = false); @@ -81,8 +81,8 @@ public: virtual void setTexture(RenderTexture *texture) { _texture = texture; _dirty = true; } - inline const Color *borderColor(void) const { return _bcolor; } - virtual void setBorderColor(const Color *color) { + inline const RenderColor *borderColor(void) const { return _bcolor; } + virtual void setBorderColor(const RenderColor *color) { assert(color); _bcolor = color; XSetWindowBorder(**display, _window, color->pixel()); } @@ -115,8 +115,8 @@ public: inline Direction direction(void) const { return _direction; } void setDirection(Direction dir) { _direction = dir; } - inline Style *style(void) const { return _style; } - virtual void setStyle(Style *style); + inline RenderStyle *style(void) const { return _style; } + virtual void setStyle(RenderStyle *style); inline EventDispatcher *eventDispatcher(void) { return _event_dispatcher; } @@ -140,7 +140,7 @@ protected: Widget *_parent; WidgetList _children; - Style *_style; + RenderStyle *_style; Direction _direction; Cursor _cursor; int _bevel_width; @@ -158,7 +158,7 @@ protected: Pixmap _bg_pixmap; unsigned int _bg_pixel; - const Color *_bcolor; + const RenderColor *_bcolor; unsigned int _bwidth; Rect _rect; -- 2.45.2