diff options
Diffstat (limited to 'libs/mTextControl/src/FormattedTextDraw.cpp')
-rw-r--r-- | libs/mTextControl/src/FormattedTextDraw.cpp | 38 |
1 files changed, 6 insertions, 32 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); |