From 364eb4d1b1f3fa7569c16c216df873f70d675ba5 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Tue, 28 Apr 2015 07:33:58 +0000 Subject: use common m_skin_eng.h git-svn-id: http://svn.miranda-ng.org/main/trunk@13220 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Clist_modern/src/CLUIFrames/cluiframes.cpp | 2 +- plugins/Clist_modern/src/CLUIFrames/cluiframes.h | 2 +- plugins/Clist_modern/src/m_api/m_skin_eng.h | 435 --------------------- plugins/Clist_modern/src/modern_docking.cpp | 2 +- plugins/Clist_modern/src/modern_skinengine.cpp | 2 +- plugins/Clist_modern/src/modern_skinselector.cpp | 25 +- plugins/Clist_modern/src/modern_statusbar.cpp | 2 +- plugins/ExternalAPI/m_skin_eng.h | 56 ++- 8 files changed, 58 insertions(+), 468 deletions(-) delete mode 100644 plugins/Clist_modern/src/m_api/m_skin_eng.h (limited to 'plugins') diff --git a/plugins/Clist_modern/src/CLUIFrames/cluiframes.cpp b/plugins/Clist_modern/src/CLUIFrames/cluiframes.cpp index 4709eafcf9..784e4ae2ed 100644 --- a/plugins/Clist_modern/src/CLUIFrames/cluiframes.cpp +++ b/plugins/Clist_modern/src/CLUIFrames/cluiframes.cpp @@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "../hdr/modern_commonheaders.h" -#include "../m_api/m_skin_eng.h" +#include "m_skin_eng.h" #include "../hdr/modern_commonprototypes.h" #include "../hdr/modern_sync.h" diff --git a/plugins/Clist_modern/src/CLUIFrames/cluiframes.h b/plugins/Clist_modern/src/CLUIFrames/cluiframes.h index 03149f2250..1d8b91c37c 100644 --- a/plugins/Clist_modern/src/CLUIFrames/cluiframes.h +++ b/plugins/Clist_modern/src/CLUIFrames/cluiframes.h @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef _CLUIFRAMES_H_ #define _CLUIFRAMES_H_ -#include "../m_api/m_skin_eng.h" +#include "m_skin_eng.h" int LoadCLUIFramesModule(void); int UnLoadCLUIFramesModule(void); diff --git a/plugins/Clist_modern/src/m_api/m_skin_eng.h b/plugins/Clist_modern/src/m_api/m_skin_eng.h deleted file mode 100644 index 54a8c22726..0000000000 --- a/plugins/Clist_modern/src/m_api/m_skin_eng.h +++ /dev/null @@ -1,435 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-08 Miranda ICQ/IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#ifndef M_ske_H_INC -#define M_ske_H_INC - -#include "newpluginapi.h" -#include "m_clui.h" -#include "../hdr/modern_commonheaders.h" - - -/*defaults*/ -#define DEFAULT_FIT_MODE FM_STRETCH -#define DEFAULT_STYLE ST_BRUSH -#define DEFAULT_BKCOLOUR GetSysColor(COLOR_3DFACE) -#define DEFAULT_SELBKCOLOUR GetSysColor(COLOR_HIGHLIGHT) -#define SIZING_MARGIN 3 - -/* Fit mode */ -#define FM_STRETCH 0 -#define FM_TILE_HORZ 1 -#define FM_TILE_VERT 2 -#define FM_TILE_BOTH 3 - -/*Object types*/ -#define OT_ANY 0 -#define OT_GLYPHOBJECT 1 -#define OT_FONTOBJECT 2 - -/*STYLE INDEXEX*/ -#define ST_SKIP 0 -#define ST_PARENT 1 -#define ST_BRUSH 2 -#define ST_IMAGE 3 -#define ST_SOLARIZE 4 //Not used yet. -#define ST_FRAGMENT 5 -#define ST_GRADIENT 6 - -//formats: -#define ADT_TOP 0x00000000 -#define ADT_LEFT 0x00000000 -#define ADT_HCENTER 0x00000001 -#define ADT_RIGHT 0x00000002 -#define ADT_VCENTER 0x00000004 -#define ADT_BOTTOM 0x00000008 -//#define ADT_ECLIPSE 64 - - -/*SERVICES*/ - -//toggle the 'hide offline contacts' flag and call CLUI -//wParam=0 -//lParam=0 -#define MS_CLIST_TOGGLEHIDEOFFLINE "CList/ToggleHideOffline" - -#define MS_CLIST_TOGGLEGROUPS "CList/ToggleGroups" - -#define MS_CLIST_TOGGLESOUNDS "CList/ToggleSounds" - -// Add new object to skin object list. -// wParam = pointer to SKINOBJECTDESCRIPTOR structure -// lParam = 0 ( used for internal purposes: pointer to skin object list) -#define MS_SKIN_REGISTEROBJECT "ModernList/RegisterObject" - -// Add new object to skin object list. -// wParam = pointer to DEF_SKIN_OBJECT_PARAMS structure -// lParam = 0 ( used for internal purposes: pointer to skin object list) -#define MS_SKIN_REGISTERDEFOBJECT "ModernList/RegisterDefObject" - -typedef struct s_DEF_SKIN_OBJECT_PARAMS -{ - char * szObjectID; - BYTE defStyle; - DWORD defColor; - // SKINOBJECTSLIST * Skin; -} DEF_SKIN_OBJECT_PARAMS; - - -// Request painting glyph object -// wParam = pointer to SKINDRAWREQUEST structure -// lParam = 0 -#define MS_SKIN_DRAWGLYPH "ModernList/DrawGlyph" - - - -/* EVENTS */ -#define ME_SKIN_SERVICESCREATED "ModernList/ServicesCreated" - -/* DRAWGLYPH Request structure */ -typedef struct s_SKINDRAWREQUEST -{ - char szObjectID[255]; // Unic Object ID (path) to paint - RECT rcDestRect; // Rectangle to fit - RECT rcClipRect; // Rectangle to paint in. - HDC hDC; // Handler to device context to paint in. -} SKINDRAWREQUEST,*LPSKINDRAWREQUEST; - -/* SKINOBJECTDESCRIPTOR opbject descriptor structure */ -typedef struct tagSKINOBJECTDESCRIPTOR -{ - BYTE bType; // One of OT_* values. - char* szObjectID; // Unic Object ID (path) [255] max - LPVOID Data; // Pointer to GLYPHOBJECT strycture if bType==OT_GLYPHOBJECT -} SKINOBJECTDESCRIPTOR, *LPSKINOBJECTDESCRIPTOR; - -/* SKINOBJECTDESCRIPTOR opbject descriptor structure */ -typedef struct s_GLYPHOBJECT -{ - BYTE Style; // One of ST_* values - HBITMAP hGlyph; // Bitmap handler (for internal use only) - DWORD dwTop, dwLeft, dwBottom, dwRight; // Margins - char* szFileName; // FileName of image - DWORD dwColor; // Fill color - BYTE dwAlpha; // Constant alpha-transparency level - BYTE FitMode; // One of FM_* values - POINT clipArea; // Object image rect on full image - SIZE szclipArea; // Object image rect on full image - SortedList * plTextList; // List of GLYPHTEXT - LONG bmWidth; - LONG bmHeight; - BYTE bmBitsPixel; -} GLYPHOBJECT,*LPGLYPHOBJECT; - -/* SKINTEXTDESCRIPTOR opbject descriptor structure */ -typedef struct s_GLYPHTEXT -{ - char * szGlyphTextID; - TCHAR * stText; - TCHAR * stValueText; - DWORD dwFlags; - DWORD dwColor; // Color (InvAA)(RR)(GG)(BB) - DWORD dwShadow; //ToDo: Color2/Shaddow - int iLeft,iTop,iRight,iBottom; - BYTE RelativeFlags; - char * szFontID; - HFONT hFont; - char * szObjectName; -}GLYPHTEXT,*LPGLYPHTEXT; - -/* SKINTEXTDESCRIPTOR opbject descriptor structure */ -typedef struct s_SKINFONT -{ - char * szFontID; - HFONT hFont; -}SKINFONT, *LPSKINFONT; - -/* HELPER FUNCTIONS */ - -//Paint ObjectID as parent background for frame hwndIn -int __inline SkinDrawWindowBack(HWND hwndIn, HDC hdc, RECT * rcClip, char * objectID); -//Paint ObjectID -int __inline SkinDrawGlyph(HDC hdc, RECT * rcSize, RECT * rcClip, char * objectID); -//Register object with predefined style -int __inline CreateGlyphedObjectDefStyle(char * ObjID,BYTE defStyle); -int __inline CreateGlyphedObjectDefColor(char * ObjID,DWORD defColor); -//Register default object -int __inline CreateGlyphedObject(char * ObjID); - - - -//// Creating and registering objects -//int __inline CreateGlyphedObject(char * ObjID) -//{ -// DEF_SKIN_OBJECT_PARAMS prm={0}; -// prm.defColor=DEFAULT_BKCOLOUR; -// prm.defStyle=DEFAULT_STYLE; -// prm.szObjectID=ObjID; -// return CallService(MS_SKIN_REGISTERDEFOBJECT,(WPARAM)&prm,0); -//} -static BOOL __inline ScreenToClientRect(HWND hWnd, LPRECT lpRect) -{ - BOOL ret; - - POINT pt; - - pt.x = lpRect->left; - pt.y = lpRect->top; - - ret = ScreenToClient(hWnd, &pt); - - if (!ret) return ret; - - lpRect->left = pt.x; - lpRect->top = pt.y; - - - pt.x = lpRect->right; - pt.y = lpRect->bottom; - - ret = ScreenToClient(hWnd, &pt); - - lpRect->right = pt.x; - lpRect->bottom = pt.y; - - return ret; -} - -//int __inline CreateGlyphedObjectDefStyle(char * ObjID,BYTE defStyle) -//{ -// DEF_SKIN_OBJECT_PARAMS prm={0}; -// prm.defColor=DEFAULT_BKCOLOUR; -// prm.defStyle=defStyle; -// prm.szObjectID=ObjID; -// return CallService(MS_SKIN_REGISTERDEFOBJECT,(WPARAM)&prm,0); -//} -//int __inline CreateGlyphedObjectDefColor(char * ObjID,DWORD defColor) -//{ -// DEF_SKIN_OBJECT_PARAMS prm={0}; -// prm.defColor=defColor; -// prm.defStyle=ST_BRUSH; -// prm.szObjectID=ObjID; -// return CallService(MS_SKIN_REGISTERDEFOBJECT,(WPARAM)&prm,0); -//} -INT_PTR ske_Service_DrawGlyph(WPARAM wParam,LPARAM lParam); -int __inline SkinDrawGlyph(HDC hdc, RECT * rcSize, RECT * rcClip, char * objectID) -{ - SKINDRAWREQUEST rq; - if (!objectID) return 0; - rq.hDC=hdc; - rq.rcDestRect=*rcSize; - rq.rcClipRect=*rcClip; - strncpy(rq.szObjectID,objectID,SIZEOF(rq.szObjectID)); - return ske_Service_DrawGlyph((WPARAM)&rq,0); - //return CallService(MS_SKIN_DRAWGLYPH,(WPARAM)&rq,0); -} -//#include "../hdr/modern_skin_selector.h" - -////////////////////////////////////////////// -// // -// New Painting sequence servises // -// // -////////////////////////////////////////////// - -typedef struct sPAINT_REQUEST -{ - DWORD dStructSize; //size of structure - HWND hWnd; //called by window - HDC hDC; //context to draw on - RECT rcUpdate; //rectangle to be painted in (relative to Top-Left corner of Main window) - DWORD dwFlags; //drawing flags - void * CallbackData; //Data for passing to callback procedure - char Reserved[16]; //reserved for farther usage; -} sPaintRequest; - -// Request to register sub for callback painting frame area -// wParam = hWnd of called frame -// lParam = pointer to tPaintCallBackProc (or NULL to remove) -// return 1 - succes, 0 - failure -#define MS_SKINENG_REGISTERPAINTSUB "SkinEngine/ske_Service_RegisterFramePaintCallbackProcedure" - -// Request to repaint frame or change/drop callback data immeadeately -// wParam = hWnd of called frame -// lParam = pointer to sPaintRequest (or NULL to redraw all) -#define MS_SKINENG_UPTATEFRAMEIMAGE "SkinEngine/ske_Service_UpdateFrameImage" - -// Request to repaint frame or change/drop callback data -// wParam = hWnd of called frame -// lParam = pointer to sPaintRequest (or NULL to redraw all) -// return 2 - already queued, data updated, 1-have been queued, 0 - failure -#define MS_SKINENG_INVALIDATEFRAMEIMAGE "SkinEngine/ske_Service_InvalidateFrameImage" - -// Callback proc type -typedef int (/*__stdcall*/ *tPaintCallbackProc)(HWND hWnd, HDC hDC, RECT * rcPaint, HRGN rgnUpdate, DWORD dFlags, void * CallBackData); -//tPaintCallbackProc PaintCallbackProc; - -// HELPER TO UPDATEIMAGEFRAME - -int __inline SkinEngUpdateImageFrame(HWND hwnd, RECT * rcUpdate, DWORD dwFlags, void * CallBackData) -{ - sPaintRequest sr={0}; - sr.dStructSize=sizeof(sPaintRequest); - sr.hWnd=hwnd; - if (rcUpdate) - sr.rcUpdate=*rcUpdate; - sr.dwFlags=dwFlags; - sr.CallbackData=CallBackData; - return CallService(MS_SKINENG_UPTATEFRAMEIMAGE,(WPARAM)hwnd,(LPARAM)&sr); -} - -int __inline SkinEngInvalidateImageFrame(HWND hwnd, CONST RECT * rcUpdate, DWORD dwFlags, void * CallBackData) -{ - sPaintRequest sr={0}; - if (hwnd && (!g_CluiData.fLayered)) return InvalidateRect(hwnd,rcUpdate,dwFlags); - sr.dStructSize=sizeof(sPaintRequest); - sr.hWnd=hwnd; - if (rcUpdate) - sr.rcUpdate=*rcUpdate; - sr.dwFlags=dwFlags; - sr.CallbackData=CallBackData; - return CallService(MS_SKINENG_INVALIDATEFRAMEIMAGE,(WPARAM)hwnd,(LPARAM)&sr); -} - - -int __inline SkinInvalidateFrame(HWND hWnd, CONST RECT* lpRect) -{ - return SkinEngInvalidateImageFrame(hWnd,lpRect,0, 0); -} -// Alpha channel GDI replacements/helpers - -// -// Paints text with correct alpha channel -// wParam - pointer to AlphaTextOutParams -#define MS_SKINENG_ALPHATEXTOUT "SkinEngine/ske_AlphaTextOut" -typedef struct _AlphaTextOutParams -{ - HDC hDC; - LPCTSTR lpString; - int nCount; - RECT * lpRect; - UINT format; - DWORD ARGBcolor; - char reserv[16]; -}AlphaTextOutParams; - -int __inline AlphaText(HDC hDC, LPCTSTR lpString, int nCount, RECT * lpRect, UINT format, DWORD ARGBcolor) -{ - AlphaTextOutParams ap={0}; - ap.hDC=hDC; - ap.lpString=lpString; - ap.nCount=nCount; - ap.lpRect=lpRect; - ap.format=format; - ap.ARGBcolor=ARGBcolor; - return CallService(MS_SKINENG_ALPHATEXTOUT,(WPARAM)&ap,0); -} - -//////////////////////////////////////////////////////////////////////////////// -// Paints text with correct alpha channel and effect, alternative to DrawText -// wParam - pointer to DrawTextWithEffectParam - -typedef struct MODERNFONTEFFECT_tag -{ - BYTE effectIndex; - DWORD baseColour; // ARGB - DWORD secondaryColour; // ARGB -} -MODERNFONTEFFECT; - -typedef struct DrawTextWithEffectParam_tag -{ - int cbSize; - HDC hdc; // handle to DC - LPCTSTR lpchText; // text to draw - int cchText; // length of text to draw - LPRECT lprc; // rectangle coordinates - UINT dwDTFormat; // formatting options - MODERNFONTEFFECT * pEffect; // effect to be drawn on -} DrawTextWithEffectParam; - -#define MS_DRAW_TEXT_WITH_EFFECTA "Modern/SkinEngine/DrawTextWithEffectA" -#define MS_DRAW_TEXT_WITH_EFFECTW "Modern/SkinEngine/DrawTextWithEffectW" - -#ifdef UNICODE - #define MS_DRAW_TEXT_WITH_EFFECT MS_DRAW_TEXT_WITH_EFFECTW -#else - #define MS_DRAW_TEXT_WITH_EFFECT MS_DRAW_TEXT_WITH_EFFECTA -#endif - -// Helper -int __inline DrawTextWithEffect( HDC hdc, LPCTSTR lpchText, int cchText, RECT * lprc, UINT dwDTFormat, MODERNFONTEFFECT * pEffect ) -{ - DrawTextWithEffectParam params; - static BYTE bIfServiceExists = ServiceExists( MS_DRAW_TEXT_WITH_EFFECT ) ? 1 : 0; - if ( bIfServiceExists == 0 ) return DrawText ( hdc, lpchText, cchText, lprc, dwDTFormat ); - - // else - params.cbSize = sizeof( DrawTextWithEffectParam ); - params.hdc = hdc; - params.lpchText = lpchText; - params.cchText = cchText; - params.lprc = lprc; - params.dwDTFormat = dwDTFormat; - params.pEffect = pEffect; - return CallService( MS_DRAW_TEXT_WITH_EFFECT, (WPARAM)¶ms, 0 ); -} - - -typedef struct _ImageListFixParam -{ - HIMAGELIST himl; - int index; - HICON hicon; -}ImageListFixParam; - -typedef struct _DrawIconFixParam -{ - HDC hdc; - int xLeft; - int yTop; - HICON hIcon; - int cxWidth; - int cyWidth; - UINT istepIfAniCur; - HBRUSH hbrFlickerFreeDraw; - UINT diFlags; -} DrawIconFixParam; -//wParam - pointer to DrawIconFixParam -#define MS_SKINENG_DRAWICONEXFIX "SkinEngine/DrawIconEx_Fix" - -int __inline mod_DrawIconEx_helper(HDC hdc,int xLeft,int yTop,HICON hIcon,int cxWidth,int cyWidth, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags) -{ - DrawIconFixParam p={0}; - p.hdc=hdc; - p.xLeft=xLeft; - p.yTop=yTop; - p.hIcon=hIcon; - p.cxWidth=cxWidth; - p.cyWidth=cyWidth; - p.istepIfAniCur=istepIfAniCur; - p.hbrFlickerFreeDraw=hbrFlickerFreeDraw; - p.diFlags=diFlags; - return CallService(MS_SKINENG_DRAWICONEXFIX,(WPARAM)&p,0); -} -#endif diff --git a/plugins/Clist_modern/src/modern_docking.cpp b/plugins/Clist_modern/src/modern_docking.cpp index 93ef4c55f3..b2c4e0f083 100644 --- a/plugins/Clist_modern/src/modern_docking.cpp +++ b/plugins/Clist_modern/src/modern_docking.cpp @@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "hdr/modern_commonheaders.h" #include "hdr/modern_clist.h" -#include "m_api/m_skin_eng.h" +#include "m_skin_eng.h" #include "m_api/m_skinbutton.h" #include "hdr/modern_commonprototypes.h" #include "hdr/modern_sync.h" diff --git a/plugins/Clist_modern/src/modern_skinengine.cpp b/plugins/Clist_modern/src/modern_skinengine.cpp index de1496b5ee..d89a9842ed 100644 --- a/plugins/Clist_modern/src/modern_skinengine.cpp +++ b/plugins/Clist_modern/src/modern_skinengine.cpp @@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. //Include #include "hdr/modern_commonheaders.h" #include -#include "m_api/m_skin_eng.h" +#include "m_skin_eng.h" #include "hdr/modern_skinselector.h" #include "CLUIFrames/cluiframes.h" diff --git a/plugins/Clist_modern/src/modern_skinselector.cpp b/plugins/Clist_modern/src/modern_skinselector.cpp index 72389ddabe..7264c6d359 100644 --- a/plugins/Clist_modern/src/modern_skinselector.cpp +++ b/plugins/Clist_modern/src/modern_skinselector.cpp @@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "hdr/modern_commonheaders.h" #include "hdr/modern_skinselector.h" #include "hdr/modern_skinengine.h" -#include "m_api/m_skin_eng.h" +#include "m_skin_eng.h" #include "m_api/m_skinbutton.h" #include "hdr/modern_commonprototypes.h" @@ -645,26 +645,3 @@ int SkinDrawGlyphMask(HDC hdc, RECT *rcSize, RECT *rcClip, MODERNMASK *ModernMas strncpy(rq.szObjectID, "Masked draw", SIZEOF(rq.szObjectID)-1); return ske_Service_DrawGlyph((WPARAM)&rq, (LPARAM)ModernMask); } - - -int __inline SkinDrawWindowBack(HWND hwndIn, HDC hdc, RECT *rcClip, char * objectID) -{ - SKINDRAWREQUEST rq; - POINT pt = { 0 }; - RECT rc, r1; - - HWND hwnd = (HWND)CallService(MS_CLUI_GETHWND, 0, 0); - if (!objectID) return 0; - GetWindowRect(hwndIn, &r1); - pt.x = r1.left; - pt.y = r1.top; - //ClientToScreen(hwndIn,&pt); - GetWindowRect(hwnd, &rc); - OffsetRect(&rc, -pt.x, -pt.y); - rq.hDC = hdc; - rq.rcDestRect = rc; - rq.rcClipRect = *rcClip; - strncpy(rq.szObjectID, objectID, SIZEOF(rq.szObjectID)-1); - ///ske_Service_DrawGlyph((WPARAM)&rq,0); //$$$ - return CallService(MS_SKIN_DRAWGLYPH, (WPARAM)&rq, 0); -} diff --git a/plugins/Clist_modern/src/modern_statusbar.cpp b/plugins/Clist_modern/src/modern_statusbar.cpp index bd4e0cb2fc..c34fcf9540 100644 --- a/plugins/Clist_modern/src/modern_statusbar.cpp +++ b/plugins/Clist_modern/src/modern_statusbar.cpp @@ -1,6 +1,6 @@ #include "hdr/modern_commonheaders.h" #include "hdr/modern_statusbar.h" -#include "./m_api/m_skin_eng.h" +#include "m_skin_eng.h" #include "hdr/modern_commonprototypes.h" #include "hdr/modern_clcpaint.h" #include "hdr/modern_sync.h" diff --git a/plugins/ExternalAPI/m_skin_eng.h b/plugins/ExternalAPI/m_skin_eng.h index b677b22df8..fa91f624e2 100644 --- a/plugins/ExternalAPI/m_skin_eng.h +++ b/plugins/ExternalAPI/m_skin_eng.h @@ -187,16 +187,12 @@ int __inline SkinDrawWindowBack(HWND hwndIn, HDC hdc, RECT * rcClip, char * obje return CallService(MS_SKIN_DRAWGLYPH,(WPARAM)&rq,0); } - - //Register object with predefined style int __inline CreateGlyphedObjectDefStyle(char * ObjID,BYTE defStyle); int __inline CreateGlyphedObjectDefColor(char * ObjID,DWORD defColor); //Register default object int __inline CreateGlyphedObject(char * ObjID); - - //// Creating and registering objects //int __inline CreateGlyphedObject(char * ObjID) //{ @@ -346,6 +342,7 @@ int __inline SkinInvalidateFrame(HWND hWnd, CONST RECT* lpRect) { return SkinEngInvalidateImageFrame(hWnd, lpRect, 0, 0); } +// Alpha channel GDI replacements/helpers // // Paints text with correct alpha channel @@ -374,6 +371,57 @@ int __inline AlphaText(HDC hDC, LPCTSTR lpString, int nCount, RECT * lpRect, UIN return CallService(MS_SKINENG_ALPHATEXTOUT,(WPARAM)&ap,0); } +//////////////////////////////////////////////////////////////////////////////// +// Paints text with correct alpha channel and effect, alternative to DrawText +// wParam - pointer to DrawTextWithEffectParam + +typedef struct MODERNFONTEFFECT_tag +{ + BYTE effectIndex; + DWORD baseColour; // ARGB + DWORD secondaryColour; // ARGB +} +MODERNFONTEFFECT; + +typedef struct DrawTextWithEffectParam_tag +{ + int cbSize; + HDC hdc; // handle to DC + LPCTSTR lpchText; // text to draw + int cchText; // length of text to draw + LPRECT lprc; // rectangle coordinates + UINT dwDTFormat; // formatting options + MODERNFONTEFFECT * pEffect; // effect to be drawn on +} DrawTextWithEffectParam; + +#define MS_DRAW_TEXT_WITH_EFFECTA "Modern/SkinEngine/DrawTextWithEffectA" +#define MS_DRAW_TEXT_WITH_EFFECTW "Modern/SkinEngine/DrawTextWithEffectW" + +#ifdef UNICODE + #define MS_DRAW_TEXT_WITH_EFFECT MS_DRAW_TEXT_WITH_EFFECTW +#else + #define MS_DRAW_TEXT_WITH_EFFECT MS_DRAW_TEXT_WITH_EFFECTA +#endif + +// Helper +int __inline DrawTextWithEffect( HDC hdc, LPCTSTR lpchText, int cchText, RECT * lprc, UINT dwDTFormat, MODERNFONTEFFECT * pEffect ) +{ + DrawTextWithEffectParam params; + static BYTE bIfServiceExists = ServiceExists( MS_DRAW_TEXT_WITH_EFFECT ) ? 1 : 0; + if ( bIfServiceExists == 0 ) return DrawText ( hdc, lpchText, cchText, lprc, dwDTFormat ); + + // else + params.cbSize = sizeof( DrawTextWithEffectParam ); + params.hdc = hdc; + params.lpchText = lpchText; + params.cchText = cchText; + params.lprc = lprc; + params.dwDTFormat = dwDTFormat; + params.pEffect = pEffect; + return CallService( MS_DRAW_TEXT_WITH_EFFECT, (WPARAM)¶ms, 0 ); +} + + typedef struct _ImageListFixParam { HIMAGELIST himl; -- cgit v1.2.3