From 017f8e72ac56a88ecaea40dd1c52b1da0ae46986 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 9 Mar 2017 15:13:13 +0300 Subject: common rtf management code moved to the core --- plugins/TabSRMM/src/chat.h | 1 + plugins/TabSRMM/src/chat_log.cpp | 31 ++----------------------------- plugins/TabSRMM/src/chat_main.cpp | 1 + plugins/TabSRMM/src/msgdlgutils.cpp | 25 +------------------------ 4 files changed, 5 insertions(+), 53 deletions(-) (limited to 'plugins/TabSRMM/src') diff --git a/plugins/TabSRMM/src/chat.h b/plugins/TabSRMM/src/chat.h index 9551527c54..0fdd8849c0 100644 --- a/plugins/TabSRMM/src/chat.h +++ b/plugins/TabSRMM/src/chat.h @@ -101,6 +101,7 @@ extern CHAT_MANAGER saveCI; // log.c char* Log_CreateRtfHeader(MODULEINFO *mi); +char* Log_CreateRTF(LOGSTREAMDATA *streamData); // window.c int GetTextPixelSize(wchar_t* pszText, HFONT hFont, bool bWidth); diff --git a/plugins/TabSRMM/src/chat_log.cpp b/plugins/TabSRMM/src/chat_log.cpp index 38d6a0d134..e598846f4d 100644 --- a/plugins/TabSRMM/src/chat_log.cpp +++ b/plugins/TabSRMM/src/chat_log.cpp @@ -696,7 +696,7 @@ char* Log_CreateRtfHeader(MODULEINFO *mi) return str.Detach(); } -static char* Log_CreateRTF(LOGSTREAMDATA *streamData) +char* Log_CreateRTF(LOGSTREAMDATA *streamData) { LOGINFO *lin = streamData->lin; MODULEINFO *mi = pci->MM_FindModule(streamData->si->pszModule); @@ -830,33 +830,6 @@ static char* Log_CreateRTF(LOGSTREAMDATA *streamData) return str.Detach(); } -static DWORD CALLBACK Log_StreamCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG * pcb) -{ - LOGSTREAMDATA *lstrdat = (LOGSTREAMDATA*)dwCookie; - - if (lstrdat) { - // create the RTF - if (lstrdat->buffer == nullptr) { - lstrdat->bufferOffset = 0; - lstrdat->buffer = Log_CreateRTF(lstrdat); - lstrdat->bufferLen = (int)mir_strlen(lstrdat->buffer); - } - - // give the RTF to the RE control - *pcb = min(cb, lstrdat->bufferLen - lstrdat->bufferOffset); - memcpy(pbBuff, lstrdat->buffer + lstrdat->bufferOffset, *pcb); - lstrdat->bufferOffset += *pcb; - - // mir_free stuff if the streaming operation is complete - if (lstrdat->bufferOffset == lstrdat->bufferLen) { - mir_free(lstrdat->buffer); - lstrdat->buffer = nullptr; - } - } - - return 0; -} - void CChatRoomDlg::StreamInEvents(LOGINFO *lin, SESSION_INFO *si, bool bRedraw) { CHARRANGE oldsel, sel, newsel; @@ -881,7 +854,7 @@ void CChatRoomDlg::StreamInEvents(LOGINFO *lin, SESSION_INFO *si, bool bRedraw) bool bFlag = false, fDoReplace; EDITSTREAM stream = { 0 }; - stream.pfnCallback = Log_StreamCallback; + stream.pfnCallback = Srmm_LogStreamCallback; stream.dwCookie = (DWORD_PTR)& streamData; SCROLLINFO scroll = { 0 }; diff --git a/plugins/TabSRMM/src/chat_main.cpp b/plugins/TabSRMM/src/chat_main.cpp index 570dd311be..31aed38421 100644 --- a/plugins/TabSRMM/src/chat_main.cpp +++ b/plugins/TabSRMM/src/chat_main.cpp @@ -235,6 +235,7 @@ int Chat_Load() pci->LogToFile = LogToFile; pci->DoPopup = DoPopup; pci->ShowPopup = ShowPopup; + pci->Log_CreateRTF = Log_CreateRTF; pci->Log_CreateRtfHeader = Log_CreateRtfHeader; pci->UM_CompareItem = UM_CompareItem; pci->ReloadSettings(); diff --git a/plugins/TabSRMM/src/msgdlgutils.cpp b/plugins/TabSRMM/src/msgdlgutils.cpp index cd1a49147b..30c5fff688 100644 --- a/plugins/TabSRMM/src/msgdlgutils.cpp +++ b/plugins/TabSRMM/src/msgdlgutils.cpp @@ -764,29 +764,6 @@ void CTabBaseDlg::FlashOnClist(MEVENT hEvent, DBEVENTINFO *dbei) // caller must mir_free the returned pointer. // UNICODE version returns UTF-8 encoded string. -static DWORD CALLBACK Message_StreamCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) -{ - static DWORD dwRead; - char **ppText = (char **)dwCookie; - - if (*ppText == nullptr) { - *ppText = (char *)mir_alloc(cb + 2); - memcpy(*ppText, pbBuff, cb); - *pcb = cb; - dwRead = cb; - *(*ppText + cb) = '\0'; - } - else { - char *p = (char *)mir_realloc(*ppText, dwRead + cb + 2); - memcpy(p + dwRead, pbBuff, cb); - *ppText = p; - *pcb = cb; - dwRead += cb; - *(*ppText + dwRead) = '\0'; - } - return 0; -} - char* TSAPI Message_GetFromStream(HWND hwndRtf, DWORD dwPassedFlags) { if (hwndRtf == 0) @@ -800,7 +777,7 @@ char* TSAPI Message_GetFromStream(HWND hwndRtf, DWORD dwPassedFlags) char *pszText = nullptr; EDITSTREAM stream = { 0 }; - stream.pfnCallback = Message_StreamCallback; + stream.pfnCallback = Srmm_MessageStreamCallback; stream.dwCookie = (DWORD_PTR)&pszText; // pass pointer to pointer SendMessage(hwndRtf, EM_STREAMOUT, dwFlags, (LPARAM)&stream); return pszText; // pszText contains the text -- cgit v1.2.3