227#define NONAMELESSUNION
232#define NO_SHLWAPI_STREAM
246#define STACK_SIZE_DEFAULT 100
247#define STACK_SIZE_MAX 1000
249#define TEXT_LIMIT_DEFAULT 32767
303 static const char bom_utf8[] = {0xEF, 0xBB, 0xBF};
314 if (
stream->editstream->dwError)
318 total_bytes_read +=
stream->dwSize;
346 while ((
buf[
end-1] & 0xC0) == 0x80)
354 if ((
buf[
end-1] & 0xE0) == 0xC0)
356 if ((
buf[
end-1] & 0xF0) == 0xE0)
358 if ((
buf[
end-1] & 0xF8) == 0xF0)
390 nWideChars =
stream->dwSize >> 1;
399 return total_bytes_read;
411 for (
i = 0;
i < 4;
i++)
415 colorNum = borderDef[
i].
color;
416 while (colorDef && colorDef->
rtfCNum != colorNum)
435 switch(
info->rtfMinor)
453 fmt.dwEffects =
info->rtfParam ?
fmt.dwMask : 0;
481 fmt.dwEffects =
info->rtfParam ?
fmt.dwMask : 0;
495 fmt.dwEffects =
info->rtfParam ?
fmt.dwMask : 0;
500 if (
info->rtfParam == 0)
505 if (
c &&
c->rtfCBlue >= 0)
506 fmt.crBackColor = (
c->rtfCBlue<<16)|(
c->rtfCGreen<<8)|(
c->rtfCRed);
514 if (
info->rtfParam == 0)
519 if (
c &&
c->rtfCBlue >= 0)
520 fmt.crTextColor = (
c->rtfCBlue<<16)|(
c->rtfCGreen<<8)|(
c->rtfCRed);
534 fmt.bCharSet =
f->rtfFCharSet;
536 fmt.bPitchAndFamily =
f->rtfFPitch | (
f->rtfFFamily << 4);
543 fmt.yHeight =
info->rtfParam*10;
552 info->style = style2;
561 switch(
info->rtfMinor)
564 if (!
info->editor->bEmulateVersion10)
574 info->fmt.cTabCount = 0;
575 info->fmt.dxOffset =
info->fmt.dxStartIndent =
info->fmt.dxRightIndent = 0;
576 info->fmt.wBorderWidth =
info->fmt.wBorders = 0;
577 info->fmt.wBorderSpace = 0;
578 info->fmt.bLineSpacingRule = 0;
579 info->fmt.dySpaceBefore =
info->fmt.dySpaceAfter = 0;
580 info->fmt.dyLineSpacing = 0;
581 info->fmt.wEffects &= ~PFE_RTLPARA;
582 info->fmt.wNumbering = 0;
583 info->fmt.wNumberingStart = 0;
584 info->fmt.wNumberingStyle = 0;
585 info->fmt.wNumberingTab = 0;
587 if (!
info->editor->bEmulateVersion10)
589 if (
info->tableDef &&
info->tableDef->row_start &&
613 info->fmt.wEffects &= ~PFE_TABLE;
617 if (!
info->editor->bEmulateVersion10)
619 while (
info->rtfParam >
info->nestingLevel)
621 RTFTable *tableDef = heap_alloc_zero(
sizeof(*tableDef));
623 info->tableDef = tableDef;
640 info->nestingLevel++;
647 if (!
info->editor->bEmulateVersion10)
649 if (
info->nestingLevel < 1)
655 info->tableDef = heap_alloc_zero(
sizeof(*
info->tableDef));
656 tableDef =
info->tableDef;
661 para =
info->editor->pCursors[0].para;
665 info->nestingLevel = 1;
683 info->fmt.dxStartIndent =
fmt.dxStartIndent;
684 info->fmt.dxOffset =
fmt.dxOffset;
688 info->fmt.dxStartIndent +=
info->fmt.dxOffset +
info->rtfParam;
689 info->fmt.dxOffset = -
info->rtfParam;
692 info->fmt.dxStartIndent =
info->rtfParam -
info->fmt.dxOffset;
696 info->fmt.dxRightIndent =
info->rtfParam;
718 fmt.cTabCount *
sizeof(
fmt.rgxTabs[0]));
719 info->fmt.cTabCount =
fmt.cTabCount;
723 info->fmt.rgxTabs[
info->fmt.cTabCount++] =
info->rtfParam;
739 info->fmt.dySpaceAfter =
info->rtfParam;
743 info->fmt.dySpaceBefore =
info->rtfParam;
747 if ((
int)
info->rtfParam > 0)
749 info->fmt.dyLineSpacing =
info->rtfParam;
750 info->fmt.bLineSpacingRule = 3;
754 info->fmt.dyLineSpacing =
info->rtfParam;
755 info->fmt.bLineSpacingRule = 4;
760 info->fmt.dyLineSpacing =
info->rtfParam * 20;
761 info->fmt.bLineSpacingRule = 5;
769 info->fmt.wNumbering = 2;
773 info->fmt.wBorders |= 1;
778 info->fmt.wBorders |= 2;
783 info->fmt.wBorders |= 4;
788 info->fmt.wBorders |= 8;
792 info->fmt.wBorders &= ~0x700;
793 info->fmt.wBorders |= 1 << 8;
797 info->fmt.wBorders &= ~0x700;
798 info->fmt.wBorders |= 2 << 8;
802 info->fmt.wBorders &= ~0x700;
803 info->fmt.wBorders |= 10 << 8;
807 info->fmt.wBorders &= ~0x700;
808 info->fmt.wBorders |= 7 << 8;
812 info->fmt.wBorders &= ~0x700;
813 info->fmt.wBorders |= 11 << 8;
829 info->fmt.wBorderWidth =
info->rtfParam;
834 info->fmt.wBorderSpace =
info->rtfParam;
845 if (!
info->editor->bEmulateVersion10)
867 info->fmt.wEffects &= ~PFE_RTLPARA;
874 switch (
info->rtfMinor)
878 if (!
info->editor->bEmulateVersion10)
879 info->borderType = 0;
882 if (!
info->tableDef) {
896 cellNum =
info->tableDef->numCellsDefined;
899 info->tableDef->cells[cellNum].rightBoundary =
info->rtfParam;
905 fmt->rgxTabs[cellNum] &= ~0x00FFFFFF;
906 fmt->rgxTabs[cellNum] |= 0x00FFFFFF &
info->rtfParam;
908 info->tableDef->numCellsDefined++;
937 info->tableDef->gapH =
info->rtfParam;
941 info->tableDef->leftEdge =
info->rtfParam;
949 switch (
info->rtfMinor)
952 if (
info->editor->bEmulateVersion10)
959 if (!
info->editor->bEmulateVersion10)
967 info->nestingLevel = 1;
985 if (
info->editor->bEmulateVersion10)
998 if (!
info->editor->bEmulateVersion10)
1005 info->nestingLevel++;
1014 const int default_size = 2000;
1015 int right_boundary = default_size;
1020 right_boundary += default_size;
1046 if (
info->editor->pCursors[0].run != run ||
info->editor->pCursors[0].nOffset)
1050 info->editor->pCursors[1].run = run;
1051 info->editor->pCursors[1].para = run->
para;
1052 info->editor->pCursors[1].nOffset = 0;
1063 info->nestingLevel--;
1064 if (!
info->nestingLevel)
1069 while (
info->tableDef)
1071 tableDef =
info->tableDef;
1085 para =
info->editor->pCursors[0].para;
1105 if (
info->editor->bEmulateVersion10)
1110 para =
info->editor->pCursors[0].para;
1115 info->rtfMajor =
' ';
1117 else if (
info->rtfMinor ==
rtfPar && tableDef)
1129 LPOLECLIENTSITE lpClientSite =
NULL;
1131 LPOLECACHE lpOleCache =
NULL;
1140 stgm.tymed = TYMED_ENHMF;
1141 stgm.u.hEnhMetaFile = hemf;
1146 stgm.tymed = TYMED_GDI;
1147 stgm.u.hBitmap =
hbmp;
1152 stgm.pUnkForRelease =
NULL;
1155 fm.dwAspect = DVASPECT_CONTENT;
1157 fm.tymed = stgm.tymed;
1160 IRichEditOle_GetClientSite(editor->
richole, &lpClientSite) ==
S_OK &&
1161 IOleObject_SetClientSite(lpObject, lpClientSite) ==
S_OK &&
1162 IOleObject_GetUserClassID(lpObject, &
clsid) ==
S_OK &&
1163 IOleObject_QueryInterface(lpObject, &
IID_IOleCache, (
void**)&lpOleCache) ==
S_OK &&
1164 IOleCache_Cache(lpOleCache, &fm, 0, &conn) ==
S_OK &&
1166 IDataObject_SetData(lpDataObject, &fm, &stgm,
TRUE) ==
S_OK)
1170 reobject.
cbStruct =
sizeof(reobject);
1171 reobject.
cp = REO_CP_SELECTION;
1174 reobject.
pstg = lpStorage;
1179 reobject.
dvaspect = DVASPECT_CONTENT;
1187 if (lpObject) IOleObject_Release(lpObject);
1188 if (lpClientSite) IOleClientSite_Release(lpClientSite);
1189 if (lpStorage) IStorage_Release(lpStorage);
1190 if (lpDataObject) IDataObject_Release(lpDataObject);
1191 if (lpOleCache) IOleCache_Release(lpOleCache);
1207 if (--
level == 0)
break;
1235 ERR(
"Called with incorrect token\n");
1243 for (flip =
TRUE;; flip = !flip)
1265 if (flip)
FIXME(
"wrong hex string\n");
1279 enum gfxkind {gfx_unknown = 0, gfx_enhmetafile, gfx_metafile, gfx_dib} gfx = gfx_unknown;
1306 if (--
level == 0)
break;
1329 if (
info->rtfParam != 0)
FIXME(
"dibitmap should be 0 (%d)\n",
info->rtfParam);
1333 gfx = gfx_enhmetafile;
1343 FIXME(
"Non supported attribute: %d %d %d\n",
info->rtfClass,
info->rtfMajor,
info->rtfMinor);
1350 case gfx_enhmetafile:
1417 FIXME(
"Non supported attribute: %d %d %d\n",
info->rtfClass,
info->rtfMajor,
info->rtfMinor);
1428 WCHAR txt_before = 0, txt_after = 0;
1437 int loc =
info->rtfMinor;
1443 txt_before =
info->rtfMajor;
1445 txt_after =
info->rtfMajor;
1456 if (--
level == 0)
break;
1470 switch (
info->rtfMinor)
1512 if (txt_before == 0 && txt_after == 0)
1514 else if (txt_after ==
'.')
1516 else if (txt_before ==
'(' && txt_after ==
')')
1522 TRACE(
"type %d indent %d start %d txt before %04x txt after %04x\n",
1530 switch(
info->rtfClass)
1533 switch(
info->rtfMajor)
1540 info->stack[
info->stackTop].unicodeLength =
info->unicodeLength;
1549 if (
info->stackTop <= 0)
1551 if (
info->stackTop < 0)
1557 info->unicodeLength =
info->stack[
info->stackTop].unicodeLength;
1568 stream->editstream->dwError =
stream->editstream->pfnCallback(
stream->editstream->dwCookie,
1579 int from, to, nUndoMode;
1676 if (!
parser.editor->bEmulateVersion10)
1700 if (
parser.nestingLevel > 0)
1702 while (
parser.nestingLevel > 1)
1704 para =
parser.tableDef->row_start;
1709 para =
parser.tableDef->row_start;
1728 while (--
parser.stackTop >= 0)
1746 WCHAR lastchar[3] = {
'\0',
'\0'};
1748 ME_Cursor linebreakCursor = *selEnd, lastcharCursor = *selEnd;
1752 cf.cbSize =
sizeof(
cf);
1762 if (lastchar[0] ==
'\r' && (lastchar[1] ==
'\n' || lastchar[1] ==
'\0')) {
1768 num_read = to -
from;
1778 ERR(
"EM_STREAMIN without SF_TEXT or SF_RTF\n");
1850 WCHAR wLastChar =
' ';
1852 TRACE(
"flags==0x%08x, chrg->cpMin==%d, chrg->cpMax==%d text==%s\n",
1856 FIXME(
"Flags 0x%08x not implemented\n",
1860 if (chrg->
cpMax == -1)
1863 nMax = chrg->
cpMax > nTextLen ? nTextLen : chrg->
cpMax;
1876 chrgText->
cpMin = -1;
1877 chrgText->
cpMax = -1;
1891 nMax = nMin > nTextLen ? nTextLen : nMin;
1892 if (nMin < nSwap || chrg->cpMax == -1)
1898 if (!nLen || nMin < 0 || nMax < 0 || nMax < nMin)
1919 int nCurStart =
cursor.nOffset;
1928 if (nMatched == nLen)
1931 int nNextStart = nCurStart;
1937 if (nCurStart + nMatched == run->
len)
1940 nNextStart = -nMatched;
1944 wNextChar = *
get_text( next_run, nNextStart + nMatched );
1961 if (nCurStart + nMatched == run->
len)
1964 nCurStart = -nMatched;
1968 wLastChar = *
get_text( run, nCurStart + nMatched );
2001 int nCurEnd =
cursor.nOffset;
2018 if (nMatched == nLen)
2021 int nPrevEnd = nCurEnd;
2028 if (nPrevEnd - nMatched == 0)
2031 if (prev_run) nPrevEnd = prev_run->
len + nMatched;
2034 if (prev_run) wPrevChar = *
get_text( prev_run, nPrevEnd - nMatched - 1 );
2035 else wPrevChar =
' ';
2044 chrgText->
cpMin = nStart;
2045 chrgText->
cpMax = nStart + nLen;
2047 TRACE(
"found at %d-%d\n", nStart, nStart + nLen);
2050 if (nCurEnd - nMatched == 0)
2059 nCurEnd = run->
len + nMatched;
2063 wLastChar = *
get_text( run, nCurEnd - nMatched - 1 );
2081 TRACE(
"not found\n");
2092 if (!
ex->cb || !
pText)
return 0;
2126 buflen =
min(crlfmul * nChars,
ex->cb - 1);
2174 pDest = (
WORD *)lpBuff;
2176 for (
i = 0;
i<
cb && pSrc[
pData->nLength+
i];
i++) {
2177 pDest[
i] = pSrc[
pData->nLength+
i];
2193 for (
i = 0;
i<
cb && pSrc[
pData->nLength+
i];
i++) {
2194 pDest[
i] = pSrc[
pData->nLength+
i];
2208 gds.
hData = med->u.hGlobal;
2223 gds.
hData = med->u.hGlobal;
2256 {{ -1,
NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL },
paste_rtf,
L"Rich Text Format" },
2294 if (ps && ps->
dwAspect != DVASPECT_CONTENT)
2305 if (
cf &&
cf !=
format->fmt.cfFormat)
continue;
2312 if (
hr !=
S_OK)
goto done;
2320 IDataObject_Release(
data );
2348 IDataObject_Release(
data );
2402 start_para =
from->para;
2408 start.para = start_para;
2458 para->
nFlags &= ~MEPF_ROWSTART;
2583 ME_ArrowKey(editor, nKey, shift_is_down, ctrl_is_down);
2605 BOOL bDeletionSucceeded;
2668 chf.
cbSize =
sizeof(chf);
2697 if ((
unsigned)wstr >=
' ' || wstr ==
'\t')
2715 selected_row =
TRUE;
2772 static int clickNum = 0;
2779 (
msg == WM_XBUTTONDBLCLK))
2787 (
msg == WM_XBUTTONDOWN))
2789 static MSG prevClickMsg;
2793 clickMsg.hwnd = (
HWND)editor;
2794 clickMsg.message =
msg;
2795 clickMsg.wParam =
wParam;
2796 clickMsg.lParam =
lParam;
2800 if ((clickNum != 0) &&
2801 (clickMsg.message == prevClickMsg.message) &&
2802 (clickMsg.hwnd == prevClickMsg.hwnd) &&
2803 (clickMsg.wParam == prevClickMsg.wParam) &&
2812 prevClickMsg = clickMsg;
2828 static HCURSOR cursor_arrow, cursor_hand, cursor_ibeam, cursor_reverse;
2842 (!editor->
bEmulateVersion10 && y < editor->rcFormat.top && x < editor->rcFormat.left))
2847 else cursor = cursor_ibeam;
2849 else if (x < editor->rcFormat.left)
cursor = cursor_reverse;
2864 if (start <= offset && end >=
offset)
cursor = cursor_arrow;
2943 ITextHost_Release( texthost );
2948 ed->
texthost = (ITextHost2 *)texthost;
3118 *remain -=
WHEEL_DELTA * change / amount_per_click;
3133 if (!isExact)
return;
3138 info.nmhdr.idFrom = 0;
3163 int from, to, nStartCursor;
3245#define UNSUPPORTED_MSG(e) \
3247 FIXME(#e ": stub\n"); \
3248 *phresult = S_FALSE; \
3302 if ((*pfrom|*pto) & 0xFFFF0000)
3342 cf.cbSize =
sizeof(
cf);
3345 tmp_size = (
cf.yHeight / 20) +
wParam;
3349 else if (tmp_size > 12 && tmp_size < 28 && tmp_size % 2)
3350 size = tmp_size + (is_increase ? 1 : -1);
3351 else if (tmp_size > 28 && tmp_size < 36)
3352 size = is_increase ? 36 : 28;
3353 else if (tmp_size > 36 && tmp_size < 48)
3354 size = is_increase ? 48 : 36;
3355 else if (tmp_size > 48 && tmp_size < 72)
3356 size = is_increase ? 72 : 48;
3357 else if (tmp_size > 72 && tmp_size < 80)
3358 size = is_increase ? 80 : 72;
3359 else if (tmp_size > 80 && tmp_size < 1638)
3360 size = 10 * (is_increase ? (tmp_size / 10 + 1) : (tmp_size / 10));
3361 else if (tmp_size >= 1638)
3409 BOOL bRtf, bUnicode, bSelection, bUTF8;
3411 static const char utf8_bom[] = {0xef, 0xbb, 0xbf};
3413 if (!pStruct)
return 0;
3422 TRACE(
"EM_SETTEXTEX - %s, flags %d, cp %d\n",
3446 if (bUTF8 && !bUnicode) {
3507 tmp.
cbSize =
sizeof(tmp);
3535 if (y < para->
pt.y + para->
nHeight)
break;
3543 if (y < para->
pt.y +
row->pt.y +
row->nHeight)
break;
3640 TRACE(
"WM_SETTEXT - NULL\n");
3712 if (nStart < 0)
return 0;
3713 if ((nStart == 0 && nEnd == -1) || nEnd > textlength)
3715 if (nStart >= nEnd)
return 0;
3724 const unsigned int nMaxChars = *(
WORD *)
lParam;
3725 unsigned int nCharsLeft = nMaxChars;
3729 TRACE(
"EM_GETLINE: row=%d, nMaxChars=%d\n", (
int)
wParam, nMaxChars );
3741 int ofs = (run ==
start.run) ?
start.nOffset : 0;
3745 nCopy =
min( nCharsLeft,
len );
3749 nCharsLeft -= nCopy;
3750 if (run ==
end.run)
break;
3755 if (nCharsLeft > 0) *((
WCHAR *)
dest) =
'\0';
3757 TRACE(
"EM_GETLINE: got %u characters\n", nMaxChars - nCharsLeft);
3758 return nMaxChars - nCharsLeft;
3763 ME_Run *prev_run, *last_run;
3769 prev_run->
len == 1 && *
get_text( prev_run, 0 ) ==
'\r')
3778 TRACE(
"EM_GETLINECOUNT: count==%d\n",
count);
3799 if (!
row)
return -1;
3803 TRACE(
"EM_LINEINDEX: nCharOfs==%d\n", ofs );
3809 int start_ofs, end_ofs;
3816 FIXME(
"EM_LINELENGTH: returning number of unselected characters on lines with selection unsupported.\n");
3825 TRACE(
"EM_LINELENGTH(%ld)==%d\n",
wParam, end_ofs - start_ofs );
3826 return end_ofs - start_ofs;
3891 nCharOfs =
max(nCharOfs, 0);
3976 if (
wParam <= 0x000fffff)
3993 const int scrollUnit = 7;
4068 return 0x00010000 | (((editor->
vert_si.
nPos - origNPos)/lineHeight) & 0xffff);
4073 int delta = GET_WHEEL_DELTA_WPARAM(
wParam );
4077 if ((delta < 0 && editor->wheel_remain < 0) ||
4094 if (numerator >= 10 && numerator <= 500)
4119 lParam &= ~ISC_SHOWUICOMPOSITIONWINDOW;
4148 case WM_IME_STARTCOMPOSITION:
4160 case WM_IME_COMPOSITION:
4200 case WM_IME_ENDCOMPOSITION:
4211 IRichEditOle_AddRef( editor->
richole );
4232 return editor->
mode;
4287 FIXME(
"EM_SETTARGETDEVICE doesn't use non-NULL target devices\n");
4328 while (srcChars && buflen && next_run)
4332 if (buflen == 1)
break;
4336 srcChars -=
min(nLen, srcChars);
4342 nLen =
min(nLen, srcChars);
4346 nLen =
min(nLen, buflen);
4383 static const WCHAR neutral_chars[] =
L"!\"'(),-.:;<>?[]{}";
4412 int run_len =
cursor.run->len;
4414 nChars -= run_len -
cursor.nOffset;
4417 if (!candidateStarted)
4419 while (
cursor.nOffset < run_len)
4425 candidateStarted =
TRUE;
4426 neutral_end.para =
NULL;
4427 space_end.para =
NULL;
4431 quoted = (
c ==
'<');
4437 if (candidateStarted)
4439 while (
cursor.nOffset < run_len)
4444 if (quoted &&
c !=
'\r')
4446 if (!space_end.para)
4448 if (neutral_end.para)
4449 space_end = neutral_end;
4459 if (quoted &&
c ==
'>')
4461 neutral_end.para =
NULL;
4462 space_end.para =
NULL;
4465 if (!neutral_end.para)
4469 neutral_end.para =
NULL;
4481 if (candidateStarted)
4484 *candidate_max = space_end;
4485 else if (neutral_end.para)
4486 *candidate_max = neutral_end;
4491 *candidate_max = *candidate_min =
cursor;
4500#define MAX_PREFIX_LEN 9
4501#define X(str) str, ARRAY_SIZE(str) - 1
4531#undef MAX_PREFIX_LEN
4560 &candidateStart, &candidateEnd))
4567 candidateStart = candidateEnd;
4576 if (startCur.
run != candidateStart.
run ||
4601 if (candidateStart.
run != candidateEnd.
run ||
4618 startCur = candidateEnd;
4619 }
while (nChars > 0);
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static int list_empty(struct list_entry *head)
static void list_init(struct list_entry *head)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
LONG WINAPI ImmGetCompositionStringW(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
_In_ size_t character_count
static const WCHAR indent[]
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
BOOL WINAPI ImmSetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
BOOL WINAPI ImmIsIME(HKL hKL)
BOOL WINAPI ImmNotifyIME(HIMC hIMC, DWORD dwAction, DWORD dwIndex, DWORD_PTR dwValue)
BOOL WINAPI ImmUnlockIMC(HIMC hIMC)
HIMC WINAPI ImmGetContext(HWND hWnd)
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
LPINPUTCONTEXT WINAPI ImmLockIMC(HIMC hIMC)
static const char bom_utf8[]
HRESULT WINAPI OleSetClipboard(IDataObject *data)
HRESULT WINAPI OleGetClipboard(IDataObject **obj)
HRESULT WINAPI OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj)
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
void WINAPI DECLSPEC_HOTPATCH OleUninitialize(void)
void ME_InsertEndRowFromCursor(ME_TextEditor *editor, int nCursor)
void ME_SetCursorToStart(ME_TextEditor *editor, ME_Cursor *cursor)
BOOL ME_DeleteTextAtCursor(ME_TextEditor *editor, int nCursor, int nChars)
BOOL ME_IsSelection(ME_TextEditor *editor)
void ME_DeleteSelection(ME_TextEditor *editor)
int ME_GetCursorOfs(const ME_Cursor *cursor)
void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor, const WCHAR *str, int len, ME_Style *style)
int ME_MoveCursorChars(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs, BOOL final_eop)
BOOL ME_MoveCursorWords(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs)
void ME_InsertOLEFromCursor(ME_TextEditor *editor, const REOBJECT *reo, int nCursor)
void ME_LButtonDown(ME_TextEditor *editor, int x, int y, int clickNum)
int ME_GetTextLengthEx(ME_TextEditor *editor, const GETTEXTLENGTHEX *how)
int ME_GetSelection(ME_TextEditor *editor, ME_Cursor **from, ME_Cursor **to)
BOOL ME_InternalDeleteText(ME_TextEditor *editor, ME_Cursor *start, int nChars, BOOL bForce)
void hide_caret(ME_TextEditor *editor)
void ME_MouseMove(ME_TextEditor *editor, int x, int y)
BOOL ME_CharFromPos(ME_TextEditor *editor, int x, int y, ME_Cursor *cursor, BOOL *isExact)
void ME_SendSelChange(ME_TextEditor *editor)
int set_selection_cursors(ME_TextEditor *editor, int from, int to)
int ME_GetSelectionOfs(ME_TextEditor *editor, int *from, int *to)
BOOL ME_ArrowKey(ME_TextEditor *editor, int nVKey, BOOL extend, BOOL ctrl)
void create_caret(ME_TextEditor *editor)
int ME_GetTextLength(ME_TextEditor *editor)
void update_caret(ME_TextEditor *editor)
ME_Style * ME_GetSelectionInsertStyle(ME_TextEditor *editor)
HRESULT ME_GetDataObject(ME_TextEditor *editor, const ME_Cursor *start, int nChars, IDataObject **dataobj)
static struct paste_format paste_formats[]
static void ME_StreamInRTFString(ME_TextEditor *editor, BOOL selection, char *string)
static void ME_RTFReadParnumGroup(RTF_Info *info)
static BOOL paste_special(ME_TextEditor *editor, UINT cf, REPASTESPECIAL *ps, BOOL check_only)
#define UNSUPPORTED_MSG(e)
static int ME_FindText(ME_TextEditor *editor, DWORD flags, const CHARRANGE *chrg, const WCHAR *text, CHARRANGE *chrgText)
static HRESULT insert_static_object(ME_TextEditor *editor, HENHMETAFILE hemf, HBITMAP hbmp, const SIZEL *sz)
static LRESULT ME_StreamIn(ME_TextEditor *editor, DWORD format, EDITSTREAM *stream, BOOL stripLastCR)
static void ME_RTFReadShpPictGroup(RTF_Info *info)
static void ME_SetText(ME_TextEditor *editor, void *text, BOOL unicode)
static HRESULT paste_emf(ME_TextEditor *editor, FORMATETC *fmt, STGMEDIUM *med)
void ME_ReplaceSel(ME_TextEditor *editor, BOOL can_undo, const WCHAR *str, int len)
static void ME_UpdateSelectionLinkAttribute(ME_TextEditor *editor)
static DWORD CALLBACK ME_ReadFromHGLOBALRTF(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb)
struct tagME_RTFStringStreamStruct ME_RTFStringStreamStruct
ME_Paragraph * editor_first_para(ME_TextEditor *editor)
static BOOL ME_IsCandidateAnURL(ME_TextEditor *editor, const ME_Cursor *start, int nChars)
static DWORD CALLBACK ME_ReadFromHGLOBALUnicode(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb)
static BOOL ME_ShowContextMenu(ME_TextEditor *editor, int x, int y)
static BOOL ME_FindNextURLCandidate(ME_TextEditor *editor, const ME_Cursor *start, int nChars, ME_Cursor *candidate_min, ME_Cursor *candidate_max)
static BOOL editor_beep(ME_TextEditor *editor, UINT type)
void ME_StreamInFill(ME_InStream *stream)
static void ME_RTFReadHook(RTF_Info *info)
static LRESULT handle_EM_SETCHARFORMAT(ME_TextEditor *editor, WPARAM flags, const CHARFORMAT2W *fmt_in)
static int ME_GetTextEx(ME_TextEditor *editor, GETTEXTEX *ex, LPARAM pText)
static HRESULT paste_rtf(ME_TextEditor *editor, FORMATETC *fmt, STGMEDIUM *med)
static int calc_wheel_change(int *remain, int amount_per_click)
void ME_RTFTblAttrHook(RTF_Info *info)
ME_TextEditor * ME_MakeEditor(ITextHost *texthost, BOOL bEmulateVersion10)
static ME_TextBuffer * ME_MakeText(void)
static int get_text_range(ME_TextEditor *editor, WCHAR *buffer, const ME_Cursor *start, int len)
#define STACK_SIZE_DEFAULT
static BOOL copy_or_cut(ME_TextEditor *editor, BOOL cut)
void ME_RTFCharAttrHook(RTF_Info *info)
static int get_default_line_height(ME_TextEditor *editor)
static HRESULT paste_text(ME_TextEditor *editor, FORMATETC *fmt, STGMEDIUM *med)
static void init_paste_formats(void)
HRESULT editor_copy_or_cut(ME_TextEditor *editor, BOOL cut, ME_Cursor *start, int count, IDataObject **data_out)
static void ME_ApplyBorderProperties(RTF_Info *info, ME_BorderRect *borderRect, RTFBorder *borderDef)
#define TEXT_LIMIT_DEFAULT
static BOOL isurlneutral(WCHAR c)
static void ME_RTFReadPictGroup(RTF_Info *info)
static LONG ME_GetSelectionType(ME_TextEditor *editor)
void editor_set_cursor(ME_TextEditor *editor, int x, int y)
struct tagME_GlobalDestStruct ME_GlobalDestStruct
static BOOL ME_UpdateLinkAttribute(ME_TextEditor *editor, ME_Cursor *start, int nChars)
void ME_RTFSpecialCharHook(RTF_Info *info)
static DWORD CALLBACK ME_ReadFromRTFString(DWORD_PTR dwCookie, LPBYTE lpBuff, LONG cb, LONG *pcb)
int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int buflen, const ME_Cursor *start, int srcChars, BOOL bCRLF, BOOL bEOP)
static BOOL is_link(ME_Run *run)
void ME_RTFParAttrHook(RTF_Info *info)
LRESULT editor_handle_message(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam, HRESULT *phresult)
static void ME_RTFReadObjectGroup(RTF_Info *info)
static LRESULT handle_wm_char(ME_TextEditor *editor, WCHAR wstr, LPARAM flags)
void ME_DestroyEditor(ME_TextEditor *editor)
static int __cdecl wchar_comp(const void *key, const void *elem)
static BOOL ME_KeyDown(ME_TextEditor *editor, WORD nKey)
static HRESULT editor_copy(ME_TextEditor *editor, ME_Cursor *start, int chars, IDataObject **data_out)
static LRESULT ME_StreamInText(ME_TextEditor *editor, DWORD dwFormat, ME_InStream *stream, ME_Style *style)
static DWORD read_hex_data(RTF_Info *info, BYTE **out)
void link_notify(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam)
ME_Paragraph * editor_end_para(ME_TextEditor *editor)
static BOOL handle_enter(ME_TextEditor *editor)
static int ME_CalculateClickCount(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam)
int RTFCheckCM(const RTF_Info *info, int class, int major)
void RTFDestroy(RTF_Info *info)
void RTFSetEditStream(RTF_Info *info, ME_InStream *stream)
int BeginFile(RTF_Info *info)
int RTFGetToken(RTF_Info *info)
void RTFRead(RTF_Info *info)
RTFFont * RTFGetFont(const RTF_Info *info, int num)
void RTFRouteToken(RTF_Info *info)
void RTFInit(RTF_Info *info)
int RTFCheckMM(const RTF_Info *info, int major, int minor)
void RTFFlushOutputBuffer(RTF_Info *info)
RTFColor * RTFGetColor(const RTF_Info *info, int num)
void RTFSetReadHook(RTF_Info *info, RTFFuncPtr f)
void RTFSkipGroup(RTF_Info *info)
void RTFSetDestinationCallback(RTF_Info *info, int dest, RTFFuncPtr callback)
int RTFCheckCMM(const RTF_Info *info, int class, int major, int minor)
void WriterInit(RTF_Info *info)
void RTFReadGroup(RTF_Info *info)
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
unsigned short(__cdecl typeof(TIFFCurrentDirectory))(struct tiff *)
ME_Run * run_next_all_paras(ME_Run *run) DECLSPEC_HIDDEN
#define ITextHost_TxSetScrollRange(This, a, b, c, d)
void ME_ReleaseStyle(ME_Style *item) DECLSPEC_HIDDEN
BOOL editor_set_selection_para_fmt(ME_TextEditor *editor, const PARAFORMAT2 *fmt) DECLSPEC_HIDDEN
#define ITextHost_TxSetFocus(This)
void scroll_h_abs(ME_TextEditor *editor, int x, BOOL notify) DECLSPEC_HIDDEN
void ME_AddRefStyle(ME_Style *item) DECLSPEC_HIDDEN
BOOL cfany_to_cf2w(CHARFORMAT2W *to, const CHARFORMAT2W *from) DECLSPEC_HIDDEN
ME_Paragraph * table_insert_cell(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN
ME_Run * para_first_run(ME_Paragraph *para) DECLSPEC_HIDDEN
BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor) DECLSPEC_HIDDEN
void row_first_cursor(ME_Row *row, ME_Cursor *cursor) DECLSPEC_HIDDEN
static int ME_CharCompare(WCHAR a, WCHAR b, int caseSensitive)
void ME_ScrollRight(ME_TextEditor *editor, int cx) DECLSPEC_HIDDEN
void ME_ContinueCoalescingTransaction(ME_TextEditor *editor) DECLSPEC_HIDDEN
#define ITextHost_TxGetPropertyBits(This, a, b)
void ME_CheckCharOffsets(ME_TextEditor *editor) DECLSPEC_HIDDEN
void ME_DestroyStyle(ME_Style *item) DECLSPEC_HIDDEN
void editor_mark_rewrap_all(ME_TextEditor *editor) DECLSPEC_HIDDEN
void para_destroy(ME_TextEditor *editor, ME_Paragraph *item) DECLSPEC_HIDDEN
ME_Cell * para_cell(ME_Paragraph *para) DECLSPEC_HIDDEN
void ME_SaveTempStyle(ME_TextEditor *editor, ME_Style *style) DECLSPEC_HIDDEN
ME_Style * ME_ApplyStyle(ME_TextEditor *ed, ME_Style *sSrc, CHARFORMAT2W *style) DECLSPEC_HIDDEN
#define ITextHost_TxGetBackStyle(This, a)
int row_number_from_char_ofs(ME_TextEditor *editor, int ofs) DECLSPEC_HIDDEN
BOOL ME_SetZoom(ME_TextEditor *editor, int numerator, int denominator) DECLSPEC_HIDDEN
void cursor_from_char_ofs(ME_TextEditor *editor, int char_ofs, ME_Cursor *cursor) DECLSPEC_HIDDEN
BOOL para_in_table(ME_Paragraph *para) DECLSPEC_HIDDEN
ME_Row * para_first_row(ME_Paragraph *para) DECLSPEC_HIDDEN
void ME_SendRequestResize(ME_TextEditor *editor, BOOL force) DECLSPEC_HIDDEN
void ME_DestroyDisplayItem(ME_DisplayItem *item) DECLSPEC_HIDDEN
BOOL ME_Redo(ME_TextEditor *editor) DECLSPEC_HIDDEN
void ME_UpdateScrollBar(ME_TextEditor *editor) DECLSPEC_HIDDEN
void ME_EmptyUndoStack(ME_TextEditor *editor) DECLSPEC_HIDDEN
ME_Paragraph * table_insert_row_start_at_para(ME_TextEditor *editor, ME_Paragraph *para) DECLSPEC_HIDDEN
void scroll_v_abs(ME_TextEditor *editor, int y, BOOL notify) DECLSPEC_HIDDEN
void ME_GetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN
#define ITextHost_TxSetCapture(This, a)
ME_Style * style_get_insert_style(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN
ME_Run * row_next_run(ME_Row *row, ME_Run *run) DECLSPEC_HIDDEN
#define ITextHost_TxNotify(This, a, b)
void ME_CharFormatFromLogFont(HDC hDC, const LOGFONTW *lf, CHARFORMAT2W *fmt) DECLSPEC_HIDDEN
void ME_InitTableDef(ME_TextEditor *editor, struct RTFTable *tableDef) DECLSPEC_HIDDEN
ME_Row * row_next(ME_Row *row) DECLSPEC_HIDDEN
void para_mark_rewrap(ME_TextEditor *editor, ME_Paragraph *para) DECLSPEC_HIDDEN
void ME_DumpStyleToBuf(CHARFORMAT2W *pFmt, char buf[2048]) DECLSPEC_HIDDEN
void ME_EndToUnicode(LONG codepage, LPVOID psz) DECLSPEC_HIDDEN
ME_Run * run_prev_all_paras(ME_Run *run) DECLSPEC_HIDDEN
void ME_ScrollLeft(ME_TextEditor *editor, int cx) DECLSPEC_HIDDEN
ME_Paragraph * para_next(ME_Paragraph *para) DECLSPEC_HIDDEN
void editor_set_default_para_fmt(ME_TextEditor *editor, PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN
ME_Row * row_from_cursor(ME_Cursor *cursor) DECLSPEC_HIDDEN
ME_Row * row_from_row_number(ME_TextEditor *editor, int row_num) DECLSPEC_HIDDEN
ME_Run * run_next(ME_Run *run) DECLSPEC_HIDDEN
#define ITextHost_TxGetDC(This)
ME_Cell * table_row_first_cell(ME_Paragraph *para) DECLSPEC_HIDDEN
void ME_ScrollUp(ME_TextEditor *editor, int cy) DECLSPEC_HIDDEN
void ME_InvalidateSelection(ME_TextEditor *editor) DECLSPEC_HIDDEN
void ME_MakeFirstParagraph(ME_TextEditor *editor) DECLSPEC_HIDDEN
void ME_CommitUndo(ME_TextEditor *editor) DECLSPEC_HIDDEN
ME_Paragraph * cell_first_para(ME_Cell *cell) DECLSPEC_HIDDEN
void table_move_from_row_start(ME_TextEditor *editor) DECLSPEC_HIDDEN
ME_Paragraph * table_insert_row_start(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN
#define ITextHost_TxGetScrollBars(This, a)
void ME_UpdateRepaint(ME_TextEditor *editor, BOOL update_now) DECLSPEC_HIDDEN
ME_Paragraph * table_insert_row_end(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN
void ME_GetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN
#define ITextHost_TxGetSelectionBarWidth(This, a)
void ME_RewrapRepaint(ME_TextEditor *editor) DECLSPEC_HIDDEN
ME_Cell * cell_next(ME_Cell *cell) DECLSPEC_HIDDEN
void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod) DECLSPEC_HIDDEN
#define ITextHost_TxGetPasswordChar(This, a)
BOOL cursor_next_run(ME_Cursor *cursor, BOOL all_para) DECLSPEC_HIDDEN
#define ITextHost_TxReleaseDC(This, a)
#define ITextHost2_TxGetWindow(This, a)
void editor_ensure_visible(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN
ME_Paragraph * para_prev(ME_Paragraph *para) DECLSPEC_HIDDEN
ME_Paragraph * table_append_row(ME_TextEditor *editor, ME_Paragraph *table_row) DECLSPEC_HIDDEN
void ME_SetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN
#define ITextHost_TxSetCursor(This, a, b)
#define ITextHost_TxEnableScrollBar(This, a, b)
ME_Run * run_prev(ME_Run *run) DECLSPEC_HIDDEN
void ME_ClearTempStyle(ME_TextEditor *editor) DECLSPEC_HIDDEN
void ME_Repaint(ME_TextEditor *editor) DECLSPEC_HIDDEN
#define ITextHost_TxImmGetContext(This)
ME_Run * para_end_run(ME_Paragraph *para) DECLSPEC_HIDDEN
ME_DisplayItem * ME_MakeDI(ME_DIType type) DECLSPEC_HIDDEN
ME_Cell * cell_prev(ME_Cell *cell) DECLSPEC_HIDDEN
void table_handle_tab(ME_TextEditor *editor, BOOL selected_row) DECLSPEC_HIDDEN
void row_end_cursor(ME_Row *row, ME_Cursor *cursor, BOOL include_eop) DECLSPEC_HIDDEN
static WCHAR * get_text(const ME_Run *run, int offset)
void editor_get_selection_para_fmt(ME_TextEditor *editor, PARAFORMAT2 *fmt) DECLSPEC_HIDDEN
void ME_ScrollDown(ME_TextEditor *editor, int cy) DECLSPEC_HIDDEN
BOOL cf2w_to_cfany(CHARFORMAT2W *to, const CHARFORMAT2W *from) DECLSPEC_HIDDEN
int ME_PointFromChar(ME_TextEditor *editor, ME_Run *pRun, int nOffset, BOOL visual_order) DECLSPEC_HIDDEN
void ME_GetCharFormat(ME_TextEditor *editor, const ME_Cursor *from, const ME_Cursor *to, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN
LPWSTR ME_ToUnicode(LONG codepage, LPVOID psz, INT *len) DECLSPEC_HIDDEN
LRESULT ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream) DECLSPEC_HIDDEN
void ME_CommitCoalescingUndo(ME_TextEditor *editor) DECLSPEC_HIDDEN
void ME_SetCharFormat(ME_TextEditor *editor, ME_Cursor *start, ME_Cursor *end, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN
void scroll_abs(ME_TextEditor *editor, int x, int y, BOOL notify) DECLSPEC_HIDDEN
BOOL ME_Undo(ME_TextEditor *editor) DECLSPEC_HIDDEN
struct RTFTable * ME_MakeTableDef(ME_TextEditor *editor) DECLSPEC_HIDDEN
#define STREAMIN_BUFFER_SIZE
#define SELECTIONBAR_WIDTH
GLint GLint GLsizei GLsizei GLsizei GLint border
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei height
GLint GLint GLsizei width
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
struct INPUTCONTEXTDX * LPINPUTCONTEXTDX
#define NI_COMPOSITIONSTR
_Check_return_ _CRTIMP int __cdecl isalnum(_In_ int _C)
JSAMPARRAY JDIMENSION max_lines
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static HMODULE MODULEINFO DWORD cb
static float(__cdecl *square_half_float)(float x
static UINT PSTR DWORD UINT * need
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define set_selection(hctl, start, end)
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
interface IStorage * LPSTORAGE
interface IDataObject * LPDATAOBJECT
const GUID IID_IDataObject
const GUID IID_IOleObject
#define TM_MULTILEVELUNDO
#define EM_GETAUTOURLDETECT
#define CFU_UNDERLINEDOUBLE
#define EM_SETOLECALLBACK
#define EM_SETBIDIOPTIONS
#define PFE_NOWIDOWCONTROL
#define PFM_NUMBERINGSTYLE
#define CFU_UNDERLINEWORD
#define EM_GETWORDBREAKPROCEX
#define EM_GETBIDIOPTIONS
#define TM_SINGLECODEPAGE
struct _charformatw CHARFORMATW
#define EM_GETLANGOPTIONS
#define EM_SETWORDBREAKPROCEX
#define EM_SETLANGOPTIONS
#define ES_DISABLENOSCROLL
#define PFM_NOWIDOWCONTROL
#define CFE_AUTOBACKCOLOR
#define EM_STOPGROUPTYPING
#define EM_SETTYPOGRAPHYOPTIONS
#define EM_GETTEXTLENGTHEX
#define EM_SETTARGETDEVICE
struct _charformat2w CHARFORMAT2W
#define CFM_UNDERLINETYPE
#define EM_EXLINEFROMCHAR
#define EM_GETIMECOMPMODE
#define EM_GETOLEINTERFACE
#define CFU_UNDERLINEDOTTED
#define TM_SINGLELEVELUNDO
#define EM_GETTYPOGRAPHYOPTIONS
#define PFM_NUMBERINGSTART
#define rtfSuperScrShrink
#define rtfParNumTextBefore
#define RTFBorderTypeMask
#define rtfNoWidowControl
#define rtfParNumTextAfter
#define RTFBorderParaRight
#define rtfNestTableProps
#define rtfCellBordBottom
#define RTFBorderCellRight
#define RTFBorderSideMask
#define RTFBorderCellLeft
#define RTFBorderRowBottom
#define RTFBorderParaBottom
#define RTFBorderTypePara
#define RTFBorderTypeCell
#define RTFBorderParaLeft
#define RTFBorderRowRight
#define RTFBorderCellBottom
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
RTFCell cells[MAX_TABLE_CELLS]
enum parser_state stack[4]
BITMAPINFOHEADER bmiHeader
union tagME_DisplayItem::@560 member
struct tagME_DisplayItem * prev
struct tagME_DisplayItem * next
char buffer[STREAMIN_BUFFER_SIZE]
struct tagME_DisplayItem * next_para
struct tagME_DisplayItem * prev_para
struct tagME_Paragraph * para
unsigned int horz_sb_enabled
unsigned int have_texthost2
EDITWORDBREAKPROCW pfnWordBreak
ME_FontCacheItem pFontCache[HFONT_CACHE_SIZE]
unsigned int vert_sb_enabled
ME_Paragraph * last_sel_end_para
ME_Paragraph * last_sel_start_para
ME_SelectionType nSelectionType
BOOL AutoURLDetect_bEnable
LPRICHEDITOLECALLBACK lpOleCallback
unsigned int bEmulateVersion10
unsigned int in_place_active
#define TXTBIT_AUTOWORDSEL
#define TXTBIT_SAVESELECTION
#define TXTBIT_USEPASSWORD
#define TXTBIT_HIDESELECTION
EXTERN_C const IID IID_ITextHost2
#define TXTBIT_DISABLEDRAG
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
TW_UINT32 TW_UINT16 TW_UINT16 MSG
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
static struct wctab tab[]
_In_ HCRYPTHASH _In_ BOOL _In_ DWORD _Inout_ DWORD _In_ DWORD dwBufLen
#define HRESULT_FROM_WIN32(x)
HGDIOBJ WINAPI GetStockObject(_In_ int)
int WINAPI GetObjectW(_In_ HANDLE h, _In_ int c, _Out_writes_bytes_opt_(c) LPVOID pv)
HENHMETAFILE WINAPI SetEnhMetaFileBits(_In_ UINT nSize, _In_reads_bytes_(nSize) const BYTE *pb)
HBITMAP WINAPI CreateDIBitmap(_In_ HDC hdc, _In_opt_ const BITMAPINFOHEADER *pbmih, _In_ DWORD fdwInit, _In_opt_ const VOID *pvInit, _In_opt_ const BITMAPINFO *pbmi, _In_ UINT uUsage)
HENHMETAFILE WINAPI SetWinMetaFileBits(_In_ UINT nSize, _In_reads_bytes_(nSize) const BYTE *lpMeta16Data, _In_opt_ HDC hdcRef, _In_opt_ const METAFILEPICT *lpMFP)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HKL WINAPI GetKeyboardLayout(_In_ DWORD)
#define EM_GETWORDBREAKPROC
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct tagSCROLLINFO SCROLLINFO
int WINAPI MessageBoxA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType)
#define EM_EMPTYUNDOBUFFER
UINT WINAPI RegisterClipboardFormatW(_In_ LPCWSTR)
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
BOOL WINAPI MessageBeep(_In_ UINT uType)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
#define EM_GETFIRSTVISIBLELINE
UINT WINAPI GetDoubleClickTime(void)
#define WM_IME_SETCONTEXT
#define EM_SETWORDBREAKPROC
HDC WINAPI GetDC(_In_opt_ HWND)
int(CALLBACK * EDITWORDBREAKPROCW)(LPWSTR, int, int, int)
LONG WINAPI GetMessageTime(void)
BOOL WINAPI SystemParametersInfoW(_In_ UINT uiAction, _In_ UINT uiParam, _Inout_opt_ PVOID pvParam, _In_ UINT fWinIni)
#define WM_IME_COMPOSITIONFULL
BOOL WINAPI SetRectEmpty(_Out_ LPRECT)
HWND WINAPI GetParent(_In_ HWND)
BOOL WINAPI DestroyMenu(_In_ HMENU)
BOOL WINAPI TrackPopupMenu(_In_ HMENU, _In_ UINT, _In_ int, _In_ int, _Reserved_ int, _In_ HWND, _Reserved_ LPCRECT)
BOOL WINAPI DestroyCaret(void)
#define MAKEINTRESOURCEW(i)
int WINAPI GetSystemMetrics(_In_ int)
SHORT WINAPI GetKeyState(_In_ int)