summaryrefslogtreecommitdiff
path: root/libs/mTextControl/src/services.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/mTextControl/src/services.cpp')
-rw-r--r--libs/mTextControl/src/services.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/libs/mTextControl/src/services.cpp b/libs/mTextControl/src/services.cpp
index 8c6e06d165..35efa5f5f7 100644
--- a/libs/mTextControl/src/services.cpp
+++ b/libs/mTextControl/src/services.cpp
@@ -113,6 +113,36 @@ MTEXTCONTROL_DLL(TextObject *) MTextCreateEx(HANDLE userHandle, const void *text
}
/////////////////////////////////////////////////////////////////////////////////////////
+// allocate text object (more advanced)
+
+MTEXTCONTROL_DLL(TextObject *) MTextCreateEx2(HWND hwnd, HANDLE userHandle, const void *text, uint32_t flags)
+{
+ TextObject *result = new TextObject;
+ result->options = TextUserGetOptions(userHandle);
+ result->ftd = new CFormattedTextDraw();
+ if (hwnd) {
+ RECT rc;
+ GetClientRect(hwnd, &rc);
+ result->ftd->setParentWnd(hwnd, rc);
+ }
+ InitRichEdit(result->ftd->getTextService());
+
+ MText_InitFormatting0(result->ftd, result->options);
+ if (flags & MTEXT_FLG_RTF) {
+ result->ftd->putRTFText((char *)text);
+ }
+ else {
+ if (flags & MTEXT_FLG_WCHAR)
+ result->ftd->putTextW((wchar_t *)text);
+ else
+ result->ftd->putTextA((char *)text);
+ }
+ MText_InitFormatting1(result);
+ return result;
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////
// measure text object
MTEXTCONTROL_DLL(int) MTextMeasure(HDC dc, SIZE *sz, TextObject *text)