X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fgui%2Fewindowstyle.h;h=5008cd6e1d73a6f76f759b8dff391318e23cafad;hb=4a7a8362a83b1a6c2bd0abf13cd7b19359e9768a;hp=02f155af7a2bb3adc20fd8aa40d8741024e31e6e;hpb=ddc3964ed95d01e72229dc9af968a327cd84e56c;p=vuplus_dvbapp diff --git a/lib/gui/ewindowstyle.h b/lib/gui/ewindowstyle.h index 02f155a..5008cd6 100644 --- a/lib/gui/ewindowstyle.h +++ b/lib/gui/ewindowstyle.h @@ -3,22 +3,102 @@ class eWindow; class eSize; +class gFont; #include -class eWindowStyle: public iObject +class eWindowStyle_ENUMS { +#ifdef SWIG + eWindowStyle_ENUMS(); + ~eWindowStyle_ENUMS(); +#endif +public: + enum { + styleLabel, + styleListboxSelected, + styleListboxNormal, + styleListboxMarked, + styleListboxMarkedAndSelected + }; + + enum { + frameButton, + frameListboxEntry + }; + + enum { + fontStatic, + fontButton, + fontTitlebar + }; +}; + +SWIG_IGNORE(eWindowStyle); +class eWindowStyle: public eWindowStyle_ENUMS, public iObject +{ +#ifdef SWIG + eWindowStyle(); +#endif +public: +#ifndef SWIG + 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 setStyle(gPainter &painter, int what) = 0; + virtual void drawFrame(gPainter &painter, const eRect &frame, int type) = 0; + virtual RESULT getFont(int what, ePtr &font) = 0; +#endif + virtual ~eWindowStyle() = 0; +}; +SWIG_TEMPLATE_TYPEDEF(ePtr, eWindowStylePtr); + +SWIG_IGNORE(eWindowStyleManager); +class eWindowStyleManager: public iObject +{ + DECLARE_REF(eWindowStyleManager); +#ifdef SWIG + eWindowStyleManager(); + ~eWindowStyleManager(); +#endif public: - virtual void handleNewSize(eWindow *wnd, const eSize &size) = 0; +#ifndef SWIG + eWindowStyleManager(); + ~eWindowStyleManager(); + static SWIG_VOID(int) getInstance(ePtr &SWIG_NAMED_OUTPUT(mgr)) { mgr = m_instance; if (!mgr) return -1; return 0; } +#endif + void getStyle(int style_id, ePtr &SWIG_OUTPUT); + void setStyle(int style_id, eWindowStyle *style); +private: + static eWindowStyleManager *m_instance; + std::map > m_current_style; }; +SWIG_TEMPLATE_TYPEDEF(ePtr, eWindowStyleManager); +SWIG_EXTEND(ePtr, + static ePtr getInstance() + { + extern ePtr NewWindowStylePtr(void); + return NewWindowStylePtr(); + } +); +#ifndef SWIG class eWindowStyleSimple: public eWindowStyle { - DECLARE_REF; + DECLARE_REF(eWindowStyleSimple); + ePtr m_fnt; + gColor m_border_color_tl, m_border_color_br, m_title_color_back, m_title_color, m_background_color; + + int m_border_top, m_border_left, m_border_right, m_border_bottom; public: eWindowStyleSimple(); - void handleNewSize(eWindow *wnd, const eSize &size); - int m_border_top, m_border_left, m_border_right, m_border_bottom; + 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 setStyle(gPainter &painter, int what); + void drawFrame(gPainter &painter, const eRect &frame, int what); + RESULT getFont(int what, ePtr &font); }; +#endif #endif