/* * Miranda IM: the free IM client for Microsoft* Windows* * * Copyright 2000-2010 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. * * part of clist_nicer plugin for Miranda. * * (C) 2005-2010 by silvercircle _at_ gmail _dot_ com and contributors * * $Id: commonheaders.h 14157 2012-03-10 18:53:26Z george.hazan $ * */ #define _WIN32_WINNT 0x0501 #define _WIN32_IE 0x0501 #define _CRT_SECURE_NO_WARNINGS #undef FASTCALL #define TSAPI __stdcall #define FASTCALL __fastcall #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "m_cln_skinedit.h" #include "resource.h" #include "Version.h" #include "extbackg.h" #include "clc.h" #include "config.h" #include "clist.h" #include "alphablend.h" #include "rowheight_funcs.h" /* * text shadow types (DrawThemeTextEx() / Vista+ uxtheme) */ #define TST_NONE 0 #define TST_SINGLE 1 #define TST_CONTINUOUS 2 typedef struct _DWM_THUMBNAIL_PROPERTIES { DWORD dwFlags; RECT rcDestination; RECT rcSource; BYTE opacity; BOOL fVisible; BOOL fSourceClientAreaOnly; } DWM_THUMBNAIL_PROPERTIES, *PDWM_THUMBNAIL_PROPERTIES; enum DWMWINDOWATTRIBUTE { DWMWA_NCRENDERING_ENABLED = 1, // [get] Is non-client rendering enabled/disabled DWMWA_NCRENDERING_POLICY, // [set] Non-client rendering policy DWMWA_TRANSITIONS_FORCEDISABLED, // [set] Potentially enable/forcibly disable transitions DWMWA_ALLOW_NCPAINT, // [set] Allow contents rendered in the non-client area to be visible on the DWM-drawn frame. DWMWA_CAPTION_BUTTON_BOUNDS, // [get] Bounds of the caption button area in window-relative space. DWMWA_NONCLIENT_RTL_LAYOUT, // [set] Is non-client content RTL mirrored DWMWA_FORCE_ICONIC_REPRESENTATION, // [set] Force this window to display iconic thumbnails. DWMWA_FLIP3D_POLICY, // [set] Designates how Flip3D will treat the window. DWMWA_EXTENDED_FRAME_BOUNDS, // [get] Gets the extended frame bounds rectangle in screen space DWMWA_HAS_ICONIC_BITMAP, // [set] Indicates an available bitmap when there is no better thumbnail representation. DWMWA_DISALLOW_PEEK, // [set] Don't invoke Peek on the window. DWMWA_EXCLUDED_FROM_PEEK, // [set] LivePreview exclusion information DWMWA_LAST }; #define DWM_TNP_RECTDESTINATION 0x00000001 #define DWM_TNP_RECTSOURCE 0x00000002 #define DWM_TNP_OPACITY 0x00000004 #define DWM_TNP_VISIBLE 0x00000008 #define DWM_TNP_SOURCECLIENTAREAONLY 0x00000010 #define DWM_SIT_DISPLAYFRAME 0x00000001 // Display a window frame around the provided bitmap typedef HANDLE HTHUMBNAIL; typedef HTHUMBNAIL* PHTHUMBNAIL; #ifndef BPPF_ERASE typedef enum _BP_BUFFERFORMAT { BPBF_COMPATIBLEBITMAP, // Compatible bitmap BPBF_DIB, // Device-independent bitmap BPBF_TOPDOWNDIB, // Top-down device-independent bitmap BPBF_TOPDOWNMONODIB // Top-down monochrome device-independent bitmap } BP_BUFFERFORMAT; typedef struct _BP_PAINTPARAMS { DWORD cbSize; DWORD dwFlags; // BPPF_ flags const RECT * prcExclude; const BLENDFUNCTION * pBlendFunction; } BP_PAINTPARAMS, *PBP_PAINTPARAMS; #define BPPF_ERASE 1 #define BPPF_NOCLIP 2 #define BPPF_NONCLIENT 4 #endif typedef struct _DWM_BLURBEHIND { DWORD dwFlags; BOOL fEnable; HRGN hRgnBlur; BOOL fTransitionOnMaximized; } DWM_BLURBEHIND, *PDWM_BLURBEHIND; #define DWM_BB_ENABLE 1 #ifndef LOCALE_SISO3166CTRYNAME2 #define LOCALE_SISO3166CTRYNAME2 0x00000068 // 3 character ISO country name, eg "USA Vista+ #define LOCALE_SISO639LANGNAME2 0x00000067 // 3 character ISO abbreviated language name, eg "eng" #endif #ifndef WM_DWMCOMPOSITIONCHANGED #define WM_DWMCOMPOSITIONCHANGED 0x031E #define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320 #endif #ifndef WM_DWMSENDICONICTHUMBNAIL #define WM_DWMSENDICONICTHUMBNAIL 0x0323 #define WM_DWMSENDICONICLIVEPREVIEWBITMAP 0x0326 #endif // shared vars extern HINSTANCE g_hInst; extern LONG g_cxsmIcon, g_cysmIcon; extern LIST arStatusItems; extern ImageItem *g_glyphItem; /* most free()'s are invalid when the code is executed from a dll, so this changes all the bad free()'s to good ones, however it's still incorrect code. The reasons for not changing them include: * db_free has a CallService() lookup * free() is executed in some large loops to do with clist creation of group data * easy search and replace */ typedef int (__cdecl *pfnDrawAvatar)(HDC hdcOrig, HDC hdcMem, RECT *rc, ClcContact *contact, int y, struct ClcData *dat, int selected, WORD cstatus, int rowHeight); BOOL __forceinline GetItemByStatus(int status, StatusItems_t *retitem); void DrawAlpha(HDC hdcwnd, PRECT rc, DWORD basecolor, int alpha, DWORD basecolor2, BOOL transparent, BYTE FLG_GRADIENT, BYTE FLG_CORNER, DWORD BORDERSTYLE, ImageItem *item); void CustomizeButton(HWND hWnd, bool bIsSkinned, bool bIsThemed, bool bIsFlat); void FreeAndNil( void** );