Commit | Line | Data |
---|---|---|
d488f3f1 KF |
1 | /* |
2 | * RichEdit - prototypes for functions and macro definitions | |
3 | * | |
4 | * Copyright 2004 by Krzysztof Foltman | |
5 | * | |
6 | * This library is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU Lesser General Public | |
8 | * License as published by the Free Software Foundation; either | |
9 | * version 2.1 of the License, or (at your option) any later version. | |
10 | * | |
11 | * This library is distributed in the hope that it will be useful, | |
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
360a3f91 | 18 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
d488f3f1 KF |
19 | */ |
20 | ||
21 | #include "editstr.h" | |
805dc748 | 22 | #include "wine/unicode.h" |
d488f3f1 | 23 | |
9a7d475d DS |
24 | struct _RTF_Info; |
25 | ||
598a7f6e | 26 | extern HANDLE me_heap DECLSPEC_HIDDEN; |
8939587b | 27 | |
9593c9e6 | 28 | static inline void * __WINE_ALLOC_SIZE(1) heap_alloc( size_t len ) |
8939587b MM |
29 | { |
30 | return HeapAlloc( me_heap, 0, len ); | |
31 | } | |
32 | ||
4210cafc | 33 | static inline BOOL heap_free( void *ptr ) |
8939587b MM |
34 | { |
35 | return HeapFree( me_heap, 0, ptr ); | |
36 | } | |
37 | ||
9593c9e6 | 38 | static inline void * __WINE_ALLOC_SIZE(2) heap_realloc( void *ptr, size_t len ) |
8939587b MM |
39 | { |
40 | return HeapReAlloc( me_heap, 0, ptr, len ); | |
41 | } | |
42 | ||
4210cafc MS |
43 | #define ALLOC_OBJ(type) heap_alloc(sizeof(type)) |
44 | #define ALLOC_N_OBJ(type, count) heap_alloc((count)*sizeof(type)) | |
45 | #define FREE_OBJ(ptr) heap_free(ptr) | |
d488f3f1 | 46 | |
f0d6519e PK |
47 | #define RUN_IS_HIDDEN(run) ((run)->style->fmt.dwMask & CFM_HIDDEN \ |
48 | && (run)->style->fmt.dwEffects & CFE_HIDDEN) | |
49 | ||
a1324584 KK |
50 | #define InitFormatEtc(fe, cf, med) \ |
51 | {\ | |
52 | (fe).cfFormat=cf;\ | |
53 | (fe).dwAspect=DVASPECT_CONTENT;\ | |
54 | (fe).ptd=NULL;\ | |
55 | (fe).tymed=med;\ | |
56 | (fe).lindex=-1;\ | |
57 | }; | |
58 | ||
27578f8b HD |
59 | static inline WCHAR *get_text( const ME_Run *run, int offset ) |
60 | { | |
5168d66b | 61 | return run->para->text->szData + run->nCharOfs + offset; |
27578f8b HD |
62 | } |
63 | ||
64 | static inline const char *debugstr_run( const ME_Run *run ) | |
65 | { | |
5168d66b | 66 | return debugstr_wn( get_text( run, 0 ), run->len ); |
27578f8b | 67 | } |
c17af77b | 68 | |
d488f3f1 | 69 | /* style.c */ |
598a7f6e MM |
70 | ME_Style *ME_MakeStyle(CHARFORMAT2W *style) DECLSPEC_HIDDEN; |
71 | void ME_AddRefStyle(ME_Style *item) DECLSPEC_HIDDEN; | |
72 | void ME_ReleaseStyle(ME_Style *item) DECLSPEC_HIDDEN; | |
73 | ME_Style *ME_GetInsertStyle(ME_TextEditor *editor, int nCursor) DECLSPEC_HIDDEN; | |
74 | ME_Style *ME_ApplyStyle(ME_Style *sSrc, CHARFORMAT2W *style) DECLSPEC_HIDDEN; | |
75 | HFONT ME_SelectStyleFont(ME_Context *c, ME_Style *s) DECLSPEC_HIDDEN; | |
76 | void ME_UnselectStyleFont(ME_Context *c, ME_Style *s, HFONT hOldFont) DECLSPEC_HIDDEN; | |
77 | void ME_InitCharFormat2W(CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN; | |
78 | void ME_SaveTempStyle(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
79 | void ME_ClearTempStyle(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
80 | void ME_DumpStyleToBuf(CHARFORMAT2W *pFmt, char buf[2048]) DECLSPEC_HIDDEN; | |
81 | void ME_DumpStyle(ME_Style *s) DECLSPEC_HIDDEN; | |
82 | CHARFORMAT2W *ME_ToCF2W(CHARFORMAT2W *to, CHARFORMAT2W *from) DECLSPEC_HIDDEN; | |
83 | void ME_CopyToCFAny(CHARFORMAT2W *to, CHARFORMAT2W *from) DECLSPEC_HIDDEN; | |
84 | void ME_CopyCharFormat(CHARFORMAT2W *pDest, const CHARFORMAT2W *pSrc) DECLSPEC_HIDDEN; /* only works with 2W structs */ | |
85 | void ME_CharFormatFromLogFont(HDC hDC, const LOGFONTW *lf, CHARFORMAT2W *fmt) DECLSPEC_HIDDEN; /* ditto */ | |
d488f3f1 KF |
86 | |
87 | /* list.c */ | |
598a7f6e MM |
88 | void ME_InsertBefore(ME_DisplayItem *diWhere, ME_DisplayItem *diWhat) DECLSPEC_HIDDEN; |
89 | void ME_Remove(ME_DisplayItem *diWhere) DECLSPEC_HIDDEN; | |
90 | BOOL ME_NextRun(ME_DisplayItem **para, ME_DisplayItem **run) DECLSPEC_HIDDEN; | |
91 | BOOL ME_PrevRun(ME_DisplayItem **para, ME_DisplayItem **run) DECLSPEC_HIDDEN; | |
92 | ME_DisplayItem *ME_FindItemBack(ME_DisplayItem *di, ME_DIType nTypeOrClass) DECLSPEC_HIDDEN; | |
93 | ME_DisplayItem *ME_FindItemFwd(ME_DisplayItem *di, ME_DIType nTypeOrClass) DECLSPEC_HIDDEN; | |
94 | ME_DisplayItem *ME_FindItemBackOrHere(ME_DisplayItem *di, ME_DIType nTypeOrClass) DECLSPEC_HIDDEN; | |
95 | ME_DisplayItem *ME_MakeDI(ME_DIType type) DECLSPEC_HIDDEN; | |
96 | void ME_DestroyDisplayItem(ME_DisplayItem *item) DECLSPEC_HIDDEN; | |
97 | void ME_DumpDocument(ME_TextBuffer *buffer) DECLSPEC_HIDDEN; | |
98 | const char *ME_GetDITypeName(ME_DIType type) DECLSPEC_HIDDEN; | |
d488f3f1 KF |
99 | |
100 | /* string.c */ | |
598a7f6e MM |
101 | ME_String *ME_MakeStringN(LPCWSTR szText, int nMaxChars) DECLSPEC_HIDDEN; |
102 | ME_String *ME_MakeStringR(WCHAR cRepeat, int nMaxChars) DECLSPEC_HIDDEN; | |
103 | ME_String *ME_StrDup(const ME_String *s) DECLSPEC_HIDDEN; | |
104 | void ME_DestroyString(ME_String *s) DECLSPEC_HIDDEN; | |
5168d66b | 105 | BOOL ME_AppendString(ME_String *s, const WCHAR *append, int len) DECLSPEC_HIDDEN; |
598a7f6e | 106 | ME_String *ME_VSplitString(ME_String *orig, int nVPos) DECLSPEC_HIDDEN; |
598a7f6e | 107 | int ME_FindNonWhitespaceV(const ME_String *s, int nVChar) DECLSPEC_HIDDEN; |
48b9ab37 | 108 | int ME_CallWordBreakProc(ME_TextEditor *editor, WCHAR *str, INT len, INT start, INT code) DECLSPEC_HIDDEN; |
598a7f6e | 109 | void ME_StrDeleteV(ME_String *s, int nVChar, int nChars) DECLSPEC_HIDDEN; |
5168d66b HD |
110 | BOOL ME_InsertString(ME_String *s, int ofs, const WCHAR *insert, int len) DECLSPEC_HIDDEN; |
111 | ||
d488f3f1 | 112 | /* smart helpers for A<->W conversions, they reserve/free memory and call MultiByte<->WideChar functions */ |
598a7f6e MM |
113 | LPWSTR ME_ToUnicode(BOOL unicode, LPVOID psz) DECLSPEC_HIDDEN; |
114 | void ME_EndToUnicode(BOOL unicode, LPVOID psz) DECLSPEC_HIDDEN; | |
d488f3f1 | 115 | |
f089de1f KF |
116 | static inline int ME_IsWSpace(WCHAR ch) |
117 | { | |
118 | return ch > '\0' && ch <= ' '; | |
119 | } | |
d488f3f1 | 120 | |
805dc748 LZ |
121 | static inline int ME_CharCompare(WCHAR a, WCHAR b, int caseSensitive) |
122 | { | |
123 | return caseSensitive ? (a == b) : (toupperW(a) == toupperW(b)); | |
124 | } | |
125 | ||
d488f3f1 KF |
126 | /* note: those two really return the first matching offset (starting from EOS)+1 |
127 | * in other words, an offset of the first trailing white/black */ | |
598a7f6e MM |
128 | int ME_ReverseFindNonWhitespaceV(const ME_String *s, int nVChar) DECLSPEC_HIDDEN; |
129 | int ME_ReverseFindWhitespaceV(const ME_String *s, int nVChar) DECLSPEC_HIDDEN; | |
d488f3f1 KF |
130 | |
131 | /* row.c */ | |
598a7f6e | 132 | ME_DisplayItem *ME_RowStart(ME_DisplayItem *item) DECLSPEC_HIDDEN; |
ed8379d1 | 133 | /* ME_DisplayItem *ME_RowEnd(ME_DisplayItem *item); */ |
598a7f6e MM |
134 | ME_DisplayItem *ME_FindRowWithNumber(ME_TextEditor *editor, int nRow) DECLSPEC_HIDDEN; |
135 | int ME_RowNumberFromCharOfs(ME_TextEditor *editor, int nOfs) DECLSPEC_HIDDEN; | |
d488f3f1 KF |
136 | |
137 | /* run.c */ | |
5168d66b | 138 | ME_DisplayItem *ME_MakeRun(ME_Style *s, int nFlags) DECLSPEC_HIDDEN; |
d82af6f7 | 139 | ME_DisplayItem *ME_InsertRunAtCursor(ME_TextEditor *editor, ME_Cursor *cursor, |
598a7f6e MM |
140 | ME_Style *style, const WCHAR *str, int len, int flags) DECLSPEC_HIDDEN; |
141 | void ME_CheckCharOffsets(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
142 | void ME_PropagateCharOffset(ME_DisplayItem *p, int shift) DECLSPEC_HIDDEN; | |
d488f3f1 | 143 | /* this one accounts for 1/2 char tolerance */ |
598a7f6e | 144 | int ME_CharFromPointCursor(ME_TextEditor *editor, int cx, ME_Run *run) DECLSPEC_HIDDEN; |
42b0c6ea | 145 | int ME_PointFromCharContext(ME_Context *c, ME_Run *pRun, int nOffset) DECLSPEC_HIDDEN; |
598a7f6e MM |
146 | int ME_PointFromChar(ME_TextEditor *editor, ME_Run *pRun, int nOffset) DECLSPEC_HIDDEN; |
147 | int ME_CanJoinRuns(const ME_Run *run1, const ME_Run *run2) DECLSPEC_HIDDEN; | |
148 | void ME_JoinRuns(ME_TextEditor *editor, ME_DisplayItem *p) DECLSPEC_HIDDEN; | |
598a7f6e MM |
149 | ME_DisplayItem *ME_SplitRunSimple(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN; |
150 | void ME_UpdateRunFlags(ME_TextEditor *editor, ME_Run *run) DECLSPEC_HIDDEN; | |
c07212b3 HD |
151 | SIZE ME_GetRunSizeCommon(ME_Context *c, const ME_Paragraph *para, ME_Run *run, int nLen, |
152 | int startx, int *pAscent, int *pDescent) DECLSPEC_HIDDEN; | |
598a7f6e MM |
153 | SIZE ME_GetRunSize(ME_Context *c, const ME_Paragraph *para, ME_Run *run, int nLen, int startx) DECLSPEC_HIDDEN; |
154 | void ME_CursorFromCharOfs(ME_TextEditor *editor, int nCharOfs, ME_Cursor *pCursor) DECLSPEC_HIDDEN; | |
155 | void ME_RunOfsFromCharOfs(ME_TextEditor *editor, int nCharOfs, ME_DisplayItem **ppPara, ME_DisplayItem **ppRun, int *pOfs) DECLSPEC_HIDDEN; | |
156 | int ME_CharOfsFromRunOfs(ME_TextEditor *editor, const ME_DisplayItem *pPara, const ME_DisplayItem *pRun, int nOfs) DECLSPEC_HIDDEN; | |
157 | void ME_SkipAndPropagateCharOffset(ME_DisplayItem *p, int shift) DECLSPEC_HIDDEN; | |
158 | void ME_SetCharFormat(ME_TextEditor *editor, ME_Cursor *start, ME_Cursor *end, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN; | |
159 | void ME_SetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN; | |
ade37203 | 160 | void ME_GetCharFormat(ME_TextEditor *editor, const ME_Cursor *from, |
598a7f6e MM |
161 | const ME_Cursor *to, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN; |
162 | void ME_GetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN; | |
163 | void ME_GetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN; | |
164 | void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod) DECLSPEC_HIDDEN; | |
d488f3f1 KF |
165 | |
166 | /* caret.c */ | |
598a7f6e MM |
167 | void ME_SetCursorToStart(ME_TextEditor *editor, ME_Cursor *cursor) DECLSPEC_HIDDEN; |
168 | int ME_SetSelection(ME_TextEditor *editor, int from, int to) DECLSPEC_HIDDEN; | |
169 | void ME_HideCaret(ME_TextEditor *ed) DECLSPEC_HIDDEN; | |
170 | void ME_ShowCaret(ME_TextEditor *ed) DECLSPEC_HIDDEN; | |
171 | void ME_MoveCaret(ME_TextEditor *ed) DECLSPEC_HIDDEN; | |
172 | BOOL ME_CharFromPos(ME_TextEditor *editor, int x, int y, ME_Cursor *cursor, BOOL *isExact) DECLSPEC_HIDDEN; | |
173 | void ME_LButtonDown(ME_TextEditor *editor, int x, int y, int clickNum) DECLSPEC_HIDDEN; | |
174 | void ME_MouseMove(ME_TextEditor *editor, int x, int y) DECLSPEC_HIDDEN; | |
175 | BOOL ME_DeleteTextAtCursor(ME_TextEditor *editor, int nCursor, int nChars) DECLSPEC_HIDDEN; | |
d488f3f1 | 176 | void ME_InsertTextFromCursor(ME_TextEditor *editor, int nCursor, |
598a7f6e MM |
177 | const WCHAR *str, int len, ME_Style *style) DECLSPEC_HIDDEN; |
178 | void ME_InsertEndRowFromCursor(ME_TextEditor *editor, int nCursor) DECLSPEC_HIDDEN; | |
179 | int ME_MoveCursorChars(ME_TextEditor *editor, ME_Cursor *cursor, int nRelOfs) DECLSPEC_HIDDEN; | |
180 | BOOL ME_ArrowKey(ME_TextEditor *ed, int nVKey, BOOL extend, BOOL ctrl) DECLSPEC_HIDDEN; | |
181 | ||
182 | int ME_GetCursorOfs(const ME_Cursor *cursor) DECLSPEC_HIDDEN; | |
183 | int ME_GetSelectionOfs(ME_TextEditor *editor, int *from, int *to) DECLSPEC_HIDDEN; | |
184 | int ME_GetSelection(ME_TextEditor *editor, ME_Cursor **from, ME_Cursor **to) DECLSPEC_HIDDEN; | |
185 | BOOL ME_IsSelection(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
186 | void ME_DeleteSelection(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
187 | void ME_SendSelChange(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
188 | void ME_InsertOLEFromCursor(ME_TextEditor *editor, const REOBJECT* reo, int nCursor) DECLSPEC_HIDDEN; | |
189 | BOOL ME_InternalDeleteText(ME_TextEditor *editor, ME_Cursor *start, int nChars, BOOL bForce) DECLSPEC_HIDDEN; | |
190 | int ME_GetTextLength(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
191 | int ME_GetTextLengthEx(ME_TextEditor *editor, const GETTEXTLENGTHEX *how) DECLSPEC_HIDDEN; | |
192 | ME_Style *ME_GetSelectionInsertStyle(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
d488f3f1 | 193 | |
10e676ab | 194 | /* context.c */ |
598a7f6e MM |
195 | void ME_InitContext(ME_Context *c, ME_TextEditor *editor, HDC hDC) DECLSPEC_HIDDEN; |
196 | void ME_DestroyContext(ME_Context *c) DECLSPEC_HIDDEN; | |
10e676ab | 197 | |
d488f3f1 | 198 | /* wrap.c */ |
598a7f6e | 199 | BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor) DECLSPEC_HIDDEN; |
10d800b6 | 200 | void ME_InvalidateParagraphRange(ME_TextEditor *editor, ME_DisplayItem *start_para, ME_DisplayItem *last_para) DECLSPEC_HIDDEN; |
598a7f6e | 201 | void ME_SendRequestResize(ME_TextEditor *editor, BOOL force) DECLSPEC_HIDDEN; |
d488f3f1 KF |
202 | |
203 | /* para.c */ | |
598a7f6e MM |
204 | ME_DisplayItem *ME_GetParagraph(ME_DisplayItem *run) DECLSPEC_HIDDEN; |
205 | void ME_GetSelectionParas(ME_TextEditor *editor, ME_DisplayItem **para, ME_DisplayItem **para_end) DECLSPEC_HIDDEN; | |
206 | void ME_MakeFirstParagraph(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
872a2ad0 | 207 | ME_DisplayItem *ME_SplitParagraph(ME_TextEditor *editor, ME_DisplayItem *rp, ME_Style *style, const WCHAR *eol_str, int eol_len, int paraFlags) DECLSPEC_HIDDEN; |
4e56a3cd | 208 | ME_DisplayItem *ME_JoinParagraphs(ME_TextEditor *editor, ME_DisplayItem *tp, |
598a7f6e MM |
209 | BOOL keepFirstParaFormat) DECLSPEC_HIDDEN; |
210 | void ME_DumpParaStyle(ME_Paragraph *s) DECLSPEC_HIDDEN; | |
211 | void ME_DumpParaStyleToBuf(const PARAFORMAT2 *pFmt, char buf[2048]) DECLSPEC_HIDDEN; | |
212 | BOOL ME_SetSelectionParaFormat(ME_TextEditor *editor, const PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN; | |
213 | void ME_GetSelectionParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN; | |
598a7f6e MM |
214 | void ME_MarkAllForWrapping(ME_TextEditor *editor) DECLSPEC_HIDDEN; |
215 | void ME_SetDefaultParaFormat(PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN; | |
d488f3f1 KF |
216 | |
217 | /* paint.c */ | |
18fa3287 | 218 | void ME_PaintContent(ME_TextEditor *editor, HDC hDC, const RECT *rcUpdate) DECLSPEC_HIDDEN; |
598a7f6e MM |
219 | void ME_Repaint(ME_TextEditor *editor) DECLSPEC_HIDDEN; |
220 | void ME_RewrapRepaint(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
221 | void ME_UpdateRepaint(ME_TextEditor *editor, BOOL update_now) DECLSPEC_HIDDEN; | |
222 | void ME_EnsureVisible(ME_TextEditor *editor, ME_Cursor *pCursor) DECLSPEC_HIDDEN; | |
223 | void ME_InvalidateSelection(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
224 | BOOL ME_SetZoom(ME_TextEditor *editor, int numerator, int denominator) DECLSPEC_HIDDEN; | |
28cb0b68 TF |
225 | int ME_twips2pointsX(const ME_Context *c, int x) DECLSPEC_HIDDEN; |
226 | int ME_twips2pointsY(const ME_Context *c, int y) DECLSPEC_HIDDEN; | |
d488f3f1 | 227 | |
abecd9e3 MF |
228 | /* scroll functions in paint.c */ |
229 | ||
598a7f6e MM |
230 | void ME_ScrollAbs(ME_TextEditor *editor, int x, int y) DECLSPEC_HIDDEN; |
231 | void ME_HScrollAbs(ME_TextEditor *editor, int x) DECLSPEC_HIDDEN; | |
232 | void ME_VScrollAbs(ME_TextEditor *editor, int y) DECLSPEC_HIDDEN; | |
233 | void ME_ScrollUp(ME_TextEditor *editor, int cy) DECLSPEC_HIDDEN; | |
234 | void ME_ScrollDown(ME_TextEditor *editor, int cy) DECLSPEC_HIDDEN; | |
235 | void ME_ScrollLeft(ME_TextEditor *editor, int cx) DECLSPEC_HIDDEN; | |
236 | void ME_ScrollRight(ME_TextEditor *editor, int cx) DECLSPEC_HIDDEN; | |
237 | void ME_UpdateScrollBar(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
abecd9e3 | 238 | |
caa37c74 | 239 | /* other functions in paint.c */ |
28cb0b68 | 240 | int ME_GetParaBorderWidth(const ME_Context *c, int flags) DECLSPEC_HIDDEN; |
caa37c74 | 241 | |
214b897b | 242 | /* richole.c */ |
598a7f6e MM |
243 | LRESULT CreateIRichEditOle(ME_TextEditor *editor, LPVOID *) DECLSPEC_HIDDEN; |
244 | void ME_DrawOLE(ME_Context *c, int x, int y, ME_Run* run, ME_Paragraph *para, BOOL selected) DECLSPEC_HIDDEN; | |
28cb0b68 | 245 | void ME_GetOLEObjectSize(const ME_Context *c, ME_Run *run, SIZE *pSize) DECLSPEC_HIDDEN; |
598a7f6e MM |
246 | void ME_CopyReObject(REOBJECT* dst, const REOBJECT* src) DECLSPEC_HIDDEN; |
247 | void ME_DeleteReObject(REOBJECT* reo) DECLSPEC_HIDDEN; | |
214b897b | 248 | |
d488f3f1 | 249 | /* editor.c */ |
598a7f6e | 250 | ME_TextEditor *ME_MakeEditor(ITextHost *texthost, BOOL bEmulateVersion10) DECLSPEC_HIDDEN; |
e7b68a20 | 251 | LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, |
598a7f6e MM |
252 | LPARAM lParam, BOOL unicode, HRESULT* phresult) DECLSPEC_HIDDEN; |
253 | void ME_SendOldNotify(ME_TextEditor *editor, int nCode) DECLSPEC_HIDDEN; | |
82e10210 | 254 | int ME_GetTextW(ME_TextEditor *editor, WCHAR *buffer, int buflen, |
598a7f6e MM |
255 | const ME_Cursor *start, int srcChars, BOOL bCRLF) DECLSPEC_HIDDEN; |
256 | void ME_RTFCharAttrHook(struct _RTF_Info *info) DECLSPEC_HIDDEN; | |
257 | void ME_RTFParAttrHook(struct _RTF_Info *info) DECLSPEC_HIDDEN; | |
258 | void ME_RTFTblAttrHook(struct _RTF_Info *info) DECLSPEC_HIDDEN; | |
259 | void ME_RTFSpecialCharHook(struct _RTF_Info *info) DECLSPEC_HIDDEN; | |
260 | void ME_StreamInFill(ME_InStream *stream) DECLSPEC_HIDDEN; | |
261 | extern int me_debug DECLSPEC_HIDDEN; | |
c6ea6cae | 262 | |
bf5ccefc | 263 | /* table.c */ |
598a7f6e MM |
264 | BOOL ME_IsInTable(ME_DisplayItem *pItem) DECLSPEC_HIDDEN; |
265 | ME_DisplayItem *ME_InsertTableRowStartFromCursor(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
300db376 | 266 | ME_DisplayItem *ME_InsertTableRowStartAtParagraph(ME_TextEditor *editor, |
598a7f6e MM |
267 | ME_DisplayItem *para) DECLSPEC_HIDDEN; |
268 | ME_DisplayItem *ME_InsertTableCellFromCursor(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
269 | ME_DisplayItem *ME_InsertTableRowEndFromCursor(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
270 | ME_DisplayItem *ME_GetTableRowEnd(ME_DisplayItem *para) DECLSPEC_HIDDEN; | |
271 | ME_DisplayItem *ME_GetTableRowStart(ME_DisplayItem *para) DECLSPEC_HIDDEN; | |
10d800b6 | 272 | ME_DisplayItem *ME_GetOuterParagraph(ME_DisplayItem *para) DECLSPEC_HIDDEN; |
598a7f6e MM |
273 | void ME_CheckTablesForCorruption(ME_TextEditor *editor) DECLSPEC_HIDDEN; |
274 | void ME_ProtectPartialTableDeletion(ME_TextEditor *editor, ME_Cursor *c, int *nChars) DECLSPEC_HIDDEN; | |
275 | ME_DisplayItem* ME_AppendTableRow(ME_TextEditor *editor, ME_DisplayItem *table_row) DECLSPEC_HIDDEN; | |
276 | void ME_TabPressedInTable(ME_TextEditor *editor, BOOL bSelectedRow) DECLSPEC_HIDDEN; | |
277 | void ME_MoveCursorFromTableRowStartParagraph(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
278 | struct RTFTable *ME_MakeTableDef(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
279 | void ME_InitTableDef(ME_TextEditor *editor, struct RTFTable *tableDef) DECLSPEC_HIDDEN; | |
bf5ccefc | 280 | |
6c4dda00 | 281 | /* txthost.c */ |
598a7f6e | 282 | ITextHost *ME_CreateTextHost(HWND hwnd, CREATESTRUCTW *cs, BOOL bEmulateVersion10) DECLSPEC_HIDDEN; |
6c4dda00 DS |
283 | #ifdef __i386__ /* Use wrappers to perform thiscall on i386 */ |
284 | #define TXTHOST_VTABLE(This) (&itextHostStdcallVtbl) | |
285 | #else /* __i386__ */ | |
286 | #define TXTHOST_VTABLE(This) (This)->lpVtbl | |
287 | #endif /* __i386__ */ | |
288 | /*** ITextHost methods ***/ | |
289 | #define ITextHost_TxGetDC(This) TXTHOST_VTABLE(This)->TxGetDC(This) | |
290 | #define ITextHost_TxReleaseDC(This,a) TXTHOST_VTABLE(This)->TxReleaseDC(This,a) | |
291 | #define ITextHost_TxShowScrollBar(This,a,b) TXTHOST_VTABLE(This)->TxShowScrollBar(This,a,b) | |
292 | #define ITextHost_TxEnableScrollBar(This,a,b) TXTHOST_VTABLE(This)->TxEnableScrollBar(This,a,b) | |
293 | #define ITextHost_TxSetScrollRange(This,a,b,c,d) TXTHOST_VTABLE(This)->TxSetScrollRange(This,a,b,c,d) | |
294 | #define ITextHost_TxSetScrollPos(This,a,b,c) TXTHOST_VTABLE(This)->TxSetScrollPos(This,a,b,c) | |
295 | #define ITextHost_TxInvalidateRect(This,a,b) TXTHOST_VTABLE(This)->TxInvalidateRect(This,a,b) | |
296 | #define ITextHost_TxViewChange(This,a) TXTHOST_VTABLE(This)->TxViewChange(This,a) | |
297 | #define ITextHost_TxCreateCaret(This,a,b,c) TXTHOST_VTABLE(This)->TxCreateCaret(This,a,b,c) | |
298 | #define ITextHost_TxShowCaret(This,a) TXTHOST_VTABLE(This)->TxShowCaret(This,a) | |
299 | #define ITextHost_TxSetCaretPos(This,a,b) TXTHOST_VTABLE(This)->TxSetCaretPos(This,a,b) | |
300 | #define ITextHost_TxSetTimer(This,a,b) TXTHOST_VTABLE(This)->TxSetTimer(This,a,b) | |
301 | #define ITextHost_TxKillTimer(This,a) TXTHOST_VTABLE(This)->TxKillTimer(This,a) | |
302 | #define ITextHost_TxScrollWindowEx(This,a,b,c,d,e,f,g) TXTHOST_VTABLE(This)->TxScrollWindowEx(This,a,b,c,d,e,f,g) | |
303 | #define ITextHost_TxSetCapture(This,a) TXTHOST_VTABLE(This)->TxSetCapture(This,a) | |
304 | #define ITextHost_TxSetFocus(This) TXTHOST_VTABLE(This)->TxSetFocus(This) | |
305 | #define ITextHost_TxSetCursor(This,a,b) TXTHOST_VTABLE(This)->TxSetCursor(This,a,b) | |
306 | #define ITextHost_TxScreenToClient(This,a) TXTHOST_VTABLE(This)->TxScreenToClient(This,a) | |
307 | #define ITextHost_TxClientToScreen(This,a) TXTHOST_VTABLE(This)->TxClientToScreen(This,a) | |
308 | #define ITextHost_TxActivate(This,a) TXTHOST_VTABLE(This)->TxActivate(This,a) | |
309 | #define ITextHost_TxDeactivate(This,a) TXTHOST_VTABLE(This)->TxDeactivate(This,a) | |
310 | #define ITextHost_TxGetClientRect(This,a) TXTHOST_VTABLE(This)->TxGetClientRect(This,a) | |
311 | #define ITextHost_TxGetViewInset(This,a) TXTHOST_VTABLE(This)->TxGetViewInset(This,a) | |
312 | #define ITextHost_TxGetCharFormat(This,a) TXTHOST_VTABLE(This)->TxGetCharFormat(This,a) | |
313 | #define ITextHost_TxGetParaFormat(This,a) TXTHOST_VTABLE(This)->TxGetParaFormat(This,a) | |
314 | #define ITextHost_TxGetSysColor(This,a) TXTHOST_VTABLE(This)->TxGetSysColor(This,a) | |
315 | #define ITextHost_TxGetBackStyle(This,a) TXTHOST_VTABLE(This)->TxGetBackStyle(This,a) | |
316 | #define ITextHost_TxGetMaxLength(This,a) TXTHOST_VTABLE(This)->TxGetMaxLength(This,a) | |
317 | #define ITextHost_TxGetScrollBars(This,a) TXTHOST_VTABLE(This)->TxGetScrollBars(This,a) | |
318 | #define ITextHost_TxGetPasswordChar(This,a) TXTHOST_VTABLE(This)->TxGetPasswordChar(This,a) | |
319 | #define ITextHost_TxGetAcceleratorPos(This,a) TXTHOST_VTABLE(This)->TxGetAcceleratorPos(This,a) | |
320 | #define ITextHost_TxGetExtent(This,a) TXTHOST_VTABLE(This)->TxGetExtent(This,a) | |
321 | #define ITextHost_OnTxCharFormatChange(This,a) TXTHOST_VTABLE(This)->OnTxCharFormatChange(This,a) | |
322 | #define ITextHost_OnTxParaFormatChange(This,a) TXTHOST_VTABLE(This)->OnTxParaFormatChange(This,a) | |
323 | #define ITextHost_TxGetPropertyBits(This,a,b) TXTHOST_VTABLE(This)->TxGetPropertyBits(This,a,b) | |
324 | #define ITextHost_TxNotify(This,a,b) TXTHOST_VTABLE(This)->TxNotify(This,a,b) | |
325 | #define ITextHost_TxImmGetContext(This) TXTHOST_VTABLE(This)->TxImmGetContext(This) | |
326 | #define ITextHost_TxImmReleaseContext(This,a) TXTHOST_VTABLE(This)->TxImmReleaseContext(This,a) | |
327 | #define ITextHost_TxGetSelectionBarWidth(This,a) TXTHOST_VTABLE(This)->TxGetSelectionBarWidth(This,a) | |
328 | ||
10e676ab | 329 | /* undo.c */ |
dee40e90 HD |
330 | BOOL add_undo_insert_run( ME_TextEditor *, int pos, const WCHAR *str, int len, int flags, ME_Style *style ) DECLSPEC_HIDDEN; |
331 | BOOL add_undo_delete_run( ME_TextEditor *, int pos, int len ) DECLSPEC_HIDDEN; | |
332 | BOOL add_undo_set_para_fmt( ME_TextEditor *, const ME_Paragraph *para ) DECLSPEC_HIDDEN; | |
333 | BOOL add_undo_set_char_fmt( ME_TextEditor *, int pos, int len, const CHARFORMAT2W *fmt ) DECLSPEC_HIDDEN; | |
334 | BOOL add_undo_join_paras( ME_TextEditor *, int pos ) DECLSPEC_HIDDEN; | |
5168d66b | 335 | BOOL add_undo_split_para( ME_TextEditor *, const ME_Paragraph *para, ME_String *eol_str, const ME_Cell *cell) DECLSPEC_HIDDEN; |
598a7f6e MM |
336 | void ME_CommitUndo(ME_TextEditor *editor) DECLSPEC_HIDDEN; |
337 | void ME_ContinueCoalescingTransaction(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
338 | void ME_CommitCoalescingUndo(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
339 | BOOL ME_Undo(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
340 | BOOL ME_Redo(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
341 | void ME_EmptyUndoStack(ME_TextEditor *editor) DECLSPEC_HIDDEN; | |
10e676ab | 342 | |
c6ea6cae | 343 | /* writer.c */ |
598a7f6e MM |
344 | LRESULT ME_StreamOutRange(ME_TextEditor *editor, DWORD dwFormat, const ME_Cursor *start, int nChars, EDITSTREAM *stream) DECLSPEC_HIDDEN; |
345 | LRESULT ME_StreamOut(ME_TextEditor *editor, DWORD dwFormat, EDITSTREAM *stream) DECLSPEC_HIDDEN; | |
a1324584 KK |
346 | |
347 | /* clipboard.c */ | |
598a7f6e | 348 | HRESULT ME_GetDataObject(ME_TextEditor *editor, const ME_Cursor *start, int nChars, LPDATAOBJECT *lplpdataobj) DECLSPEC_HIDDEN; |