|
|
//
// cuischem.h
//
#ifndef CUISCHEM_H
#define CUISCHEM_H
#ifndef LAYOUT_RTL
#define LAYOUT_RTL 0x00000001 // Right to left
#endif // LAYOUT_RTL
//
// UIFrame scheme
//
typedef enum _UIFSCHEME { UIFSCHEME_DEFAULT, UIFSCHEME_OFC10MENU, UIFSCHEME_OFC10TOOLBAR, UIFSCHEME_OFC10WORKPANE, } UIFSCHEME;
//
// UIFrame color
//
typedef enum _UIFCOLOR { // base color
UIFCOLOR_MENUBKGND, UIFCOLOR_MENUBARSHORT, UIFCOLOR_MENUBARLONG, UIFCOLOR_MOUSEOVERBKGND, UIFCOLOR_MOUSEOVERBORDER, UIFCOLOR_MOUSEOVERTEXT, UIFCOLOR_MOUSEDOWNBKGND, UIFCOLOR_MOUSEDOWNBORDER, UIFCOLOR_MOUSEDOWNTEXT, UIFCOLOR_CTRLBKGND, UIFCOLOR_CTRLTEXT, UIFCOLOR_CTRLTEXTDISABLED, UIFCOLOR_CTRLIMAGESHADOW, UIFCOLOR_CTRLBKGNDSELECTED, UIFCOLOR_BORDEROUTER, UIFCOLOR_BORDERINNER, UIFCOLOR_ACTIVECAPTIONBKGND, UIFCOLOR_ACTIVECAPTIONTEXT, UIFCOLOR_INACTIVECAPTIONBKGND, UIFCOLOR_INACTIVECAPTIONTEXT, UIFCOLOR_SPLITTERLINE, UIFCOLOR_DRAGHANDLE,
// virtual color
UIFCOLOR_WINDOW,
UIFCOLOR_MAX, /* must be last */ } UIFCOLOR;
//
// DrawControl flags
//
#define UIFDCF_FLATONNORMAL 0x00000000 /* used in default scheme */
#define UIFDCF_RAISEDONNORMAL 0x00000001 /* used in default scheme */
#define UIFDCF_SUNKENONNORMAL 0x00000002 /* used in default scheme */
#define UIFDCF_FLATONMOUSEOVER 0x00000000 /* used in default scheme */
#define UIFDCF_RAISEDONMOUSEOVER 0x00000004 /* used in default scheme */
#define UIFDCF_SUNKENONMOUSEOVER 0x00000008 /* used in default scheme */
#define UIFDCF_FLATONMOUSEDOWN 0x00000000 /* used in default scheme */
#define UIFDCF_RAISEDONMOUSEDOWN 0x00000010 /* used in default scheme */
#define UIFDCF_SUNKENONMOUSEDOWN 0x00000020 /* used in default scheme */
#define UIFDCF_FLATONSELECT 0x00000000 /* used in default scheme */
#define UIFDCF_RAISEDONSELECT 0x00000040 /* used in default scheme */
#define UIFDCF_SUNKENONSELECT 0x00000080 /* used in default scheme */
#define UIFDCF_BUTTON (UIFDCF_FLATONNORMAL | UIFDCF_RAISEDONMOUSEOVER | UIFDCF_RAISEDONMOUSEDOWN | UIFDCF_RAISEDONSELECT)
#define UIFDCF_BUTTONSUNKEN (UIFDCF_RAISEDONNORMAL | UIFDCF_RAISEDONMOUSEOVER | UIFDCF_SUNKENONMOUSEDOWN | UIFDCF_SUNKENONSELECT)
#define UIFDCF_CAPTIONBUTTON (UIFDCF_RAISEDONNORMAL | UIFDCF_RAISEDONMOUSEOVER | UIFDCF_SUNKENONMOUSEDOWN | UIFDCF_SUNKENONSELECT)
//
// DrawControl states
//
#define UIFDCS_NORMAL 0x00000000
#define UIFDCS_MOUSEOVER 0x00000001
#define UIFDCS_MOUSEDOWN 0x00000002
#define UIFDCS_SELECTED 0x00000010
#define UIFDCS_DISABLED 0x00000020
#define UIFDCS_MOUSEOVERSELECTED (UIFDCS_MOUSEOVER | UIFDCS_SELECTED)
#define UIFDCS_MOUSEDOWNSELECTED (UIFDCS_MOUSEDOWN | UIFDCS_SELECTED)
#define UIFDCS_DISABLEDSELECTED (UIFDCS_DISABLED | UIFDCS_SELECTED)
#define UIFDCS_MOUSEOVERDISABLED (UIFDCS_MOUSEOVER | UIFDCS_DISABLED)
#define UIFDCS_MOUSEOVERDISABLEDSELECTED (UIFDCS_MOUSEOVER | UIFDCS_DISABLED | UIFDCS_SELECTED)
#define UIFDCS_ACTIVE 0x00000040 /* used in DrawFrameCtrlXXX */
#define UIFDCS_INACTIVE 0x00000000 /* used in DrawFrameCtrlXXX */
//
// DrawWndFrame flags
//
#define UIFDWF_THIN 0x00000000
#define UIFDWF_THICK 0x00000001
#define UIFDWF_ROUNDTHICK 0x00000002
//
// CUIFScheme
//
class CUIFScheme { public: CUIFScheme() { m_dwLayout = 0; }
//
//
//
virtual UIFSCHEME GetType( void ) = 0; /* PURE */
//
// scheme color
//
virtual COLORREF GetColor( UIFCOLOR iCol ) = 0; /* PURE */ virtual HBRUSH GetBrush( UIFCOLOR iCol ) = 0; /* PURE */
//
// metrics
//
virtual int CyMenuItem( int cyMenuText ) = 0; /* PURE */ virtual int CxSizeFrame( void ) = 0; /* PURE */ virtual int CySizeFrame( void ) = 0; /* PURE */ virtual int CxWndBorder( void ) = 0; /* PURE */ virtual int CyWndBorder( void ) = 0; /* PURE */
//
// drawing helper
//
virtual void FillRect( HDC hDC, const RECT *prc, UIFCOLOR iCol ) = 0; /* PURE */ virtual void FrameRect( HDC hDC, const RECT *prc, UIFCOLOR iCol ) = 0; /* PURE */ virtual void DrawSelectionRect( HDC hDC, const RECT *prc, BOOL fMouseDown ) = 0; /* PURE */
virtual void GetCtrlFaceOffset( DWORD dwFlag, DWORD dwState, SIZE *poffset ) = 0; /* PURE */ virtual void DrawCtrlBkgd( HDC hDC, const RECT *prc, DWORD dwFlag, DWORD dwState ) = 0; /* PURE */ virtual void DrawCtrlEdge( HDC hDC, const RECT *prc, DWORD dwFlag, DWORD dwState ) = 0; /* PURE */ virtual void DrawCtrlText( HDC hDC, const RECT *prc, LPCWSTR pwch, int cwch, DWORD dwState, BOOL fVertical ) = 0; /* PURE */ virtual void DrawCtrlIcon( HDC hDC, const RECT *prc, HICON hIcon, DWORD dwState , SIZE *psizeIcon) = 0; /* PURE */ virtual void DrawCtrlBitmap( HDC hDC, const RECT *prc, HBITMAP hBmp, HBITMAP hBmpMask, DWORD dwState ) = 0; /* PURE */ virtual void DrawMenuBitmap( HDC hDC, const RECT *prc, HBITMAP hBmp, HBITMAP hBmpMask, DWORD dwState ) = 0; /* PURE */ virtual void DrawMenuSeparator( HDC hDC, const RECT *prc) = 0; /* PURE */ virtual void DrawFrameCtrlBkgd( HDC hDC, const RECT *prc, DWORD dwFlag, DWORD dwState ) = 0; /* PURE */ virtual void DrawFrameCtrlEdge( HDC hDC, const RECT *prc, DWORD dwFlag, DWORD dwState ) = 0; /* PURE */ virtual void DrawFrameCtrlIcon( HDC hDC, const RECT *prc, HICON hIcon, DWORD dwState, SIZE *psizeIcon) = 0; /* PURE */ virtual void DrawFrameCtrlBitmap( HDC hDC, const RECT *prc, HBITMAP hBmp, HBITMAP hBmpMask, DWORD dwState ) = 0; /* PURE */ virtual void DrawWndFrame( HDC hDC, const RECT *prc, DWORD dwFlag, int cxFrame, int cyFrame ) = 0; /* PURE */ virtual void DrawDragHandle( HDC hDC, const RECT *prc, BOOL fVertical) = 0; /* PURE */ virtual void DrawSeparator( HDC hDC, const RECT *prc, BOOL fVertical) = 0; /* PURE */
void SetLayout(DWORD dwLayout) { m_dwLayout = dwLayout; }
BOOL IsRTLLayout() { return (m_dwLayout & LAYOUT_RTL) ? TRUE : FALSE; }
protected: DWORD m_dwLayout; };
//
// exported functions
//
extern void InitUIFScheme( void ); extern void DoneUIFScheme( void ); extern void UpdateUIFScheme( void );
extern CUIFScheme *CreateUIFScheme( UIFSCHEME scheme );
#endif /* CUISCHEM_H */
|