/* Miranda SmileyAdd Plugin Copyright (C) 2005 - 2011 Boris Krasnovskiy Copyright (C) 2003 - 2004 Rein-Peter de Boer 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 version 2 of the License. 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, see . */ #ifndef _GENERAL_ #define _GENERAL_ #define _HAS_EXCEPTIONS 0 #define _SECURE_SCL 0 #define _SECURE_SCL_THROWS 0 #define __STDC_WANT_SECURE_LIB__ 0 #define _STRALIGN_USE_SECURE_CRT 0 #define _NO_EXCEPTIONS #include #include #include #include #include #include #include #include #include #include #include #include "bkstring.h" #undef _MT #pragma warning( push ) #pragma warning( disable : 4530 ) #pragma warning( disable : 4275 ) #pragma warning( disable : 4390 ) #if defined _UNICODE || defined UNICODE #include #include typedef WCPattern _TPattern; typedef WCMatcher _TMatcher; #define createTMatcher createWCMatcher #else #include #include typedef Pattern _TPattern; typedef Matcher _TMatcher; #define createTMatcher createMatcher #endif #pragma warning( pop ) #define _MT #include "resource.h" #pragma warning( push ) #pragma warning( disable : 4100 ) #define MIRANDA_VER 0x0A00 #define NETLIB_NOLOGGING #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning( pop ) //globals, defined int main.cpp extern HINSTANCE g_hInst; extern char* metaProtoName; //some system and NT stuff... #ifndef OPENFILENAME_SIZE_VERSION_400 #define OPENFILENAME_SIZE_VERSION_400 sizeof(OPENFILENAME) #endif #define IDC_SMLBUTTON (WM_USER + 33) /////////////////////////////////////////////////// // //defines from miranda im sources (undocumented!) // #define MI_IDC_LOG 1001 //rich edit #define MI_IDC_MESSAGE 1002 //edit control #define MI_IDC_QUOTE 1034 //button control #define MI_IDC_NAME 1009 //text control #define MI_IDC_ADD 1070 //Add button. #define DM_REMAKELOG (WM_USER + 11) #define DM_OPTIONSAPPLIED (WM_USER + 14) #define DM_APPENDTOLOG (WM_USER + 17) #define WM_REMAKERICH (WM_USER + 0x3457) ///////////////////////////////////////////////////// #define MAX_SMILEY_LENGTH 96 class A2W_SM { public: wchar_t* m_psz; A2W_SM(const char* psz, unsigned nCodePage = CP_ACP) { const int nLength = MultiByteToWideChar(nCodePage, 0, psz, -1, NULL, 0); m_psz = new wchar_t[nLength]; MultiByteToWideChar(nCodePage, 0, psz, -1, m_psz, nLength); } ~A2W_SM() { delete [] m_psz; } operator wchar_t*() const { return m_psz; } }; class W2A_SM { public: char* m_psz; W2A_SM(const wchar_t* psz, unsigned nCodePage = CP_ACP) { const int nLength = WideCharToMultiByte(nCodePage, 0, psz, -1, NULL, 0, NULL, NULL); m_psz = new char[nLength]; WideCharToMultiByte(nCodePage, 0, psz, -1, m_psz, nLength, NULL, NULL); } ~W2A_SM() { delete [] m_psz; } operator char*() const { return m_psz; } }; #if defined _UNICODE || defined UNICODE #define T2A_SM (char*)W2A_SM #define T2W_SM(p1) (wchar_t*)p1 #define A2T_SM (wchar_t*)A2W_SM #define W2T_SM(p1) (TCHAR*)p1 #else #define T2A_SM(p1) (char*)p1 #define T2W_SM A2W_SM #define A2T_SM(p1) (TCHAR*)p1 #define W2T_SM W2A_SM #endif template struct SMOBJLIST : public OBJLIST { SMOBJLIST() : OBJLIST(5) {}; SMOBJLIST& operator = (const SMOBJLIST& lst) { OBJLIST::destroy(); return operator += (lst); } SMOBJLIST& operator += (const SMOBJLIST& lst) { for (int i=0; i& lst) { for (int i=0; i::destroy(); } }; inline unsigned short GetWinVer(void) { unsigned short ver = LOWORD(GetVersion()); ver = (ver & 0xFF) << 8 | (ver >> 8); return ver; } // init functions void InstallDialogBoxHook(void); void RemoveDialogBoxHook(void); int UpdateSrmmDlg(WPARAM wParam, LPARAM lParam); bool IsOldSrmm(void); //functions for general use (defined in general.cpp) int CalculateTextHeight(HDC hdc, CHARFORMAT2* chf); const TCHAR* GetImageExt(bkstring &fname); HANDLE DecodeMetaContact(HANDLE hContact); bool IsSmileyProto(char* proto); HICON ImageList_GetIconFixed (HIMAGELIST himl, INT i, UINT fStyle); void pathToRelative(const bkstring& pSrc, bkstring& pOut); void pathToAbsolute(const bkstring& pSrc, bkstring& pOut); bool InitGdiPlus(void); void DestroyGdiPlus(void); void ReportError(const TCHAR* errmsg); HICON GetDefaultIcon(bool copy = true); void CloseRichCallback(HWND hwnd, bool force); void CloseRichOwnerCallback(HWND hwnd, bool force); bool SetRichCallback(HWND hwnd, HANDLE hContact, bool subany, bool subnew); void SetRichOwnerCallback(HWND hwnd, HWND hwndInput, HWND hwndLog); void ProcessAllInputAreas(bool restoreText); void RichEditData_Destroy(void); void CloseSmileys(void); void DestroySmileyBase(void); void DestroyAniSmileys(void); void UrlDecode(char* str); #endif