From 725f68b6808a8a30778f58223fac75386f082785 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Fri, 18 May 2012 22:10:43 +0000 Subject: plugins folders renaming git-svn-id: http://svn.miranda-ng.org/main/trunk@61 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Modernb/hdr/modern_clcpaint.h | 191 ++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 plugins/Modernb/hdr/modern_clcpaint.h (limited to 'plugins/Modernb/hdr/modern_clcpaint.h') diff --git a/plugins/Modernb/hdr/modern_clcpaint.h b/plugins/Modernb/hdr/modern_clcpaint.h new file mode 100644 index 0000000000..9c2a2d68d6 --- /dev/null +++ b/plugins/Modernb/hdr/modern_clcpaint.h @@ -0,0 +1,191 @@ +#ifndef modern_clcpaint_h__ +#define modern_clcpaint_h__ + +extern class CLCPaint g_clcPainter; +class CLCPaint +{ + +public: + CLCPaint(); + ~CLCPaint() {}; + + CLINTERFACE void cliPaintClc( HWND hwnd, struct ClcData *dat, HDC hdc, RECT *rcPaint ); + CLINTERFACE tPaintCallbackProc PaintCallbackProc( HWND hWnd, HDC hDC, RECT * rcPaint, HRGN rgn, DWORD dFlags, void * CallBackData ); + + BOOL IsForegroundWindow( HWND hWnd ); + HFONT ChangeToFont( HDC hdc, struct ClcData *dat, int id, int *fontHeight ); + int GetBasicFontID( struct ClcContact * contact ); + void GetTextSize( SIZE *text_size, HDC hdcMem, RECT free_row_rc, TCHAR *szText, SortedList *plText, UINT uTextFormat, int smiley_height ); + void AddParam( MODERNMASK * mpModernMask, DWORD dwParamHash, const char* szValue, DWORD dwValueHash ); + BOOL CheckMiniMode( struct ClcData *dat, BOOL selected, BOOL hot ); + +private: + static const int HORIZONTAL_SPACE; + static const int EXTRA_CHECKBOX_SPACE; + static const int EXTRA_SPACE; + static const int SELECTION_BORDER; + static const int MIN_TEXT_WIDTH; + static const int BUF2SIZE; + + static const BYTE GIM_SELECTED_AFFECT; + static const BYTE GIM_HOT_AFFECT; + static const BYTE GIM_TEMP_AFFECT; + static const BYTE GIM_IDLE_AFFECT; + static const BYTE GIM_EXTRAICON_AFFECT; + static const BYTE GIM_STATUSICON_AFFECT; + static const BYTE GIM_AVATAR_AFFECT; + + enum tagenumHASHINDEX + { + hi_Module=0, + hi_ID, + hi_Type, + hi_Open, + hi_IsEmpty, + hi_SubPos, + hi_Protocol, + hi_RootGroup, + hi_Status, + hi_HasAvatar, + hi_GroupPos, + hi_Selected, + hi_Hot, + hi_Odd, + hi_Indent, + hi_Index, + hi_Name, + hi_Group, + hi_True, + hi_False, + hi_ONLINE, + hi_AWAY, + hi_DND, + hi_NA, + hi_OCCUPIED, + hi_FREECHAT, + hi_INVISIBLE, + hi_OUTTOLUNCH, + hi_ONTHEPHONE, + hi_IDLE, + hi_OFFLINE, + hi_Row, + hi_CL, + hi_SubContact, + hi_MetaContact, + hi_Contact, + hi_Divider, + hi_Info, + hi_First_Single, + hi_First, + hi_Middle, + hi_Mid, + hi_Single, + hi_Last, + hi_Rate, + hi_None, + hi_Low, + hi_Medium, + hi_High, + hi_State, + hi_stActive, + hi_stInactive, + //ADD new item above here + hi_LastItem + } enumHASHINDEX; + static const char * HASHTEXT[hi_LastItem]; + static DWORD HASH[hi_LastItem]; + + + + void _FillQuickHash(); + void _SetHotTrackColour( HDC hdc, struct ClcData *dat ); + int _GetStatusOnlineness( int status ); + int _GetGeneralisedStatus(); + int _GetRealStatus( struct ClcContact * pContact, int nStatus ); + RECT _GetRectangle( struct ClcData *dat, RECT *row_rc, RECT *free_row_rc, int *left_pos, int *right_pos, BOOL left, int real_width, int width, int height, int horizontal_space ); + void _DrawTextSmiley( HDC hdcMem, RECT * free_rc, SIZE * text_size, TCHAR *szText, int len, SortedList *plText, UINT uTextFormat, BOOL ResizeSizeSmiley ); + void _AddParameter( MODERNMASK * mpModernMask, MASKPARAM * lpParam ); + void _AddParamShort( MODERNMASK * mpModernMask, DWORD dwParamIndex, DWORD dwValueIndex ); + void _FillParam( MASKPARAM * lpParam, DWORD dwParamHash, const char* szValue, DWORD dwValueHash ); + MODERNMASK * _GetCLCContactRowBackModernMask( struct ClcGroup * group, struct ClcContact * Drawing, int indent, int index, BOOL selected, BOOL hottrack, struct ClcData * dat ); + void _RTLRect( RECT *rect, int width, int offset ); + void _PaintRowItemsEx( HWND hwnd, HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, RECT row_rc, RECT free_row_rc, int left_pos, int right_pos, int selected, int hottrack, RECT *rcPaint ); + void _DrawStatusIcon( struct ClcContact * Drawing, struct ClcData *dat, int iImage, HDC hdcMem, int x, int y, int cx, int cy, DWORD colorbg, DWORD colorfg, int mode ); + BOOL _DrawNonEnginedBackground( HWND hwnd, HDC hdcMem, RECT * rcPaint, RECT clRect, struct ClcData * dat ); + void _PaintClc( HWND hwnd, struct ClcData *dat, HDC hdc, RECT *rcPaint ); + void _StoreItemPos( struct ClcContact *contact, int ItemType, RECT * rc ); + void _CalcItemsPos( HWND hwnd, HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, RECT *in_row_rc, RECT *in_free_row_rc, int left_pos, int right_pos, int selected, int hottrack ); + BOOL __IsVisible( RECT * firtRect, RECT * secondRect ); + void _GetBlendMode( IN struct ClcData *dat, IN struct ClcContact * Drawing, IN BOOL selected, IN BOOL hottrack, IN BOOL bFlag, OUT COLORREF * OutColourFg, OUT int * OutMode ); + void _DrawContactItems( HWND hwnd, HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, RECT *row_rc, RECT *free_row_rc, int left_pos, int right_pos, int selected, int hottrack, RECT *rcPaint ); + void _PaintRowItems ( HWND hwnd, HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, RECT row_rc, RECT free_row_rc, int left_pos, int right_pos, int selected, int hottrack, RECT *rcPaint ); + + void _DrawContactAvatar ( HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, RECT *row_rc, int& selected, int& hottrack, RECT& text_rc, RECT * prcItem ); + void _DrawContactIcon ( HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, int& selected, int& hottrack, RECT& text_rc, RECT * prcItem ); + void _DrawContactText ( HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, int& selected, int& hottrack, RECT& text_rc, RECT * prcItem, UINT uTextFormat ); + void _DrawContactSubText ( HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, int& selected, int& hottrack, RECT& text_rc, RECT * prcItem, UINT uTextFormat, BYTE itemType ); + void _DrawContactTime ( HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, int& selected, int& hottrack, RECT& text_rc, RECT * prcItem ); + void _DrawContactExtraIcon ( HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, int& selected, int& hottrack, RECT& text_rc, RECT * rc, int iImage ); + void _DrawContactSelection ( HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, int& selected, int& hottrack, RECT *rcPaint, RECT * prcItem ); + void _DrawContactLine ( HDC hdcMem, struct ClcData *dat, struct ClcContact *Drawing, RECT *free_row_rc, RECT *rcPaint, RECT& text_rc ); + + int _rcWidth( RECT *rc ) { return rc->right-rc->left; } + int _rcHeight( RECT *rc ) { return rc->bottom-rc->top; } + +private: + enum enDrawMode + { + DM_LAYERED = 1, // Draw normal skin on 32 bit with alpha layer + DM_NON_LAYERED = 2, // Draw skinnable, but does not take care about alpha + DM_CLASSIC = 4, // Old style draw for classic + DM_CONTROL = 8, // Draw as control according to windows color scheme + DM_FLOAT = 16, // Float mode + DM_GRAY = 32, // Grayed mode + DM_GREYALTERNATE = 64, // Gray odd lines + DM_DRAW_OFFSCREEN = DM_FLOAT | DM_CONTROL | DM_NON_LAYERED | DM_CLASSIC, + + }; + + inline int _DetermineDrawMode( HWND hWnd, struct ClcData *dat ); + + struct _PaintContext + { + enum + { release_none = 0, + release_hdcmem2 = 1, + release_hdcmem = 2 + }; + HDC hdcMem; + HDC hdcMem2; + + HBITMAP hBmpOsb2; + HBITMAP oldbmp2; + + HBITMAP hBmpOsb; + HBITMAP oldbmp; + + HBRUSH hBrushAlternateGrey; + COLORREF tmpbkcolour; + COLORREF tmpforecolour; + + DWORD fRelease; + _PaintContext( HDC _hdcMem = NULL) : + hdcMem ( _hdcMem ), hdcMem2( NULL ), + hBmpOsb2( NULL ), oldbmp2( NULL ), + hBmpOsb( NULL ), oldbmp( NULL ), + hBrushAlternateGrey ( NULL ), + tmpbkcolour( 0 ), tmpforecolour( 0 ), + fRelease ( release_none ) {}; + }; + inline void _PreparePaintContext( HWND hWnd, struct ClcData * dat, HDC hdc, int paintMode, RECT& clRect, _PaintContext& pc ); + inline void _DrawBackground( HWND hWnd, struct ClcData * dat, HDC hdc, int paintMode, RECT* rcPaint, RECT& clRect, _PaintContext& pc ); + inline void _DrawLines( HWND hWnd, struct ClcData * dat, HDC hdc, int paintMode, RECT* rcPaint, RECT& clRect, _PaintContext& pc ); + inline void _DrawInsertionMark( struct ClcData * dat, RECT& clRect, _PaintContext& pc ); + inline void _CopyPaintToDest( HWND hWnd, struct ClcData * dat, HDC hdc, int paintMode, RECT* rcPaint, RECT& clRect, _PaintContext& pc ); + inline void _FreePaintContext( _PaintContext& pc ); + + // void _PaintClcOld( HWND hwnd, struct ClcData *dat, HDC hdc, RECT *rcPaint ); +}; + + +#endif // modern_clcpaint_h__ -- cgit v1.2.3