diff options
-rw-r--r-- | libs/mTextControl/src/FormattedTextDraw.cpp | 38 | ||||
-rw-r--r-- | libs/mTextControl/src/FormattedTextDraw.h | 2 | ||||
-rw-r--r-- | libs/mTextControl/src/services.cpp | 4 | ||||
-rw-r--r-- | plugins/ExternalAPI/m_text.h | 13 | ||||
-rw-r--r-- | plugins/Popup/src/popup_wnd2.h | 16 |
5 files changed, 20 insertions, 53 deletions
diff --git a/libs/mTextControl/src/FormattedTextDraw.cpp b/libs/mTextControl/src/FormattedTextDraw.cpp index fc1e84c0ea..e89ab6ad1d 100644 --- a/libs/mTextControl/src/FormattedTextDraw.cpp +++ b/libs/mTextControl/src/FormattedTextDraw.cpp @@ -151,46 +151,20 @@ HRESULT CFormattedTextDraw::putTextW(wchar_t *newVal) return S_OK; } -///////////////////////////////////////////////////////////////////////////////////////// - -#define STREAMSTAGE_HEADER 0 -#define STREAMSTAGE_EVENTS 1 -#define STREAMSTAGE_TAIL 2 -#define STREAMSTAGE_STOP 3 - -struct STREAMDATA -{ - const char *str; - int lSize, lCount; -}; - -static DWORD CALLBACK EditStreamInCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) -{ - auto *dat = (STREAMDATA *)dwCookie; - - if (dat->lSize - dat->lCount < cb) - *pcb = dat->lSize - dat->lCount; - else - *pcb = cb; - - memcpy(pbBuff, dat->str + dat->lCount, *pcb); - dat->lCount += *pcb; - return 0; // callback succeeded - no errors -} - -HRESULT CFormattedTextDraw::putRTFText(MRtfProvider *pProv) +HRESULT CFormattedTextDraw::putRTFText(char *newVal) { if (!m_spTextServices) return S_FALSE; - CMStringA buf = pProv->CreateRtfHeader() + pProv->CreateRtfBody() + pProv->CreateRtfFooter(); - - STREAMDATA streamData = { buf.c_str(), buf.GetLength(), 0 }; + STREAMDATATEXT streamData = {}; + streamData.isUnicode = false; + streamData.ansi = newVal; + streamData.cbSize = mir_strlen(newVal); EDITSTREAM editStream; editStream.dwCookie = (DWORD_PTR)&streamData; editStream.dwError = 0; - editStream.pfnCallback = EditStreamInCallback; + editStream.pfnCallback = EditStreamTextInCallback; LRESULT lResult = 0; m_spTextServices->TxSendMessage(EM_STREAMIN, SF_RTF, (LPARAM)&editStream, &lResult); diff --git a/libs/mTextControl/src/FormattedTextDraw.h b/libs/mTextControl/src/FormattedTextDraw.h index 3ec7a7412e..f9ff25f2b6 100644 --- a/libs/mTextControl/src/FormattedTextDraw.h +++ b/libs/mTextControl/src/FormattedTextDraw.h @@ -38,7 +38,7 @@ public: HRESULT get_NaturalSize(HDC hdcDraw, long *Width, long *pVal); HRESULT Draw(HDC hdcDraw, RECT *prc); - HRESULT putRTFText(MRtfProvider *pProv); + HRESULT putRTFText(char *newVal); HRESULT putTextA(char *newVal); HRESULT putTextW(wchar_t *newVal); diff --git a/libs/mTextControl/src/services.cpp b/libs/mTextControl/src/services.cpp index bd7eee6a50..1575b716dd 100644 --- a/libs/mTextControl/src/services.cpp +++ b/libs/mTextControl/src/services.cpp @@ -101,7 +101,7 @@ MTEXTCONTROL_DLL(TextObject *) MTextCreateW(HANDLE userHandle, const char *szPro ///////////////////////////////////////////////////////////////////////////////////////// // allocate text object (advanced) -MTEXTCONTROL_DLL(TextObject *) MTextCreateEx(HANDLE userHandle, void *text, uint32_t flags) +MTEXTCONTROL_DLL(TextObject *) MTextCreateEx(HANDLE userHandle, const void *text, uint32_t flags) { TextObject *result = new TextObject; result->options = TextUserGetOptions(userHandle); @@ -110,7 +110,7 @@ MTEXTCONTROL_DLL(TextObject *) MTextCreateEx(HANDLE userHandle, void *text, uint MText_InitFormatting0(result->ftd, result->options); if (flags & MTEXT_FLG_RTF) { - result->ftd->putRTFText((MRtfProvider *)text); + result->ftd->putRTFText((char *)text); } else { if (flags & MTEXT_FLG_WCHAR) diff --git a/plugins/ExternalAPI/m_text.h b/plugins/ExternalAPI/m_text.h index bc3fc25237..d6607e2eb1 100644 --- a/plugins/ExternalAPI/m_text.h +++ b/plugins/ExternalAPI/m_text.h @@ -6,12 +6,12 @@ #define MTM_SETUSER WM_USER
#define MTM_UPDATE WM_USER+1
+typedef struct TextObject *HText;
+
#ifdef MTEXTCONTROL_EXPORTS
#define MTEXTCONTROL_EXPORT __declspec(dllexport)
- typedef struct TextObject *HText;
#else
#define MTEXTCONTROL_EXPORT __declspec(dllimport)
- typedef HANDLE HText;
#endif
#define MTEXTCONTROL_DLL(T) MTEXTCONTROL_EXPORT T __stdcall
@@ -46,13 +46,6 @@ enum MTEXT_FLG_RTF = 0x00000004,
};
-struct MRtfProvider
-{
- virtual CMStringA CreateRtfHeader() = 0;
- virtual CMStringA CreateRtfBody() = 0;
- virtual CMStringA CreateRtfFooter() = 0;
-};
-
// subscribe to MText services
MTEXTCONTROL_DLL(HANDLE) MTextRegister(const char *userTitle, uint32_t options);
@@ -60,7 +53,7 @@ MTEXTCONTROL_DLL(HANDLE) MTextRegister(const char *userTitle, uint32_t options); MTEXTCONTROL_DLL(HText) MTextCreateW(HANDLE userHandle, const char *szProto, const wchar_t *text);
// allocate text object (advanced)
-MTEXTCONTROL_DLL(HText) MTextCreateEx(HANDLE userHandle, void *text, uint32_t flags);
+MTEXTCONTROL_DLL(HText) MTextCreateEx(HANDLE userHandle, const void *text, uint32_t flags);
// destroys text object
MTEXTCONTROL_DLL(int) MTextDestroy(HText text);
diff --git a/plugins/Popup/src/popup_wnd2.h b/plugins/Popup/src/popup_wnd2.h index 7f381684ac..b72f2e3920 100644 --- a/plugins/Popup/src/popup_wnd2.h +++ b/plugins/Popup/src/popup_wnd2.h @@ -54,13 +54,13 @@ private: // content
TextType m_textType;
- wchar_t *m_lptzTitle, *m_lptzText;
- HANDLE m_mtTitle, m_mtText;
+ wchar_t *m_lptzTitle, *m_lptzText;
+ HText m_mtTitle, m_mtText;
bool m_bTextEmpty, m_bIcoLib;
HFONT m_hfnTitle, m_hfnText;
HICON m_hIcon;
HBITMAP m_hbmAvatar;
- wchar_t m_time[2 + 1 + 2 + 1];
+ wchar_t m_time[2 + 1 + 2 + 1];
ActionInfo* m_actions;
int m_actionCount;
HANDLE m_hNotification;
@@ -146,15 +146,15 @@ public: bool isTextEmpty() { return m_bTextEmpty; }
bool isIcolib() { return m_bIcoLib; }
TextType getTextType() { return m_textType; }
- wchar_t *getText() { return m_lptzText; }
- HANDLE getTextM() { return m_mtText; }
- wchar_t *getTitle() { return m_lptzTitle; }
- HANDLE getTitleM() { return m_mtTitle; }
+ wchar_t *getText() { return m_lptzText; }
+ HText getTextM() { return m_mtText; }
+ wchar_t *getTitle() { return m_lptzTitle; }
+ HText getTitleM() { return m_mtTitle; }
int getActionCount() { return m_actionCount; }
ActionInfo *getActions() { return m_actions; }
- wchar_t *getTime() { return m_time; }
+ wchar_t *getTime() { return m_time; }
HICON getIcon() { return m_hIcon; }
MCONTACT getContact() { return m_hContact; }
MCONTACT getContactPassed() { return m_hContactPassed; }
|