summaryrefslogtreecommitdiff
path: root/plugins/Popup/src/common.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Popup/src/common.h')
-rw-r--r--plugins/Popup/src/common.h296
1 files changed, 296 insertions, 0 deletions
diff --git a/plugins/Popup/src/common.h b/plugins/Popup/src/common.h
new file mode 100644
index 0000000000..d975e0df0c
--- /dev/null
+++ b/plugins/Popup/src/common.h
@@ -0,0 +1,296 @@
+/*
+Popup Plus plugin for Miranda IM
+
+Copyright © 2002 Luca Santarelli,
+ © 2004-2007 Victor Pavlychko
+ © 2010 MPK
+ © 2010 Merlin_de
+
+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.
+
+===============================================================================
+
+File name : $HeadURL: http://svn.miranda.im/mainrepo/popup/trunk/src/common.h $
+Revision : $Revision: 1622 $
+Last change on : $Date: 2010-06-23 23:32:21 +0300 (Ср, 23 июн 2010) $
+Last change by : $Author: Merlin_de $
+
+===============================================================================
+*/
+
+#ifndef COMMON_H
+#define COMMON_H
+
+void PopUpPreview();
+
+#define MAX_POPUPS 48
+
+#define DB_READ_SUCCESS 0
+#define DB_READ_FAIL -1
+
+//===== Definitions =====
+#define LIGHTEN 24
+#define DARKEN 64
+
+inline void GetBmpSize(HBITMAP hbm, SIZE *sz)
+{
+ GetBitmapDimensionEx(hbm, sz);
+}
+
+inline void DebugMsg(LPTSTR msg){
+ if(PopUpOptions.debug){
+ MessageBox(NULL, msg, _T("debug"), MB_OK);
+ }
+}
+
+/* not used
+inline void GetDCBmpSize(HDC hdc, SIZE *sz)
+{
+ BITMAP bmp;
+ GetObject(GetCurrentObject(hdc, OBJ_BITMAP), sizeof(bmp), &bmp);
+ sz->cx = bmp.bmWidth;
+ sz->cy = bmp.bmHeight;
+}
+
+inline HBITMAP myLoadBitmap(LPCTSTR fn)
+{
+ HBITMAP res = (HBITMAP)LoadImage(NULL, fn, IMAGE_BITMAP, LR_DEFAULTSIZE, LR_DEFAULTSIZE, LR_LOADFROMFILE);
+
+ BITMAPFILEHEADER bfh;
+ BITMAPINFOHEADER bih;
+ FILE *f = _tfopen (fn, _T("rb"));
+ fread(&bfh, sizeof(bfh), 1, f);
+ fread(&bih, sizeof(bih), 1, f);
+ fclose(f);
+ SetBitmapDimensionEx(res, bih.biWidth, bih.biHeight, NULL);
+
+ return res;
+}
+*/
+
+//===== Percentile to Byte and viceversa =====
+inline int Byte2Percentile(int vByte) { return (vByte*100)/255; }
+inline int Percentile2Byte(int vPerc) { return (vPerc*255)/100; }
+
+//===== Strings & MirandaDB ==================
+inline char *DBGetContactSettingString(HANDLE hContact, const char *ModuleName, const char *SettingName, const char *Default)
+{
+ DBVARIANT dbv;
+ DBCONTACTGETSETTING dbcgs;
+ dbcgs.szModule = ModuleName;
+ dbcgs.pValue = &dbv;
+ dbcgs.szSetting = SettingName;
+
+ CallService(MS_DB_CONTACT_GETSETTING, (WPARAM)hContact, (LPARAM)&dbcgs);
+
+ char *result = 0;
+ if (dbv.type == DBVT_ASCIIZ)
+ {
+ result = mir_strdup(dbv.pszVal);
+ }
+ else if (Default)
+ {
+ result = mir_strdup(Default);
+ }
+
+ CallService(MS_DB_CONTACT_FREEVARIANT, 0, (LPARAM)&dbv);
+ return result;
+}
+
+inline INT_PTR DBGetContactSettingStringX(HANDLE hContact, const char *ModuleName, const char *SettingName, const char *Default, const int retType)
+{
+ INT_PTR ret = NULL;
+ BOOL result = 0;
+ DBVARIANT dbv;
+ DBCONTACTGETSETTING dbcgs;
+ dbcgs.szModule = ModuleName;
+ dbcgs.szSetting = SettingName;
+ dbcgs.pValue = &dbv;
+ dbv.type=(BYTE)retType;
+
+ result = CallService(MS_DB_CONTACT_GETSETTING_STR, (WPARAM)hContact, (LPARAM)&dbcgs);
+
+ switch(retType) {
+ case DBVT_ASCIIZ:
+ ret = (INT_PTR)mir_strdup(result ? Default : dbv.pszVal);
+ break;
+ case DBVT_WCHAR:
+ if(!result) {
+ ret = (INT_PTR)mir_wstrdup(dbv.pwszVal);
+ }
+ else {
+ ret = (INT_PTR)mir_a2u(Default);
+ }
+ break;
+ default:
+ break;
+ }
+ if(!result)
+ CallService(MS_DB_CONTACT_FREEVARIANT, 0, (LPARAM)&dbv);
+ return ret;
+}
+
+/* not used
+#if !defined(_UNICODE)
+inline void SetWindowTextTraslated(HWND hwnd, const char *text)
+{
+ if (!(hwnd && text)) return;
+ if (g_popup.isOsUnicode && IsWindowUnicode(hwnd) && MySetWindowTextW)
+ {
+ UINT codepage = CallService(MS_LANGPACK_GETCODEPAGE, 0, 0);
+ int size = MultiByteToWideChar(codepage, 0, text, lstrlenA(text), 0, 0);
+ WCHAR *wtext = new WCHAR[size+1];
+ MultiByteToWideChar(codepage, 0, text, lstrlenA(text), wtext, size+1); wtext[size]=0;
+ MySetWindowTextW(hwnd, TranslateW(wtext));
+ delete [] wtext;
+ } else
+ {
+ SetWindowTextA(hwnd, Translate(text));
+ }
+}
+#endif
+*/
+/*/dedrecatet (tricky thing to minimize memory fragmentation)
+inline wchar_t* a2u( char* src )
+{
+ int codepage = CallService( MS_LANGPACK_GETCODEPAGE, 0, 0 );
+
+ int cbLen = MultiByteToWideChar( codepage, 0, src, -1, NULL, 0 );
+ wchar_t* result = ( wchar_t* )mir_alloc( sizeof( wchar_t )*(cbLen+1));
+ if ( result == NULL )
+ return NULL;
+
+ MultiByteToWideChar( codepage, 0, src, -1, result, cbLen );
+ result[ cbLen ] = 0;
+ return result;
+}
+
+#define nb_a2u_init() \
+ int nb_a2u_codepage = CallService(MS_LANGPACK_GETCODEPAGE, 0, 0); \
+ int nb_a2u_len = 0; \
+
+#define nb_a2u(dst, src) \
+ bool dst##_free = false; \
+ WCHAR *dst = NULL; \
+ nb_a2u_len = MultiByteToWideChar(nb_a2u_codepage, 0, src, -1, NULL, 0); \
+ __try \
+ { \
+ dst = (WCHAR *)_alloca(sizeof(WCHAR)*(nb_a2u_len+1)); \
+ } \
+ __except( EXCEPTION_EXECUTE_HANDLER ) \
+ { \
+ dst = (WCHAR *)mir_alloc(sizeof(WCHAR)*(nb_a2u_len+1)); \
+ dst##_free = true; \
+ } \
+ MultiByteToWideChar(nb_a2u_codepage, 0, src, -1, dst, nb_a2u_len); \
+ dst[nb_a2u_len] = 0;
+
+#define nb_a2u_free(dst) \
+ if (dst##_free) \
+ mir_free(dst);
+*/
+
+inline void AddTooltipTranslated(HWND hwndToolTip, HWND hwnd, int id, RECT rc, char *text)
+{
+#if defined(_UNICODE)
+ TOOLINFO ti = {0};
+ ti.cbSize = sizeof(TOOLINFO);
+
+ ti.hwnd = hwnd;
+ ti.uId = id;
+ SendMessage(hwndToolTip, TTM_DELTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);
+
+ LPWSTR wtext = mir_a2u(text);
+
+ ti.uFlags = TTF_SUBCLASS;
+ ti.hwnd = hwnd;
+ ti.uId = id;
+ ti.hinst = hInst;
+ ti.lpszText = TranslateW(wtext);
+ ti.rect = rc;
+ SendMessage(hwndToolTip, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);
+
+ mir_free(wtext);
+
+#else
+ if (g_popup.isOsUnicode && MySendMessageW)
+ {
+ TOOLINFOW ti = {0};
+ ti.cbSize = sizeof(TOOLINFO);
+
+ ti.hwnd = hwnd;
+ ti.uId = id;
+ MySendMessageW(hwndToolTip, TTM_DELTOOLW, 0, (LPARAM) (LPTOOLINFOW) &ti);
+
+ LPWSTR wtext = mir_a2u(text);
+
+ ti.uFlags = TTF_SUBCLASS;
+ ti.hwnd = hwnd;
+ ti.uId = id;
+ ti.hinst = hInst;
+ ti.lpszText = TranslateW(wtext);
+ ti.rect = rc;
+ MySendMessageW(hwndToolTip, TTM_ADDTOOLW, 0, (LPARAM) (LPTOOLINFOW) &ti);
+
+ mir_free(wtext);
+ } else
+ {
+ TOOLINFOA ti = {0};
+ ti.cbSize = sizeof(TOOLINFO);
+
+ ti.hwnd = hwnd;
+ ti.uId = id;
+ SendMessage(hwndToolTip, TTM_DELTOOLA, 0, (LPARAM) (LPTOOLINFOA) &ti);
+
+ ti.uFlags = TTF_SUBCLASS;
+ ti.hwnd = hwnd;
+ ti.uId = id;
+ ti.hinst = hInst;
+ ti.lpszText = Translate(text);
+ ti.rect = rc;
+ SendMessage(hwndToolTip, TTM_ADDTOOLA, 0, (LPARAM) (LPTOOLINFOA) &ti);
+ }
+#endif
+}
+
+/* not used
+inline UINT getCodepageFromCharset(BYTE charset)
+{
+ switch (charset)
+ {
+ case ANSI_CHARSET: return 1252;
+ case BALTIC_CHARSET: return 1257;
+ case CHINESEBIG5_CHARSET: return 950;
+ case DEFAULT_CHARSET: return CP_ACP;
+ case EASTEUROPE_CHARSET: return 1250;
+ case GB2312_CHARSET: return 936;
+ case GREEK_CHARSET: return 1253;
+ case HANGUL_CHARSET: return 949;
+ case MAC_CHARSET: return CP_MACCP;
+ case OEM_CHARSET: return CP_OEMCP;
+ case RUSSIAN_CHARSET: return 1251;
+ case SHIFTJIS_CHARSET: return 932;
+// case SYMBOL_CHARSET: return ;
+ case TURKISH_CHARSET: return 1254;
+ case VIETNAMESE_CHARSET: return 1258;
+ case JOHAB_CHARSET: return 1361;
+ case ARABIC_CHARSET: return 1256;
+ case HEBREW_CHARSET: return 1255;
+ default: return CP_ACP;
+ }
+}
+*/
+
+#endif //COMMON_H