X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ba02fb4aced5868d047a5bffbd2ed87583daee4d..f3b1a20b183c612caf5122ebc4540a8fe4fff486:/lib/gui/ewindowstyle.h diff --git a/lib/gui/ewindowstyle.h b/lib/gui/ewindowstyle.h index d5da5a34..08ea0a41 100644 --- a/lib/gui/ewindowstyle.h +++ b/lib/gui/ewindowstyle.h @@ -10,17 +10,53 @@ class gFont; class eWindowStyle: public iObject { public: - virtual void handleNewSize(eWindow *wnd, const eSize &size) = 0; + virtual void handleNewSize(eWindow *wnd, eSize &size, eSize &offset) = 0; virtual void paintWindowDecoration(eWindow *wnd, gPainter &painter, const std::string &title) = 0; virtual void paintBackground(gPainter &painter, const ePoint &offset, const eSize &size) = 0; - virtual void setForegroundStyle(gPainter &painter) = 0; - virtual void drawButtonFrame(gPainter &painter, const eRect &frame) = 0; + virtual void setStyle(gPainter &painter, int what) = 0; + enum { + styleLabel, + styleListboxSelected, + styleListboxNormal, + styleListboxMarked + }; + + virtual void drawFrame(gPainter &painter, const eRect &frame, int type) = 0; + + enum { + frameButton, + frameListboxEntry + }; + + enum { + fontStatic, + fontButton, + fontTitlebar + }; + + virtual RESULT getFont(int what, ePtr &font) = 0; virtual ~eWindowStyle() = 0; }; +class eWindowStyleManager: public iObject +{ + DECLARE_REF(eWindowStyleManager); +public: + eWindowStyleManager(); + ~eWindowStyleManager(); + void getStyle(ePtr &style); + void setStyle(eWindowStyle *style); + static int getInstance(ePtr &mgr) { mgr = m_instance; if (!mgr) return -1; return 0; } +private: + static eWindowStyleManager *m_instance; + ePtr m_current_style; +}; + +TEMPLATE_TYPEDEF(ePtr, eWindowStyleManagerPtr); + class eWindowStyleSimple: public eWindowStyle { - DECLARE_REF; + DECLARE_REF(eWindowStyleSimple); private: ePtr m_fnt; gColor m_border_color_tl, m_border_color_br, m_title_color_back, m_title_color, m_background_color; @@ -28,11 +64,12 @@ private: int m_border_top, m_border_left, m_border_right, m_border_bottom; public: eWindowStyleSimple(); - void handleNewSize(eWindow *wnd, const eSize &size); + void handleNewSize(eWindow *wnd, eSize &size, eSize &offset); void paintWindowDecoration(eWindow *wnd, gPainter &painter, const std::string &title); void paintBackground(gPainter &painter, const ePoint &offset, const eSize &size); - void setForegroundStyle(gPainter &painter); - void drawButtonFrame(gPainter &painter, const eRect &frame); + void setStyle(gPainter &painter, int what); + void drawFrame(gPainter &painter, const eRect &frame, int what); + RESULT getFont(int what, ePtr &font); }; #endif