diff options
author | George Hazan <ghazan@miranda.im> | 2017-02-14 15:34:13 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2017-02-14 15:34:20 +0300 |
commit | 43ab22c6b58eccb328b1c738e6d7aa8e171e9d3f (patch) | |
tree | 560e3e192b55a2abed9b4d3cb5a15fc2e175bed4 /plugins/SendScreenshotPlus/src | |
parent | f1316ce218d01d5db243beb027039939cbb8710e (diff) |
- fixes #712 (chaos in file name processing)
- massive code cleaning
Diffstat (limited to 'plugins/SendScreenshotPlus/src')
27 files changed, 476 insertions, 606 deletions
diff --git a/plugins/SendScreenshotPlus/src/CSend.cpp b/plugins/SendScreenshotPlus/src/CSend.cpp index a8d0a19496..7dad3c0af7 100644 --- a/plugins/SendScreenshotPlus/src/CSend.cpp +++ b/plugins/SendScreenshotPlus/src/CSend.cpp @@ -29,27 +29,28 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" #define CSEND_DIALOG 8800 -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + CSend::CSend(HWND /*Owner*/, MCONTACT hContact, bool bAsync, bool bSilent) : -m_bDeleteAfterSend(false), -m_bAsync(bAsync), -m_bSilent(bSilent), -m_pszFile(NULL), -m_pszFileDesc(NULL), -m_URL(NULL), -m_URLthumb(NULL), -m_pszSendTyp(NULL), -m_pszProto(NULL), -// m_hContact(hContact), // initialized below -m_EnableItem(0), -m_ChatRoom(0), -// m_PFflag(0), -m_cbEventMsg(0), -m_szEventMsg(NULL), -m_hSend(0), -m_hOnSend(0), -m_ErrorMsg(NULL), -m_ErrorTitle(NULL) + m_bDeleteAfterSend(false), + m_bAsync(bAsync), + m_bSilent(bSilent), + m_pszFile(NULL), + m_pszFileDesc(NULL), + m_URL(NULL), + m_URLthumb(NULL), + m_pszSendTyp(NULL), + m_pszProto(NULL), + // m_hContact(hContact), // initialized below + m_EnableItem(0), + m_ChatRoom(0), + // m_PFflag(0), + m_cbEventMsg(0), + m_szEventMsg(NULL), + m_hSend(0), + m_hOnSend(0), + m_ErrorMsg(NULL), + m_ErrorTitle(NULL) { SetContact(hContact); } @@ -66,7 +67,8 @@ CSend::~CSend() if (m_hOnSend) UnhookEvent(m_hOnSend); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void CSend::SetContact(MCONTACT hContact) { m_hContact = hContact; @@ -80,12 +82,8 @@ void CSend::SetContact(MCONTACT hContact) } } -//--------------------------------------------------------------------------- -/*bool CSend::hasCap(unsigned int Flag) { - return (Flag & ProtoChainSend(m_hContact, PS_GETCAPS, PFLAGNUM_1, NULL)) == Flag; - }// */ +///////////////////////////////////////////////////////////////////////////////////////// -//--------------------------------------------------------------------------- INT_PTR CALLBACK CSend::ResultDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { @@ -93,11 +91,9 @@ INT_PTR CALLBACK CSend::ResultDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, TranslateDialogDefault(hwndDlg); Window_SetIcon_IcoLib(hwndDlg, GetIconHandle(ICO_MAIN)); { - CSend* self = (CSend*)lParam; - wchar_t* tmp = mir_wstrdup(TranslateT("Resulting URL from\n")); - mir_tstradd(tmp, self->m_pszSendTyp); - SetDlgItemText(hwndDlg, IDC_HEADERBAR, tmp); - mir_free(tmp); + CSend *self = (CSend*)lParam; + SetDlgItemText(hwndDlg, IDC_HEADERBAR, CMStringW(TranslateT("Resulting URL from\n")) + self->m_pszSendTyp); + SendDlgItemMessage(hwndDlg, IDC_HEADERBAR, WM_SETICON, ICON_BIG, (LPARAM)GetIconBtn(ICO_BTN_ARROWR)); SetDlgItemTextA(hwndDlg, ID_edtURL, self->m_URL); if (self->m_URLthumb) { @@ -215,16 +211,17 @@ void CSend::svcSendMsgExit(const char* szMessage) Exit(CSEND_DIALOG); return; } if (m_ChatRoom) { - wchar_t* tmp = mir_a2u(szMessage); + CMStringW tmp(szMessage); if (m_pszFileDesc) { - mir_tstradd(tmp, L"\r\n"); - mir_tstradd(tmp, m_pszFileDesc); + tmp.Append(L"\r\n"); + tmp.Append(m_pszFileDesc); } - GC_INFO gci = { 0 }; + int res = GC_RESULT_NOSESSION; int cnt = pci->SM_GetCount(m_pszProto); - //loop on all gc session to get the right (save) ptszID for the chatroom from m_hContact + // loop on all gc session to get the right (save) ptszID for the chatroom from m_hContact + GC_INFO gci = { 0 }; gci.pszModule = m_pszProto; for (int i = 0; i < cnt; i++) { gci.iItem = i; @@ -316,7 +313,8 @@ void CSend::svcSendFileExit() } } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + int CSend::OnSend(void *obj, WPARAM, LPARAM lParam) { CSend* self = (CSend*)obj; @@ -387,7 +385,8 @@ void CSend::DB_EventAdd(WORD EventType) db_event_add(m_hContact, &dbei); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void CSend::Error(LPCTSTR pszFormat, ...) { wchar_t tszMsg[MAX_SECONDLINE]; @@ -411,7 +410,8 @@ void CSend::Error(LPCTSTR pszFormat, ...) m_box.uType = MB_OK | MB_ICON_ERROR; } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void CSend::Exit(unsigned int Result) { if (!m_bSilent) { @@ -459,8 +459,9 @@ void CSend::Exit(unsigned int Result) delete this;/// deletes derived class since destructor is virtual (which also auto-calls base dtor) } -/// helper functions used for HTTP uploads -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// +// helper functions used for HTTP uploads + #define snprintf _snprintf const char* CSend::GetHTMLContent(char* str, const char* startTag, const char* endTag) diff --git a/plugins/SendScreenshotPlus/src/CSend.h b/plugins/SendScreenshotPlus/src/CSend.h index 512555ce49..55168c191b 100644 --- a/plugins/SendScreenshotPlus/src/CSend.h +++ b/plugins/SendScreenshotPlus/src/CSend.h @@ -29,7 +29,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef _CSEND_H #define _CSEND_H -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + #define SS_AUTOSEND 1 #define SS_DELETEAFTERSSEND 2 @@ -47,7 +48,8 @@ const wchar_t SS_ERR_MAPI[] =LPGENW("MAPI error (%i):\n%s."); const wchar_t SS_ERR_RESPONSE[] =LPGENW("Unknown response from %s (%i)"); const wchar_t SS_ERR_NORESPONSE[] =LPGENW("Got no response from %s (%i)"); -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + class CSend { public: CSend(HWND Owner, MCONTACT hContact, bool bAsync, bool bSilent=false); // oder (TfrmMain & Owner) @@ -56,9 +58,9 @@ class CSend { virtual int Send() = NULL; // returns 1 if sent (you must delete class) and 0 when still sending (class deletes itself) int SendSilent() {m_bAsync=m_bSilent=true; return Send();}; - void SetFile(wchar_t* file){mir_free(m_pszFile), m_pszFile=mir_wstrdup(file);}; - void SetFile(char* file){mir_free(m_pszFile), m_pszFile=mir_a2u(file);}; - void SetDescription(wchar_t* descr){mir_free(m_pszFileDesc), m_pszFileDesc=mir_wstrdup(descr);}; + void SetFile(const wchar_t* file) { replaceStrW(m_pszFile, file); } + void SetFile(const char* file) { mir_free(m_pszFile), m_pszFile=mir_a2u(file); } + void SetDescription(const wchar_t* descr){ replaceStrW(m_pszFileDesc, descr); } void SetContact(MCONTACT hContact); char* GetURL(){return m_URL;}; char* GetURLthumbnail(){return m_URLthumb;}; diff --git a/plugins/SendScreenshotPlus/src/CSendDropbox.cpp b/plugins/SendScreenshotPlus/src/CSendDropbox.cpp index 449a091b25..c286bdf4be 100644 --- a/plugins/SendScreenshotPlus/src/CSendDropbox.cpp +++ b/plugins/SendScreenshotPlus/src/CSendDropbox.cpp @@ -26,10 +26,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -//--------------------------------------------------------------------------- #include "stdafx.h" -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + CSendDropbox::CSendDropbox(HWND Owner, MCONTACT hContact, bool bAsync) : CSend(Owner, hContact, bAsync) { @@ -42,7 +42,7 @@ CSendDropbox::~CSendDropbox() { } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// int CSendDropbox::Send() { @@ -50,7 +50,7 @@ int CSendDropbox::Send() return 0; } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// void CSendDropbox::SendThread() { diff --git a/plugins/SendScreenshotPlus/src/CSendDropbox.h b/plugins/SendScreenshotPlus/src/CSendDropbox.h index a083ab0a83..ccbc5bea59 100644 --- a/plugins/SendScreenshotPlus/src/CSendDropbox.h +++ b/plugins/SendScreenshotPlus/src/CSendDropbox.h @@ -31,20 +31,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "Utils.h" -//--------------------------------------------------------------------------- -class CSendDropbox : public CSend { - public: - CSendDropbox(HWND Owner, MCONTACT hContact, bool bAsync); - ~CSendDropbox(); - - int Send(); - - protected: - void SendThread(); - static void SendThreadWrapper(void *Obj); - static int OnDropAck(void*, WPARAM, LPARAM); -}; +class CSendDropbox : public CSend +{ + +public: + CSendDropbox(HWND Owner, MCONTACT hContact, bool bAsync); + ~CSendDropbox(); -//--------------------------------------------------------------------------- + int Send(); + +protected: + void SendThread(); + static void SendThreadWrapper(void *Obj); + static int OnDropAck(void*, WPARAM, LPARAM); +}; #endif diff --git a/plugins/SendScreenshotPlus/src/CSendEmail.cpp b/plugins/SendScreenshotPlus/src/CSendEmail.cpp index b12d6d1383..1a8b73d9d1 100644 --- a/plugins/SendScreenshotPlus/src/CSendEmail.cpp +++ b/plugins/SendScreenshotPlus/src/CSendEmail.cpp @@ -26,10 +26,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -//--------------------------------------------------------------------------- #include "stdafx.h" -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// CSendEmail::CSendEmail(HWND Owner, MCONTACT hContact, bool /*bAsync*/) : CSend(Owner, hContact, true) @@ -52,7 +51,7 @@ CSendEmail::~CSendEmail() mir_free(m_Subject); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// int CSendEmail::Send() { @@ -200,5 +199,3 @@ void CSendEmail::SendThreadWrapper(void * Obj) { reinterpret_cast<CSendEmail*>(Obj)->SendThread(); } - -//--------------------------------------------------------------------------- diff --git a/plugins/SendScreenshotPlus/src/CSendEmail.h b/plugins/SendScreenshotPlus/src/CSendEmail.h index 162f7a389f..4de244f8f8 100644 --- a/plugins/SendScreenshotPlus/src/CSendEmail.h +++ b/plugins/SendScreenshotPlus/src/CSendEmail.h @@ -29,25 +29,25 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef _CSEND_EMAIL_H #define _CSEND_EMAIL_H -//--------------------------------------------------------------------------- -class CSendEmail : public CSend { - public: - // Deklaration Standardkonstruktor/Standarddestructor - CSendEmail(HWND Owner, MCONTACT hContact, bool bAsync); - ~CSendEmail(); - - int Send(); - - protected: - char* m_pszFileA; - char* m_pszFileName; - char* m_Email; - char* m_FriendlyName; - char* m_Subject; - void SendThread(); - static void SendThreadWrapper(void * Obj); +class CSendEmail : public CSend +{ + +public: + // Deklaration Standardkonstruktor/Standarddestructor + CSendEmail(HWND Owner, MCONTACT hContact, bool bAsync); + ~CSendEmail(); + + int Send(); + +protected: + char* m_pszFileA; + char* m_pszFileName; + char* m_Email; + char* m_FriendlyName; + char* m_Subject; + + void SendThread(); + static void SendThreadWrapper(void * Obj); }; -//--------------------------------------------------------------------------- - #endif diff --git a/plugins/SendScreenshotPlus/src/CSendFTPFile.cpp b/plugins/SendScreenshotPlus/src/CSendFTPFile.cpp index d1dc23a62e..3c52e2bc09 100644 --- a/plugins/SendScreenshotPlus/src/CSendFTPFile.cpp +++ b/plugins/SendScreenshotPlus/src/CSendFTPFile.cpp @@ -26,10 +26,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -//--------------------------------------------------------------------------- #include "stdafx.h" -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// CSendFTPFile::CSendFTPFile(HWND Owner, MCONTACT hContact, bool /*bAsync*/) : CSend(Owner, hContact, true) @@ -44,7 +43,8 @@ CSendFTPFile::~CSendFTPFile() mir_free(m_pszFileName); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + int CSendFTPFile::Send() { if (!m_hContact) return 1; @@ -91,5 +91,3 @@ void CSendFTPFile::SendThreadWrapper(void * Obj) { reinterpret_cast<CSendFTPFile*>(Obj)->SendThread(); } - -//--------------------------------------------------------------------------- diff --git a/plugins/SendScreenshotPlus/src/CSendFTPFile.h b/plugins/SendScreenshotPlus/src/CSendFTPFile.h index 67d8115a87..dc710fe4ad 100644 --- a/plugins/SendScreenshotPlus/src/CSendFTPFile.h +++ b/plugins/SendScreenshotPlus/src/CSendFTPFile.h @@ -29,21 +29,20 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef _CSEND_FTP_FILE_H #define _CSEND_FTP_FILE_H -//--------------------------------------------------------------------------- -class CSendFTPFile : public CSend { - public: - // Deklaration Standardkonstruktor/Standarddestructor - CSendFTPFile(HWND Owner, MCONTACT hContact, bool bAsync); - ~CSendFTPFile(); - - int Send(); - - protected: - char* m_pszFileName; - void SendThread(); - static void SendThreadWrapper(void * Obj); -}; +class CSendFTPFile : public CSend +{ + +public: + // Deklaration Standardkonstruktor/Standarddestructor + CSendFTPFile(HWND Owner, MCONTACT hContact, bool bAsync); + ~CSendFTPFile(); -//--------------------------------------------------------------------------- + int Send(); + +protected: + char* m_pszFileName; + void SendThread(); + static void SendThreadWrapper(void * Obj); +}; #endif diff --git a/plugins/SendScreenshotPlus/src/CSendFile.cpp b/plugins/SendScreenshotPlus/src/CSendFile.cpp index 79005f4db8..d6e8b2962d 100644 --- a/plugins/SendScreenshotPlus/src/CSendFile.cpp +++ b/plugins/SendScreenshotPlus/src/CSendFile.cpp @@ -26,10 +26,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -//--------------------------------------------------------------------------- #include "stdafx.h" -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + CSendFile::CSendFile(HWND Owner, MCONTACT hContact, bool /*bAsync*/) : CSend(Owner, hContact, true) { @@ -41,11 +41,10 @@ CSendFile::~CSendFile() { } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + int CSendFile::Send() { svcSendFileExit(); return 0; } - -//--------------------------------------------------------------------------- diff --git a/plugins/SendScreenshotPlus/src/CSendFile.h b/plugins/SendScreenshotPlus/src/CSendFile.h index 0c36ad3724..0fd3426b0e 100644 --- a/plugins/SendScreenshotPlus/src/CSendFile.h +++ b/plugins/SendScreenshotPlus/src/CSendFile.h @@ -29,18 +29,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef _CSEND_FILE_H #define _CSEND_FILE_H -//--------------------------------------------------------------------------- -class CSendFile : public CSend { - public: - // Deklaration Standardkonstruktor/Standarddestructor - CSendFile(HWND Owner, MCONTACT hContact, bool bAsync); - ~CSendFile(); +class CSendFile : public CSend +{ - int Send(); +public: + // Deklaration Standardkonstruktor/Standarddestructor + CSendFile(HWND Owner, MCONTACT hContact, bool bAsync); + ~CSendFile(); - protected: + int Send(); }; -//---------------------------------------------------------------------------*/ - #endif diff --git a/plugins/SendScreenshotPlus/src/CSendHTTPServer.cpp b/plugins/SendScreenshotPlus/src/CSendHTTPServer.cpp index 73d8af4f7c..cde1bc2b00 100644 --- a/plugins/SendScreenshotPlus/src/CSendHTTPServer.cpp +++ b/plugins/SendScreenshotPlus/src/CSendHTTPServer.cpp @@ -26,14 +26,12 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -//--------------------------------------------------------------------------- #include "stdafx.h" INT_PTR(*g_MirCallService)(const char *, WPARAM, LPARAM) = NULL; -//INT_PTR (*CallService)(const char *,WPARAM,LPARAM); +///////////////////////////////////////////////////////////////////////////////////////// -//--------------------------------------------------------------------------- CSendHTTPServer::CSendHTTPServer(HWND Owner, MCONTACT hContact, bool /*bAsync*/) : CSend(Owner, hContact, true) { @@ -51,7 +49,8 @@ CSendHTTPServer::~CSendHTTPServer() mir_free(m_fsi_pszRealPath); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + int CSendHTTPServer::Send() { if (!m_hContact) return 1; diff --git a/plugins/SendScreenshotPlus/src/CSendHTTPServer.h b/plugins/SendScreenshotPlus/src/CSendHTTPServer.h index 258e17df27..3df6d84a36 100644 --- a/plugins/SendScreenshotPlus/src/CSendHTTPServer.h +++ b/plugins/SendScreenshotPlus/src/CSendHTTPServer.h @@ -29,31 +29,27 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef _CSEND_HTTP_SERVER_H #define _CSEND_HTTP_SERVER_H -//--------------------------------------------------------------------------- -class CSendHTTPServer : public CSend { - public: - // Deklaration Standardkonstruktor/Standarddestructor - CSendHTTPServer(HWND Owner, MCONTACT hContact, bool bAsync); - ~CSendHTTPServer(); +class CSendHTTPServer : public CSend +{ +public: + // Deklaration Standardkonstruktor/Standarddestructor + CSendHTTPServer(HWND Owner, MCONTACT hContact, bool bAsync); + ~CSendHTTPServer(); - int Send(); + int Send(); - protected: - char* m_pszFileName; - char* m_fsi_pszSrvPath; - char* m_fsi_pszRealPath; +protected: + char* m_pszFileName; + char* m_fsi_pszSrvPath; + char* m_fsi_pszRealPath; - STFileShareInfo m_fsi; + STFileShareInfo m_fsi; - void SendThread(); - static void SendThreadWrapper(void * Obj); + void SendThread(); + static void SendThreadWrapper(void * Obj); - typedef std::map<HANDLE, CSendHTTPServer *> CContactMapping; - static CContactMapping _CContactMapping; - -// static INT_PTR MyCallService(const char *name, WPARAM wParam, LPARAM lParam); + typedef std::map<HANDLE, CSendHTTPServer *> CContactMapping; + static CContactMapping _CContactMapping; }; -//--------------------------------------------------------------------------- - #endif diff --git a/plugins/SendScreenshotPlus/src/CSendHost_ImageShack.cpp b/plugins/SendScreenshotPlus/src/CSendHost_ImageShack.cpp index 143606a096..e8d0f73444 100644 --- a/plugins/SendScreenshotPlus/src/CSendHost_ImageShack.cpp +++ b/plugins/SendScreenshotPlus/src/CSendHost_ImageShack.cpp @@ -26,10 +26,10 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -//--------------------------------------------------------------------------- #include "stdafx.h" -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + CSendHost_ImageShack::CSendHost_ImageShack(HWND Owner, MCONTACT hContact, bool bAsync) : CSend(Owner, hContact, bAsync) { @@ -39,9 +39,10 @@ CSendHost_ImageShack::CSendHost_ImageShack(HWND Owner, MCONTACT hContact, bool b CSendHost_ImageShack::~CSendHost_ImageShack() { -}; +} + +///////////////////////////////////////////////////////////////////////////////////////// -//--------------------------------------------------------------------------- int CSendHost_ImageShack::Send() { if (!g_hNetlibUser) { /// check Netlib @@ -52,9 +53,7 @@ int CSendHost_ImageShack::Send() memset(&m_nlhr, 0, sizeof(m_nlhr)); char* tmp; tmp = mir_u2a(m_pszFile); HTTPFormData frm[] = { - // {"Referer",HTTPFORM_HEADER("http://www.imageshack.us/upload_api.php")}, { "fileupload", HTTPFORM_FILE(tmp) }, - //{"rembar","yes"},// no info bar on thumb { "public", "no" }, { "key", HTTPFORM_8BIT(DEVKEY_IMAGESHACK) }, }; diff --git a/plugins/SendScreenshotPlus/src/CSendHost_ImageShack.h b/plugins/SendScreenshotPlus/src/CSendHost_ImageShack.h index c56f1d8ef7..46976396db 100644 --- a/plugins/SendScreenshotPlus/src/CSendHost_ImageShack.h +++ b/plugins/SendScreenshotPlus/src/CSendHost_ImageShack.h @@ -29,23 +29,21 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef _CSEND_IMAGESHACK_H #define _CSEND_IMAGESHACK_H -//--------------------------------------------------------------------------- -class CSendHost_ImageShack : public CSend { - public: - // Deklaration Standardkonstruktor/Standarddestructor - CSendHost_ImageShack(HWND Owner, MCONTACT hContact, bool bAsync); - ~CSendHost_ImageShack(); +class CSendHost_ImageShack : public CSend +{ - int Send(); +public: + // Deklaration Standardkonstruktor/Standarddestructor + CSendHost_ImageShack(HWND Owner, MCONTACT hContact, bool bAsync); + ~CSendHost_ImageShack(); - protected: - NETLIBHTTPREQUEST m_nlhr; + int Send(); - void SendThread(); - static void SendThreadWrapper(void * Obj); +protected: + NETLIBHTTPREQUEST m_nlhr; + void SendThread(); + static void SendThreadWrapper(void * Obj); }; -//--------------------------------------------------------------------------- - #endif diff --git a/plugins/SendScreenshotPlus/src/CSendHost_imgur.cpp b/plugins/SendScreenshotPlus/src/CSendHost_imgur.cpp index b9738687e3..bba9923a6c 100644 --- a/plugins/SendScreenshotPlus/src/CSendHost_imgur.cpp +++ b/plugins/SendScreenshotPlus/src/CSendHost_imgur.cpp @@ -26,7 +26,8 @@ CSendHost_Imgur::~CSendHost_Imgur() { } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + int CSendHost_Imgur::Send() { if (!g_hNetlibUser) { /// check Netlib diff --git a/plugins/SendScreenshotPlus/src/CSendHost_uploadpie.cpp b/plugins/SendScreenshotPlus/src/CSendHost_uploadpie.cpp index eeaf4a9b89..d3fc4914d9 100644 --- a/plugins/SendScreenshotPlus/src/CSendHost_uploadpie.cpp +++ b/plugins/SendScreenshotPlus/src/CSendHost_uploadpie.cpp @@ -26,8 +26,10 @@ CSendHost_UploadPie::~CSendHost_UploadPie() { } +///////////////////////////////////////////////////////////////////////////////////////// + static const char kHostURL[] = "https://uploadpie.com/"; -//--------------------------------------------------------------------------- + int CSendHost_UploadPie::Send() { if (!g_hNetlibUser) { /// check Netlib @@ -42,12 +44,6 @@ int CSendHost_UploadPie::Send() { "upload", HTTPFORM_INT(1) },// ?? { "uploadedfile", HTTPFORM_FILE(tmp) }, { "expire", HTTPFORM_INT(m_expire) },// 30m - //{"expire",HTTPFORM_INT(2,},// 1h - //{"expire",HTTPFORM_INT(3)},// 6h - //{"expire",HTTPFORM_INT(4)},// 1d - //{"expire",HTTPFORM_INT(5)},// 1w - //{"x",HTTPFORM_INT(130)},// relative X coordinate of "BAKE FILE" button (unused?) - //{"y",HTTPFORM_INT(17)},// relative Y coordinate of "BAKE FILE" button (unused?) }; int error = HTTPFormCreate(&m_nlhr, REQUEST_POST, kHostURL, frm, sizeof(frm) / sizeof(HTTPFormData)); mir_free(tmp); diff --git a/plugins/SendScreenshotPlus/src/Main.cpp b/plugins/SendScreenshotPlus/src/Main.cpp index 9b9645c8f9..1e10b5b0e5 100644 --- a/plugins/SendScreenshotPlus/src/Main.cpp +++ b/plugins/SendScreenshotPlus/src/Main.cpp @@ -97,10 +97,12 @@ static HANDLE m_hOpenCaptureDialog = 0; static HANDLE m_hSendDesktop = 0; static HANDLE m_hEditBitmap = 0; static HANDLE m_hSend2ImageShack = 0; -//--------------------------------------------------------------------------- + +///////////////////////////////////////////////////////////////////////////////////////// // Callback function of service for contact menu and main menu // wParam = contact handle // lParam = 0 (or 0xFFFF to preselect window under cursor) + INT_PTR service_OpenCaptureDialog(WPARAM wParam, LPARAM lParam) { TfrmMain* frmMain = new TfrmMain(); @@ -121,7 +123,8 @@ INT_PTR service_OpenCaptureDialog(WPARAM wParam, LPARAM lParam) frmMain->Show(); return 0; } -//--------------------------------------------------------------------------- + +///////////////////////////////////////////////////////////////////////////////////////// // Callback function of service // 1. Send a screenshot of the desktop to the selected contact // wParam = contact handle @@ -129,6 +132,7 @@ INT_PTR service_OpenCaptureDialog(WPARAM wParam, LPARAM lParam) // 2. Open the capture dialog in take screenshot only mode (it will not be sent) // wParam = 0 // lParam = anything but 0 + INT_PTR service_SendDesktop(WPARAM wParam, LPARAM) { TfrmMain* frmMain = new TfrmMain(); @@ -154,11 +158,13 @@ INT_PTR service_SendDesktop(WPARAM wParam, LPARAM) frmMain->btnCaptureClick(); // this method will call Close() return 0; } -//--------------------------------------------------------------------------- + +///////////////////////////////////////////////////////////////////////////////////////// // Edit a in-memory bitmap on the edit window // wParam = (SENDSSCB) callback function address to call when editing is done // lParam = (HBITMAP) bitmap handle, a copy is made so the calling function can free this handle after the service function returns // Returns: + INT_PTR service_EditBitmap(WPARAM, LPARAM) { /* TfrmEdit *frmEdit=new TfrmEdit(NULL); @@ -176,10 +182,12 @@ INT_PTR service_EditBitmap(WPARAM, LPARAM) */ return 0; } -//--------------------------------------------------------------------------- + +///////////////////////////////////////////////////////////////////////////////////////// // Callback function of service for sending image to imageshack.us // wParam = (char*)filename // lParam = (HANDLE)contact (can be null) + INT_PTR service_Send2ImageShack(WPARAM wParam, LPARAM lParam) { char* result = NULL; diff --git a/plugins/SendScreenshotPlus/src/UAboutForm.cpp b/plugins/SendScreenshotPlus/src/UAboutForm.cpp index f05738281e..e12b5a72d8 100644 --- a/plugins/SendScreenshotPlus/src/UAboutForm.cpp +++ b/plugins/SendScreenshotPlus/src/UAboutForm.cpp @@ -41,7 +41,8 @@ void TfrmAbout::Unload() } } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + TfrmAbout::CHandleMapping TfrmAbout::_HandleMapping; INT_PTR CALLBACK TfrmAbout::DlgTfrmAbout(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) @@ -84,33 +85,30 @@ INT_PTR CALLBACK TfrmAbout::DlgTfrmAbout(HWND hWnd, UINT msg, WPARAM wParam, LPA return FALSE; } -//--------------------------------------------------------------------------- -//WM_INITDIALOG: +///////////////////////////////////////////////////////////////////////////////////////// +// WM_INITDIALOG: + LRESULT TfrmAbout::wmInitdialog(WPARAM, LPARAM) { // Headerbar SendDlgItemMessage(m_hWnd, IDC_HEADERBAR, WM_SETICON, ICON_BIG, (LPARAM)GetIcon(ICO_MAIN)); - //License + // License { - wchar_t* pszText = NULL; - mir_tstradd(pszText, _A2W(__COPYRIGHT)); - mir_tstradd(pszText, L"\r\n\r\n"); + CMStringW pszText(_A2W(__COPYRIGHT)); + pszText.Append(L"\r\n\r\n"); HRSRC hRes = FindResource(g_hSendSS, MAKEINTRESOURCE(IDR_LICENSE), L"TEXT"); DWORD size = SizeofResource(g_hSendSS, hRes); char* data = (char*)mir_alloc(size + 1); memcpy(data, LockResource(LoadResource(g_hSendSS, hRes)), size); data[size] = '\0'; - wchar_t* pszCopyright = mir_a2u(data); + pszText.AppendFormat(L"%S", data); mir_free(data); - mir_tstradd(pszText, pszCopyright); - mir_free(pszCopyright); SetDlgItemText(m_hWnd, IDC_LICENSE, pszText); - mir_free(pszText); } - //Credit + // Credit { HRSRC hRes = FindResource(g_hSendSS, MAKEINTRESOURCE(IDR_CREDIT), L"TEXT"); DWORD size = SizeofResource(g_hSendSS, hRes); @@ -132,10 +130,11 @@ LRESULT TfrmAbout::wmInitdialog(WPARAM, LPARAM) return FALSE; } -//WM_COMMAND: +///////////////////////////////////////////////////////////////////////////////////////// +// WM_COMMAND: + LRESULT TfrmAbout::wmCommand(WPARAM wParam, LPARAM) { - //--------------------------------------------------------------------------- if (HIWORD(wParam) == BN_CLICKED) { switch (LOWORD(wParam)) { case IDCANCEL: // ESC pressed @@ -155,7 +154,9 @@ LRESULT TfrmAbout::wmCommand(WPARAM wParam, LPARAM) return FALSE; } -//WM_CLOSE: +///////////////////////////////////////////////////////////////////////////////////////// +// WM_CLOSE: + LRESULT TfrmAbout::wmClose(WPARAM, LPARAM) { SendMessage(m_hWndOwner, UM_CLOSING, (WPARAM)m_hWnd, (LPARAM)IDD_UAboutForm); @@ -163,7 +164,8 @@ LRESULT TfrmAbout::wmClose(WPARAM, LPARAM) return FALSE; } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + TfrmAbout::TfrmAbout(HWND Owner) { m_hWndOwner = Owner; @@ -179,7 +181,8 @@ TfrmAbout::~TfrmAbout() _HandleMapping.erase(m_hWnd); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmAbout::btnPageClick() { HWND hCtrl = GetDlgItem(m_hWnd, IDA_CONTRIBLINK); diff --git a/plugins/SendScreenshotPlus/src/UAboutForm.h b/plugins/SendScreenshotPlus/src/UAboutForm.h index 19c6743d7c..8236094b49 100644 --- a/plugins/SendScreenshotPlus/src/UAboutForm.h +++ b/plugins/SendScreenshotPlus/src/UAboutForm.h @@ -29,37 +29,35 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef UAboutFormH #define UAboutFormH -//--------------------------------------------------------------------------- -class TfrmAbout{ +class TfrmAbout +{ - public: - // Deklaration Standardkonstruktor/Standarddestructor - TfrmAbout(HWND Owner); - ~TfrmAbout(); +public: + // Deklaration Standardkonstruktor/Standarddestructor + TfrmAbout(HWND Owner); + ~TfrmAbout(); - HWND m_hWndOwner; + HWND m_hWndOwner; - static void Unload(); - void Show(){ShowWindow(m_hWnd,SW_SHOW);} - void Hide(){ShowWindow(m_hWnd,SW_HIDE);} - void Close(){SendMessage(m_hWnd,WM_CLOSE,0,0);} + static void Unload(); + void Show(){ ShowWindow(m_hWnd, SW_SHOW); } + void Hide(){ ShowWindow(m_hWnd, SW_HIDE); } + void Close(){ SendMessage(m_hWnd, WM_CLOSE, 0, 0); } - private: - HWND m_hWnd; +private: + HWND m_hWnd; - protected: - UINT m_Page; - typedef std::map<HWND, TfrmAbout *> CHandleMapping; - static CHandleMapping _HandleMapping; - static INT_PTR CALLBACK DlgTfrmAbout(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); +protected: + UINT m_Page; + typedef std::map<HWND, TfrmAbout *> CHandleMapping; + static CHandleMapping _HandleMapping; + static INT_PTR CALLBACK DlgTfrmAbout(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); - LRESULT wmInitdialog(WPARAM wParam, LPARAM lParam); - LRESULT wmCommand(WPARAM wParam, LPARAM lParam); - LRESULT wmClose(WPARAM wParam, LPARAM lParam); - - void btnPageClick(); + LRESULT wmInitdialog(WPARAM wParam, LPARAM lParam); + LRESULT wmCommand(WPARAM wParam, LPARAM lParam); + LRESULT wmClose(WPARAM wParam, LPARAM lParam); + void btnPageClick(); }; -//--------------------------------------------------------------------------- #endif diff --git a/plugins/SendScreenshotPlus/src/UMainForm.cpp b/plugins/SendScreenshotPlus/src/UMainForm.cpp index ae1203aaee..62da365e15 100644 --- a/plugins/SendScreenshotPlus/src/UMainForm.cpp +++ b/plugins/SendScreenshotPlus/src/UMainForm.cpp @@ -41,7 +41,8 @@ void TfrmMain::Unload() } } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + INT_PTR CALLBACK TfrmMain::DlgProc_CaptureTabPage(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { // main message handling is done inside TfrmMain::DlgTfrmMain @@ -97,7 +98,7 @@ INT_PTR CALLBACK TfrmMain::DlgProc_CaptureTabPage(HWND hDlg, UINT uMsg, WPARAM w return FALSE; } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// TfrmMain::CHandleMapping TfrmMain::_HandleMapping; @@ -167,8 +168,9 @@ INT_PTR CALLBACK TfrmMain::DlgTfrmMain(HWND hWnd, UINT msg, WPARAM wParam, LPARA return 0; } -//--------------------------------------------------------------------------- -//WM_INITDIALOG: +///////////////////////////////////////////////////////////////////////////////////////// +// WM_INITDIALOG: + void TfrmMain::wmInitdialog(WPARAM, LPARAM) { HWND hCtrl; @@ -375,10 +377,11 @@ void TfrmMain::wmInitdialog(WPARAM, LPARAM) TranslateDialogDefault(m_hWnd); } -//WM_COMMAND: +///////////////////////////////////////////////////////////////////////////////////////// +// WM_COMMAND: + void TfrmMain::wmCommand(WPARAM wParam, LPARAM lParam) { - //--------------------------------------------------------------------------- int IDControl = LOWORD(wParam); switch (HIWORD(wParam)) { case BN_CLICKED: //Button controls @@ -685,8 +688,9 @@ void TfrmMain::UMevent(WPARAM, LPARAM lParam) } } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// // Standard konstruktor/destruktor + TfrmMain::TfrmMain() { /* m_opt_XXX */ @@ -697,7 +701,7 @@ TfrmMain::TfrmMain() m_bFormAbout = false; m_hTargetWindow = m_hLastWin = NULL; m_hTargetHighlighter = NULL; - m_FDestFolder = m_pszFile = m_pszFileDesc = NULL; + m_FDestFolder = m_pszFile = NULL; m_Screenshot = NULL; /* m_AlphaColor */ m_cSend = NULL; @@ -715,7 +719,6 @@ TfrmMain::~TfrmMain() _HandleMapping.erase(m_hWnd); mir_free(m_pszFile); mir_free(m_FDestFolder); - mir_free(m_pszFileDesc); mir_free(m_Monitors); if (m_Screenshot) FIP->FI_Unload(m_Screenshot); if (m_cSend) delete m_cSend; @@ -725,8 +728,9 @@ TfrmMain::~TfrmMain() } } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// // Load / Saving options from miranda's database + void TfrmMain::LoadOptions(void) { DWORD rgb = db_get_dw(NULL, SZ_SENDSS, "AlphaColor", 16777215); @@ -780,7 +784,8 @@ void TfrmMain::SaveOptions(void) } } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmMain::Init(wchar_t* DestFolder, MCONTACT Contact) { m_FDestFolder = mir_wstrdup(DestFolder); @@ -796,7 +801,8 @@ void TfrmMain::Init(wchar_t* DestFolder, MCONTACT Contact) m_cSend->SetContact(Contact); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmMain::btnCaptureClick() { if (m_opt_tabCapture == 1) m_hTargetWindow = GetDesktopWindow(); @@ -833,7 +839,8 @@ void TfrmMain::btnCaptureClick() SendMessage(m_hWnd, UM_EVENT, 0, (LPARAM)EVT_CaptureDone); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmMain::chkTimedClick() { Button_Enable(GetDlgItem(m_hWnd, ID_edtTimedLabel), (BOOL)m_opt_chkTimed); @@ -841,7 +848,8 @@ void TfrmMain::chkTimedClick() Button_Enable(GetDlgItem(m_hWnd, ID_upTimed), (BOOL)m_opt_chkTimed); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmMain::cboxSendByChange() { BOOL bState; @@ -899,7 +907,8 @@ void TfrmMain::cboxSendByChange() Button_Enable(GetDlgItem(m_hWnd, ID_chkDesc), bState); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmMain::btnAboutClick() { if (m_bFormAbout) return; @@ -909,20 +918,24 @@ void TfrmMain::btnAboutClick() m_bFormAbout = true; } +///////////////////////////////////////////////////////////////////////////////////////// // Edit window call this event before it closes + void TfrmMain::btnAboutOnCloseWindow(HWND) { m_bFormAbout = false; } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmMain::btnExploreClick() { if (m_FDestFolder) ShellExecute(NULL, L"explore", m_FDestFolder, NULL, NULL, SW_SHOW); } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmMain::edtSizeUpdate(HWND hWnd, BOOL ClientArea, HWND hTarget, UINT Ctrl) { // get window dimensions @@ -961,189 +974,117 @@ void TfrmMain::edtSizeUpdate(RECT rect, HWND hTarget, UINT Ctrl) SetDlgItemText(hTarget, Ctrl, B); } -//--------------------------------------------------------------------------- -INT_PTR TfrmMain::SaveScreenshot(FIBITMAP* dib) +///////////////////////////////////////////////////////////////////////////////////////// + +INT_PTR TfrmMain::SaveScreenshot(FIBITMAP *dib) { - //generate File name - FREE_IMAGE_FORMAT fif = FIF_UNKNOWN; - wchar_t* ret; - wchar_t* path = NULL; - wchar_t* pszFilename = NULL; - wchar_t* pszFileDesc = NULL; - if (!dib) return 1; //error - unsigned FileNumber = db_get_dw(NULL, SZ_SENDSS, "FileNumber", 0) + 1; - if (FileNumber > 99999) FileNumber = 1; - //Generate FileName - mir_tstradd(path, m_FDestFolder); - if (path[mir_wstrlen(path) - 1] != '\\') mir_tstradd(path, L"\\"); - mir_tstradd(path, L"shot%.5u");//on format change, adapt "len" below - size_t len = mir_wstrlen(path) + 2; - pszFilename = (wchar_t*)mir_alloc(sizeof(wchar_t)*(len)); - mir_snwprintf(pszFilename, len, path, FileNumber); - mir_free(path); - - //Generate a description according to the screenshot + if (!dib) + return 1; //error + // generate file name + unsigned FileNumber = db_get_dw(NULL, SZ_SENDSS, "FileNumber", 0) + 1; + if (FileNumber > 99999) + FileNumber = 1; + + CMStringW wszFileName(m_FDestFolder); + if (wszFileName.Right(1) != L"\\") + wszFileName.Append(L"\\"); + wszFileName.AppendFormat(L"shot%.5u", FileNumber); + + // generate a description according to the screenshot wchar_t winText[1024]; GetDlgItemText(m_hwndTabPage, ID_edtCaption, winText, _countof(winText)); - - CMStringW tszFileDesc; - + CMStringW wszFileDesc; if (m_opt_tabCapture) - tszFileDesc.Format(TranslateT("Screenshot of \"%s\""), winText); - else - { + wszFileDesc.Format(TranslateT("Screenshot of \"%s\""), winText); + else { if (m_opt_chkClientArea) - tszFileDesc.Format(TranslateT("Screenshot for client area of \"%s\" window"), winText); + wszFileDesc.Format(TranslateT("Screenshot for client area of \"%s\" window"), winText); else - tszFileDesc.Format(TranslateT("Screenshot of \"%s\" window"), winText); + wszFileDesc.Format(TranslateT("Screenshot of \"%s\" window"), winText); } - pszFileDesc = tszFileDesc.Detach(); - - // convert to 32Bits (make shure it is 32bit) + // convert to 32Bits (make sure it is 32bit) FIBITMAP *dib_new = FIP->FI_ConvertTo32Bits(dib); - //RGBQUAD appColor = { 245, 0, 254, 0 }; //bgr0 schwarz - //FIP->FI_SetBackgroundColor(dib_new, &appColor); FIP->FI_SetTransparent(dib_new, TRUE); - // Investigates the color type of the bitmap (test for RGB or CMYK colour space) - switch (FREE_IMAGE_COLOR_TYPE ColTye = FIP->FI_GetColorType(dib_new)) { - case FIC_MINISBLACK: - //Monochrome bitmap (1-bit) : first palette entry is black. - //Palletised bitmap (4 or 8-bit) and single channel non standard bitmap: the bitmap has a greyscale palette - case FIC_MINISWHITE: - //Monochrome bitmap (1-bit) : first palette entry is white. - //Palletised bitmap (4 or 8-bit) : the bitmap has an inverted greyscale palette - case FIC_PALETTE: - //Palettized bitmap (1, 4 or 8 bit) - case FIC_RGB: - //High-color bitmap (16, 24 or 32 bit), RGB16 or RGBF - case FIC_RGBALPHA: - //High-color bitmap with an alpha channel (32 bit bitmap, RGBA16 or RGBAF) - case FIC_CMYK: - //CMYK bitmap (32 bit only) - default: - break; - } - - // bool bDummy = !(FIP->FI_GetICCProfile(dib_new)->flags & FIICC_COLOR_IS_CMYK); - - FIBITMAP *dib32, *dib24; + BOOL ret = FALSE; HWND hwndCombo = GetDlgItem(m_hWnd, ID_cboxFormat); switch (ComboBox_GetItemData(hwndCombo, ComboBox_GetCurSel(hwndCombo))) { - case 0: //PNG - ret = SaveImage(fif, dib_new, pszFilename, L"png"); + case 0: // PNG + wszFileName.Append(L".png"); + ret = FIP->FI_SaveU(FIF_PNG, dib_new, wszFileName, 0); break; - case 1: //JPG - /* - #define JPEG_QUALITYSUPERB 0x80 // save with superb quality (100:1) - #define JPEG_QUALITYGOOD 0x0100 // save with good quality (75:1) - #define JPEG_QUALITYNORMAL 0x0200 // save with normal quality (50:1) - #define JPEG_QUALITYAVERAGE 0x0400 // save with average quality (25:1) - #define JPEG_QUALITYBAD 0x0800 // save with bad quality (10:1) - #define JPEG_PROGRESSIVE 0x2000 // save as a progressive-JPEG (use | to combine with other save flags) - */ - dib32 = FIP->FI_Composite(dib_new, FALSE, &m_AlphaColor, NULL); - dib24 = FIP->FI_ConvertTo24Bits(dib32); - FIP->FI_Unload(dib32); - ret = SaveImage(fif, dib24, pszFilename, L"jpg"); - FIP->FI_Unload(dib24); + case 1: // JPG + wszFileName.Append(L".jpg"); + { + FIBITMAP *dib32 = FIP->FI_Composite(dib_new, FALSE, &m_AlphaColor, NULL); + FIBITMAP *dib24 = FIP->FI_ConvertTo24Bits(dib32); + FIP->FI_Unload(dib32); + ret = FIP->FI_SaveU(FIF_JPEG, dib24, wszFileName, 0); + FIP->FI_Unload(dib24); + } break; - case 2: //BMP - // ret = SaveImage(FIF_BMP,dib_new, pszFilename, L"bmp"); //32bit alpha BMP - dib32 = FIP->FI_Composite(dib_new, FALSE, &m_AlphaColor, NULL); - dib24 = FIP->FI_ConvertTo24Bits(dib32); - FIP->FI_Unload(dib32); - ret = SaveImage(FIF_BMP, dib24, pszFilename, L"bmp"); - FIP->FI_Unload(dib24); + case 2: // BMP + wszFileName.Append(L".bmp"); + { + FIBITMAP *dib32 = FIP->FI_Composite(dib_new, FALSE, &m_AlphaColor, NULL); + FIBITMAP *dib24 = FIP->FI_ConvertTo24Bits(dib32); + FIP->FI_Unload(dib32); + ret = FIP->FI_SaveU(FIF_BMP, dib24, wszFileName, 0); + FIP->FI_Unload(dib24); + } break; case 3: //TIFF (miranda freeimage interface do not support save tiff, we udse GDI+) + wszFileName.Append(L".tif"); { - wchar_t* pszFile = NULL; - mir_tstradd(pszFile, pszFilename); - mir_tstradd(pszFile, L".tif"); - - dib32 = FIP->FI_Composite(dib_new, FALSE, &m_AlphaColor, NULL); - dib24 = FIP->FI_ConvertTo24Bits(dib32); + FIBITMAP *dib32 = FIP->FI_Composite(dib_new, FALSE, &m_AlphaColor, NULL); + FIBITMAP *dib24 = FIP->FI_ConvertTo24Bits(dib32); FIP->FI_Unload(dib32); - + HBITMAP hBmp = FIP->FI_CreateHBITMAPFromDIB(dib24); FIP->FI_Unload(dib24); - SaveTIF(hBmp, pszFile); - ret = pszFile; + SaveTIF(hBmp, wszFileName); DeleteObject(hBmp); } + ret = TRUE; break; case 4: //GIF + wszFileName.Append(L".gif"); { - //dib24 = FIP->FI_ConvertTo8Bits(dib_new); - //ret = SaveImage(FIF_GIF,dib24, pszFilename, L"gif"); - //FIP->FI_Unload(dib24); - wchar_t* pszFile = NULL; - mir_tstradd(pszFile, pszFilename); - mir_tstradd(pszFile, L".gif"); HBITMAP hBmp = FIP->FI_CreateHBITMAPFromDIB(dib_new); - SaveGIF(hBmp, pszFile); - ret = pszFile; + SaveGIF(hBmp, wszFileName); DeleteObject(hBmp); } + ret = TRUE; break; - - default: - ret = NULL; } - /* //load PNG and save file in user format (if differ) - //this get better result for transparent aereas - //wchar_t* pszFormat = (wchar_t*)ComboBox_GetItemData(hwndCombo, ComboBox_GetCurSel(hwndCombo)); - wchar_t pszFormat[6]; - ComboBox_GetText(hwndCombo, pszFormat, 6); - if(ret && (mir_wstrcmpi (pszFormat,L"png") != 0)) { - - fif = FIP->FI_GetFIFFromFilenameU(ret); - dib_new = FIP->FI_LoadU(fif, ret,0); - - - if(dib_new) { - DeleteFile(ret); - mir_free(ret); - FIBITMAP *dib_save = FIP->FI_ConvertTo24Bits(dib_new); - ret = SaveImage(FIF_UNKNOWN,dib_save, pszFilename, pszFormat); - FIP->FI_Unload(dib_new); dib_new = NULL; - FIP->FI_Unload(dib_save); dib_save = NULL; - } - }*/ + FIP->FI_Unload(dib_new); - mir_free(pszFilename); - - if (ret) { - db_set_dw(NULL, SZ_SENDSS, "FileNumber", FileNumber); - mir_free(m_pszFile); m_pszFile = ret; - mir_free(m_pszFileDesc); - if (IsWindowEnabled(GetDlgItem(m_hWnd, ID_chkDesc)) && m_opt_btnDesc) { - m_pszFileDesc = pszFileDesc; - } - else { - mir_free(pszFileDesc); - m_pszFileDesc = mir_wstrdup(L""); - } - if (m_cSend) { - m_cSend->SetFile(m_pszFile); - m_cSend->SetDescription(m_pszFileDesc); - } - return 0;//OK + if (!ret) + return 1; // error + + db_set_dw(NULL, SZ_SENDSS, "FileNumber", FileNumber); + replaceStrW(m_pszFile, wszFileName); + + if (!IsWindowEnabled(GetDlgItem(m_hWnd, ID_chkDesc)) || !m_opt_btnDesc) + wszFileDesc.Empty(); + + if (m_cSend) { + m_cSend->SetFile(m_pszFile); + m_cSend->SetDescription(wszFileDesc); } - mir_free(pszFileDesc); - return 1;//error + return 0; // OK } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + void TfrmMain::FormClose() { bool bCanDelete = m_opt_btnDeleteAfterSend; diff --git a/plugins/SendScreenshotPlus/src/UMainForm.h b/plugins/SendScreenshotPlus/src/UMainForm.h index 03ac33b7df..79b4107cad 100644 --- a/plugins/SendScreenshotPlus/src/UMainForm.h +++ b/plugins/SendScreenshotPlus/src/UMainForm.h @@ -51,96 +51,96 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. extern FI_INTERFACE *FIP; -typedef struct MyTabData { +struct TAB_INFO +{ TCITEMHEADER tcih; HWND hwndMain; //main window HWND hwndTab; //tab control HWND hwndTabPage; //current child dialog box -}TAB_INFO; - -//--------------------------------------------------------------------------- -class TfrmMain{ - public: - // Deklaration Standardkonstruktor/Standarddestructor - TfrmMain(); - ~TfrmMain(); - - BYTE m_opt_tabCapture; //capure tab page - BYTE m_opt_cboxDesktop; //TRadioButton *rbtnDesktop; - BYTE m_opt_chkTimed; //TCheckBox *chkTimed; - BYTE m_opt_cboxSendBy; //TComboBox *cboxSendBy; - BYTE m_opt_btnDesc; //TCheckBox *chkDesc; - BYTE m_opt_chkEditor; //TCheckBox *chkEditor; - bool m_bOnExitSave; - - static void Unload(); - void Init(wchar_t* DestFolder, MCONTACT Contact); - void Close(){SendMessage(m_hWnd,WM_CLOSE,0,0);} - void Show(){ShowWindow(m_hWnd,SW_SHOW);} - void Hide(){ShowWindow(m_hWnd,SW_HIDE);} - void SetTargetWindow(HWND hwnd=NULL); - void btnCaptureClick(); - void cboxSendByChange(); - - private: - HWND m_hWnd; - MCONTACT m_hContact; - bool m_bFormAbout; - HWND m_hTargetWindow, m_hLastWin; - HWND m_hTargetHighlighter; - wchar_t* m_FDestFolder; - wchar_t* m_pszFile; - wchar_t* m_pszFileDesc; - FIBITMAP* m_Screenshot;//Graphics::TBitmap *Screenshot; - RGBQUAD m_AlphaColor; - CSend* m_cSend; - - void chkTimedClick(); - void imgTargetMouseUp(); - void btnAboutClick(); - void btnAboutOnCloseWindow(HWND hWnd); - void btnExploreClick(); - void LoadOptions(void); - void SaveOptions(void); - INT_PTR SaveScreenshot(FIBITMAP* dib); - void FormClose(); - static void edtSizeUpdate(HWND hWnd, BOOL ClientArea, HWND hTarget, UINT Ctrl); - static void edtSizeUpdate(RECT rect, HWND hTarget, UINT Ctrl); - - protected: - MONITORINFOEX* m_Monitors; - size_t m_MonitorCount; - RECT m_VirtualScreen; - - BYTE m_opt_chkOpenAgain; //TCheckBox *chkOpenAgain; - BYTE m_opt_chkIndirectCapture; //TCheckBox *chkIndirectCapture; - BYTE m_opt_chkClientArea; //TCheckBox *chkClientArea; - BYTE m_opt_edtQuality; //TLabeledEdit *edtQuality; - bool m_opt_btnDeleteAfterSend; //TCheckBox *chkDeleteAfterSend; - BYTE m_opt_cboxFormat; //TComboBox *cboxFormat; - BYTE m_opt_edtTimed; //TLabeledEdit *edtTimed; - bool m_bCapture; //is capture active - HWND m_hwndTab; //TabControl handle - HWND m_hwndTabPage; //TabControl activ page handle - HIMAGELIST m_himlTab; //TabControl imagelist - - typedef std::map<HWND, TfrmMain *> CHandleMapping; - static CHandleMapping _HandleMapping; - static INT_PTR CALLBACK DlgTfrmMain(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); - - void wmInitdialog(WPARAM wParam, LPARAM lParam); - void wmCommand(WPARAM wParam, LPARAM lParam); - void wmClose(WPARAM wParam, LPARAM lParam); - void wmNotify(WPARAM wParam, LPARAM lParam); - void wmTimer(WPARAM wParam, LPARAM lParam); - - void UMevent(WPARAM wParam, LPARAM lParam); - void UMClosing(WPARAM wParam, LPARAM lParam); - - static INT_PTR CALLBACK DlgProc_CaptureTabPage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); -// LRESULT CALLBACK DlgProc_UseLastFile (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); }; -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + +class TfrmMain +{ + +public: + // Deklaration Standardkonstruktor/Standarddestructor + TfrmMain(); + ~TfrmMain(); + + BYTE m_opt_tabCapture; //capure tab page + BYTE m_opt_cboxDesktop; //TRadioButton *rbtnDesktop; + BYTE m_opt_chkTimed; //TCheckBox *chkTimed; + BYTE m_opt_cboxSendBy; //TComboBox *cboxSendBy; + BYTE m_opt_btnDesc; //TCheckBox *chkDesc; + BYTE m_opt_chkEditor; //TCheckBox *chkEditor; + bool m_bOnExitSave; + + static void Unload(); + void Init(wchar_t* DestFolder, MCONTACT Contact); + void Close(){ SendMessage(m_hWnd, WM_CLOSE, 0, 0); } + void Show(){ ShowWindow(m_hWnd, SW_SHOW); } + void Hide(){ ShowWindow(m_hWnd, SW_HIDE); } + void SetTargetWindow(HWND hwnd = NULL); + void btnCaptureClick(); + void cboxSendByChange(); + +private: + HWND m_hWnd; + MCONTACT m_hContact; + bool m_bFormAbout; + HWND m_hTargetWindow, m_hLastWin; + HWND m_hTargetHighlighter; + wchar_t* m_FDestFolder; + wchar_t* m_pszFile; + FIBITMAP* m_Screenshot;//Graphics::TBitmap *Screenshot; + RGBQUAD m_AlphaColor; + CSend* m_cSend; + + void chkTimedClick(); + void imgTargetMouseUp(); + void btnAboutClick(); + void btnAboutOnCloseWindow(HWND hWnd); + void btnExploreClick(); + void LoadOptions(void); + void SaveOptions(void); + INT_PTR SaveScreenshot(FIBITMAP* dib); + void FormClose(); + static void edtSizeUpdate(HWND hWnd, BOOL ClientArea, HWND hTarget, UINT Ctrl); + static void edtSizeUpdate(RECT rect, HWND hTarget, UINT Ctrl); + +protected: + MONITORINFOEX* m_Monitors; + size_t m_MonitorCount; + RECT m_VirtualScreen; + + BYTE m_opt_chkOpenAgain; //TCheckBox *chkOpenAgain; + BYTE m_opt_chkIndirectCapture; //TCheckBox *chkIndirectCapture; + BYTE m_opt_chkClientArea; //TCheckBox *chkClientArea; + BYTE m_opt_edtQuality; //TLabeledEdit *edtQuality; + bool m_opt_btnDeleteAfterSend; //TCheckBox *chkDeleteAfterSend; + BYTE m_opt_cboxFormat; //TComboBox *cboxFormat; + BYTE m_opt_edtTimed; //TLabeledEdit *edtTimed; + bool m_bCapture; //is capture active + HWND m_hwndTab; //TabControl handle + HWND m_hwndTabPage; //TabControl activ page handle + HIMAGELIST m_himlTab; //TabControl imagelist + + typedef std::map<HWND, TfrmMain *> CHandleMapping; + static CHandleMapping _HandleMapping; + static INT_PTR CALLBACK DlgTfrmMain(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); + + void wmInitdialog(WPARAM wParam, LPARAM lParam); + void wmCommand(WPARAM wParam, LPARAM lParam); + void wmClose(WPARAM wParam, LPARAM lParam); + void wmNotify(WPARAM wParam, LPARAM lParam); + void wmTimer(WPARAM wParam, LPARAM lParam); + + void UMevent(WPARAM wParam, LPARAM lParam); + void UMClosing(WPARAM wParam, LPARAM lParam); + + static INT_PTR CALLBACK DlgProc_CaptureTabPage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +}; #endif diff --git a/plugins/SendScreenshotPlus/src/Utils.cpp b/plugins/SendScreenshotPlus/src/Utils.cpp index b7a41fda0b..86aed88090 100644 --- a/plugins/SendScreenshotPlus/src/Utils.cpp +++ b/plugins/SendScreenshotPlus/src/Utils.cpp @@ -28,8 +28,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" -//--------------------------------------------------------------------------- -//Workaround for MS bug ComboBox_SelectItemData +///////////////////////////////////////////////////////////////////////////////////////// +// Workaround for MS bug ComboBox_SelectItemData + int ComboBox_SelectItemData(HWND hwndCtl, LPARAM data) { int i = 0; @@ -42,9 +43,22 @@ int ComboBox_SelectItemData(HWND hwndCtl, LPARAM data) return CB_ERR; } -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// // MonitorInfoEnum -size_t MonitorInfoEnum(MONITORINFOEX* & myMonitors, RECT & virtualScreen) + +static BOOL CALLBACK MonitorInfoEnumProc(HMONITOR hMonitor, HDC, LPRECT, LPARAM dwData) +{ + MONITORS* monitors = (MONITORS*)dwData; + ++monitors->count; + monitors->info = (MONITORINFOEX*)mir_realloc(monitors->info, sizeof(MONITORINFOEX)*monitors->count); + monitors->info[monitors->count - 1].cbSize = sizeof(MONITORINFOEX); + if (!GetMonitorInfo(hMonitor, (LPMONITORINFO)(monitors->info + monitors->count - 1))) + return FALSE; // stop enumeration if error + + return TRUE; +} + +size_t MonitorInfoEnum(MONITORINFOEX* &myMonitors, RECT &virtualScreen) { MONITORS tmp = { 0, 0 }; if (EnumDisplayMonitors(NULL, NULL, MonitorInfoEnumProc, (LPARAM)&tmp)) { @@ -55,28 +69,16 @@ size_t MonitorInfoEnum(MONITORINFOEX* & myMonitors, RECT & virtualScreen) } return tmp.count; } - else { - if (tmp.info) mir_free(tmp.info); - } + + mir_free(tmp.info); return 0; } -// MonitorInfoEnumProc - CALLBACK for MonitorInfoEnum -BOOL CALLBACK MonitorInfoEnumProc(HMONITOR hMonitor, HDC, LPRECT, LPARAM dwData) -{ - MONITORS* monitors = (MONITORS*)dwData; - ++monitors->count; - monitors->info = (MONITORINFOEX*)mir_realloc(monitors->info, sizeof(MONITORINFOEX)*monitors->count); - monitors->info[monitors->count - 1].cbSize = sizeof(MONITORINFOEX); - if (!GetMonitorInfo(hMonitor, (LPMONITORINFO)(monitors->info + monitors->count - 1))) { - return FALSE; // stop enumeration if error - } - return TRUE; -} - FIBITMAP* CreateDIBFromDC(HDC hDC, const RECT* rect, HWND hCapture = 0); -//--------------------------------------------------------------------------- + +///////////////////////////////////////////////////////////////////////////////////////// // capture window as FIBITMAP - caller must FIP->FI_Unload(dib) + FIBITMAP* CaptureWindow(HWND hCapture, BOOL bClientArea, BOOL bIndirectCapture) { FIBITMAP* dib; @@ -119,7 +121,7 @@ FIBITMAP* CaptureWindow(HWND hCapture, BOOL bClientArea, BOOL bIndirectCapture) rect.right = ABS(rect.right - rect.left); rect.bottom = ABS(rect.bottom - rect.top); rect.left = rect.top = 0; - /// capture window and get FIBITMAP + // capture window and get FIBITMAP dib = CreateDIBFromDC(hDCsrc, &rect, hCapture); ReleaseDC(hCapture, hDCsrc); if (bClientArea) {//we could capture directly, but doing so breaks GetWindowRgn() and also includes artifacts... @@ -146,7 +148,7 @@ FIBITMAP* CaptureMonitor(const wchar_t* szDevice, const RECT* cropRect/*=NULL*/) { HDC hScrDC; RECT rect; - FIBITMAP* dib; + /// get screen resolution if (!szDevice) { hScrDC = CreateDC(L"DISPLAY", NULL, NULL, NULL); @@ -167,42 +169,38 @@ FIBITMAP* CaptureMonitor(const wchar_t* szDevice, const RECT* cropRect/*=NULL*/) if (cropRect->right < rect.right) rect.right = cropRect->right; if (cropRect->bottom < rect.bottom) rect.bottom = cropRect->bottom; } - dib = CreateDIBFromDC(hScrDC, &rect); + + FIBITMAP *dib = CreateDIBFromDC(hScrDC, &rect); ReleaseDC(NULL, hScrDC); return dib; } FIBITMAP* CreateDIBFromDC(HDC hDC, const RECT* rect, HWND hCapture/*=NULL*/) { - ///HDC GetDC (NULL) entire desktp - ///HDC GetDC (HWND hWnd) client area of the specified window. (may include artifacts) - ///HDC GetWindowDC (HWND hWnd) entire window. - FIBITMAP* dib;// return value - HBITMAP hBitmap; // handles to device-dependent bitmaps - HDC hScrDC, hMemDC; // screen DC and memory DC long width = rect->right - rect->left; long height = rect->bottom - rect->top; // create a DC for the screen and create // a memory DC compatible to screen DC - if (!(hScrDC = hDC)) hScrDC = GetDC(hCapture); - hMemDC = CreateCompatibleDC(hScrDC); + HDC hScrDC = hDC; + if (!hScrDC) + hScrDC = GetDC(hCapture); + HDC hMemDC = CreateCompatibleDC(hScrDC); // create a bitmap compatible with the screen DC - hBitmap = CreateCompatibleBitmap(hScrDC, width, height);//width,height + HBITMAP hBitmap = CreateCompatibleBitmap(hScrDC, width, height);//width,height // select new bitmap into memory DC SelectObject(hMemDC, hBitmap); - if (hCapture && hDC) { + if (hCapture && hDC) PrintWindow(hCapture, hMemDC, 0); - } - else {// bitblt screen DC to memory DC + else // bitblt screen DC to memory DC BitBlt(hMemDC, 0, 0, width, height, hScrDC, rect->left, rect->top, CAPTUREBLT | SRCCOPY); - } - dib = FIP->FI_CreateDIBFromHBITMAP(hBitmap); - //alpha channel from window is always wrong and sometimes even for desktop (Win7, no aero) - //coz GDI do not draw all in alpha mode. - //we have to create our own new alpha channel. + FIBITMAP *dib = FIP->FI_CreateDIBFromHBITMAP(hBitmap); + + // alpha channel from window is always wrong and sometimes even for desktop (Win7, no aero) + // coz GDI do not draw all in alpha mode. + // we have to create our own new alpha channel. bool bFixAlpha = true; bool bInvert = false; HBRUSH hBr = CreateSolidBrush(RGB(255, 255, 255));//Create a SolidBrush object for non transparent area @@ -216,7 +214,7 @@ FIBITMAP* CreateDIBFromDC(HDC hDC, const RECT* rect, HWND hCapture/*=NULL*/) COLORREF crKey = 0x00000000; DWORD dwFlags = 0; if (GetLayeredWindowAttributes(hCapture, &crKey, &bAlpha, &dwFlags)) { - /// per window transparency (like fading in a whole window) + // per window transparency (like fading in a whole window) if ((dwFlags&LWA_COLORKEY)) { SetBkColor(hMemDC, crKey); BitBlt(hMaskDC, 0, 0, width, height, hMemDC, rect->left, rect->top, SRCCOPY); @@ -226,11 +224,11 @@ FIBITMAP* CreateDIBFromDC(HDC hDC, const RECT* rect, HWND hCapture/*=NULL*/) bFixAlpha = false; } } - else {//per-pixel transparency (won't use the WM_PAINT) + else { // per-pixel transparency (won't use the WM_PAINT) bFixAlpha = false; } } - else {//not layered - fill the window region + else { // not layered - fill the window region SetRectRgn(hRgn, 0, 0, width, height); FillRgn(hMaskDC, hRgn, hBr); } @@ -244,7 +242,7 @@ FIBITMAP* CreateDIBFromDC(HDC hDC, const RECT* rect, HWND hCapture/*=NULL*/) FIBITMAP* dibMask = FIP->FI_CreateDIBFromHBITMAP(hMask); if (bInvert) FIP->FI_Invert(dibMask); FIBITMAP* dib8 = FIP->FI_ConvertTo8Bits(dibMask); - //copy the dib8 alpha mask to dib32 main bitmap + // copy the dib8 alpha mask to dib32 main bitmap FIP->FI_SetChannel(dib, dib8, FICC_ALPHA); FIP->FI_Unload(dibMask); FIP->FI_Unload(dib8); @@ -252,10 +250,11 @@ FIBITMAP* CreateDIBFromDC(HDC hDC, const RECT* rect, HWND hCapture/*=NULL*/) DeleteDC(hMaskDC); DeleteObject(hMask); DeleteObject(hBr); - //clean up + // clean up DeleteDC(hMemDC); DeleteObject(hBitmap); - if (!hDC) ReleaseDC(NULL, hScrDC); + if (!hDC) + ReleaseDC(NULL, hScrDC); #ifdef _DEBUG switch (FIP->FI_GetImageType(dib)) { @@ -308,52 +307,7 @@ FIBITMAP* CreateDIBFromDC(HDC hDC, const RECT* rect, HWND hCapture/*=NULL*/) return dib; } -wchar_t* SaveImage(FREE_IMAGE_FORMAT fif, FIBITMAP* dib, const wchar_t* pszFilename, const wchar_t* pszExt, int flag) -{ - int ret = 0; - wchar_t* pszFile = NULL; - wchar_t* FileExt = GetFileExt(pszFilename); - if (!FileExt) { - if (!pszExt) return NULL; - mir_tstradd(pszFile, pszFilename); - mir_tstradd(pszFile, L"."); - mir_tstradd(pszFile, pszExt); - } - else { - mir_tstradd(pszFile, pszFilename); - } - - if (fif == FIF_UNKNOWN) { - fif = FIP->FI_GetFIFFromFilenameU(pszFile); - } - - ret = FIP->FI_SaveU(fif, dib, pszFile, flag); - - - mir_free(FileExt); - - if (ret) return pszFile; - mir_free(pszFile); - return NULL; -} - -//--------------------------------------------------------------------------- -wchar_t* GetFileNameW(const wchar_t* pszPath) -{ - const wchar_t* slash = wcsrchr(pszPath, '\\'); - if (!slash) slash = wcsrchr(pszPath, '/'); - if (slash) - return mir_wstrdup(slash + 1); - else - return mir_wstrdup(pszPath); -} -wchar_t* GetFileExtW(const wchar_t* pszPath) -{ - const wchar_t* slash = wcsrchr(pszPath, '.'); - if (slash) - return mir_wstrdup(slash); - return NULL; -} +///////////////////////////////////////////////////////////////////////////////////////// char* GetFileNameA(const wchar_t* pszPath) { @@ -364,16 +318,10 @@ char* GetFileNameA(const wchar_t* pszPath) else return mir_u2a(pszPath); } -char* GetFileExtA(const wchar_t* pszPath) -{ - const wchar_t* slash = wcsrchr(pszPath, '.'); - if (slash) - return mir_u2a(slash); - return NULL; -} -//--------------------------------------------------------------------------- -BOOL GetEncoderClsid(wchar_t *wchMimeType, CLSID& clsidEncoder) +///////////////////////////////////////////////////////////////////////////////////////// + +BOOL GetEncoderClsid(wchar_t *wchMimeType, CLSID &clsidEncoder) { UINT uiNum = 0; UINT uiSize = 0; @@ -395,7 +343,9 @@ BOOL GetEncoderClsid(wchar_t *wchMimeType, CLSID& clsidEncoder) return bOk; } -void SaveGIF(HBITMAP hBmp, wchar_t* szFilename) +///////////////////////////////////////////////////////////////////////////////////////// + +void SaveGIF(HBITMAP hBmp, const wchar_t *szFilename) { Gdiplus::GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; @@ -415,7 +365,9 @@ void SaveGIF(HBITMAP hBmp, wchar_t* szFilename) Gdiplus::GdiplusShutdown(gdiplusToken); } -void SaveTIF(HBITMAP hBmp, wchar_t* szFilename) +///////////////////////////////////////////////////////////////////////////////////////// + +void SaveTIF(HBITMAP hBmp, const wchar_t *szFilename) { //http://www.codeproject.com/Messages/1406708/How-to-reduce-the-size-of-an-Image-using-GDIplus.aspx ULONG_PTR gdiplusToken; diff --git a/plugins/SendScreenshotPlus/src/Utils.h b/plugins/SendScreenshotPlus/src/Utils.h index f4d58f0d00..9b69a41dd9 100644 --- a/plugins/SendScreenshotPlus/src/Utils.h +++ b/plugins/SendScreenshotPlus/src/Utils.h @@ -31,50 +31,36 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define SPP_USERPANE 1 -extern FI_INTERFACE *FIP; +extern FI_INTERFACE* FIP; #define ABS(x) ((x)<0?-(x):(x)) -typedef struct TEnumDataTemp { -size_t count; -MONITORINFOEX* info; -}MONITORS; +struct MONITORS +{ + size_t count; + MONITORINFOEX* info; +}; extern HWND g_hCapture; extern HBITMAP g_hBitmap, g_hbmMask; -//--------------------------------------------------------------------------- -int ComboBox_SelectItemData(HWND hwndCtl, LPARAM data); - -size_t MonitorInfoEnum(MONITORINFOEX* & myMonitors, RECT & virtualScreen); -BOOL CALLBACK MonitorInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData); - -FIBITMAP* CaptureWindow(HWND hCapture, BOOL bClientArea, BOOL bIndirectCapture); -FIBITMAP* CaptureMonitor(const wchar_t* szDevice,const RECT* cropRect=NULL); -wchar_t* SaveImage(FREE_IMAGE_FORMAT fif, FIBITMAP* dib, const wchar_t* pszFilename, const wchar_t* pszExt, int flag=0); - -wchar_t* GetFileNameW(const wchar_t* pszPath); -wchar_t* GetFileExtW (const wchar_t* pszPath); -char* GetFileNameA(const wchar_t* pszPath); -char* GetFileExtA (const wchar_t* pszPath); -#ifdef _UNICODE -# define GetFileName GetFileNameW -# define GetFileExt GetFileExtW -#else -# define GetFileName GetFileNameA -# define GetFileExt GetFileExtA -#endif // _UNICODE - -BOOL GetEncoderClsid(wchar_t *wchMimeType, CLSID& clsidEncoder); -//void SavePNG(HBITMAP hBmp, wchar_t* szFilename); -void SaveGIF(HBITMAP hBmp, wchar_t* szFilename); -void SaveTIF(HBITMAP hBmp, wchar_t* szFilename); - -//--------------------------------------------------------------------------- -/* Old stuff from Borland C++ -//void ShowPopup(char *title, char *text); +///////////////////////////////////////////////////////////////////////////////////////// -*/ +int ComboBox_SelectItemData(HWND hwndCtl, LPARAM data); + +size_t MonitorInfoEnum(MONITORINFOEX* &myMonitors, RECT &virtualScreen); + +FIBITMAP* CaptureWindow(HWND hCapture, BOOL bClientArea, BOOL bIndirectCapture); +FIBITMAP* CaptureMonitor(const wchar_t *pwszDevice, const RECT *cropRect = NULL); + +char* GetFileNameA(const wchar_t *pwszPath); + +BOOL GetEncoderClsid(wchar_t *wchMimeType, CLSID &clsidEncoder); + +void SaveGIF(HBITMAP hBmp, const wchar_t *pwszFilename); +void SaveTIF(HBITMAP hBmp, const wchar_t *pwszFilename); + +///////////////////////////////////////////////////////////////////////////////////////// class EventHandle { diff --git a/plugins/SendScreenshotPlus/src/mir_string.cpp b/plugins/SendScreenshotPlus/src/mir_string.cpp index f7028a1e3c..3906ccece4 100644 --- a/plugins/SendScreenshotPlus/src/mir_string.cpp +++ b/plugins/SendScreenshotPlus/src/mir_string.cpp @@ -27,7 +27,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h"
-//---------------------------------------------------------------------------
+/////////////////////////////////////////////////////////////////////////////////////////
+
void mir_stradd(char* &pszDest, const char* pszSrc)
{
if (!pszSrc)
diff --git a/plugins/SendScreenshotPlus/src/mir_string.h b/plugins/SendScreenshotPlus/src/mir_string.h index 470c6fc7b3..3b3d6d3a29 100644 --- a/plugins/SendScreenshotPlus/src/mir_string.h +++ b/plugins/SendScreenshotPlus/src/mir_string.h @@ -31,6 +31,5 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define mir_freeAndNil(ptr) mir_free(ptr),ptr=NULL void mir_stradd(char* &pszDest, const char* pszSrc); void mir_wstradd(wchar_t* &pszDest, const wchar_t* pszSrc); -#define mir_tstradd mir_wstradd #endif /* _MIR_STRING_H_INCLUDED_ */ diff --git a/plugins/SendScreenshotPlus/src/stdafx.h b/plugins/SendScreenshotPlus/src/stdafx.h index a9f907c99d..f657db5e51 100644 --- a/plugins/SendScreenshotPlus/src/stdafx.h +++ b/plugins/SendScreenshotPlus/src/stdafx.h @@ -110,7 +110,8 @@ typedef struct _MGLOBAL { } MGLOBAL, *LPMGLOBAL; -//--------------------------------------------------------------------------- +///////////////////////////////////////////////////////////////////////////////////////// + #define ERROR_TITLE TranslateT("SendScreenshot - Error") // Miranda Database Key diff --git a/plugins/SendScreenshotPlus/src/version.h b/plugins/SendScreenshotPlus/src/version.h index 48e45d8caf..c25efc650c 100644 --- a/plugins/SendScreenshotPlus/src/version.h +++ b/plugins/SendScreenshotPlus/src/version.h @@ -1,6 +1,6 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 8 -#define __RELEASE_NUM 9 +#define __RELEASE_NUM 10 #define __BUILD_NUM 1 #include <stdver.h> |