summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2024-02-24 19:42:56 +0300
committerGeorge Hazan <george.hazan@gmail.com>2024-02-24 19:42:56 +0300
commitc57f6f8b5c848b9287a8ae7e9dd99ec38ec20e68 (patch)
tree69e07ee12fc4eaf07cdb32cfc274b4b30cfddc4a /src
parent1beaee1f0efba88cbea9f1a93627fcce164b17e7 (diff)
CCtrlRichEdit::GetPlainRtf - a method to get plain (non-Unicode) text in RTF
Diffstat (limited to 'src')
-rw-r--r--src/mir_core/src/Windows/CCtrlRichEdit.cpp20
-rw-r--r--src/mir_core/src/mir_core.def1
-rw-r--r--src/mir_core/src/mir_core64.def1
3 files changed, 19 insertions, 3 deletions
diff --git a/src/mir_core/src/Windows/CCtrlRichEdit.cpp b/src/mir_core/src/Windows/CCtrlRichEdit.cpp
index d1a761781b..ae58f516cf 100644
--- a/src/mir_core/src/Windows/CCtrlRichEdit.cpp
+++ b/src/mir_core/src/Windows/CCtrlRichEdit.cpp
@@ -89,18 +89,32 @@ static DWORD CALLBACK MessageStreamCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, L
return 0;
}
+char* CCtrlRichEdit::GetPlainRtf(bool bSelection)
+{
+ char *pszText = nullptr;
+ uint32_t dwFlags = SF_RTFNOOBJS | SFF_PLAINRTF;
+ if (bSelection)
+ dwFlags |= SFF_SELECTION;
+
+ EDITSTREAM stream = {};
+ stream.pfnCallback = MessageStreamCallback;
+ stream.dwCookie = (DWORD_PTR)&pszText; // pass pointer to pointer
+ SendMessage(m_hwnd, EM_STREAMOUT, dwFlags, (LPARAM)&stream);
+ return pszText; // pszText contains the text
+}
+
char* CCtrlRichEdit::GetRichTextRtf(bool bText, bool bSelection) const
{
char *pszText = nullptr;
- uint32_t dwFlags = 0;
+ uint32_t dwFlags = SF_USECODEPAGE | (CP_UTF8 << 16);
if (bText)
- dwFlags |= SF_USECODEPAGE | (CP_UTF8 << 16) / SF_TEXT;
+ dwFlags |= SF_TEXT;
else
dwFlags |= SF_RTFNOOBJS | SFF_PLAINRTF;
if (bSelection)
dwFlags |= SFF_SELECTION;
- EDITSTREAM stream = { 0 };
+ EDITSTREAM stream = {};
stream.pfnCallback = MessageStreamCallback;
stream.dwCookie = (DWORD_PTR)&pszText; // pass pointer to pointer
SendMessage(m_hwnd, EM_STREAMOUT, dwFlags, (LPARAM)&stream);
diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def
index dc56ef8ee3..9296b22011 100644
--- a/src/mir_core/src/mir_core.def
+++ b/src/mir_core/src/mir_core.def
@@ -1576,3 +1576,4 @@ _newStr@4 @1789 NONAME
?Copy@MClipAnsi@@UBEXXZ @1801 NONAME
?Copy@MClipRtf@@UBEXXZ @1802 NONAME
?Copy@MClipUnicode@@UBEXXZ @1803 NONAME
+?GetPlainRtf@CCtrlRichEdit@@QAEPAD_N@Z @1804 NONAME
diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def
index 7d9885b02d..0a4d9dcabc 100644
--- a/src/mir_core/src/mir_core64.def
+++ b/src/mir_core/src/mir_core64.def
@@ -1576,3 +1576,4 @@ newStr @1789 NONAME
?Copy@MClipAnsi@@UEBAXXZ @1801 NONAME
?Copy@MClipRtf@@UEBAXXZ @1802 NONAME
?Copy@MClipUnicode@@UEBAXXZ @1803 NONAME
+?GetPlainRtf@CCtrlRichEdit@@QEAAPEAD_N@Z @1804 NONAME