Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(120)

Side by Side Diff: fpdfsdk/src/fxedit/fxet_edit.cpp

Issue 1243953004: Re-land else-after-returns (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/src/fsdk_rendercontext.cpp ('k') | fpdfsdk/src/javascript/Document.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../include/fxedit/fxet_stub.h" 7 #include "../../include/fxedit/fxet_stub.h"
8 #include "../../include/fxedit/fxet_edit.h" 8 #include "../../include/fxedit/fxet_edit.h"
9 9
10 #define FX_EDIT_UNDO_MAXITEM» » » » 10000 10 #define FX_EDIT_UNDO_MAXITEM 10000
11 11
12 /* ---------------------------- CFX_Edit_Iterator ---------------------------- * / 12 /* ---------------------------- CFX_Edit_Iterator ---------------------------- * /
13 13
14 CFX_Edit_Iterator::CFX_Edit_Iterator(CFX_Edit * pEdit,IPDF_VariableText_Iterator * pVTIterator) : 14 CFX_Edit_Iterator::CFX_Edit_Iterator(CFX_Edit * pEdit,IPDF_VariableText_Iterator * pVTIterator) :
15 » m_pEdit(pEdit), 15 m_pEdit(pEdit),
16 » m_pVTIterator(pVTIterator) 16 m_pVTIterator(pVTIterator)
17 { 17 {
18 } 18 }
19 19
20 CFX_Edit_Iterator::~CFX_Edit_Iterator() 20 CFX_Edit_Iterator::~CFX_Edit_Iterator()
21 { 21 {
22 } 22 }
23 23
24 FX_BOOL»CFX_Edit_Iterator::NextWord() 24 FX_BOOL CFX_Edit_Iterator::NextWord()
25 { 25 {
26 » ASSERT(m_pVTIterator != NULL); 26 return m_pVTIterator->NextWord();
27
28 » return m_pVTIterator->NextWord();
29 } 27 }
30 28
31 FX_BOOL CFX_Edit_Iterator::NextLine() 29 FX_BOOL CFX_Edit_Iterator::NextLine()
32 { 30 {
33 » ASSERT(m_pVTIterator != NULL); 31 return m_pVTIterator->NextLine();
34
35 » return m_pVTIterator->NextLine();
36 } 32 }
37 33
38 FX_BOOL CFX_Edit_Iterator::NextSection() 34 FX_BOOL CFX_Edit_Iterator::NextSection()
39 { 35 {
40 » ASSERT(m_pVTIterator != NULL); 36 return m_pVTIterator->NextSection();
41
42 » return m_pVTIterator->NextSection();
43 } 37 }
44 38
45 FX_BOOL»CFX_Edit_Iterator::PrevWord() 39 FX_BOOL CFX_Edit_Iterator::PrevWord()
46 { 40 {
47 » ASSERT(m_pVTIterator != NULL); 41 return m_pVTIterator->PrevWord();
48
49 » return m_pVTIterator->PrevWord();
50 } 42 }
51 43
52 FX_BOOL»CFX_Edit_Iterator::PrevLine() 44 FX_BOOL CFX_Edit_Iterator::PrevLine()
53 { 45 {
54 » ASSERT(m_pVTIterator != NULL); 46 return m_pVTIterator->PrevLine();
55
56 » return m_pVTIterator->PrevLine();
57 } 47 }
58 48
59 FX_BOOL»CFX_Edit_Iterator::PrevSection() 49 FX_BOOL CFX_Edit_Iterator::PrevSection()
60 { 50 {
61 » ASSERT(m_pVTIterator != NULL); 51 return m_pVTIterator->PrevSection();
62
63 » return m_pVTIterator->PrevSection();
64 } 52 }
65 53
66 FX_BOOL CFX_Edit_Iterator::GetWord(CPVT_Word & word) const 54 FX_BOOL CFX_Edit_Iterator::GetWord(CPVT_Word & word) const
67 { 55 {
68 » ASSERT(m_pEdit != NULL); 56 ASSERT(m_pEdit);
69 » ASSERT(m_pVTIterator != NULL);
70 57
71 » if (m_pVTIterator->GetWord(word)) 58 if (m_pVTIterator->GetWord(word))
72 » { 59 {
73 » » word.ptWord = m_pEdit->VTToEdit(word.ptWord); 60 word.ptWord = m_pEdit->VTToEdit(word.ptWord);
74 » » return TRUE; 61 return TRUE;
75 » } 62 }
76 63 return FALSE;
77 » return FALSE;
78 } 64 }
79 65
80 FX_BOOL CFX_Edit_Iterator::GetLine(CPVT_Line & line) const 66 FX_BOOL CFX_Edit_Iterator::GetLine(CPVT_Line & line) const
81 { 67 {
82 » ASSERT(m_pEdit != NULL); 68 ASSERT(m_pEdit);
83 » ASSERT(m_pVTIterator != NULL);
84 69
85 » if (m_pVTIterator->GetLine(line)) 70 if (m_pVTIterator->GetLine(line))
86 » { 71 {
87 » » line.ptLine = m_pEdit->VTToEdit(line.ptLine); 72 line.ptLine = m_pEdit->VTToEdit(line.ptLine);
88 » » return TRUE; 73 return TRUE;
89 » } 74 }
90 75 return FALSE;
91 » return FALSE;
92 } 76 }
93 77
94 FX_BOOL CFX_Edit_Iterator::GetSection(CPVT_Section & section) const 78 FX_BOOL CFX_Edit_Iterator::GetSection(CPVT_Section & section) const
95 { 79 {
96 » ASSERT(m_pEdit != NULL); 80 ASSERT(m_pEdit);
97 » ASSERT(m_pVTIterator != NULL);
98 81
99 » if (m_pVTIterator->GetSection(section)) 82 if (m_pVTIterator->GetSection(section))
100 » { 83 {
101 » » section.rcSection = m_pEdit->VTToEdit(section.rcSection); 84 section.rcSection = m_pEdit->VTToEdit(section.rcSection);
102 » » return TRUE; 85 return TRUE;
103 » } 86 }
104 87 return FALSE;
105 » return FALSE;
106 } 88 }
107 89
108 void CFX_Edit_Iterator::SetAt(int32_t nWordIndex) 90 void CFX_Edit_Iterator::SetAt(int32_t nWordIndex)
109 { 91 {
110 » ASSERT(m_pVTIterator != NULL); 92 m_pVTIterator->SetAt(nWordIndex);
111
112 » m_pVTIterator->SetAt(nWordIndex);
113 } 93 }
114 94
115 void CFX_Edit_Iterator::SetAt(const CPVT_WordPlace & place) 95 void CFX_Edit_Iterator::SetAt(const CPVT_WordPlace & place)
116 { 96 {
117 » ASSERT(m_pVTIterator != NULL); 97 m_pVTIterator->SetAt(place);
118
119 » m_pVTIterator->SetAt(place);
120 } 98 }
121 99
122 const CPVT_WordPlace & CFX_Edit_Iterator::GetAt() const 100 const CPVT_WordPlace & CFX_Edit_Iterator::GetAt() const
123 { 101 {
124 » ASSERT(m_pVTIterator != NULL); 102 return m_pVTIterator->GetAt();
125
126 » return m_pVTIterator->GetAt();
127 } 103 }
128 104
129 IFX_Edit* CFX_Edit_Iterator::GetEdit() const 105 IFX_Edit* CFX_Edit_Iterator::GetEdit() const
130 { 106 {
131 » return m_pEdit; 107 return m_pEdit;
132 } 108 }
133 109
134 /* --------------------------- CFX_Edit_Provider ------------------------------- */ 110 /* --------------------------- CFX_Edit_Provider ------------------------------- */
135 111
136 CFX_Edit_Provider::CFX_Edit_Provider(IFX_Edit_FontMap * pFontMap) : m_pFontMap(p FontMap) 112 CFX_Edit_Provider::CFX_Edit_Provider(IFX_Edit_FontMap * pFontMap) : m_pFontMap(p FontMap)
137 { 113 {
138 » ASSERT(m_pFontMap != NULL); 114 ASSERT(m_pFontMap != NULL);
139 } 115 }
140 116
141 CFX_Edit_Provider::~CFX_Edit_Provider() 117 CFX_Edit_Provider::~CFX_Edit_Provider()
142 { 118 {
143 } 119 }
144 120
145 IFX_Edit_FontMap* CFX_Edit_Provider::GetFontMap() 121 IFX_Edit_FontMap* CFX_Edit_Provider::GetFontMap()
146 { 122 {
147 » return m_pFontMap; 123 return m_pFontMap;
148 } 124 }
149 125
150 int32_t CFX_Edit_Provider::GetCharWidth(int32_t nFontIndex, FX_WORD word, int32_ t nWordStyle) 126 int32_t CFX_Edit_Provider::GetCharWidth(int32_t nFontIndex, FX_WORD word, int32_ t nWordStyle)
151 { 127 {
152 » if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) 128 if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex))
153 » { 129 {
154 » » FX_DWORD charcode = word; 130 FX_DWORD charcode = word;
155 131
156 » » if (pPDFFont->IsUnicodeCompatible()) 132 if (pPDFFont->IsUnicodeCompatible())
157 » » » charcode = pPDFFont->CharCodeFromUnicode(word); 133 charcode = pPDFFont->CharCodeFromUnicode(word);
158 » » else 134 else
159 » » » charcode = m_pFontMap->CharCodeFromUnicode(nFontIndex, w ord); 135 charcode = m_pFontMap->CharCodeFromUnicode(nFontIndex, word);
160 136
161 » » if (charcode != -1) 137 if (charcode != -1)
162 » » » return pPDFFont->GetCharWidthF(charcode); 138 return pPDFFont->GetCharWidthF(charcode);
163 » } 139 }
164 140
165 » return 0; 141 return 0;
166 } 142 }
167 143
168 int32_t CFX_Edit_Provider::GetTypeAscent(int32_t nFontIndex) 144 int32_t CFX_Edit_Provider::GetTypeAscent(int32_t nFontIndex)
169 { 145 {
170 » if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) 146 if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex))
171 » » return pPDFFont->GetTypeAscent(); 147 return pPDFFont->GetTypeAscent();
172 148
173 » return 0; 149 return 0;
174 } 150 }
175 151
176 int32_t CFX_Edit_Provider::GetTypeDescent(int32_t nFontIndex) 152 int32_t CFX_Edit_Provider::GetTypeDescent(int32_t nFontIndex)
177 { 153 {
178 » if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) 154 if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex))
179 » » return pPDFFont->GetTypeDescent(); 155 return pPDFFont->GetTypeDescent();
180 156
181 » return 0; 157 return 0;
182 } 158 }
183 159
184 int32_t CFX_Edit_Provider::GetWordFontIndex(FX_WORD word, int32_t charset, int32 _t nFontIndex) 160 int32_t CFX_Edit_Provider::GetWordFontIndex(FX_WORD word, int32_t charset, int32 _t nFontIndex)
185 { 161 {
186 » return m_pFontMap->GetWordFontIndex(word,charset,nFontIndex); 162 return m_pFontMap->GetWordFontIndex(word,charset,nFontIndex);
187 } 163 }
188 164
189 int32_t CFX_Edit_Provider::GetDefaultFontIndex() 165 int32_t CFX_Edit_Provider::GetDefaultFontIndex()
190 { 166 {
191 » return 0; 167 return 0;
192 } 168 }
193 169
194 FX_BOOL»CFX_Edit_Provider::IsLatinWord(FX_WORD word) 170 FX_BOOL CFX_Edit_Provider::IsLatinWord(FX_WORD word)
195 { 171 {
196 » return FX_EDIT_ISLATINWORD(word); 172 return FX_EDIT_ISLATINWORD(word);
197 } 173 }
198 174
199 /* --------------------------------- CFX_Edit_Refresh -------------------------- ------- */ 175 /* --------------------------------- CFX_Edit_Refresh -------------------------- ------- */
200 176
201 CFX_Edit_Refresh::CFX_Edit_Refresh() 177 CFX_Edit_Refresh::CFX_Edit_Refresh()
202 { 178 {
203 } 179 }
204 180
205 CFX_Edit_Refresh::~CFX_Edit_Refresh() 181 CFX_Edit_Refresh::~CFX_Edit_Refresh()
206 { 182 {
207 } 183 }
208 184
209 void CFX_Edit_Refresh::BeginRefresh() 185 void CFX_Edit_Refresh::BeginRefresh()
210 { 186 {
211 » m_RefreshRects.Empty(); 187 m_RefreshRects.Empty();
212 » m_OldLineRects = m_NewLineRects; 188 m_OldLineRects = m_NewLineRects;
213 } 189 }
214 190
215 void CFX_Edit_Refresh::Push(const CPVT_WordRange & linerange,const CPDF_Rect & r ect) 191 void CFX_Edit_Refresh::Push(const CPVT_WordRange & linerange,const CPDF_Rect & r ect)
216 { 192 {
217 » m_NewLineRects.Add(linerange,rect); 193 m_NewLineRects.Add(linerange,rect);
218 } 194 }
219 195
220 void CFX_Edit_Refresh::NoAnalyse() 196 void CFX_Edit_Refresh::NoAnalyse()
221 { 197 {
222 » { 198 {
223 » » for (int32_t i = 0, sz = m_OldLineRects.GetSize(); i < sz; i++) 199 for (int32_t i = 0, sz = m_OldLineRects.GetSize(); i < sz; i++)
224 » » » if (CFX_Edit_LineRect * pOldRect = m_OldLineRects.GetAt( i)) 200 if (CFX_Edit_LineRect * pOldRect = m_OldLineRects.GetAt(i))
225 » » » » m_RefreshRects.Add(pOldRect->m_rcLine); 201 m_RefreshRects.Add(pOldRect->m_rcLine);
226 » } 202 }
227 203
228 » { 204 {
229 » » for (int32_t i = 0, sz = m_NewLineRects.GetSize(); i < sz; i++) 205 for (int32_t i = 0, sz = m_NewLineRects.GetSize(); i < sz; i++)
230 » » » if (CFX_Edit_LineRect * pNewRect = m_NewLineRects.GetAt( i)) 206 if (CFX_Edit_LineRect * pNewRect = m_NewLineRects.GetAt(i))
231 » » » » m_RefreshRects.Add(pNewRect->m_rcLine); 207 m_RefreshRects.Add(pNewRect->m_rcLine);
232 » } 208 }
233 } 209 }
234 210
235 void CFX_Edit_Refresh::Analyse(int32_t nAlignment) 211 void CFX_Edit_Refresh::Analyse(int32_t nAlignment)
236 { 212 {
237 » FX_BOOL bLineTopChanged = FALSE; 213 FX_BOOL bLineTopChanged = FALSE;
238 » CPDF_Rect rcResult; 214 CPDF_Rect rcResult;
239 » FX_FLOAT fWidthDiff; 215 FX_FLOAT fWidthDiff;
240 216
241 » int32_t szMax = FX_EDIT_MAX(m_OldLineRects.GetSize(),m_NewLineRects.GetS ize()); 217 int32_t szMax = FX_EDIT_MAX(m_OldLineRects.GetSize(),m_NewLineRects.GetSize( ));
242 » int32_t i = 0; 218 int32_t i = 0;
243 219
244 » while (i < szMax) 220 while (i < szMax)
245 » { 221 {
246 » » CFX_Edit_LineRect * pOldRect = m_OldLineRects.GetAt(i); 222 CFX_Edit_LineRect * pOldRect = m_OldLineRects.GetAt(i);
247 » » CFX_Edit_LineRect * pNewRect = m_NewLineRects.GetAt(i); 223 CFX_Edit_LineRect * pNewRect = m_NewLineRects.GetAt(i);
248 224
249 » » if (pOldRect) 225 if (pOldRect)
250 » » { 226 {
251 » » » if (pNewRect) 227 if (pNewRect)
252 » » » { 228 {
253 » » » » if (bLineTopChanged) 229 if (bLineTopChanged)
254 » » » » { 230 {
255 » » » » » rcResult = pOldRect->m_rcLine; 231 rcResult = pOldRect->m_rcLine;
256 » » » » » rcResult.Union(pNewRect->m_rcLine); 232 rcResult.Union(pNewRect->m_rcLine);
257 » » » » » m_RefreshRects.Add(rcResult); 233 m_RefreshRects.Add(rcResult);
258 » » » » } 234 }
259 » » » » else 235 else
260 » » » » { 236 {
261 » » » » » if (*pNewRect != *pOldRect) 237 if (*pNewRect != *pOldRect)
262 » » » » » { 238 {
263 » » » » » » if (!pNewRect->IsSameTop(*pOldRe ct) || !pNewRect->IsSameHeight(*pOldRect)) 239 if (!pNewRect->IsSameTop(*pOldRect) || !pNewRect->IsSame Height(*pOldRect))
264 » » » » » » { 240 {
265 » » » » » » » bLineTopChanged = TRUE; 241 bLineTopChanged = TRUE;
266 » » » » » » » continue; 242 continue;
267 » » » » » » } 243 }
268 244
269 » » » » » » if (nAlignment == 0) 245 if (nAlignment == 0)
270 » » » » » » { 246 {
271 » » » » » » » if (pNewRect->m_wrLine.B eginPos != pOldRect->m_wrLine.BeginPos) 247 if (pNewRect->m_wrLine.BeginPos != pOldRect->m_wrLin e.BeginPos)
272 » » » » » » » { 248 {
273 » » » » » » » » rcResult = pOldR ect->m_rcLine; 249 rcResult = pOldRect->m_rcLine;
274 » » » » » » » » rcResult.Union(p NewRect->m_rcLine); 250 rcResult.Union(pNewRect->m_rcLine);
275 » » » » » » » » m_RefreshRects.A dd(rcResult); 251 m_RefreshRects.Add(rcResult);
276 » » » » » » » } 252 }
277 » » » » » » » else 253 else
278 » » » » » » » { 254 {
279 » » » » » » » » if (!pNewRect->I sSameLeft(*pOldRect)) 255 if (!pNewRect->IsSameLeft(*pOldRect))
280 » » » » » » » » { 256 {
281 » » » » » » » » » rcResult = pOldRect->m_rcLine; 257 rcResult = pOldRect->m_rcLine;
282 » » » » » » » » » rcResult .Union(pNewRect->m_rcLine); 258 rcResult.Union(pNewRect->m_rcLine);
283 » » » » » » » » } 259 }
284 » » » » » » » » else 260 else
285 » » » » » » » » { 261 {
286 » » » » » » » » » fWidthDi ff = pNewRect->m_rcLine.Width() - pOldRect->m_rcLine.Width(); 262 fWidthDiff = pNewRect->m_rcLine.Width() - pO ldRect->m_rcLine.Width();
287 » » » » » » » » » rcResult = pNewRect->m_rcLine; 263 rcResult = pNewRect->m_rcLine;
288 » » » » » » » » » if (fWid thDiff > 0.0f) 264 if (fWidthDiff > 0.0f)
289 » » » » » » » » » » rcResult.left = rcResult.right - fWidthDiff; 265 rcResult.left = rcResult.right - fWidthD iff;
290 » » » » » » » » » else 266 else
291 » » » » » » » » » { 267 {
292 » » » » » » » » » » rcResult.left = rcResult.right; 268 rcResult.left = rcResult.right;
293 » » » » » » » » » » rcResult.right += (-fWidthDiff); 269 rcResult.right += (-fWidthDiff);
294 » » » » » » » » » } 270 }
295 » » » » » » » » } 271 }
296 » » » » » » » » m_RefreshRects.A dd(rcResult); 272 m_RefreshRects.Add(rcResult);
297 » » » » » » » } 273 }
298 » » » » » » } 274 }
299 » » » » » » else 275 else
300 » » » » » » { 276 {
301 » » » » » » » rcResult = pOldRect->m_r cLine; 277 rcResult = pOldRect->m_rcLine;
302 » » » » » » » rcResult.Union(pNewRect- >m_rcLine); 278 rcResult.Union(pNewRect->m_rcLine);
303 » » » » » » » m_RefreshRects.Add(rcRes ult); 279 m_RefreshRects.Add(rcResult);
304 » » » » » » } 280 }
305 » » » » » } 281 }
306 » » » » » else 282 else
307 » » » » » { 283 {
308 » » » » » » //don't need to do anything 284 //don't need to do anything
309 » » » » » } 285 }
310 » » » » } 286 }
311 » » » } 287 }
312 » » » else 288 else
313 » » » { 289 {
314 » » » » m_RefreshRects.Add(pOldRect->m_rcLine); 290 m_RefreshRects.Add(pOldRect->m_rcLine);
315 » » » } 291 }
316 » » } 292 }
317 » » else 293 else
318 » » { 294 {
319 » » » if (pNewRect) 295 if (pNewRect)
320 » » » { 296 {
321 » » » » m_RefreshRects.Add(pNewRect->m_rcLine); 297 m_RefreshRects.Add(pNewRect->m_rcLine);
322 » » » } 298 }
323 » » » else 299 else
324 » » » { 300 {
325 » » » » //error 301 //error
326 » » » } 302 }
327 » » } 303 }
328 » » i++; 304 i++;
329 » } 305 }
330 } 306 }
331 307
332 void CFX_Edit_Refresh::AddRefresh(const CPDF_Rect & rect) 308 void CFX_Edit_Refresh::AddRefresh(const CPDF_Rect & rect)
333 { 309 {
334 » m_RefreshRects.Add(rect); 310 m_RefreshRects.Add(rect);
335 } 311 }
336 312
337 const CFX_Edit_RectArray * CFX_Edit_Refresh::GetRefreshRects() const 313 const CFX_Edit_RectArray * CFX_Edit_Refresh::GetRefreshRects() const
338 { 314 {
339 » return &m_RefreshRects; 315 return &m_RefreshRects;
340 } 316 }
341 317
342 void CFX_Edit_Refresh::EndRefresh() 318 void CFX_Edit_Refresh::EndRefresh()
343 { 319 {
344 » m_RefreshRects.Empty(); 320 m_RefreshRects.Empty();
345 } 321 }
346 322
347 /* ------------------------------------- CFX_Edit_Undo ------------------------- ------------ */ 323 /* ------------------------------------- CFX_Edit_Undo ------------------------- ------------ */
348 324
349 CFX_Edit_Undo::CFX_Edit_Undo(int32_t nBufsize) : m_nCurUndoPos(0), 325 CFX_Edit_Undo::CFX_Edit_Undo(int32_t nBufsize) : m_nCurUndoPos(0),
350 » m_nBufSize(nBufsize), 326 m_nBufSize(nBufsize),
351 » m_bModified(FALSE), 327 m_bModified(FALSE),
352 » m_bVirgin(TRUE), 328 m_bVirgin(TRUE),
353 » m_bWorking(FALSE) 329 m_bWorking(FALSE)
354 { 330 {
355 } 331 }
356 332
357 CFX_Edit_Undo::~CFX_Edit_Undo() 333 CFX_Edit_Undo::~CFX_Edit_Undo()
358 { 334 {
359 » Reset(); 335 Reset();
360 } 336 }
361 337
362 FX_BOOL CFX_Edit_Undo::CanUndo() const 338 FX_BOOL CFX_Edit_Undo::CanUndo() const
363 { 339 {
364 » return m_nCurUndoPos > 0; 340 return m_nCurUndoPos > 0;
365 } 341 }
366 342
367 void CFX_Edit_Undo::Undo() 343 void CFX_Edit_Undo::Undo()
368 { 344 {
369 » m_bWorking = TRUE; 345 m_bWorking = TRUE;
370 346
371 » if (m_nCurUndoPos > 0) 347 if (m_nCurUndoPos > 0)
372 » { 348 {
373 » » IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(m_nCurUndoPos- 1); 349 IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(m_nCurUndoPos-1);
374 » » ASSERT(pItem != NULL); 350 ASSERT(pItem != NULL);
375 351
376 » » pItem->Undo(); 352 pItem->Undo();
377 353
378 » » m_nCurUndoPos--; 354 m_nCurUndoPos--;
379 » » m_bModified = (m_nCurUndoPos != 0); 355 m_bModified = (m_nCurUndoPos != 0);
380 » } 356 }
381 357
382 » m_bWorking = FALSE; 358 m_bWorking = FALSE;
383 } 359 }
384 360
385 FX_BOOL»CFX_Edit_Undo::CanRedo() const 361 FX_BOOL CFX_Edit_Undo::CanRedo() const
386 { 362 {
387 » return m_nCurUndoPos < m_UndoItemStack.GetSize(); 363 return m_nCurUndoPos < m_UndoItemStack.GetSize();
388 } 364 }
389 365
390 void CFX_Edit_Undo::Redo() 366 void CFX_Edit_Undo::Redo()
391 { 367 {
392 » m_bWorking = TRUE; 368 m_bWorking = TRUE;
393 369
394 » int32_t nStackSize = m_UndoItemStack.GetSize(); 370 int32_t nStackSize = m_UndoItemStack.GetSize();
395 371
396 » if (m_nCurUndoPos < nStackSize) 372 if (m_nCurUndoPos < nStackSize)
397 » { 373 {
398 » » IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(m_nCurUndoPos) ; 374 IFX_Edit_UndoItem * pItem = m_UndoItemStack.GetAt(m_nCurUndoPos);
399 » » ASSERT(pItem != NULL); 375 ASSERT(pItem != NULL);
400 376
401 » » pItem->Redo(); 377 pItem->Redo();
402 378
403 » » m_nCurUndoPos++; 379 m_nCurUndoPos++;
404 » » m_bModified = (m_nCurUndoPos != 0); 380 m_bModified = (m_nCurUndoPos != 0);
405 » } 381 }
406 382
407 » m_bWorking = FALSE; 383 m_bWorking = FALSE;
408 } 384 }
409 385
410 FX_BOOL»CFX_Edit_Undo::IsWorking() const 386 FX_BOOL CFX_Edit_Undo::IsWorking() const
411 { 387 {
412 » return m_bWorking; 388 return m_bWorking;
413 } 389 }
414 390
415 void CFX_Edit_Undo::AddItem(IFX_Edit_UndoItem* pItem) 391 void CFX_Edit_Undo::AddItem(IFX_Edit_UndoItem* pItem)
416 { 392 {
417 » ASSERT(!m_bWorking); 393 ASSERT(!m_bWorking);
418 » ASSERT(pItem != NULL); 394 ASSERT(pItem != NULL);
419 » ASSERT(m_nBufSize > 1); 395 ASSERT(m_nBufSize > 1);
420 396
421 » if (m_nCurUndoPos < m_UndoItemStack.GetSize()) 397 if (m_nCurUndoPos < m_UndoItemStack.GetSize())
422 » » RemoveTails(); 398 RemoveTails();
423 399
424 » if (m_UndoItemStack.GetSize() >= m_nBufSize) 400 if (m_UndoItemStack.GetSize() >= m_nBufSize)
425 » { 401 {
426 » » RemoveHeads(); 402 RemoveHeads();
427 » » m_bVirgin = FALSE; 403 m_bVirgin = FALSE;
428 » } 404 }
429 405
430 » m_UndoItemStack.Add(pItem); 406 m_UndoItemStack.Add(pItem);
431 » m_nCurUndoPos = m_UndoItemStack.GetSize(); 407 m_nCurUndoPos = m_UndoItemStack.GetSize();
432 408
433 » m_bModified = (m_nCurUndoPos != 0); 409 m_bModified = (m_nCurUndoPos != 0);
434 } 410 }
435 411
436 FX_BOOL»CFX_Edit_Undo::IsModified() const 412 FX_BOOL CFX_Edit_Undo::IsModified() const
437 { 413 {
438 » if (m_bVirgin) 414 return m_bVirgin ? m_bModified : TRUE;
439 » » return m_bModified;
440 » else
441 » » return TRUE;
442 } 415 }
443 416
444 IFX_Edit_UndoItem* CFX_Edit_Undo::GetItem(int32_t nIndex) 417 IFX_Edit_UndoItem* CFX_Edit_Undo::GetItem(int32_t nIndex)
445 { 418 {
446 » if (nIndex>=0 && nIndex < m_UndoItemStack.GetSize()) 419 if (nIndex>=0 && nIndex < m_UndoItemStack.GetSize())
447 » » return m_UndoItemStack.GetAt(nIndex); 420 return m_UndoItemStack.GetAt(nIndex);
448 421
449 » return NULL; 422 return NULL;
450 } 423 }
451 424
452 void CFX_Edit_Undo::RemoveHeads() 425 void CFX_Edit_Undo::RemoveHeads()
453 { 426 {
454 » ASSERT(m_UndoItemStack.GetSize() > 1); 427 ASSERT(m_UndoItemStack.GetSize() > 1);
455 428
456 » delete m_UndoItemStack.GetAt(0); 429 delete m_UndoItemStack.GetAt(0);
457 » m_UndoItemStack.RemoveAt(0); 430 m_UndoItemStack.RemoveAt(0);
458 } 431 }
459 432
460 void CFX_Edit_Undo::RemoveTails() 433 void CFX_Edit_Undo::RemoveTails()
461 { 434 {
462 » for (int32_t i = m_UndoItemStack.GetSize()-1; i >= m_nCurUndoPos; i--) 435 for (int32_t i = m_UndoItemStack.GetSize()-1; i >= m_nCurUndoPos; i--)
463 » { 436 {
464 » » delete m_UndoItemStack.GetAt(i); 437 delete m_UndoItemStack.GetAt(i);
465 » » m_UndoItemStack.RemoveAt(i); 438 m_UndoItemStack.RemoveAt(i);
466 » } 439 }
467 } 440 }
468 441
469 void CFX_Edit_Undo::Reset() 442 void CFX_Edit_Undo::Reset()
470 { 443 {
471 » for (int32_t i=0, sz=m_UndoItemStack.GetSize(); i < sz; i++) 444 for (int32_t i=0, sz=m_UndoItemStack.GetSize(); i < sz; i++)
472 » { 445 {
473 » » delete m_UndoItemStack.GetAt(i); 446 delete m_UndoItemStack.GetAt(i);
474 » } 447 }
475 » m_nCurUndoPos = 0; 448 m_nCurUndoPos = 0;
476 » m_UndoItemStack.RemoveAll(); 449 m_UndoItemStack.RemoveAll();
477 } 450 }
478 451
479 /* -------------------------------- CFX_Edit_GroupUndoItem --------------------- ----------- */ 452 /* -------------------------------- CFX_Edit_GroupUndoItem --------------------- ----------- */
480 453
481 CFX_Edit_GroupUndoItem::CFX_Edit_GroupUndoItem(const CFX_WideString& sTitle) : m _sTitle(sTitle) 454 CFX_Edit_GroupUndoItem::CFX_Edit_GroupUndoItem(const CFX_WideString& sTitle) : m _sTitle(sTitle)
482 { 455 {
483 } 456 }
484 457
485 CFX_Edit_GroupUndoItem::~CFX_Edit_GroupUndoItem() 458 CFX_Edit_GroupUndoItem::~CFX_Edit_GroupUndoItem()
486 { 459 {
487 » for (int i=0,sz=m_Items.GetSize(); i<sz; i++) 460 for (int i=0,sz=m_Items.GetSize(); i<sz; i++)
488 » { 461 {
489 » » delete m_Items[i]; 462 delete m_Items[i];
490 » } 463 }
491 464
492 » m_Items.RemoveAll(); 465 m_Items.RemoveAll();
493 } 466 }
494 467
495 void CFX_Edit_GroupUndoItem::AddUndoItem(CFX_Edit_UndoItem* pUndoItem) 468 void CFX_Edit_GroupUndoItem::AddUndoItem(CFX_Edit_UndoItem* pUndoItem)
496 { 469 {
497 » ASSERT(pUndoItem != NULL); 470 ASSERT(pUndoItem != NULL);
498 471
499 » pUndoItem->SetFirst(FALSE); 472 pUndoItem->SetFirst(FALSE);
500 » pUndoItem->SetLast(FALSE); 473 pUndoItem->SetLast(FALSE);
501 474
502 » m_Items.Add(pUndoItem); 475 m_Items.Add(pUndoItem);
503 476
504 » if (m_sTitle.IsEmpty()) 477 if (m_sTitle.IsEmpty())
505 » » m_sTitle = pUndoItem->GetUndoTitle(); 478 m_sTitle = pUndoItem->GetUndoTitle();
506 } 479 }
507 480
508 void CFX_Edit_GroupUndoItem::UpdateItems() 481 void CFX_Edit_GroupUndoItem::UpdateItems()
509 { 482 {
510 » if (m_Items.GetSize() > 0) 483 if (m_Items.GetSize() > 0)
511 » { 484 {
512 » » CFX_Edit_UndoItem* pFirstItem = m_Items[0]; 485 CFX_Edit_UndoItem* pFirstItem = m_Items[0];
513 » » ASSERT(pFirstItem != NULL); 486 ASSERT(pFirstItem != NULL);
514 » » pFirstItem->SetFirst(TRUE); 487 pFirstItem->SetFirst(TRUE);
515 488
516 » » CFX_Edit_UndoItem* pLastItem = m_Items[m_Items.GetSize() - 1]; 489 CFX_Edit_UndoItem* pLastItem = m_Items[m_Items.GetSize() - 1];
517 » » ASSERT(pLastItem != NULL); 490 ASSERT(pLastItem != NULL);
518 » » pLastItem->SetLast(TRUE); 491 pLastItem->SetLast(TRUE);
519 » } 492 }
520 } 493 }
521 494
522 void CFX_Edit_GroupUndoItem::Undo() 495 void CFX_Edit_GroupUndoItem::Undo()
523 { 496 {
524 » for (int i=m_Items.GetSize()-1; i>=0; i--) 497 for (int i=m_Items.GetSize()-1; i>=0; i--)
525 » { 498 {
526 » » CFX_Edit_UndoItem* pUndoItem = m_Items[i]; 499 CFX_Edit_UndoItem* pUndoItem = m_Items[i];
527 » » ASSERT(pUndoItem != NULL); 500 ASSERT(pUndoItem != NULL);
528 501
529 » » pUndoItem->Undo(); 502 pUndoItem->Undo();
530 » } 503 }
531 } 504 }
532 505
533 void CFX_Edit_GroupUndoItem::Redo() 506 void CFX_Edit_GroupUndoItem::Redo()
534 { 507 {
535 » for (int i=0,sz=m_Items.GetSize(); i<sz; i++) 508 for (int i=0,sz=m_Items.GetSize(); i<sz; i++)
536 » { 509 {
537 » » CFX_Edit_UndoItem* pUndoItem = m_Items[i]; 510 CFX_Edit_UndoItem* pUndoItem = m_Items[i];
538 » » ASSERT(pUndoItem != NULL); 511 ASSERT(pUndoItem != NULL);
539 512
540 » » pUndoItem->Redo(); 513 pUndoItem->Redo();
541 » } 514 }
542 } 515 }
543 516
544 CFX_WideString CFX_Edit_GroupUndoItem::GetUndoTitle() 517 CFX_WideString CFX_Edit_GroupUndoItem::GetUndoTitle()
545 { 518 {
546 » return m_sTitle; 519 return m_sTitle;
547 } 520 }
548 521
549 /* ------------------------------------- CFX_Edit_UndoItem derived classes ----- -------------------------------- */ 522 /* ------------------------------------- CFX_Edit_UndoItem derived classes ----- -------------------------------- */
550 523
551 CFXEU_InsertWord::CFXEU_InsertWord(CFX_Edit * pEdit, const CPVT_WordPlace & wpOl dPlace, const CPVT_WordPlace & wpNewPlace, 524 CFXEU_InsertWord::CFXEU_InsertWord(CFX_Edit * pEdit, const CPVT_WordPlace & wpOl dPlace, const CPVT_WordPlace & wpNewPlace,
552 » » » » » » » » FX_WORD word, i nt32_t charset, const CPVT_WordProps * pWordProps) 525 FX_WORD word, int32_t charset, const CPVT_WordP rops * pWordProps)
553 » : m_pEdit(pEdit), m_wpOld(wpOldPlace), m_wpNew(wpNewPlace), m_Word(word) , m_nCharset(charset), m_WordProps() 526 : m_pEdit(pEdit), m_wpOld(wpOldPlace), m_wpNew(wpNewPlace), m_Word(word), m_ nCharset(charset), m_WordProps()
554 { 527 {
555 » if (pWordProps) 528 if (pWordProps)
556 » » m_WordProps = *pWordProps; 529 m_WordProps = *pWordProps;
557 } 530 }
558 531
559 CFXEU_InsertWord::~CFXEU_InsertWord() 532 CFXEU_InsertWord::~CFXEU_InsertWord()
560 { 533 {
561 } 534 }
562 535
563 void CFXEU_InsertWord::Redo() 536 void CFXEU_InsertWord::Redo()
564 { 537 {
565 » if (m_pEdit) 538 if (m_pEdit)
566 » { 539 {
567 » » m_pEdit->SelectNone(); 540 m_pEdit->SelectNone();
568 » » m_pEdit->SetCaret(m_wpOld); 541 m_pEdit->SetCaret(m_wpOld);
569 » » m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE); 542 m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE);
570 » } 543 }
571 } 544 }
572 545
573 void CFXEU_InsertWord::Undo() 546 void CFXEU_InsertWord::Undo()
574 { 547 {
575 » if (m_pEdit) 548 if (m_pEdit)
576 » { 549 {
577 » » m_pEdit->SelectNone(); 550 m_pEdit->SelectNone();
578 » » m_pEdit->SetCaret(m_wpNew); 551 m_pEdit->SetCaret(m_wpNew);
579 » » m_pEdit->Backspace(FALSE,TRUE); 552 m_pEdit->Backspace(FALSE,TRUE);
580 » } 553 }
581 } 554 }
582 555
583 /* -------------------------------------------------------------------------- */ 556 /* -------------------------------------------------------------------------- */
584 557
585 CFXEU_InsertReturn::CFXEU_InsertReturn(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 558 CFXEU_InsertReturn::CFXEU_InsertReturn(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace,
586 » » » const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) : 559 const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) :
587 » » » m_pEdit(pEdit), 560 m_pEdit(pEdit),
588 » » » m_wpOld(wpOldPlace), 561 m_wpOld(wpOldPlace),
589 » » » m_wpNew(wpNewPlace), 562 m_wpNew(wpNewPlace),
590 » » » m_SecProps(), 563 m_SecProps(),
591 » » » m_WordProps() 564 m_WordProps()
592 { 565 {
593 » if (pSecProps) 566 if (pSecProps)
594 » » m_SecProps = *pSecProps; 567 m_SecProps = *pSecProps;
595 » if (pWordProps) 568 if (pWordProps)
596 » » m_WordProps = *pWordProps; 569 m_WordProps = *pWordProps;
597 } 570 }
598 571
599 CFXEU_InsertReturn::~CFXEU_InsertReturn() 572 CFXEU_InsertReturn::~CFXEU_InsertReturn()
600 { 573 {
601 } 574 }
602 575
603 void CFXEU_InsertReturn::Redo() 576 void CFXEU_InsertReturn::Redo()
604 { 577 {
605 » if (m_pEdit) 578 if (m_pEdit)
606 » { 579 {
607 » » m_pEdit->SelectNone(); 580 m_pEdit->SelectNone();
608 » » m_pEdit->SetCaret(m_wpOld); 581 m_pEdit->SetCaret(m_wpOld);
609 » » m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE); 582 m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE);
610 » } 583 }
611 } 584 }
612 585
613 void CFXEU_InsertReturn::Undo() 586 void CFXEU_InsertReturn::Undo()
614 { 587 {
615 » if (m_pEdit) 588 if (m_pEdit)
616 » { 589 {
617 » » m_pEdit->SelectNone(); 590 m_pEdit->SelectNone();
618 » » m_pEdit->SetCaret(m_wpNew); 591 m_pEdit->SetCaret(m_wpNew);
619 » » m_pEdit->Backspace(FALSE,TRUE); 592 m_pEdit->Backspace(FALSE,TRUE);
620 » } 593 }
621 } 594 }
622 595
623 /* -------------------------------------------------------------------------- */ 596 /* -------------------------------------------------------------------------- */
624 //CFXEU_Backspace 597 //CFXEU_Backspace
625 598
626 CFXEU_Backspace::CFXEU_Backspace(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldP lace, const CPVT_WordPlace & wpNewPlace, 599 CFXEU_Backspace::CFXEU_Backspace(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldP lace, const CPVT_WordPlace & wpNewPlace,
627 » » » » » » » FX_WORD word, int32_t charset, 600 FX_WORD word, int32_t charset,
628 » » » » » » » const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps) : 601 const CPVT_SecProps & SecProps, const CPVT_WordPr ops & WordProps) :
629 » » » m_pEdit(pEdit), 602 m_pEdit(pEdit),
630 » » » m_wpOld(wpOldPlace), 603 m_wpOld(wpOldPlace),
631 » » » m_wpNew(wpNewPlace), 604 m_wpNew(wpNewPlace),
632 » » » m_Word(word), 605 m_Word(word),
633 » » » m_nCharset(charset), 606 m_nCharset(charset),
634 » » » m_SecProps(SecProps), 607 m_SecProps(SecProps),
635 » » » m_WordProps(WordProps) 608 m_WordProps(WordProps)
636 { 609 {
637 } 610 }
638 611
639 CFXEU_Backspace::~CFXEU_Backspace() 612 CFXEU_Backspace::~CFXEU_Backspace()
640 { 613 {
641 } 614 }
642 615
643 void CFXEU_Backspace::Redo() 616 void CFXEU_Backspace::Redo()
644 { 617 {
645 » if (m_pEdit) 618 if (m_pEdit)
646 » { 619 {
647 » » m_pEdit->SelectNone(); 620 m_pEdit->SelectNone();
648 » » m_pEdit->SetCaret(m_wpOld); 621 m_pEdit->SetCaret(m_wpOld);
649 » » m_pEdit->Backspace(FALSE,TRUE); 622 m_pEdit->Backspace(FALSE,TRUE);
650 » } 623 }
651 } 624 }
652 625
653 void CFXEU_Backspace::Undo() 626 void CFXEU_Backspace::Undo()
654 { 627 {
655 » if (m_pEdit) 628 if (m_pEdit)
656 » { 629 {
657 » » m_pEdit->SelectNone(); 630 m_pEdit->SelectNone();
658 » » m_pEdit->SetCaret(m_wpNew); 631 m_pEdit->SetCaret(m_wpNew);
659 » » if (m_wpNew.SecCmp(m_wpOld) != 0) 632 if (m_wpNew.SecCmp(m_wpOld) != 0)
660 » » { 633 {
661 » » » m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRU E); 634 m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE);
662 » » } 635 }
663 » » else 636 else
664 » » { 637 {
665 » » » m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE ,TRUE); 638 m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE);
666 » » } 639 }
667 » } 640 }
668 } 641 }
669 642
670 /* -------------------------------------------------------------------------- */ 643 /* -------------------------------------------------------------------------- */
671 //CFXEU_Delete 644 //CFXEU_Delete
672 645
673 CFXEU_Delete::CFXEU_Delete(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace, 646 CFXEU_Delete::CFXEU_Delete(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldPlace, const CPVT_WordPlace & wpNewPlace,
674 » » » » » » » FX_WORD word, int32_t charset, 647 FX_WORD word, int32_t charset,
675 » » » » » » » const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps, FX_BOOL bSecEnd) : 648 const CPVT_SecProps & SecProps, const CPVT_WordPr ops & WordProps, FX_BOOL bSecEnd) :
676 » » » m_pEdit(pEdit), 649 m_pEdit(pEdit),
677 » » » m_wpOld(wpOldPlace), 650 m_wpOld(wpOldPlace),
678 » » » m_wpNew(wpNewPlace), 651 m_wpNew(wpNewPlace),
679 » » » m_Word(word), 652 m_Word(word),
680 » » » m_nCharset(charset), 653 m_nCharset(charset),
681 » » » m_SecProps(SecProps), 654 m_SecProps(SecProps),
682 » » » m_WordProps(WordProps), 655 m_WordProps(WordProps),
683 » » » m_bSecEnd(bSecEnd) 656 m_bSecEnd(bSecEnd)
684 { 657 {
685 } 658 }
686 659
687 CFXEU_Delete::~CFXEU_Delete() 660 CFXEU_Delete::~CFXEU_Delete()
688 { 661 {
689 } 662 }
690 663
691 void CFXEU_Delete::Redo() 664 void CFXEU_Delete::Redo()
692 { 665 {
693 » if (m_pEdit) 666 if (m_pEdit)
694 » { 667 {
695 » » m_pEdit->SelectNone(); 668 m_pEdit->SelectNone();
696 » » m_pEdit->SetCaret(m_wpOld); 669 m_pEdit->SetCaret(m_wpOld);
697 » » m_pEdit->Delete(FALSE,TRUE); 670 m_pEdit->Delete(FALSE,TRUE);
698 » } 671 }
699 } 672 }
700 673
701 void CFXEU_Delete::Undo() 674 void CFXEU_Delete::Undo()
702 { 675 {
703 » if (m_pEdit) 676 if (m_pEdit)
704 » { 677 {
705 » » m_pEdit->SelectNone(); 678 m_pEdit->SelectNone();
706 » » m_pEdit->SetCaret(m_wpNew); 679 m_pEdit->SetCaret(m_wpNew);
707 » » if (m_bSecEnd) 680 if (m_bSecEnd)
708 » » { 681 {
709 » » » m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRU E); 682 m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,TRUE);
710 » » } 683 }
711 » » else 684 else
712 » » { 685 {
713 » » » m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE ,TRUE); 686 m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,TRUE);
714 » » } 687 }
715 » } 688 }
716 } 689 }
717 690
718 /* -------------------------------------------------------------------------- */ 691 /* -------------------------------------------------------------------------- */
719 //CFXEU_Clear 692 //CFXEU_Clear
720 693
721 CFXEU_Clear::CFXEU_Clear(CFX_Edit * pEdit, const CPVT_WordRange & wrSel, const CFX_WideString & swText) : 694 CFXEU_Clear::CFXEU_Clear(CFX_Edit * pEdit, const CPVT_WordRange & wrSel, const CFX_WideString & swText) :
722 » » » m_pEdit(pEdit), 695 m_pEdit(pEdit),
723 » » » m_wrSel(wrSel), 696 m_wrSel(wrSel),
724 » » » m_swText(swText) 697 m_swText(swText)
725 { 698 {
726 } 699 }
727 700
728 CFXEU_Clear::~CFXEU_Clear() 701 CFXEU_Clear::~CFXEU_Clear()
729 { 702 {
730 } 703 }
731 704
732 void CFXEU_Clear::Redo() 705 void CFXEU_Clear::Redo()
733 { 706 {
734 » if (m_pEdit) 707 if (m_pEdit)
735 » { 708 {
736 » » m_pEdit->SelectNone(); 709 m_pEdit->SelectNone();
737 » » m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos); 710 m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos);
738 » » m_pEdit->Clear(FALSE,TRUE); 711 m_pEdit->Clear(FALSE,TRUE);
739 » } 712 }
740 } 713 }
741 714
742 void CFXEU_Clear::Undo() 715 void CFXEU_Clear::Undo()
743 { 716 {
744 » if (m_pEdit) 717 if (m_pEdit)
745 » { 718 {
746 » » m_pEdit->SelectNone(); 719 m_pEdit->SelectNone();
747 » » m_pEdit->SetCaret(m_wrSel.BeginPos); 720 m_pEdit->SetCaret(m_wrSel.BeginPos);
748 » » m_pEdit->InsertText(m_swText.c_str(), DEFAULT_CHARSET, NULL, NUL L, FALSE, TRUE); 721 m_pEdit->InsertText(m_swText.c_str(), DEFAULT_CHARSET, NULL, NULL, FALSE , TRUE);
749 » » m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos); 722 m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos);
750 » } 723 }
751 } 724 }
752 725
753 /* -------------------------------------------------------------------------- */ 726 /* -------------------------------------------------------------------------- */
754 //CFXEU_ClearRich 727 //CFXEU_ClearRich
755 728
756 CFXEU_ClearRich::CFXEU_ClearRich(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldP lace, const CPVT_WordPlace & wpNewPlace, 729 CFXEU_ClearRich::CFXEU_ClearRich(CFX_Edit * pEdit, const CPVT_WordPlace & wpOldP lace, const CPVT_WordPlace & wpNewPlace,
757 » » » » » » » const CPVT_WordRange & wrSel, FX_WORD word, int32_t charset, 730 const CPVT_WordRange & wrSel, FX_WORD word, int32 _t charset,
758 » » » » » » » const CPVT_SecProps & SecProps, const CPVT_WordProps & WordProps) : 731 const CPVT_SecProps & SecProps, const CPVT_WordPr ops & WordProps) :
759 » » » m_pEdit(pEdit), 732 m_pEdit(pEdit),
760 » » » m_wpOld(wpOldPlace), 733 m_wpOld(wpOldPlace),
761 » » » m_wpNew(wpNewPlace), 734 m_wpNew(wpNewPlace),
762 » » » m_wrSel(wrSel), 735 m_wrSel(wrSel),
763 » » » m_Word(word), 736 m_Word(word),
764 » » » m_nCharset(charset), 737 m_nCharset(charset),
765 » » » m_SecProps(SecProps), 738 m_SecProps(SecProps),
766 » » » m_WordProps(WordProps) 739 m_WordProps(WordProps)
767 { 740 {
768 } 741 }
769 742
770 CFXEU_ClearRich::~CFXEU_ClearRich() 743 CFXEU_ClearRich::~CFXEU_ClearRich()
771 { 744 {
772 } 745 }
773 746
774 void CFXEU_ClearRich::Redo() 747 void CFXEU_ClearRich::Redo()
775 { 748 {
776 » if (m_pEdit && IsLast()) 749 if (m_pEdit && IsLast())
777 » { 750 {
778 » » m_pEdit->SelectNone(); 751 m_pEdit->SelectNone();
779 » » m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos); 752 m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos);
780 » » m_pEdit->Clear(FALSE,TRUE); 753 m_pEdit->Clear(FALSE,TRUE);
781 » } 754 }
782 } 755 }
783 756
784 void CFXEU_ClearRich::Undo() 757 void CFXEU_ClearRich::Undo()
785 { 758 {
786 » if (m_pEdit) 759 if (m_pEdit)
787 » { 760 {
788 » » m_pEdit->SelectNone(); 761 m_pEdit->SelectNone();
789 » » m_pEdit->SetCaret(m_wpOld); 762 m_pEdit->SetCaret(m_wpOld);
790 » » if (m_wpNew.SecCmp(m_wpOld) != 0) 763 if (m_wpNew.SecCmp(m_wpOld) != 0)
791 » » { 764 {
792 » » » m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,FAL SE); 765 m_pEdit->InsertReturn(&m_SecProps,&m_WordProps,FALSE,FALSE);
793 » » } 766 }
794 » » else 767 else
795 » » { 768 {
796 » » » m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE ,FALSE); 769 m_pEdit->InsertWord(m_Word,m_nCharset,&m_WordProps,FALSE,FALSE);
797 » » } 770 }
798 771
799 » » if (IsFirst()) 772 if (IsFirst())
800 » » { 773 {
801 » » » m_pEdit->PaintInsertText(m_wrSel.BeginPos,m_wrSel.EndPos ); 774 m_pEdit->PaintInsertText(m_wrSel.BeginPos,m_wrSel.EndPos);
802 » » » m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos); 775 m_pEdit->SetSel(m_wrSel.BeginPos,m_wrSel.EndPos);
803 » » } 776 }
804 » } 777 }
805 } 778 }
806 /* -------------------------------------------------------------------------- */ 779 /* -------------------------------------------------------------------------- */
807 //CFXEU_InsertText 780 //CFXEU_InsertText
808 781
809 CFXEU_InsertText::CFXEU_InsertText(CFX_Edit * pEdit, const CPVT_WordPlace & wpOl dPlace, const CPVT_WordPlace & wpNewPlace, 782 CFXEU_InsertText::CFXEU_InsertText(CFX_Edit * pEdit, const CPVT_WordPlace & wpOl dPlace, const CPVT_WordPlace & wpNewPlace,
810 » » » » » » » const CFX_WideString & swText, int32_t charset, 783 const CFX_WideString & swText, int32_t charset,
811 » » » » » » » const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) : 784 const CPVT_SecProps * pSecProps, const CPVT_WordP rops * pWordProps) :
812 » » » m_pEdit(pEdit), 785 m_pEdit(pEdit),
813 » » » m_wpOld(wpOldPlace), 786 m_wpOld(wpOldPlace),
814 » » » m_wpNew(wpNewPlace), 787 m_wpNew(wpNewPlace),
815 » » » m_swText(swText), 788 m_swText(swText),
816 » » » m_nCharset(charset), 789 m_nCharset(charset),
817 » » » m_SecProps(), 790 m_SecProps(),
818 » » » m_WordProps() 791 m_WordProps()
819 { 792 {
820 » if (pSecProps) 793 if (pSecProps)
821 » » m_SecProps = *pSecProps; 794 m_SecProps = *pSecProps;
822 » if (pWordProps) 795 if (pWordProps)
823 » » m_WordProps = *pWordProps; 796 m_WordProps = *pWordProps;
824 } 797 }
825 798
826 CFXEU_InsertText::~CFXEU_InsertText() 799 CFXEU_InsertText::~CFXEU_InsertText()
827 { 800 {
828 } 801 }
829 802
830 void CFXEU_InsertText::Redo() 803 void CFXEU_InsertText::Redo()
831 { 804 {
832 » if (m_pEdit && IsLast()) 805 if (m_pEdit && IsLast())
833 » { 806 {
834 » » m_pEdit->SelectNone(); 807 m_pEdit->SelectNone();
835 » » m_pEdit->SetCaret(m_wpOld); 808 m_pEdit->SetCaret(m_wpOld);
836 » » m_pEdit->InsertText(m_swText.c_str(), m_nCharset, &m_SecProps, & m_WordProps, FALSE, TRUE); 809 m_pEdit->InsertText(m_swText.c_str(), m_nCharset, &m_SecProps, &m_WordPr ops, FALSE, TRUE);
837 » } 810 }
838 } 811 }
839 812
840 void CFXEU_InsertText::Undo() 813 void CFXEU_InsertText::Undo()
841 { 814 {
842 » if (m_pEdit) 815 if (m_pEdit)
843 » { 816 {
844 » » m_pEdit->SelectNone(); 817 m_pEdit->SelectNone();
845 » » m_pEdit->SetSel(m_wpOld,m_wpNew); 818 m_pEdit->SetSel(m_wpOld,m_wpNew);
846 » » m_pEdit->Clear(FALSE,TRUE); 819 m_pEdit->Clear(FALSE,TRUE);
847 » } 820 }
848 } 821 }
849 822
850 /* -------------------------------------------------------------------------- */ 823 /* -------------------------------------------------------------------------- */
851 824
852 CFXEU_SetSecProps::CFXEU_SetSecProps(CFX_Edit * pEdit, const CPVT_WordPlace & pl ace, EDIT_PROPS_E ep, 825 CFXEU_SetSecProps::CFXEU_SetSecProps(CFX_Edit * pEdit, const CPVT_WordPlace & pl ace, EDIT_PROPS_E ep,
853 » » const CPVT_SecProps & oldsecprops, const CPVT_WordProps & oldwor dprops, 826 const CPVT_SecProps & oldsecprops, const CPVT_WordProps & oldwordprops,
854 » » const CPVT_SecProps & newsecprops, const CPVT_WordProps & newwor dprops, const CPVT_WordRange & range) 827 const CPVT_SecProps & newsecprops, const CPVT_WordProps & newwordprops, const CPVT_WordRange & range)
855 » » : m_pEdit(pEdit), 828 : m_pEdit(pEdit),
856 » » m_wpPlace(place), 829 m_wpPlace(place),
857 » » m_wrPlace(range), 830 m_wrPlace(range),
858 » » m_eProps(ep), 831 m_eProps(ep),
859 » » m_OldSecProps(oldsecprops), 832 m_OldSecProps(oldsecprops),
860 » » m_NewSecProps(newsecprops), 833 m_NewSecProps(newsecprops),
861 » » m_OldWordProps(oldwordprops), 834 m_OldWordProps(oldwordprops),
862 » » m_NewWordProps(newwordprops) 835 m_NewWordProps(newwordprops)
863 { 836 {
864 } 837 }
865 838
866 CFXEU_SetSecProps::~CFXEU_SetSecProps() 839 CFXEU_SetSecProps::~CFXEU_SetSecProps()
867 { 840 {
868 } 841 }
869 842
870 void CFXEU_SetSecProps::Redo() 843 void CFXEU_SetSecProps::Redo()
871 { 844 {
872 » if (m_pEdit) 845 if (m_pEdit)
873 » { 846 {
874 » » m_pEdit->SetSecProps(m_eProps,m_wpPlace,&m_NewSecProps,&m_NewWor dProps,m_wrPlace,FALSE); 847 m_pEdit->SetSecProps(m_eProps,m_wpPlace,&m_NewSecProps,&m_NewWordProps,m _wrPlace,FALSE);
875 » » if (IsLast()) 848 if (IsLast())
876 » » { 849 {
877 » » » m_pEdit->SelectNone(); 850 m_pEdit->SelectNone();
878 » » » m_pEdit->PaintSetProps(m_eProps,m_wrPlace); 851 m_pEdit->PaintSetProps(m_eProps,m_wrPlace);
879 » » » m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos); 852 m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos);
880 » » } 853 }
881 » } 854 }
882 } 855 }
883 856
884 void CFXEU_SetSecProps::Undo() 857 void CFXEU_SetSecProps::Undo()
885 { 858 {
886 » if (m_pEdit) 859 if (m_pEdit)
887 » { 860 {
888 » » m_pEdit->SetSecProps(m_eProps,m_wpPlace,&m_OldSecProps,&m_OldWor dProps,m_wrPlace,FALSE); 861 m_pEdit->SetSecProps(m_eProps,m_wpPlace,&m_OldSecProps,&m_OldWordProps,m _wrPlace,FALSE);
889 » » if (IsFirst()) 862 if (IsFirst())
890 » » { 863 {
891 » » » m_pEdit->SelectNone(); 864 m_pEdit->SelectNone();
892 » » » m_pEdit->PaintSetProps(m_eProps,m_wrPlace); 865 m_pEdit->PaintSetProps(m_eProps,m_wrPlace);
893 » » » m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos); 866 m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos);
894 » » } 867 }
895 » } 868 }
896 } 869 }
897 870
898 /* -------------------------------------------------------------------------- */ 871 /* -------------------------------------------------------------------------- */
899 872
900 CFXEU_SetWordProps::CFXEU_SetWordProps(CFX_Edit * pEdit, const CPVT_WordPlace & place, EDIT_PROPS_E ep, 873 CFXEU_SetWordProps::CFXEU_SetWordProps(CFX_Edit * pEdit, const CPVT_WordPlace & place, EDIT_PROPS_E ep,
901 » » const CPVT_WordProps & oldprops, const CPVT_WordProps & newprops , const CPVT_WordRange & range) 874 const CPVT_WordProps & oldprops, const CPVT_WordProps & newprops, const CPVT_WordRange & range)
902 » » : m_pEdit(pEdit), 875 : m_pEdit(pEdit),
903 » » m_wpPlace(place), 876 m_wpPlace(place),
904 » » m_wrPlace(range), 877 m_wrPlace(range),
905 » » m_eProps(ep), 878 m_eProps(ep),
906 » » m_OldWordProps(oldprops), 879 m_OldWordProps(oldprops),
907 » » m_NewWordProps(newprops) 880 m_NewWordProps(newprops)
908 { 881 {
909 } 882 }
910 883
911 CFXEU_SetWordProps::~CFXEU_SetWordProps() 884 CFXEU_SetWordProps::~CFXEU_SetWordProps()
912 { 885 {
913 } 886 }
914 887
915 void CFXEU_SetWordProps::Redo() 888 void CFXEU_SetWordProps::Redo()
916 { 889 {
917 » if (m_pEdit) 890 if (m_pEdit)
918 » { 891 {
919 » » m_pEdit->SetWordProps(m_eProps,m_wpPlace,&m_NewWordProps,m_wrPla ce,FALSE); 892 m_pEdit->SetWordProps(m_eProps,m_wpPlace,&m_NewWordProps,m_wrPlace,FALSE );
920 » » if (IsLast()) 893 if (IsLast())
921 » » { 894 {
922 » » » m_pEdit->SelectNone(); 895 m_pEdit->SelectNone();
923 » » » m_pEdit->PaintSetProps(m_eProps,m_wrPlace); 896 m_pEdit->PaintSetProps(m_eProps,m_wrPlace);
924 » » » m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos); 897 m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos);
925 » » } 898 }
926 » } 899 }
927 } 900 }
928 901
929 void CFXEU_SetWordProps::Undo() 902 void CFXEU_SetWordProps::Undo()
930 { 903 {
931 » if (m_pEdit) 904 if (m_pEdit)
932 » { 905 {
933 » » m_pEdit->SetWordProps(m_eProps,m_wpPlace,&m_OldWordProps,m_wrPla ce,FALSE); 906 m_pEdit->SetWordProps(m_eProps,m_wpPlace,&m_OldWordProps,m_wrPlace,FALSE );
934 » » if (IsFirst()) 907 if (IsFirst())
935 » » { 908 {
936 » » » m_pEdit->SelectNone(); 909 m_pEdit->SelectNone();
937 » » » m_pEdit->PaintSetProps(m_eProps,m_wrPlace); 910 m_pEdit->PaintSetProps(m_eProps,m_wrPlace);
938 » » » m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos); 911 m_pEdit->SetSel(m_wrPlace.BeginPos,m_wrPlace.EndPos);
939 » » } 912 }
940 » } 913 }
941 } 914 }
942 915
943 /* ------------------------------------- CFX_Edit ------------------------------ ------- */ 916 /* ------------------------------------- CFX_Edit ------------------------------ ------- */
944 917
945 CFX_Edit::CFX_Edit(IPDF_VariableText * pVT) : 918 CFX_Edit::CFX_Edit(IPDF_VariableText * pVT) :
946 » m_pVT(pVT), 919 m_pVT(pVT),
947 » m_pNotify(NULL), 920 m_pNotify(NULL),
948 » m_pOprNotify(NULL), 921 m_pOprNotify(NULL),
949 » m_pVTProvide(NULL), 922 m_pVTProvide(NULL),
950 » m_wpCaret(-1,-1,-1), 923 m_wpCaret(-1,-1,-1),
951 » m_wpOldCaret(-1,-1,-1), 924 m_wpOldCaret(-1,-1,-1),
952 » m_SelState(), 925 m_SelState(),
953 » m_ptScrollPos(0,0), 926 m_ptScrollPos(0,0),
954 » m_ptRefreshScrollPos(0,0), 927 m_ptRefreshScrollPos(0,0),
955 » m_bEnableScroll(FALSE), 928 m_bEnableScroll(FALSE),
956 » m_pIterator(NULL), 929 m_pIterator(NULL),
957 » m_ptCaret(0.0f,0.0f), 930 m_ptCaret(0.0f,0.0f),
958 » m_Undo(FX_EDIT_UNDO_MAXITEM), 931 m_Undo(FX_EDIT_UNDO_MAXITEM),
959 » m_nAlignment(0), 932 m_nAlignment(0),
960 » m_bNotifyFlag(FALSE), 933 m_bNotifyFlag(FALSE),
961 » m_bEnableOverflow(FALSE), 934 m_bEnableOverflow(FALSE),
962 » m_bEnableRefresh(TRUE), 935 m_bEnableRefresh(TRUE),
963 » m_rcOldContent(0.0f,0.0f,0.0f,0.0f), 936 m_rcOldContent(0.0f,0.0f,0.0f,0.0f),
964 » m_bEnableUndo(TRUE), 937 m_bEnableUndo(TRUE),
965 » m_bNotify(TRUE), 938 m_bNotify(TRUE),
966 » m_bOprNotify(FALSE), 939 m_bOprNotify(FALSE),
967 » m_pGroupUndoItem(NULL) 940 m_pGroupUndoItem(NULL)
968 { 941 {
969 » ASSERT(pVT != NULL); 942 ASSERT(pVT != NULL);
970 } 943 }
971 944
972 CFX_Edit::~CFX_Edit() 945 CFX_Edit::~CFX_Edit()
973 { 946 {
974 delete m_pVTProvide; 947 delete m_pVTProvide;
975 m_pVTProvide = NULL; 948 m_pVTProvide = NULL;
976 delete m_pIterator; 949 delete m_pIterator;
977 m_pIterator = NULL; 950 m_pIterator = NULL;
978 ASSERT(m_pGroupUndoItem == NULL); 951 ASSERT(m_pGroupUndoItem == NULL);
979 } 952 }
980 953
981 // public methods 954 // public methods
982 955
983 void CFX_Edit::Initialize() 956 void CFX_Edit::Initialize()
984 { 957 {
985 » m_pVT->Initialize(); 958 m_pVT->Initialize();
986 » SetCaret(m_pVT->GetBeginWordPlace()); 959 SetCaret(m_pVT->GetBeginWordPlace());
987 » SetCaretOrigin(); 960 SetCaretOrigin();
988 } 961 }
989 962
990 void CFX_Edit::SetFontMap(IFX_Edit_FontMap * pFontMap) 963 void CFX_Edit::SetFontMap(IFX_Edit_FontMap * pFontMap)
991 { 964 {
992 delete m_pVTProvide; 965 delete m_pVTProvide;
993 m_pVT->SetProvider(m_pVTProvide = new CFX_Edit_Provider(pFontMap)); 966 m_pVT->SetProvider(m_pVTProvide = new CFX_Edit_Provider(pFontMap));
994 } 967 }
995 968
996 void CFX_Edit::SetVTProvider(IPDF_VariableText_Provider* pProvider) 969 void CFX_Edit::SetVTProvider(IPDF_VariableText_Provider* pProvider)
997 { 970 {
998 » m_pVT->SetProvider(pProvider); 971 m_pVT->SetProvider(pProvider);
999 } 972 }
1000 973
1001 void CFX_Edit::SetNotify(IFX_Edit_Notify* pNotify) 974 void CFX_Edit::SetNotify(IFX_Edit_Notify* pNotify)
1002 { 975 {
1003 » m_pNotify = pNotify; 976 m_pNotify = pNotify;
1004 } 977 }
1005 978
1006 void CFX_Edit::SetOprNotify(IFX_Edit_OprNotify* pOprNotify) 979 void CFX_Edit::SetOprNotify(IFX_Edit_OprNotify* pOprNotify)
1007 { 980 {
1008 » m_pOprNotify = pOprNotify; 981 m_pOprNotify = pOprNotify;
1009 } 982 }
1010 983
1011 IFX_Edit_Iterator * CFX_Edit::GetIterator() 984 IFX_Edit_Iterator * CFX_Edit::GetIterator()
1012 { 985 {
1013 » if (!m_pIterator) 986 if (!m_pIterator)
1014 » » m_pIterator = new CFX_Edit_Iterator(this,m_pVT->GetIterator()); 987 m_pIterator = new CFX_Edit_Iterator(this,m_pVT->GetIterator());
1015 988
1016 » return m_pIterator; 989 return m_pIterator;
1017 } 990 }
1018 991
1019 IPDF_VariableText *» CFX_Edit::GetVariableText() 992 IPDF_VariableText * CFX_Edit::GetVariableText()
1020 { 993 {
1021 » return m_pVT; 994 return m_pVT;
1022 } 995 }
1023 996
1024 IFX_Edit_FontMap* CFX_Edit::GetFontMap() 997 IFX_Edit_FontMap* CFX_Edit::GetFontMap()
1025 { 998 {
1026 » if (m_pVTProvide) 999 if (m_pVTProvide)
1027 » » return m_pVTProvide->GetFontMap(); 1000 return m_pVTProvide->GetFontMap();
1028 1001
1029 » return NULL; 1002 return NULL;
1030 } 1003 }
1031 1004
1032 void CFX_Edit::SetPlateRect(const CPDF_Rect & rect, FX_BOOL bPaint/* = TRUE*/) 1005 void CFX_Edit::SetPlateRect(const CPDF_Rect & rect, FX_BOOL bPaint/* = TRUE*/)
1033 { 1006 {
1034 » m_pVT->SetPlateRect(rect); 1007 m_pVT->SetPlateRect(rect);
1035 » m_ptScrollPos = CPDF_Point(rect.left,rect.top); 1008 m_ptScrollPos = CPDF_Point(rect.left,rect.top);
1036 » if (bPaint) Paint(); 1009 if (bPaint) Paint();
1037 } 1010 }
1038 1011
1039 void CFX_Edit::SetAlignmentH(int32_t nFormat/* =0 */, FX_BOOL bPaint/* = TRUE*/) 1012 void CFX_Edit::SetAlignmentH(int32_t nFormat/* =0 */, FX_BOOL bPaint/* = TRUE*/)
1040 { 1013 {
1041 » m_pVT->SetAlignment(nFormat); 1014 m_pVT->SetAlignment(nFormat);
1042 » if (bPaint) Paint(); 1015 if (bPaint) Paint();
1043 } 1016 }
1044 1017
1045 void CFX_Edit::SetAlignmentV(int32_t nFormat/* =0 */, FX_BOOL bPaint/* = TRUE*/) 1018 void CFX_Edit::SetAlignmentV(int32_t nFormat/* =0 */, FX_BOOL bPaint/* = TRUE*/)
1046 { 1019 {
1047 » m_nAlignment = nFormat; 1020 m_nAlignment = nFormat;
1048 » if (bPaint) Paint(); 1021 if (bPaint) Paint();
1049 } 1022 }
1050 1023
1051 void CFX_Edit::SetPasswordChar(FX_WORD wSubWord/* ='*' */, FX_BOOL bPaint/* = TR UE*/) 1024 void CFX_Edit::SetPasswordChar(FX_WORD wSubWord/* ='*' */, FX_BOOL bPaint/* = TR UE*/)
1052 { 1025 {
1053 » m_pVT->SetPasswordChar(wSubWord); 1026 m_pVT->SetPasswordChar(wSubWord);
1054 » if (bPaint) Paint(); 1027 if (bPaint) Paint();
1055 } 1028 }
1056 1029
1057 void CFX_Edit::SetLimitChar(int32_t nLimitChar/* =0 */, FX_BOOL bPaint/* = TRUE* /) 1030 void CFX_Edit::SetLimitChar(int32_t nLimitChar/* =0 */, FX_BOOL bPaint/* = TRUE* /)
1058 { 1031 {
1059 » m_pVT->SetLimitChar(nLimitChar); 1032 m_pVT->SetLimitChar(nLimitChar);
1060 » if (bPaint) Paint(); 1033 if (bPaint) Paint();
1061 } 1034 }
1062 1035
1063 void CFX_Edit::SetCharArray(int32_t nCharArray/* =0 */, FX_BOOL bPaint/* = TRUE* /) 1036 void CFX_Edit::SetCharArray(int32_t nCharArray/* =0 */, FX_BOOL bPaint/* = TRUE* /)
1064 { 1037 {
1065 » m_pVT->SetCharArray(nCharArray); 1038 m_pVT->SetCharArray(nCharArray);
1066 » if (bPaint) Paint(); 1039 if (bPaint) Paint();
1067 } 1040 }
1068 1041
1069 void CFX_Edit::SetCharSpace(FX_FLOAT fCharSpace/* =0.0f */, FX_BOOL bPaint/* = T RUE*/) 1042 void CFX_Edit::SetCharSpace(FX_FLOAT fCharSpace/* =0.0f */, FX_BOOL bPaint/* = T RUE*/)
1070 { 1043 {
1071 » m_pVT->SetCharSpace(fCharSpace); 1044 m_pVT->SetCharSpace(fCharSpace);
1072 » if (bPaint) Paint(); 1045 if (bPaint) Paint();
1073 } 1046 }
1074 1047
1075 void CFX_Edit::SetHorzScale(int32_t nHorzScale/* =100 */, FX_BOOL bPaint/* = TRU E*/) 1048 void CFX_Edit::SetHorzScale(int32_t nHorzScale/* =100 */, FX_BOOL bPaint/* = TRU E*/)
1076 { 1049 {
1077 » m_pVT->SetHorzScale(nHorzScale); 1050 m_pVT->SetHorzScale(nHorzScale);
1078 » if (bPaint) Paint(); 1051 if (bPaint) Paint();
1079 } 1052 }
1080 1053
1081 void CFX_Edit::SetMultiLine(FX_BOOL bMultiLine/* =TRUE */, FX_BOOL bPaint/* = TR UE*/) 1054 void CFX_Edit::SetMultiLine(FX_BOOL bMultiLine/* =TRUE */, FX_BOOL bPaint/* = TR UE*/)
1082 { 1055 {
1083 » m_pVT->SetMultiLine(bMultiLine); 1056 m_pVT->SetMultiLine(bMultiLine);
1084 » if (bPaint) Paint(); 1057 if (bPaint) Paint();
1085 } 1058 }
1086 1059
1087 void CFX_Edit::SetAutoReturn(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/ ) 1060 void CFX_Edit::SetAutoReturn(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/ )
1088 { 1061 {
1089 » m_pVT->SetAutoReturn(bAuto); 1062 m_pVT->SetAutoReturn(bAuto);
1090 » if (bPaint) Paint(); 1063 if (bPaint) Paint();
1091 } 1064 }
1092 1065
1093 void CFX_Edit::SetLineLeading(FX_FLOAT fLineLeading/* =TRUE */, FX_BOOL bPaint/* = TRUE*/) 1066 void CFX_Edit::SetLineLeading(FX_FLOAT fLineLeading/* =TRUE */, FX_BOOL bPaint/* = TRUE*/)
1094 { 1067 {
1095 » m_pVT->SetLineLeading(fLineLeading); 1068 m_pVT->SetLineLeading(fLineLeading);
1096 » if (bPaint) Paint(); 1069 if (bPaint) Paint();
1097 } 1070 }
1098 1071
1099 void CFX_Edit::SetAutoFontSize(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE */) 1072 void CFX_Edit::SetAutoFontSize(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE */)
1100 { 1073 {
1101 » m_pVT->SetAutoFontSize(bAuto); 1074 m_pVT->SetAutoFontSize(bAuto);
1102 » if (bPaint) Paint(); 1075 if (bPaint) Paint();
1103 } 1076 }
1104 1077
1105 void CFX_Edit::SetFontSize(FX_FLOAT fFontSize, FX_BOOL bPaint/* = TRUE*/) 1078 void CFX_Edit::SetFontSize(FX_FLOAT fFontSize, FX_BOOL bPaint/* = TRUE*/)
1106 { 1079 {
1107 » m_pVT->SetFontSize(fFontSize); 1080 m_pVT->SetFontSize(fFontSize);
1108 » if (bPaint) Paint(); 1081 if (bPaint) Paint();
1109 } 1082 }
1110 1083
1111 void CFX_Edit::SetAutoScroll(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/ ) 1084 void CFX_Edit::SetAutoScroll(FX_BOOL bAuto/* =TRUE */, FX_BOOL bPaint/* = TRUE*/ )
1112 { 1085 {
1113 » m_bEnableScroll = bAuto; 1086 m_bEnableScroll = bAuto;
1114 » if (bPaint) Paint(); 1087 if (bPaint) Paint();
1115 } 1088 }
1116 1089
1117 void CFX_Edit::SetTextOverflow(FX_BOOL bAllowed /*= FALSE*/, FX_BOOL bPaint/* = TRUE*/) 1090 void CFX_Edit::SetTextOverflow(FX_BOOL bAllowed /*= FALSE*/, FX_BOOL bPaint/* = TRUE*/)
1118 { 1091 {
1119 » m_bEnableOverflow = bAllowed; 1092 m_bEnableOverflow = bAllowed;
1120 » if (bPaint) Paint(); 1093 if (bPaint) Paint();
1121 } 1094 }
1122 1095
1123 void CFX_Edit::SetSel(int32_t nStartChar,int32_t nEndChar) 1096 void CFX_Edit::SetSel(int32_t nStartChar,int32_t nEndChar)
1124 { 1097 {
1125 » if (m_pVT->IsValid()) 1098 if (m_pVT->IsValid())
1126 » { 1099 {
1127 » » if (nStartChar == 0 && nEndChar < 0) 1100 if (nStartChar == 0 && nEndChar < 0)
1128 » » { 1101 {
1129 » » » SelectAll(); 1102 SelectAll();
1130 » » } 1103 }
1131 » » else if (nStartChar < 0) 1104 else if (nStartChar < 0)
1132 » » { 1105 {
1133 » » » SelectNone(); 1106 SelectNone();
1134 » » } 1107 }
1135 » » else 1108 else
1136 » » { 1109 {
1137 » » » if (nStartChar < nEndChar) 1110 if (nStartChar < nEndChar)
1138 » » » { 1111 {
1139 » » » » SetSel(m_pVT->WordIndexToWordPlace(nStartChar),m _pVT->WordIndexToWordPlace(nEndChar)); 1112 SetSel(m_pVT->WordIndexToWordPlace(nStartChar),m_pVT->WordIndexT oWordPlace(nEndChar));
1140 » » » } 1113 }
1141 » » » else 1114 else
1142 » » » { 1115 {
1143 » » » » SetSel(m_pVT->WordIndexToWordPlace(nEndChar),m_p VT->WordIndexToWordPlace(nStartChar)); 1116 SetSel(m_pVT->WordIndexToWordPlace(nEndChar),m_pVT->WordIndexToW ordPlace(nStartChar));
1144 » » » } 1117 }
1145 » » } 1118 }
1146 » } 1119 }
1147 } 1120 }
1148 1121
1149 void CFX_Edit::SetSel(const CPVT_WordPlace & begin,const CPVT_WordPlace & end) 1122 void CFX_Edit::SetSel(const CPVT_WordPlace & begin,const CPVT_WordPlace & end)
1150 { 1123 {
1151 » if (m_pVT->IsValid()) 1124 if (m_pVT->IsValid())
1152 » { 1125 {
1153 » » SelectNone(); 1126 SelectNone();
1154 1127
1155 » » m_SelState.Set(begin,end); 1128 m_SelState.Set(begin,end);
1156 1129
1157 » » SetCaret(m_SelState.EndPos); 1130 SetCaret(m_SelState.EndPos);
1158 1131
1159 » » if (m_SelState.IsExist()) 1132 if (m_SelState.IsExist())
1160 » » { 1133 {
1161 » » » ScrollToCaret(); 1134 ScrollToCaret();
1162 » » » CPVT_WordRange wr(m_SelState.BeginPos,m_SelState.EndPos) ; 1135 CPVT_WordRange wr(m_SelState.BeginPos,m_SelState.EndPos);
1163 » » » Refresh(RP_OPTIONAL,&wr); 1136 Refresh(RP_OPTIONAL,&wr);
1164 » » » SetCaretInfo(); 1137 SetCaretInfo();
1165 » » } 1138 }
1166 » » else 1139 else
1167 » » { 1140 {
1168 » » » ScrollToCaret(); 1141 ScrollToCaret();
1169 » » » SetCaretInfo(); 1142 SetCaretInfo();
1170 » » } 1143 }
1171 » } 1144 }
1172 } 1145 }
1173 1146
1174 void CFX_Edit::GetSel(int32_t & nStartChar, int32_t & nEndChar) const 1147 void CFX_Edit::GetSel(int32_t & nStartChar, int32_t & nEndChar) const
1175 { 1148 {
1176 » nStartChar = -1; 1149 nStartChar = -1;
1177 » nEndChar = -1; 1150 nEndChar = -1;
1178 1151
1179 » if (m_pVT->IsValid()) 1152 if (m_pVT->IsValid())
1180 » { 1153 {
1181 » » if (m_SelState.IsExist()) 1154 if (m_SelState.IsExist())
1182 » » { 1155 {
1183 » » » if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0) 1156 if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0)
1184 » » » { 1157 {
1185 » » » » nStartChar = m_pVT->WordPlaceToWordIndex(m_SelSt ate.BeginPos); 1158 nStartChar = m_pVT->WordPlaceToWordIndex(m_SelState.BeginPos);
1186 » » » » nEndChar = m_pVT->WordPlaceToWordIndex(m_SelStat e.EndPos); 1159 nEndChar = m_pVT->WordPlaceToWordIndex(m_SelState.EndPos);
1187 » » » } 1160 }
1188 » » » else 1161 else
1189 » » » { 1162 {
1190 » » » » nStartChar = m_pVT->WordPlaceToWordIndex(m_SelSt ate.EndPos); 1163 nStartChar = m_pVT->WordPlaceToWordIndex(m_SelState.EndPos);
1191 » » » » nEndChar = m_pVT->WordPlaceToWordIndex(m_SelStat e.BeginPos); 1164 nEndChar = m_pVT->WordPlaceToWordIndex(m_SelState.BeginPos);
1192 » » » } 1165 }
1193 » » } 1166 }
1194 » » else 1167 else
1195 » » { 1168 {
1196 » » » nStartChar = m_pVT->WordPlaceToWordIndex(m_wpCaret); 1169 nStartChar = m_pVT->WordPlaceToWordIndex(m_wpCaret);
1197 » » » nEndChar = m_pVT->WordPlaceToWordIndex(m_wpCaret); 1170 nEndChar = m_pVT->WordPlaceToWordIndex(m_wpCaret);
1198 » » } 1171 }
1199 » } 1172 }
1200 } 1173 }
1201 1174
1202 int32_t CFX_Edit::GetCaret() const 1175 int32_t CFX_Edit::GetCaret() const
1203 { 1176 {
1204 » if (m_pVT->IsValid()) 1177 if (m_pVT->IsValid())
1205 » » return m_pVT->WordPlaceToWordIndex(m_wpCaret); 1178 return m_pVT->WordPlaceToWordIndex(m_wpCaret);
1206 1179
1207 » return -1; 1180 return -1;
1208 } 1181 }
1209 1182
1210 CPVT_WordPlace CFX_Edit::GetCaretWordPlace() const 1183 CPVT_WordPlace CFX_Edit::GetCaretWordPlace() const
1211 { 1184 {
1212 » return m_wpCaret; 1185 return m_wpCaret;
1213 } 1186 }
1214 1187
1215 CFX_WideString CFX_Edit::GetText() const 1188 CFX_WideString CFX_Edit::GetText() const
1216 { 1189 {
1217 » CFX_WideString swRet; 1190 CFX_WideString swRet;
1218 1191
1219 » if (m_pVT->IsValid()) 1192 if (m_pVT->IsValid())
1220 » { 1193 {
1221 » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 1194 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
1222 » » { 1195 {
1223 » » » FX_BOOL bRich = m_pVT->IsRichText(); 1196 FX_BOOL bRich = m_pVT->IsRichText();
1224 1197
1225 » » » pIterator->SetAt(0); 1198 pIterator->SetAt(0);
1226 1199
1227 » » » CPVT_Word wordinfo; 1200 CPVT_Word wordinfo;
1228 » » » CPVT_WordPlace oldplace = pIterator->GetAt(); 1201 CPVT_WordPlace oldplace = pIterator->GetAt();
1229 » » » while (pIterator->NextWord()) 1202 while (pIterator->NextWord())
1230 » » » { 1203 {
1231 » » » » CPVT_WordPlace place = pIterator->GetAt(); 1204 CPVT_WordPlace place = pIterator->GetAt();
1232 1205
1233 » » » » if (pIterator->GetWord(wordinfo)) 1206 if (pIterator->GetWord(wordinfo))
1234 » » » » { 1207 {
1235 » » » » » if (bRich) 1208 if (bRich)
1236 » » » » » { 1209 {
1237 » » » » » » swRet += wordinfo.Word; 1210 swRet += wordinfo.Word;
1238 » » » » » } 1211 }
1239 » » » » » else 1212 else
1240 » » » » » { 1213 {
1241 » » » » » » swRet += wordinfo.Word; 1214 swRet += wordinfo.Word;
1242 » » » » » } 1215 }
1243 » » » » } 1216 }
1244 1217
1245 » » » » if (oldplace.SecCmp(place) != 0) 1218 if (oldplace.SecCmp(place) != 0)
1246 » » » » { 1219 {
1247 » » » » » swRet += 0x0D; 1220 swRet += 0x0D;
1248 » » » » » swRet += 0x0A; 1221 swRet += 0x0A;
1249 » » » » } 1222 }
1250 1223
1251 » » » » oldplace = place; 1224 oldplace = place;
1252 » » » } 1225 }
1253 » » } 1226 }
1254 » } 1227 }
1255 1228
1256 » return swRet; 1229 return swRet;
1257 } 1230 }
1258 1231
1259 CFX_WideString CFX_Edit::GetRangeText(const CPVT_WordRange & range) const 1232 CFX_WideString CFX_Edit::GetRangeText(const CPVT_WordRange & range) const
1260 { 1233 {
1261 » CFX_WideString swRet; 1234 CFX_WideString swRet;
1262 1235
1263 » if (m_pVT->IsValid()) 1236 if (m_pVT->IsValid())
1264 » { 1237 {
1265 » » FX_BOOL bRich = m_pVT->IsRichText(); 1238 FX_BOOL bRich = m_pVT->IsRichText();
1266 1239
1267 » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 1240 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
1268 » » { 1241 {
1269 » » » CPVT_WordRange wrTemp = range; 1242 CPVT_WordRange wrTemp = range;
1270 » » » m_pVT->UpdateWordPlace(wrTemp.BeginPos); 1243 m_pVT->UpdateWordPlace(wrTemp.BeginPos);
1271 » » » m_pVT->UpdateWordPlace(wrTemp.EndPos); 1244 m_pVT->UpdateWordPlace(wrTemp.EndPos);
1272 » » » pIterator->SetAt(wrTemp.BeginPos); 1245 pIterator->SetAt(wrTemp.BeginPos);
1273 1246
1274 » » » CPVT_Word wordinfo; 1247 CPVT_Word wordinfo;
1275 » » » CPVT_WordPlace oldplace = wrTemp.BeginPos; 1248 CPVT_WordPlace oldplace = wrTemp.BeginPos;
1276 » » » while (pIterator->NextWord()) 1249 while (pIterator->NextWord())
1277 » » » { 1250 {
1278 » » » » CPVT_WordPlace place = pIterator->GetAt(); 1251 CPVT_WordPlace place = pIterator->GetAt();
1279 » » » » if (place.WordCmp(wrTemp.EndPos) > 0)break; 1252 if (place.WordCmp(wrTemp.EndPos) > 0)break;
1280 1253
1281 » » » » if (pIterator->GetWord(wordinfo)) 1254 if (pIterator->GetWord(wordinfo))
1282 » » » » { 1255 {
1283 » » » » » if (bRich) 1256 if (bRich)
1284 » » » » » { 1257 {
1285 » » » » » » swRet += wordinfo.Word; 1258 swRet += wordinfo.Word;
1286 » » » » » } 1259 }
1287 » » » » » else 1260 else
1288 » » » » » { 1261 {
1289 » » » » » » swRet += wordinfo.Word; 1262 swRet += wordinfo.Word;
1290 » » » » » } 1263 }
1291 » » » » } 1264 }
1292 1265
1293 » » » » if (oldplace.SecCmp(place) != 0) 1266 if (oldplace.SecCmp(place) != 0)
1294 » » » » { 1267 {
1295 » » » » » swRet += 0x0D; 1268 swRet += 0x0D;
1296 » » » » » swRet += 0x0A; 1269 swRet += 0x0A;
1297 » » » » } 1270 }
1298 1271
1299 » » » » oldplace = place; 1272 oldplace = place;
1300 » » » } 1273 }
1301 » » } 1274 }
1302 » } 1275 }
1303 1276
1304 » return swRet; 1277 return swRet;
1305 } 1278 }
1306 1279
1307 CFX_WideString CFX_Edit::GetSelText() const 1280 CFX_WideString CFX_Edit::GetSelText() const
1308 { 1281 {
1309 » return GetRangeText(m_SelState.ConvertToWordRange()); 1282 return GetRangeText(m_SelState.ConvertToWordRange());
1310 } 1283 }
1311 1284
1312 int32_t CFX_Edit::GetTotalWords() const 1285 int32_t CFX_Edit::GetTotalWords() const
1313 { 1286 {
1314 » return m_pVT->GetTotalWords(); 1287 return m_pVT->GetTotalWords();
1315 } 1288 }
1316 1289
1317 int32_t CFX_Edit::GetTotalLines() const 1290 int32_t CFX_Edit::GetTotalLines() const
1318 { 1291 {
1319 » int32_t nLines = 0; 1292 int32_t nLines = 0;
1320 1293
1321 » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 1294 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
1322 » { 1295 {
1323 » » pIterator->SetAt(0); 1296 pIterator->SetAt(0);
1324 » » while (pIterator->NextLine()) 1297 while (pIterator->NextLine())
1325 » » » nLines++; 1298 nLines++;
1326 » } 1299 }
1327 1300
1328 » return nLines+1; 1301 return nLines+1;
1329 } 1302 }
1330 1303
1331 CPVT_WordRange CFX_Edit::GetSelectWordRange() const 1304 CPVT_WordRange CFX_Edit::GetSelectWordRange() const
1332 { 1305 {
1333 » return m_SelState.ConvertToWordRange(); 1306 return m_SelState.ConvertToWordRange();
1334 } 1307 }
1335 1308
1336 CPVT_WordRange CFX_Edit::CombineWordRange(const CPVT_WordRange & wr1, const CPVT _WordRange & wr2) 1309 CPVT_WordRange CFX_Edit::CombineWordRange(const CPVT_WordRange & wr1, const CPVT _WordRange & wr2)
1337 { 1310 {
1338 » CPVT_WordRange wrRet; 1311 CPVT_WordRange wrRet;
1339 1312
1340 » if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0) 1313 if (wr1.BeginPos.WordCmp(wr2.BeginPos) < 0)
1341 » { 1314 {
1342 » » wrRet.BeginPos = wr1.BeginPos; 1315 wrRet.BeginPos = wr1.BeginPos;
1343 » } 1316 }
1344 » else 1317 else
1345 » { 1318 {
1346 » » wrRet.BeginPos = wr2.BeginPos; 1319 wrRet.BeginPos = wr2.BeginPos;
1347 » } 1320 }
1348 1321
1349 » if (wr1.EndPos.WordCmp(wr2.EndPos) < 0) 1322 if (wr1.EndPos.WordCmp(wr2.EndPos) < 0)
1350 » { 1323 {
1351 » » wrRet.EndPos = wr2.EndPos; 1324 wrRet.EndPos = wr2.EndPos;
1352 » } 1325 }
1353 » else 1326 else
1354 » { 1327 {
1355 » » wrRet.EndPos = wr1.EndPos; 1328 wrRet.EndPos = wr1.EndPos;
1356 » } 1329 }
1357 1330
1358 » return wrRet; 1331 return wrRet;
1359 } 1332 }
1360 1333
1361 FX_BOOL»CFX_Edit::IsRichText() const 1334 FX_BOOL CFX_Edit::IsRichText() const
1362 { 1335 {
1363 » return m_pVT->IsRichText(); 1336 return m_pVT->IsRichText();
1364 } 1337 }
1365 1338
1366 void CFX_Edit::SetRichText(FX_BOOL bRichText/* =TRUE */, FX_BOOL bPaint/* = TRUE */) 1339 void CFX_Edit::SetRichText(FX_BOOL bRichText/* =TRUE */, FX_BOOL bPaint/* = TRUE */)
1367 { 1340 {
1368 » m_pVT->SetRichText(bRichText); 1341 m_pVT->SetRichText(bRichText);
1369 » if (bPaint) Paint(); 1342 if (bPaint) Paint();
1370 } 1343 }
1371 1344
1372 FX_BOOL CFX_Edit::SetRichFontIndex(int32_t nFontIndex) 1345 FX_BOOL CFX_Edit::SetRichFontIndex(int32_t nFontIndex)
1373 { 1346 {
1374 » CPVT_WordProps WordProps; 1347 CPVT_WordProps WordProps;
1375 » WordProps.nFontIndex = nFontIndex; 1348 WordProps.nFontIndex = nFontIndex;
1376 » return SetRichTextProps(EP_FONTINDEX,NULL,&WordProps); 1349 return SetRichTextProps(EP_FONTINDEX,NULL,&WordProps);
1377 } 1350 }
1378 1351
1379 FX_BOOL CFX_Edit::SetRichFontSize(FX_FLOAT fFontSize) 1352 FX_BOOL CFX_Edit::SetRichFontSize(FX_FLOAT fFontSize)
1380 { 1353 {
1381 » CPVT_WordProps WordProps; 1354 CPVT_WordProps WordProps;
1382 » WordProps.fFontSize = fFontSize; 1355 WordProps.fFontSize = fFontSize;
1383 » return SetRichTextProps(EP_FONTSIZE,NULL,&WordProps); 1356 return SetRichTextProps(EP_FONTSIZE,NULL,&WordProps);
1384 } 1357 }
1385 1358
1386 FX_BOOL CFX_Edit::SetRichTextColor(FX_COLORREF dwColor) 1359 FX_BOOL CFX_Edit::SetRichTextColor(FX_COLORREF dwColor)
1387 { 1360 {
1388 » CPVT_WordProps WordProps; 1361 CPVT_WordProps WordProps;
1389 » WordProps.dwWordColor = dwColor; 1362 WordProps.dwWordColor = dwColor;
1390 » return SetRichTextProps(EP_WORDCOLOR,NULL,&WordProps); 1363 return SetRichTextProps(EP_WORDCOLOR,NULL,&WordProps);
1391 } 1364 }
1392 1365
1393 FX_BOOL CFX_Edit::SetRichTextScript(int32_t nScriptType) 1366 FX_BOOL CFX_Edit::SetRichTextScript(int32_t nScriptType)
1394 { 1367 {
1395 » CPVT_WordProps WordProps; 1368 CPVT_WordProps WordProps;
1396 » WordProps.nScriptType = nScriptType; 1369 WordProps.nScriptType = nScriptType;
1397 » return SetRichTextProps(EP_SCRIPTTYPE,NULL,&WordProps); 1370 return SetRichTextProps(EP_SCRIPTTYPE,NULL,&WordProps);
1398 } 1371 }
1399 1372
1400 FX_BOOL CFX_Edit::SetRichTextBold(FX_BOOL bBold) 1373 FX_BOOL CFX_Edit::SetRichTextBold(FX_BOOL bBold)
1401 { 1374 {
1402 » CPVT_WordProps WordProps; 1375 CPVT_WordProps WordProps;
1403 » if (bBold) 1376 if (bBold)
1404 » » WordProps.nWordStyle |= PVTWORD_STYLE_BOLD; 1377 WordProps.nWordStyle |= PVTWORD_STYLE_BOLD;
1405 » return SetRichTextProps(EP_BOLD,NULL,&WordProps); 1378 return SetRichTextProps(EP_BOLD,NULL,&WordProps);
1406 } 1379 }
1407 1380
1408 FX_BOOL CFX_Edit::SetRichTextItalic(FX_BOOL bItalic) 1381 FX_BOOL CFX_Edit::SetRichTextItalic(FX_BOOL bItalic)
1409 { 1382 {
1410 » CPVT_WordProps WordProps; 1383 CPVT_WordProps WordProps;
1411 » if (bItalic) 1384 if (bItalic)
1412 » » WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC; 1385 WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC;
1413 » return SetRichTextProps(EP_ITALIC,NULL,&WordProps); 1386 return SetRichTextProps(EP_ITALIC,NULL,&WordProps);
1414 } 1387 }
1415 1388
1416 FX_BOOL CFX_Edit::SetRichTextUnderline(FX_BOOL bUnderline) 1389 FX_BOOL CFX_Edit::SetRichTextUnderline(FX_BOOL bUnderline)
1417 { 1390 {
1418 » CPVT_WordProps WordProps; 1391 CPVT_WordProps WordProps;
1419 » if (bUnderline) 1392 if (bUnderline)
1420 » » WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE; 1393 WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE;
1421 » return SetRichTextProps(EP_UNDERLINE,NULL,&WordProps); 1394 return SetRichTextProps(EP_UNDERLINE,NULL,&WordProps);
1422 } 1395 }
1423 1396
1424 FX_BOOL CFX_Edit::SetRichTextCrossout(FX_BOOL bCrossout) 1397 FX_BOOL CFX_Edit::SetRichTextCrossout(FX_BOOL bCrossout)
1425 { 1398 {
1426 » CPVT_WordProps WordProps; 1399 CPVT_WordProps WordProps;
1427 » if (bCrossout) 1400 if (bCrossout)
1428 » » WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT; 1401 WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT;
1429 » return SetRichTextProps(EP_CROSSOUT,NULL,&WordProps); 1402 return SetRichTextProps(EP_CROSSOUT,NULL,&WordProps);
1430 } 1403 }
1431 1404
1432 FX_BOOL CFX_Edit::SetRichTextCharSpace(FX_FLOAT fCharSpace) 1405 FX_BOOL CFX_Edit::SetRichTextCharSpace(FX_FLOAT fCharSpace)
1433 { 1406 {
1434 » CPVT_WordProps WordProps; 1407 CPVT_WordProps WordProps;
1435 » WordProps.fCharSpace = fCharSpace; 1408 WordProps.fCharSpace = fCharSpace;
1436 » return SetRichTextProps(EP_CHARSPACE,NULL,&WordProps); 1409 return SetRichTextProps(EP_CHARSPACE,NULL,&WordProps);
1437 } 1410 }
1438 1411
1439 FX_BOOL CFX_Edit::SetRichTextHorzScale(int32_t nHorzScale /*= 100*/) 1412 FX_BOOL CFX_Edit::SetRichTextHorzScale(int32_t nHorzScale /*= 100*/)
1440 { 1413 {
1441 » CPVT_WordProps WordProps; 1414 CPVT_WordProps WordProps;
1442 » WordProps.nHorzScale = nHorzScale; 1415 WordProps.nHorzScale = nHorzScale;
1443 » return SetRichTextProps(EP_HORZSCALE,NULL,&WordProps); 1416 return SetRichTextProps(EP_HORZSCALE,NULL,&WordProps);
1444 } 1417 }
1445 1418
1446 FX_BOOL CFX_Edit::SetRichTextLineLeading(FX_FLOAT fLineLeading) 1419 FX_BOOL CFX_Edit::SetRichTextLineLeading(FX_FLOAT fLineLeading)
1447 { 1420 {
1448 » CPVT_SecProps SecProps; 1421 CPVT_SecProps SecProps;
1449 » SecProps.fLineLeading = fLineLeading; 1422 SecProps.fLineLeading = fLineLeading;
1450 » return SetRichTextProps(EP_LINELEADING,&SecProps,NULL); 1423 return SetRichTextProps(EP_LINELEADING,&SecProps,NULL);
1451 } 1424 }
1452 1425
1453 FX_BOOL CFX_Edit::SetRichTextLineIndent(FX_FLOAT fLineIndent) 1426 FX_BOOL CFX_Edit::SetRichTextLineIndent(FX_FLOAT fLineIndent)
1454 { 1427 {
1455 » CPVT_SecProps SecProps; 1428 CPVT_SecProps SecProps;
1456 » SecProps.fLineIndent = fLineIndent; 1429 SecProps.fLineIndent = fLineIndent;
1457 » return SetRichTextProps(EP_LINEINDENT,&SecProps,NULL); 1430 return SetRichTextProps(EP_LINEINDENT,&SecProps,NULL);
1458 } 1431 }
1459 1432
1460 FX_BOOL»CFX_Edit::SetRichTextAlignment(int32_t nAlignment) 1433 FX_BOOL CFX_Edit::SetRichTextAlignment(int32_t nAlignment)
1461 { 1434 {
1462 » CPVT_SecProps SecProps; 1435 CPVT_SecProps SecProps;
1463 » SecProps.nAlignment = nAlignment; 1436 SecProps.nAlignment = nAlignment;
1464 » return SetRichTextProps(EP_ALIGNMENT,&SecProps,NULL); 1437 return SetRichTextProps(EP_ALIGNMENT,&SecProps,NULL);
1465 } 1438 }
1466 1439
1467 FX_BOOL CFX_Edit::SetRichTextProps(EDIT_PROPS_E eProps, const CPVT_SecProps * pS ecProps, const CPVT_WordProps * pWordProps) 1440 FX_BOOL CFX_Edit::SetRichTextProps(EDIT_PROPS_E eProps, const CPVT_SecProps * pS ecProps, const CPVT_WordProps * pWordProps)
1468 { 1441 {
1469 » FX_BOOL bSet = FALSE; 1442 FX_BOOL bSet = FALSE;
1470 » FX_BOOL bSet1,bSet2; 1443 FX_BOOL bSet1,bSet2;
1471 » if (m_pVT->IsValid() && m_pVT->IsRichText()) 1444 if (m_pVT->IsValid() && m_pVT->IsRichText())
1472 » { 1445 {
1473 » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 1446 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
1474 » » { 1447 {
1475 » » » CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange(); 1448 CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange();
1476 1449
1477 » » » m_pVT->UpdateWordPlace(wrTemp.BeginPos); 1450 m_pVT->UpdateWordPlace(wrTemp.BeginPos);
1478 » » » m_pVT->UpdateWordPlace(wrTemp.EndPos); 1451 m_pVT->UpdateWordPlace(wrTemp.EndPos);
1479 » » » pIterator->SetAt(wrTemp.BeginPos); 1452 pIterator->SetAt(wrTemp.BeginPos);
1480 1453
1481 » » » BeginGroupUndo(L"");; 1454 BeginGroupUndo(L"");;
1482 1455
1483 » » » bSet = SetSecProps(eProps,wrTemp.BeginPos,pSecProps,pWor dProps,wrTemp,TRUE); 1456 bSet = SetSecProps(eProps,wrTemp.BeginPos,pSecProps,pWordProps,wrTem p,TRUE);
1484 1457
1485 » » » while (pIterator->NextWord()) 1458 while (pIterator->NextWord())
1486 » » » { 1459 {
1487 » » » » CPVT_WordPlace place = pIterator->GetAt(); 1460 CPVT_WordPlace place = pIterator->GetAt();
1488 » » » » if (place.WordCmp(wrTemp.EndPos) > 0) break; 1461 if (place.WordCmp(wrTemp.EndPos) > 0) break;
1489 » » » » bSet1 = SetSecProps(eProps,place,pSecProps,pWord Props,wrTemp,TRUE); 1462 bSet1 = SetSecProps(eProps,place,pSecProps,pWordProps,wrTemp,TRU E);
1490 » » » » bSet2 = SetWordProps(eProps,place,pWordProps,wrT emp,TRUE); 1463 bSet2 = SetWordProps(eProps,place,pWordProps,wrTemp,TRUE);
1491 1464
1492 » » » » if (!bSet) 1465 if (!bSet)
1493 » » » » » bSet = (bSet1 || bSet2); 1466 bSet = (bSet1 || bSet2);
1494 » » » } 1467 }
1495 1468
1496 » » » EndGroupUndo(); 1469 EndGroupUndo();
1497 1470
1498 » » » if (bSet) 1471 if (bSet)
1499 » » » { 1472 {
1500 » » » » PaintSetProps(eProps,wrTemp); 1473 PaintSetProps(eProps,wrTemp);
1501 » » » } 1474 }
1502 » » } 1475 }
1503 » } 1476 }
1504 1477
1505 » return bSet; 1478 return bSet;
1506 } 1479 }
1507 1480
1508 void CFX_Edit::PaintSetProps(EDIT_PROPS_E eProps, const CPVT_WordRange & wr) 1481 void CFX_Edit::PaintSetProps(EDIT_PROPS_E eProps, const CPVT_WordRange & wr)
1509 { 1482 {
1510 » switch(eProps) 1483 switch(eProps)
1511 » { 1484 {
1512 » case EP_LINELEADING: 1485 case EP_LINELEADING:
1513 » case EP_LINEINDENT: 1486 case EP_LINEINDENT:
1514 » case EP_ALIGNMENT: 1487 case EP_ALIGNMENT:
1515 » » RearrangePart(wr); 1488 RearrangePart(wr);
1516 » » ScrollToCaret(); 1489 ScrollToCaret();
1517 » » Refresh(RP_ANALYSE); 1490 Refresh(RP_ANALYSE);
1518 » » SetCaretOrigin(); 1491 SetCaretOrigin();
1519 » » SetCaretInfo(); 1492 SetCaretInfo();
1520 » » break; 1493 break;
1521 » case EP_WORDCOLOR: 1494 case EP_WORDCOLOR:
1522 » case EP_UNDERLINE: 1495 case EP_UNDERLINE:
1523 » case EP_CROSSOUT: 1496 case EP_CROSSOUT:
1524 » » Refresh(RP_OPTIONAL,&wr); 1497 Refresh(RP_OPTIONAL,&wr);
1525 » » break; 1498 break;
1526 » case EP_FONTINDEX: 1499 case EP_FONTINDEX:
1527 » case EP_FONTSIZE: 1500 case EP_FONTSIZE:
1528 » case EP_SCRIPTTYPE: 1501 case EP_SCRIPTTYPE:
1529 » case EP_CHARSPACE: 1502 case EP_CHARSPACE:
1530 » case EP_HORZSCALE: 1503 case EP_HORZSCALE:
1531 » case EP_BOLD: 1504 case EP_BOLD:
1532 » case EP_ITALIC: 1505 case EP_ITALIC:
1533 » » RearrangePart(wr); 1506 RearrangePart(wr);
1534 » » ScrollToCaret(); 1507 ScrollToCaret();
1535 1508
1536 » » CPVT_WordRange wrRefresh(m_pVT->GetSectionBeginPlace(wr.BeginPos ), 1509 CPVT_WordRange wrRefresh(m_pVT->GetSectionBeginPlace(wr.BeginPos),
1537 » » » m_pVT->GetSectionEndPlace(wr.EndPos)); 1510 m_pVT->GetSectionEndPlace(wr.EndPos));
1538 » » Refresh(RP_ANALYSE,&wrRefresh); 1511 Refresh(RP_ANALYSE,&wrRefresh);
1539 1512
1540 » » SetCaretOrigin(); 1513 SetCaretOrigin();
1541 » » SetCaretInfo(); 1514 SetCaretInfo();
1542 » » break; 1515 break;
1543 » } 1516 }
1544 } 1517 }
1545 1518
1546 FX_BOOL CFX_Edit::SetSecProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place, 1519 FX_BOOL CFX_Edit::SetSecProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place,
1547 const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps, 1520 const CPVT_SecProps * pSecProps, const CPVT_WordP rops * pWordProps,
1548 const CPVT_WordRange & wr, FX_BOOL bAddUndo) 1521 const CPVT_WordRange & wr, FX_BOOL bAddUndo)
1549 { 1522 {
1550 if (m_pVT->IsValid() && m_pVT->IsRichText()) 1523 if (m_pVT->IsValid() && m_pVT->IsRichText())
1551 { 1524 {
1552 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 1525 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
1553 { 1526 {
1554 FX_BOOL bSet = FALSE; 1527 FX_BOOL bSet = FALSE;
1555 CPVT_Section secinfo; 1528 CPVT_Section secinfo;
1556 CPVT_Section OldSecinfo; 1529 CPVT_Section OldSecinfo;
1557 1530
1558 CPVT_WordPlace oldplace = pIterator->GetAt(); 1531 CPVT_WordPlace oldplace = pIterator->GetAt();
1559 1532
1560 if (eProps == EP_LINELEADING || eProps == EP_LINEINDENT || eProps == EP_ALIGNMENT) 1533 if (eProps == EP_LINELEADING || eProps == EP_LINEINDENT || eProps == EP_ALIGNMENT)
1561 { 1534 {
1562 if (pSecProps) 1535 if (pSecProps)
1563 { 1536 {
1564 pIterator->SetAt(place); 1537 pIterator->SetAt(place);
1565 if (pIterator->GetSection(secinfo)) 1538 if (pIterator->GetSection(secinfo))
1566 { 1539 {
1567 if (bAddUndo) OldSecinfo = secin fo; 1540 if (bAddUndo) OldSecinfo = secinfo;
1568 1541
1569 switch(eProps) 1542 switch(eProps)
1570 { 1543 {
1571 case EP_LINELEADING: 1544 case EP_LINELEADING:
1572 if (!FX_EDIT_IsFloatEqua l(secinfo.SecProps.fLineLeading,pSecProps->fLineLeading)) 1545 if (!FX_EDIT_IsFloatEqual(secinfo.SecProps.fLineLead ing,pSecProps->fLineLeading))
1573 { 1546 {
1574 secinfo.SecProps .fLineLeading = pSecProps->fLineLeading; 1547 secinfo.SecProps.fLineLeading = pSecProps->fLine Leading;
1575 bSet = TRUE; 1548 bSet = TRUE;
1576 } 1549 }
1577 break; 1550 break;
1578 case EP_LINEINDENT: 1551 case EP_LINEINDENT:
1579 if (!FX_EDIT_IsFloatEqua l(secinfo.SecProps.fLineIndent,pSecProps->fLineIndent)) 1552 if (!FX_EDIT_IsFloatEqual(secinfo.SecProps.fLineInde nt,pSecProps->fLineIndent))
1580 { 1553 {
1581 secinfo.SecProps .fLineIndent = pSecProps->fLineIndent; 1554 secinfo.SecProps.fLineIndent = pSecProps->fLineI ndent;
1582 bSet = TRUE; 1555 bSet = TRUE;
1583 } 1556 }
1584 break; 1557 break;
1585 case EP_ALIGNMENT: 1558 case EP_ALIGNMENT:
1586 if (secinfo.SecProps.nAl ignment != pSecProps->nAlignment) 1559 if (secinfo.SecProps.nAlignment != pSecProps->nAlign ment)
1587 { 1560 {
1588 secinfo.SecProps .nAlignment = pSecProps->nAlignment; 1561 secinfo.SecProps.nAlignment = pSecProps->nAlignm ent;
1589 bSet = TRUE; 1562 bSet = TRUE;
1590 } 1563 }
1591 break; 1564 break;
1592 default: 1565 default:
1593 break; 1566 break;
1594 } 1567 }
1595 } 1568 }
1596 } 1569 }
1597 } 1570 }
1598 else 1571 else
1599 { 1572 {
1600 if (pWordProps && place == m_pVT->GetSectionBegi nPlace(place)) 1573 if (pWordProps && place == m_pVT->GetSectionBeginPlace(place))
1601 { 1574 {
1602 pIterator->SetAt(place); 1575 pIterator->SetAt(place);
1603 if (pIterator->GetSection(secinfo)) 1576 if (pIterator->GetSection(secinfo))
1604 { 1577 {
1605 if (bAddUndo) OldSecinfo = secin fo; 1578 if (bAddUndo) OldSecinfo = secinfo;
1606 1579
1607 switch(eProps) 1580 switch(eProps)
1608 { 1581 {
1609 case EP_FONTINDEX: 1582 case EP_FONTINDEX:
1610 if (secinfo.WordProps.nF ontIndex != pWordProps->nFontIndex) 1583 if (secinfo.WordProps.nFontIndex != pWordProps->nFon tIndex)
1611 { 1584 {
1612 secinfo.WordProp s.nFontIndex = pWordProps->nFontIndex; 1585 secinfo.WordProps.nFontIndex = pWordProps->nFont Index;
1613 bSet = TRUE; 1586 bSet = TRUE;
1614 } 1587 }
1615 break; 1588 break;
1616 case EP_FONTSIZE: 1589 case EP_FONTSIZE:
1617 if (!FX_EDIT_IsFloatEqua l(secinfo.WordProps.fFontSize,pWordProps->fFontSize)) 1590 if (!FX_EDIT_IsFloatEqual(secinfo.WordProps.fFontSiz e,pWordProps->fFontSize))
1618 { 1591 {
1619 secinfo.WordProp s.fFontSize = pWordProps->fFontSize; 1592 secinfo.WordProps.fFontSize = pWordProps->fFontS ize;
1620 bSet = TRUE; 1593 bSet = TRUE;
1621 } 1594 }
1622 break; 1595 break;
1623 case EP_WORDCOLOR: 1596 case EP_WORDCOLOR:
1624 if (secinfo.WordProps.dw WordColor != pWordProps->dwWordColor) 1597 if (secinfo.WordProps.dwWordColor != pWordProps->dwW ordColor)
1625 { 1598 {
1626 secinfo.WordProp s.dwWordColor = pWordProps->dwWordColor; 1599 secinfo.WordProps.dwWordColor = pWordProps->dwWo rdColor;
1627 bSet = TRUE; 1600 bSet = TRUE;
1628 } 1601 }
1629 break; 1602 break;
1630 case EP_SCRIPTTYPE: 1603 case EP_SCRIPTTYPE:
1631 if (secinfo.WordProps.nS criptType != pWordProps->nScriptType) 1604 if (secinfo.WordProps.nScriptType != pWordProps->nSc riptType)
1632 { 1605 {
1633 secinfo.WordProp s.nScriptType = pWordProps->nScriptType; 1606 secinfo.WordProps.nScriptType = pWordProps->nScr iptType;
1634 bSet = TRUE; 1607 bSet = TRUE;
1635 } 1608 }
1636 break; 1609 break;
1637 case EP_CHARSPACE: 1610 case EP_CHARSPACE:
1638 if (!FX_EDIT_IsFloatEqua l(secinfo.WordProps.fCharSpace,pWordProps->fCharSpace)) 1611 if (!FX_EDIT_IsFloatEqual(secinfo.WordProps.fCharSpa ce,pWordProps->fCharSpace))
1639 { 1612 {
1640 secinfo.WordProp s.fCharSpace = pWordProps->fCharSpace; 1613 secinfo.WordProps.fCharSpace = pWordProps->fChar Space;
1641 bSet = TRUE; 1614 bSet = TRUE;
1642 } 1615 }
1643 break; 1616 break;
1644 case EP_HORZSCALE: 1617 case EP_HORZSCALE:
1645 if (secinfo.WordProps.nH orzScale != pWordProps->nHorzScale) 1618 if (secinfo.WordProps.nHorzScale != pWordProps->nHor zScale)
1646 { 1619 {
1647 secinfo.WordProp s.nHorzScale = pWordProps->nHorzScale; 1620 secinfo.WordProps.nHorzScale = pWordProps->nHorz Scale;
1648 bSet = TRUE; 1621 bSet = TRUE;
1649 } 1622 }
1650 break; 1623 break;
1651 case EP_UNDERLINE: 1624 case EP_UNDERLINE:
1652 if (pWordProps->nWordSty le & PVTWORD_STYLE_UNDERLINE) 1625 if (pWordProps->nWordStyle & PVTWORD_STYLE_UNDERLINE )
1653 { 1626 {
1654 if ((secinfo.Wor dProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) == 0) 1627 if ((secinfo.WordProps.nWordStyle & PVTWORD_STYL E_UNDERLINE) == 0)
1655 { 1628 {
1656 secinfo. WordProps.nWordStyle |= PVTWORD_STYLE_UNDERLINE; 1629 secinfo.WordProps.nWordStyle |= PVTWORD_STYL E_UNDERLINE;
1657 bSet = T RUE; 1630 bSet = TRUE;
1658 } 1631 }
1659 } 1632 }
1660 else 1633 else
1661 { 1634 {
1662 if ((secinfo.Wor dProps.nWordStyle & PVTWORD_STYLE_UNDERLINE) != 0) 1635 if ((secinfo.WordProps.nWordStyle & PVTWORD_STYL E_UNDERLINE) != 0)
1663 { 1636 {
1664 secinfo. WordProps.nWordStyle &= ~PVTWORD_STYLE_UNDERLINE; 1637 secinfo.WordProps.nWordStyle &= ~PVTWORD_STY LE_UNDERLINE;
1665 bSet = T RUE; 1638 bSet = TRUE;
1666 } 1639 }
1667 } 1640 }
1668 break; 1641 break;
1669 case EP_CROSSOUT: 1642 case EP_CROSSOUT:
1670 if (pWordProps->nWordSty le & PVTWORD_STYLE_CROSSOUT) 1643 if (pWordProps->nWordStyle & PVTWORD_STYLE_CROSSOUT)
1671 { 1644 {
1672 if ((secinfo.Wor dProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) == 0) 1645 if ((secinfo.WordProps.nWordStyle & PVTWORD_STYL E_CROSSOUT) == 0)
1673 { 1646 {
1674 secinfo. WordProps.nWordStyle |= PVTWORD_STYLE_CROSSOUT; 1647 secinfo.WordProps.nWordStyle |= PVTWORD_STYL E_CROSSOUT;
1675 bSet = T RUE; 1648 bSet = TRUE;
1676 } 1649 }
1677 } 1650 }
1678 else 1651 else
1679 { 1652 {
1680 if ((secinfo.Wor dProps.nWordStyle & PVTWORD_STYLE_CROSSOUT) != 0) 1653 if ((secinfo.WordProps.nWordStyle & PVTWORD_STYL E_CROSSOUT) != 0)
1681 { 1654 {
1682 secinfo. WordProps.nWordStyle &= ~PVTWORD_STYLE_CROSSOUT; 1655 secinfo.WordProps.nWordStyle &= ~PVTWORD_STY LE_CROSSOUT;
1683 bSet = T RUE; 1656 bSet = TRUE;
1684 } 1657 }
1685 } 1658 }
1686 break; 1659 break;
1687 case EP_BOLD: 1660 case EP_BOLD:
1688 if (pWordProps->nWordSty le & PVTWORD_STYLE_BOLD) 1661 if (pWordProps->nWordStyle & PVTWORD_STYLE_BOLD)
1689 { 1662 {
1690 if ((secinfo.Wor dProps.nWordStyle & PVTWORD_STYLE_BOLD) == 0) 1663 if ((secinfo.WordProps.nWordStyle & PVTWORD_STYL E_BOLD) == 0)
1691 { 1664 {
1692 secinfo. WordProps.nWordStyle |= PVTWORD_STYLE_BOLD; 1665 secinfo.WordProps.nWordStyle |= PVTWORD_STYL E_BOLD;
1693 bSet = T RUE; 1666 bSet = TRUE;
1694 } 1667 }
1695 } 1668 }
1696 else 1669 else
1697 { 1670 {
1698 if ((secinfo.Wor dProps.nWordStyle & PVTWORD_STYLE_BOLD) != 0) 1671 if ((secinfo.WordProps.nWordStyle & PVTWORD_STYL E_BOLD) != 0)
1699 { 1672 {
1700 secinfo. WordProps.nWordStyle &= ~PVTWORD_STYLE_BOLD; 1673 secinfo.WordProps.nWordStyle &= ~PVTWORD_STY LE_BOLD;
1701 bSet = T RUE; 1674 bSet = TRUE;
1702 } 1675 }
1703 } 1676 }
1704 break; 1677 break;
1705 case EP_ITALIC: 1678 case EP_ITALIC:
1706 if (pWordProps->nWordSty le & PVTWORD_STYLE_ITALIC) 1679 if (pWordProps->nWordStyle & PVTWORD_STYLE_ITALIC)
1707 { 1680 {
1708 if ((secinfo.Wor dProps.nWordStyle & PVTWORD_STYLE_ITALIC) == 0) 1681 if ((secinfo.WordProps.nWordStyle & PVTWORD_STYL E_ITALIC) == 0)
1709 { 1682 {
1710 secinfo. WordProps.nWordStyle |= PVTWORD_STYLE_ITALIC; 1683 secinfo.WordProps.nWordStyle |= PVTWORD_STYL E_ITALIC;
1711 bSet = T RUE; 1684 bSet = TRUE;
1712 } 1685 }
1713 } 1686 }
1714 else 1687 else
1715 { 1688 {
1716 if ((secinfo.Wor dProps.nWordStyle & PVTWORD_STYLE_ITALIC) != 0) 1689 if ((secinfo.WordProps.nWordStyle & PVTWORD_STYL E_ITALIC) != 0)
1717 { 1690 {
1718 secinfo. WordProps.nWordStyle &= ~PVTWORD_STYLE_ITALIC; 1691 secinfo.WordProps.nWordStyle &= ~PVTWORD_STY LE_ITALIC;
1719 bSet = T RUE; 1692 bSet = TRUE;
1720 } 1693 }
1721 } 1694 }
1722 break; 1695 break;
1723 default: 1696 default:
1724 break; 1697 break;
1725 } 1698 }
1726 } 1699 }
1727 } 1700 }
1728 } 1701 }
1729 1702
1730 if (bSet) 1703 if (bSet)
1731 { 1704 {
1732 pIterator->SetSection(secinfo); 1705 pIterator->SetSection(secinfo);
1733 1706
1734 if (bAddUndo && m_bEnableUndo) 1707 if (bAddUndo && m_bEnableUndo)
1735 { 1708 {
1736 AddEditUndoItem(new CFXEU_SetSecProps 1709 AddEditUndoItem(new CFXEU_SetSecProps
1737 (this,place,eProps,OldSecinfo.Se cProps,OldSecinfo.WordProps,secinfo.SecProps,secinfo.WordProps,wr)); 1710 (this,place,eProps,OldSecinfo.SecProps,OldSecinfo.WordPr ops,secinfo.SecProps,secinfo.WordProps,wr));
1738 } 1711 }
1739 } 1712 }
1740 1713
1741 pIterator->SetAt(oldplace); 1714 pIterator->SetAt(oldplace);
1742 1715
1743 return bSet; 1716 return bSet;
1744 } 1717 }
1745 } 1718 }
1746 1719
1747 return FALSE; 1720 return FALSE;
1748 } 1721 }
1749 1722
1750 FX_BOOL CFX_Edit::SetWordProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place , 1723 FX_BOOL CFX_Edit::SetWordProps(EDIT_PROPS_E eProps, const CPVT_WordPlace & place ,
1751 const CPVT_WordP rops * pWordProps, const CPVT_WordRange & wr, FX_BOOL bAddUndo) 1724 const CPVT_WordProps * pWordProps, const CPVT_Wo rdRange & wr, FX_BOOL bAddUndo)
1752 { 1725 {
1753 if (m_pVT->IsValid() && m_pVT->IsRichText()) 1726 if (m_pVT->IsValid() && m_pVT->IsRichText())
1754 { 1727 {
1755 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 1728 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
1756 { 1729 {
1757 FX_BOOL bSet = FALSE; 1730 FX_BOOL bSet = FALSE;
1758 CPVT_Word wordinfo; 1731 CPVT_Word wordinfo;
1759 CPVT_Word OldWordinfo; 1732 CPVT_Word OldWordinfo;
1760 1733
1761 CPVT_WordPlace oldplace = pIterator->GetAt(); 1734 CPVT_WordPlace oldplace = pIterator->GetAt();
1762 1735
1763 if (pWordProps) 1736 if (pWordProps)
1764 { 1737 {
1765 pIterator->SetAt(place); 1738 pIterator->SetAt(place);
1766 if (pIterator->GetWord(wordinfo)) 1739 if (pIterator->GetWord(wordinfo))
1767 { 1740 {
1768 if (bAddUndo) OldWordinfo = wordinfo; 1741 if (bAddUndo) OldWordinfo = wordinfo;
1769 1742
1770 switch(eProps) 1743 switch(eProps)
1771 { 1744 {
1772 case EP_FONTINDEX: 1745 case EP_FONTINDEX:
1773 if (wordinfo.WordProps.nFontInde x != pWordProps->nFontIndex) 1746 if (wordinfo.WordProps.nFontIndex != pWordProps->nFontIn dex)
1774 { 1747 {
1775 if (IFX_Edit_FontMap* pF ontMap = GetFontMap()) 1748 if (IFX_Edit_FontMap* pFontMap = GetFontMap())
1776 { 1749 {
1777 wordinfo.WordPro ps.nFontIndex = pFontMap->GetWordFontIndex(wordinfo.Word,wordinfo.nCharset,pWord Props->nFontIndex); 1750 wordinfo.WordProps.nFontIndex = pFontMap->GetWor dFontIndex(wordinfo.Word,wordinfo.nCharset,pWordProps->nFontIndex);
1778 } 1751 }
1779 bSet = TRUE; 1752 bSet = TRUE;
1780 } 1753 }
1781 break; 1754 break;
1782 case EP_FONTSIZE: 1755 case EP_FONTSIZE:
1783 if (!FX_EDIT_IsFloatEqual(wordin fo.WordProps.fFontSize,pWordProps->fFontSize)) 1756 if (!FX_EDIT_IsFloatEqual(wordinfo.WordProps.fFontSize,p WordProps->fFontSize))
1784 { 1757 {
1785 wordinfo.WordProps.fFont Size = pWordProps->fFontSize; 1758 wordinfo.WordProps.fFontSize = pWordProps->fFontSize ;
1786 bSet = TRUE; 1759 bSet = TRUE;
1787 } 1760 }
1788 break; 1761 break;
1789 case EP_WORDCOLOR: 1762 case EP_WORDCOLOR:
1790 if (wordinfo.WordProps.dwWordCol or != pWordProps->dwWordColor) 1763 if (wordinfo.WordProps.dwWordColor != pWordProps->dwWord Color)
1791 { 1764 {
1792 wordinfo.WordProps.dwWor dColor = pWordProps->dwWordColor; 1765 wordinfo.WordProps.dwWordColor = pWordProps->dwWordC olor;
1793 bSet = TRUE; 1766 bSet = TRUE;
1794 } 1767 }
1795 break; 1768 break;
1796 case EP_SCRIPTTYPE: 1769 case EP_SCRIPTTYPE:
1797 if (wordinfo.WordProps.nScriptTy pe != pWordProps->nScriptType) 1770 if (wordinfo.WordProps.nScriptType != pWordProps->nScrip tType)
1798 { 1771 {
1799 wordinfo.WordProps.nScri ptType = pWordProps->nScriptType; 1772 wordinfo.WordProps.nScriptType = pWordProps->nScript Type;
1800 bSet = TRUE; 1773 bSet = TRUE;
1801 } 1774 }
1802 break; 1775 break;
1803 case EP_CHARSPACE: 1776 case EP_CHARSPACE:
1804 if (!FX_EDIT_IsFloatEqual(wordin fo.WordProps.fCharSpace,pWordProps->fCharSpace)) 1777 if (!FX_EDIT_IsFloatEqual(wordinfo.WordProps.fCharSpace, pWordProps->fCharSpace))
1805 { 1778 {
1806 wordinfo.WordProps.fChar Space = pWordProps->fCharSpace; 1779 wordinfo.WordProps.fCharSpace = pWordProps->fCharSpa ce;
1807 bSet = TRUE; 1780 bSet = TRUE;
1808 } 1781 }
1809 break; 1782 break;
1810 case EP_HORZSCALE: 1783 case EP_HORZSCALE:
1811 if (wordinfo.WordProps.nHorzScal e != pWordProps->nHorzScale) 1784 if (wordinfo.WordProps.nHorzScale != pWordProps->nHorzSc ale)
1812 { 1785 {
1813 wordinfo.WordProps.nHorz Scale = pWordProps->nHorzScale; 1786 wordinfo.WordProps.nHorzScale = pWordProps->nHorzSca le;
1814 bSet = TRUE; 1787 bSet = TRUE;
1815 } 1788 }
1816 break; 1789 break;
1817 case EP_UNDERLINE: 1790 case EP_UNDERLINE:
1818 if (pWordProps->nWordStyle & PVT WORD_STYLE_UNDERLINE) 1791 if (pWordProps->nWordStyle & PVTWORD_STYLE_UNDERLINE)
1819 { 1792 {
1820 if ((wordinfo.WordProps. nWordStyle & PVTWORD_STYLE_UNDERLINE) == 0) 1793 if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_U NDERLINE) == 0)
1821 { 1794 {
1822 wordinfo.WordPro ps.nWordStyle |= PVTWORD_STYLE_UNDERLINE; 1795 wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_U NDERLINE;
1823 bSet = TRUE; 1796 bSet = TRUE;
1824 } 1797 }
1825 } 1798 }
1826 else 1799 else
1827 { 1800 {
1828 if ((wordinfo.WordProps. nWordStyle & PVTWORD_STYLE_UNDERLINE) != 0) 1801 if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_U NDERLINE) != 0)
1829 { 1802 {
1830 wordinfo.WordPro ps.nWordStyle &= ~PVTWORD_STYLE_UNDERLINE; 1803 wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ UNDERLINE;
1831 bSet = TRUE; 1804 bSet = TRUE;
1832 } 1805 }
1833 } 1806 }
1834 break; 1807 break;
1835 case EP_CROSSOUT: 1808 case EP_CROSSOUT:
1836 if (pWordProps->nWordStyle & PVT WORD_STYLE_CROSSOUT) 1809 if (pWordProps->nWordStyle & PVTWORD_STYLE_CROSSOUT)
1837 { 1810 {
1838 if ((wordinfo.WordProps. nWordStyle & PVTWORD_STYLE_CROSSOUT) == 0) 1811 if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_C ROSSOUT) == 0)
1839 { 1812 {
1840 wordinfo.WordPro ps.nWordStyle |= PVTWORD_STYLE_CROSSOUT; 1813 wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_C ROSSOUT;
1841 bSet = TRUE; 1814 bSet = TRUE;
1842 } 1815 }
1843 } 1816 }
1844 else 1817 else
1845 { 1818 {
1846 if ((wordinfo.WordProps. nWordStyle & PVTWORD_STYLE_CROSSOUT) != 0) 1819 if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_C ROSSOUT) != 0)
1847 { 1820 {
1848 wordinfo.WordPro ps.nWordStyle &= ~PVTWORD_STYLE_CROSSOUT; 1821 wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ CROSSOUT;
1849 bSet = TRUE; 1822 bSet = TRUE;
1850 } 1823 }
1851 } 1824 }
1852 break; 1825 break;
1853 case EP_BOLD: 1826 case EP_BOLD:
1854 if (pWordProps->nWordStyle & PVT WORD_STYLE_BOLD) 1827 if (pWordProps->nWordStyle & PVTWORD_STYLE_BOLD)
1855 { 1828 {
1856 if ((wordinfo.WordProps. nWordStyle & PVTWORD_STYLE_BOLD) == 0) 1829 if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_B OLD) == 0)
1857 { 1830 {
1858 wordinfo.WordPro ps.nWordStyle |= PVTWORD_STYLE_BOLD; 1831 wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_B OLD;
1859 bSet = TRUE; 1832 bSet = TRUE;
1860 } 1833 }
1861 } 1834 }
1862 else 1835 else
1863 { 1836 {
1864 if ((wordinfo.WordProps. nWordStyle & PVTWORD_STYLE_BOLD) != 0) 1837 if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_B OLD) != 0)
1865 { 1838 {
1866 wordinfo.WordPro ps.nWordStyle &= ~PVTWORD_STYLE_BOLD; 1839 wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ BOLD;
1867 bSet = TRUE; 1840 bSet = TRUE;
1868 } 1841 }
1869 } 1842 }
1870 break; 1843 break;
1871 case EP_ITALIC: 1844 case EP_ITALIC:
1872 if (pWordProps->nWordStyle & PVT WORD_STYLE_ITALIC) 1845 if (pWordProps->nWordStyle & PVTWORD_STYLE_ITALIC)
1873 { 1846 {
1874 if ((wordinfo.WordProps. nWordStyle & PVTWORD_STYLE_ITALIC) == 0) 1847 if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_I TALIC) == 0)
1875 { 1848 {
1876 wordinfo.WordPro ps.nWordStyle |= PVTWORD_STYLE_ITALIC; 1849 wordinfo.WordProps.nWordStyle |= PVTWORD_STYLE_I TALIC;
1877 bSet = TRUE; 1850 bSet = TRUE;
1878 } 1851 }
1879 } 1852 }
1880 else 1853 else
1881 { 1854 {
1882 if ((wordinfo.WordProps. nWordStyle & PVTWORD_STYLE_ITALIC) != 0) 1855 if ((wordinfo.WordProps.nWordStyle & PVTWORD_STYLE_I TALIC) != 0)
1883 { 1856 {
1884 wordinfo.WordPro ps.nWordStyle &= ~PVTWORD_STYLE_ITALIC; 1857 wordinfo.WordProps.nWordStyle &= ~PVTWORD_STYLE_ ITALIC;
1885 bSet = TRUE; 1858 bSet = TRUE;
1886 } 1859 }
1887 } 1860 }
1888 break; 1861 break;
1889 default: 1862 default:
1890 break; 1863 break;
1891 } 1864 }
1892 } 1865 }
1893 } 1866 }
1894 1867
1895 if (bSet) 1868 if (bSet)
1896 { 1869 {
1897 pIterator->SetWord(wordinfo); 1870 pIterator->SetWord(wordinfo);
1898 1871
1899 if (bAddUndo && m_bEnableUndo) 1872 if (bAddUndo && m_bEnableUndo)
1900 { 1873 {
1901 AddEditUndoItem(new CFXEU_SetWordProps 1874 AddEditUndoItem(new CFXEU_SetWordProps
1902 (this,place,eProps,OldWordinfo.W ordProps,wordinfo.WordProps,wr)); 1875 (this,place,eProps,OldWordinfo.WordProps,wordinfo.WordPr ops,wr));
1903 } 1876 }
1904 } 1877 }
1905 1878
1906 pIterator->SetAt(oldplace); 1879 pIterator->SetAt(oldplace);
1907 return bSet; 1880 return bSet;
1908 } 1881 }
1909 } 1882 }
1910 1883
1911 return FALSE; 1884 return FALSE;
1912 } 1885 }
1913 1886
1914 void CFX_Edit::SetText(const FX_WCHAR* text,int32_t charset /*= DEFAULT_CHARSET* /, 1887 void CFX_Edit::SetText(const FX_WCHAR* text,int32_t charset /*= DEFAULT_CHARSET* /,
1915 » » » » » » const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/) 1888 const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_Wo rdProps * pWordProps /*= NULL*/)
1916 { 1889 {
1917 » SetText(text,charset,pSecProps,pWordProps,TRUE,TRUE); 1890 SetText(text,charset,pSecProps,pWordProps,TRUE,TRUE);
1918 } 1891 }
1919 1892
1920 FX_BOOL CFX_Edit::InsertWord(FX_WORD word, int32_t charset /*= DEFAULT_CHARSET*/ , const CPVT_WordProps * pWordProps /*= NULL*/) 1893 FX_BOOL CFX_Edit::InsertWord(FX_WORD word, int32_t charset /*= DEFAULT_CHARSET*/ , const CPVT_WordProps * pWordProps /*= NULL*/)
1921 { 1894 {
1922 » return InsertWord(word,charset,pWordProps,TRUE,TRUE); 1895 return InsertWord(word,charset,pWordProps,TRUE,TRUE);
1923 } 1896 }
1924 1897
1925 FX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/) 1898 FX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/)
1926 { 1899 {
1927 » return InsertReturn(pSecProps,pWordProps,TRUE,TRUE); 1900 return InsertReturn(pSecProps,pWordProps,TRUE,TRUE);
1928 } 1901 }
1929 1902
1930 FX_BOOL CFX_Edit::Backspace() 1903 FX_BOOL CFX_Edit::Backspace()
1931 { 1904 {
1932 » return Backspace(TRUE,TRUE); 1905 return Backspace(TRUE,TRUE);
1933 } 1906 }
1934 1907
1935 FX_BOOL CFX_Edit::Delete() 1908 FX_BOOL CFX_Edit::Delete()
1936 { 1909 {
1937 » return Delete(TRUE,TRUE); 1910 return Delete(TRUE,TRUE);
1938 } 1911 }
1939 1912
1940 FX_BOOL CFX_Edit::Clear() 1913 FX_BOOL CFX_Edit::Clear()
1941 { 1914 {
1942 » return Clear(TRUE,TRUE); 1915 return Clear(TRUE,TRUE);
1943 } 1916 }
1944 1917
1945 FX_BOOL CFX_Edit::InsertText(const FX_WCHAR* text, int32_t charset /*= DEFAULT_C HARSET*/, 1918 FX_BOOL CFX_Edit::InsertText(const FX_WCHAR* text, int32_t charset /*= DEFAULT_C HARSET*/,
1946 » » » » » » » » const CPVT_SecPr ops * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/) 1919 const CPVT_SecProps * pSecProps /*= NULL*/,const CPVT_WordProps * pWordProps /*= NULL*/)
1947 { 1920 {
1948 » return InsertText(text,charset,pSecProps,pWordProps,TRUE,TRUE); 1921 return InsertText(text,charset,pSecProps,pWordProps,TRUE,TRUE);
1949 } 1922 }
1950 1923
1951 FX_FLOAT CFX_Edit::GetFontSize() const 1924 FX_FLOAT CFX_Edit::GetFontSize() const
1952 { 1925 {
1953 » return m_pVT->GetFontSize(); 1926 return m_pVT->GetFontSize();
1954 } 1927 }
1955 1928
1956 FX_WORD CFX_Edit::GetPasswordChar() const 1929 FX_WORD CFX_Edit::GetPasswordChar() const
1957 { 1930 {
1958 » return m_pVT->GetPasswordChar(); 1931 return m_pVT->GetPasswordChar();
1959 } 1932 }
1960 1933
1961 int32_t CFX_Edit::GetCharArray() const 1934 int32_t CFX_Edit::GetCharArray() const
1962 { 1935 {
1963 » return m_pVT->GetCharArray(); 1936 return m_pVT->GetCharArray();
1964 } 1937 }
1965 1938
1966 CPDF_Rect CFX_Edit::GetPlateRect() const 1939 CPDF_Rect CFX_Edit::GetPlateRect() const
1967 { 1940 {
1968 » return m_pVT->GetPlateRect(); 1941 return m_pVT->GetPlateRect();
1969 } 1942 }
1970 1943
1971 CPDF_Rect CFX_Edit::GetContentRect() const 1944 CPDF_Rect CFX_Edit::GetContentRect() const
1972 { 1945 {
1973 » return VTToEdit(m_pVT->GetContentRect()); 1946 return VTToEdit(m_pVT->GetContentRect());
1974 } 1947 }
1975 1948
1976 int32_t CFX_Edit::GetHorzScale() const 1949 int32_t CFX_Edit::GetHorzScale() const
1977 { 1950 {
1978 » return m_pVT->GetHorzScale(); 1951 return m_pVT->GetHorzScale();
1979 } 1952 }
1980 1953
1981 FX_FLOAT CFX_Edit::GetCharSpace() const 1954 FX_FLOAT CFX_Edit::GetCharSpace() const
1982 { 1955 {
1983 » return m_pVT->GetCharSpace(); 1956 return m_pVT->GetCharSpace();
1984 } 1957 }
1985 1958
1986 // inner methods 1959 // inner methods
1987 1960
1988 CPVT_WordRange CFX_Edit::GetWholeWordRange() const 1961 CPVT_WordRange CFX_Edit::GetWholeWordRange() const
1989 { 1962 {
1990 » if (m_pVT->IsValid()) 1963 if (m_pVT->IsValid())
1991 » » return CPVT_WordRange(m_pVT->GetBeginWordPlace(),m_pVT->GetEndWo rdPlace()); 1964 return CPVT_WordRange(m_pVT->GetBeginWordPlace(),m_pVT->GetEndWordPlace( ));
1992 1965
1993 » return CPVT_WordRange(); 1966 return CPVT_WordRange();
1994 } 1967 }
1995 1968
1996 CPVT_WordRange CFX_Edit::GetVisibleWordRange() const 1969 CPVT_WordRange CFX_Edit::GetVisibleWordRange() const
1997 { 1970 {
1998 » if (m_bEnableOverflow) return GetWholeWordRange(); 1971 if (m_bEnableOverflow) return GetWholeWordRange();
1999 1972
2000 » if (m_pVT->IsValid()) 1973 if (m_pVT->IsValid())
2001 » { 1974 {
2002 » » CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 1975 CPDF_Rect rcPlate = m_pVT->GetPlateRect();
2003 1976
2004 » » CPVT_WordPlace place1 = m_pVT->SearchWordPlace(EditToVT(CPDF_Poi nt(rcPlate.left,rcPlate.top))); 1977 CPVT_WordPlace place1 = m_pVT->SearchWordPlace(EditToVT(CPDF_Point(rcPla te.left,rcPlate.top)));
2005 » » CPVT_WordPlace place2 = m_pVT->SearchWordPlace(EditToVT(CPDF_Poi nt(rcPlate.right,rcPlate.bottom))); 1978 CPVT_WordPlace place2 = m_pVT->SearchWordPlace(EditToVT(CPDF_Point(rcPla te.right,rcPlate.bottom)));
2006 1979
2007 » » return CPVT_WordRange(place1,place2); 1980 return CPVT_WordRange(place1,place2);
2008 » } 1981 }
2009 1982
2010 » return CPVT_WordRange(); 1983 return CPVT_WordRange();
2011 } 1984 }
2012 1985
2013 CPVT_WordPlace CFX_Edit::SearchWordPlace(const CPDF_Point& point) const 1986 CPVT_WordPlace CFX_Edit::SearchWordPlace(const CPDF_Point& point) const
2014 { 1987 {
2015 » if (m_pVT->IsValid()) 1988 if (m_pVT->IsValid())
2016 » { 1989 {
2017 » » return m_pVT->SearchWordPlace(EditToVT(point)); 1990 return m_pVT->SearchWordPlace(EditToVT(point));
2018 » } 1991 }
2019 1992
2020 » return CPVT_WordPlace(); 1993 return CPVT_WordPlace();
2021 } 1994 }
2022 1995
2023 void CFX_Edit::Paint() 1996 void CFX_Edit::Paint()
2024 { 1997 {
2025 » if (m_pVT->IsValid()) 1998 if (m_pVT->IsValid())
2026 » { 1999 {
2027 » » RearrangeAll(); 2000 RearrangeAll();
2028 » » ScrollToCaret(); 2001 ScrollToCaret();
2029 » » Refresh(RP_NOANALYSE); 2002 Refresh(RP_NOANALYSE);
2030 » » SetCaretOrigin(); 2003 SetCaretOrigin();
2031 » » SetCaretInfo(); 2004 SetCaretInfo();
2032 » } 2005 }
2033 } 2006 }
2034 2007
2035 void CFX_Edit::RearrangeAll() 2008 void CFX_Edit::RearrangeAll()
2036 { 2009 {
2037 » if (m_pVT->IsValid()) 2010 if (m_pVT->IsValid())
2038 » { 2011 {
2039 » » m_pVT->UpdateWordPlace(m_wpCaret); 2012 m_pVT->UpdateWordPlace(m_wpCaret);
2040 » » m_pVT->RearrangeAll(); 2013 m_pVT->RearrangeAll();
2041 » » m_pVT->UpdateWordPlace(m_wpCaret); 2014 m_pVT->UpdateWordPlace(m_wpCaret);
2042 » » SetScrollInfo(); 2015 SetScrollInfo();
2043 » » SetContentChanged(); 2016 SetContentChanged();
2044 » } 2017 }
2045 } 2018 }
2046 2019
2047 void CFX_Edit::RearrangePart(const CPVT_WordRange & range) 2020 void CFX_Edit::RearrangePart(const CPVT_WordRange & range)
2048 { 2021 {
2049 » if (m_pVT->IsValid()) 2022 if (m_pVT->IsValid())
2050 » { 2023 {
2051 » » m_pVT->UpdateWordPlace(m_wpCaret); 2024 m_pVT->UpdateWordPlace(m_wpCaret);
2052 » » m_pVT->RearrangePart(range); 2025 m_pVT->RearrangePart(range);
2053 » » m_pVT->UpdateWordPlace(m_wpCaret); 2026 m_pVT->UpdateWordPlace(m_wpCaret);
2054 » » SetScrollInfo(); 2027 SetScrollInfo();
2055 » » SetContentChanged(); 2028 SetContentChanged();
2056 » } 2029 }
2057 } 2030 }
2058 2031
2059 void CFX_Edit::SetContentChanged() 2032 void CFX_Edit::SetContentChanged()
2060 { 2033 {
2061 » if (m_bNotify && m_pNotify) 2034 if (m_bNotify && m_pNotify)
2062 » { 2035 {
2063 » » CPDF_Rect rcContent = m_pVT->GetContentRect(); 2036 CPDF_Rect rcContent = m_pVT->GetContentRect();
2064 » » if (rcContent.Width() != m_rcOldContent.Width() || 2037 if (rcContent.Width() != m_rcOldContent.Width() ||
2065 » » » rcContent.Height() != m_rcOldContent.Height()) 2038 rcContent.Height() != m_rcOldContent.Height())
2066 » » { 2039 {
2067 » » » if (!m_bNotifyFlag) 2040 if (!m_bNotifyFlag)
2068 » » » { 2041 {
2069 » » » » m_bNotifyFlag = TRUE; 2042 m_bNotifyFlag = TRUE;
2070 » » » » m_pNotify->IOnContentChange(rcContent); 2043 m_pNotify->IOnContentChange(rcContent);
2071 » » » » m_bNotifyFlag = FALSE; 2044 m_bNotifyFlag = FALSE;
2072 » » » } 2045 }
2073 » » » m_rcOldContent = rcContent; 2046 m_rcOldContent = rcContent;
2074 » » } 2047 }
2075 » } 2048 }
2076 } 2049 }
2077 2050
2078 void CFX_Edit::SelectAll() 2051 void CFX_Edit::SelectAll()
2079 { 2052 {
2080 » if (m_pVT->IsValid()) 2053 if (m_pVT->IsValid())
2081 » { 2054 {
2082 » » m_SelState = GetWholeWordRange(); 2055 m_SelState = GetWholeWordRange();
2083 » » SetCaret(m_SelState.EndPos); 2056 SetCaret(m_SelState.EndPos);
2084 2057
2085 » » ScrollToCaret(); 2058 ScrollToCaret();
2086 » » CPVT_WordRange wrVisible = GetVisibleWordRange(); 2059 CPVT_WordRange wrVisible = GetVisibleWordRange();
2087 » » Refresh(RP_OPTIONAL,&wrVisible); 2060 Refresh(RP_OPTIONAL,&wrVisible);
2088 » » SetCaretInfo(); 2061 SetCaretInfo();
2089 » } 2062 }
2090 } 2063 }
2091 2064
2092 void CFX_Edit::SelectNone() 2065 void CFX_Edit::SelectNone()
2093 { 2066 {
2094 » if (m_pVT->IsValid()) 2067 if (m_pVT->IsValid())
2095 » { 2068 {
2096 » » if (m_SelState.IsExist()) 2069 if (m_SelState.IsExist())
2097 » » { 2070 {
2098 » » » CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange(); 2071 CPVT_WordRange wrTemp = m_SelState.ConvertToWordRange();
2099 » » » m_SelState.Default(); 2072 m_SelState.Default();
2100 » » » Refresh(RP_OPTIONAL,&wrTemp); 2073 Refresh(RP_OPTIONAL,&wrTemp);
2101 » » } 2074 }
2102 » } 2075 }
2103 } 2076 }
2104 2077
2105 FX_BOOL»CFX_Edit::IsSelected() const 2078 FX_BOOL CFX_Edit::IsSelected() const
2106 { 2079 {
2107 » return m_SelState.IsExist(); 2080 return m_SelState.IsExist();
2108 } 2081 }
2109 2082
2110 CPDF_Point CFX_Edit::VTToEdit(const CPDF_Point & point) const 2083 CPDF_Point CFX_Edit::VTToEdit(const CPDF_Point & point) const
2111 { 2084 {
2112 » CPDF_Rect rcContent = m_pVT->GetContentRect(); 2085 CPDF_Rect rcContent = m_pVT->GetContentRect();
2113 » CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2086 CPDF_Rect rcPlate = m_pVT->GetPlateRect();
2114 2087
2115 » FX_FLOAT fPadding = 0.0f; 2088 FX_FLOAT fPadding = 0.0f;
2116 2089
2117 » switch (m_nAlignment) 2090 switch (m_nAlignment)
2118 » { 2091 {
2119 » case 0: 2092 case 0:
2120 » » fPadding = 0.0f; 2093 fPadding = 0.0f;
2121 » » break; 2094 break;
2122 » case 1: 2095 case 1:
2123 » » fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f; 2096 fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f;
2124 » » break; 2097 break;
2125 » case 2: 2098 case 2:
2126 » » fPadding = rcPlate.Height() - rcContent.Height(); 2099 fPadding = rcPlate.Height() - rcContent.Height();
2127 » » break; 2100 break;
2128 » } 2101 }
2129 2102
2130 » return CPDF_Point(point.x - (m_ptScrollPos.x - rcPlate.left), 2103 return CPDF_Point(point.x - (m_ptScrollPos.x - rcPlate.left),
2131 » » point.y - (m_ptScrollPos.y + fPadding - rcPlate.top)); 2104 point.y - (m_ptScrollPos.y + fPadding - rcPlate.top));
2132 } 2105 }
2133 2106
2134 CPDF_Point CFX_Edit::EditToVT(const CPDF_Point & point) const 2107 CPDF_Point CFX_Edit::EditToVT(const CPDF_Point & point) const
2135 { 2108 {
2136 » CPDF_Rect rcContent = m_pVT->GetContentRect(); 2109 CPDF_Rect rcContent = m_pVT->GetContentRect();
2137 » CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2110 CPDF_Rect rcPlate = m_pVT->GetPlateRect();
2138 2111
2139 » FX_FLOAT fPadding = 0.0f; 2112 FX_FLOAT fPadding = 0.0f;
2140 2113
2141 » switch (m_nAlignment) 2114 switch (m_nAlignment)
2142 » { 2115 {
2143 » case 0: 2116 case 0:
2144 » » fPadding = 0.0f; 2117 fPadding = 0.0f;
2145 » » break; 2118 break;
2146 » case 1: 2119 case 1:
2147 » » fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f; 2120 fPadding = (rcPlate.Height() - rcContent.Height()) * 0.5f;
2148 » » break; 2121 break;
2149 » case 2: 2122 case 2:
2150 » » fPadding = rcPlate.Height() - rcContent.Height(); 2123 fPadding = rcPlate.Height() - rcContent.Height();
2151 » » break; 2124 break;
2152 » } 2125 }
2153 2126
2154 » return CPDF_Point(point.x + (m_ptScrollPos.x - rcPlate.left), 2127 return CPDF_Point(point.x + (m_ptScrollPos.x - rcPlate.left),
2155 » » point.y + (m_ptScrollPos.y + fPadding - rcPlate.top)); 2128 point.y + (m_ptScrollPos.y + fPadding - rcPlate.top));
2156 } 2129 }
2157 2130
2158 CPDF_Rect CFX_Edit::VTToEdit(const CPDF_Rect & rect) const 2131 CPDF_Rect CFX_Edit::VTToEdit(const CPDF_Rect & rect) const
2159 { 2132 {
2160 » CPDF_Point ptLeftBottom = VTToEdit(CPDF_Point(rect.left,rect.bottom)); 2133 CPDF_Point ptLeftBottom = VTToEdit(CPDF_Point(rect.left,rect.bottom));
2161 » CPDF_Point ptRightTop = VTToEdit(CPDF_Point(rect.right,rect.top)); 2134 CPDF_Point ptRightTop = VTToEdit(CPDF_Point(rect.right,rect.top));
2162 2135
2163 » return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y ); 2136 return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y);
2164 } 2137 }
2165 2138
2166 CPDF_Rect CFX_Edit::EditToVT(const CPDF_Rect & rect) const 2139 CPDF_Rect CFX_Edit::EditToVT(const CPDF_Rect & rect) const
2167 { 2140 {
2168 » CPDF_Point ptLeftBottom = EditToVT(CPDF_Point(rect.left,rect.bottom)); 2141 CPDF_Point ptLeftBottom = EditToVT(CPDF_Point(rect.left,rect.bottom));
2169 » CPDF_Point ptRightTop = EditToVT(CPDF_Point(rect.right,rect.top)); 2142 CPDF_Point ptRightTop = EditToVT(CPDF_Point(rect.right,rect.top));
2170 2143
2171 » return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y ); 2144 return CPDF_Rect(ptLeftBottom.x,ptLeftBottom.y,ptRightTop.x,ptRightTop.y);
2172 } 2145 }
2173 2146
2174 void CFX_Edit::SetScrollInfo() 2147 void CFX_Edit::SetScrollInfo()
2175 { 2148 {
2176 » if (m_bNotify && m_pNotify) 2149 if (m_bNotify && m_pNotify)
2177 » { 2150 {
2178 » » CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2151 CPDF_Rect rcPlate = m_pVT->GetPlateRect();
2179 » » CPDF_Rect rcContent = m_pVT->GetContentRect(); 2152 CPDF_Rect rcContent = m_pVT->GetContentRect();
2180 2153
2181 » » if (!m_bNotifyFlag) 2154 if (!m_bNotifyFlag)
2182 » » { 2155 {
2183 » » » m_bNotifyFlag = TRUE; 2156 m_bNotifyFlag = TRUE;
2184 » » » m_pNotify->IOnSetScrollInfoX(rcPlate.left, rcPlate.right , 2157 m_pNotify->IOnSetScrollInfoX(rcPlate.left, rcPlate.right,
2185 » » » » » » » » rcContent.left, rcContent.right, rcPlate.Width() / 3, rcPlate.Width()); 2158 rcContent.left, rcContent.right, rcPlate.Width() / 3, rcPlate.Width());
2186 2159
2187 » » » m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top , 2160 m_pNotify->IOnSetScrollInfoY(rcPlate.bottom, rcPlate.top,
2188 » » » » » rcContent.bottom, rcContent.top, rcPlate .Height() / 3, rcPlate.Height()); 2161 rcContent.bottom, rcContent.top, rcPlate.Height() / 3, rcPla te.Height());
2189 » » » m_bNotifyFlag = FALSE; 2162 m_bNotifyFlag = FALSE;
2190 » » } 2163 }
2191 » } 2164 }
2192 } 2165 }
2193 2166
2194 void CFX_Edit::SetScrollPosX(FX_FLOAT fx) 2167 void CFX_Edit::SetScrollPosX(FX_FLOAT fx)
2195 { 2168 {
2196 » if (!m_bEnableScroll) return; 2169 if (!m_bEnableScroll) return;
2197 2170
2198 » if (m_pVT->IsValid()) 2171 if (m_pVT->IsValid())
2199 » { 2172 {
2200 » » if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.x,fx)) 2173 if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.x,fx))
2201 » » { 2174 {
2202 » » » m_ptScrollPos.x = fx; 2175 m_ptScrollPos.x = fx;
2203 » » » Refresh(RP_NOANALYSE); 2176 Refresh(RP_NOANALYSE);
2204 2177
2205 » » » if (m_bNotify && m_pNotify) 2178 if (m_bNotify && m_pNotify)
2206 » » » { 2179 {
2207 » » » » if (!m_bNotifyFlag) 2180 if (!m_bNotifyFlag)
2208 » » » » { 2181 {
2209 » » » » » m_bNotifyFlag = TRUE; 2182 m_bNotifyFlag = TRUE;
2210 » » » » » m_pNotify->IOnSetScrollPosX(fx); 2183 m_pNotify->IOnSetScrollPosX(fx);
2211 » » » » » m_bNotifyFlag = FALSE; 2184 m_bNotifyFlag = FALSE;
2212 » » » » } 2185 }
2213 » » » } 2186 }
2214 » » } 2187 }
2215 » } 2188 }
2216 } 2189 }
2217 2190
2218 void CFX_Edit::SetScrollPosY(FX_FLOAT fy) 2191 void CFX_Edit::SetScrollPosY(FX_FLOAT fy)
2219 { 2192 {
2220 » if (!m_bEnableScroll) return; 2193 if (!m_bEnableScroll) return;
2221 2194
2222 » if (m_pVT->IsValid()) 2195 if (m_pVT->IsValid())
2223 » { 2196 {
2224 » » if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.y,fy)) 2197 if (!FX_EDIT_IsFloatEqual(m_ptScrollPos.y,fy))
2225 » » { 2198 {
2226 » » » m_ptScrollPos.y = fy; 2199 m_ptScrollPos.y = fy;
2227 » » » Refresh(RP_NOANALYSE); 2200 Refresh(RP_NOANALYSE);
2228 2201
2229 » » » if (m_bNotify && m_pNotify) 2202 if (m_bNotify && m_pNotify)
2230 » » » { 2203 {
2231 » » » » if (!m_bNotifyFlag) 2204 if (!m_bNotifyFlag)
2232 » » » » { 2205 {
2233 » » » » » m_bNotifyFlag = TRUE; 2206 m_bNotifyFlag = TRUE;
2234 » » » » » m_pNotify->IOnSetScrollPosY(fy); 2207 m_pNotify->IOnSetScrollPosY(fy);
2235 » » » » » m_bNotifyFlag = FALSE; 2208 m_bNotifyFlag = FALSE;
2236 » » » » } 2209 }
2237 » » » } 2210 }
2238 » » } 2211 }
2239 » } 2212 }
2240 } 2213 }
2241 2214
2242 void CFX_Edit::SetScrollPos(const CPDF_Point & point) 2215 void CFX_Edit::SetScrollPos(const CPDF_Point & point)
2243 { 2216 {
2244 » SetScrollPosX(point.x); 2217 SetScrollPosX(point.x);
2245 » SetScrollPosY(point.y); 2218 SetScrollPosY(point.y);
2246 » SetScrollLimit(); 2219 SetScrollLimit();
2247 » SetCaretInfo(); 2220 SetCaretInfo();
2248 } 2221 }
2249 2222
2250 CPDF_Point CFX_Edit::GetScrollPos() const 2223 CPDF_Point CFX_Edit::GetScrollPos() const
2251 { 2224 {
2252 » return m_ptScrollPos; 2225 return m_ptScrollPos;
2253 } 2226 }
2254 2227
2255 void CFX_Edit::SetScrollLimit() 2228 void CFX_Edit::SetScrollLimit()
2256 { 2229 {
2257 » if (m_pVT->IsValid()) 2230 if (m_pVT->IsValid())
2258 » { 2231 {
2259 » » CPDF_Rect rcContent = m_pVT->GetContentRect(); 2232 CPDF_Rect rcContent = m_pVT->GetContentRect();
2260 » » CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2233 CPDF_Rect rcPlate = m_pVT->GetPlateRect();
2261 2234
2262 » » if (rcPlate.Width() > rcContent.Width()) 2235 if (rcPlate.Width() > rcContent.Width())
2263 » » { 2236 {
2264 » » » SetScrollPosX(rcPlate.left); 2237 SetScrollPosX(rcPlate.left);
2265 » » } 2238 }
2266 » » else 2239 else
2267 » » { 2240 {
2268 » » » if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.x, rcContent.le ft)) 2241 if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.x, rcContent.left))
2269 » » » { 2242 {
2270 » » » » SetScrollPosX(rcContent.left); 2243 SetScrollPosX(rcContent.left);
2271 » » » } 2244 }
2272 » » » else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.x, rcConten t.right - rcPlate.Width())) 2245 else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.x, rcContent.right - rc Plate.Width()))
2273 » » » { 2246 {
2274 » » » » SetScrollPosX(rcContent.right - rcPlate.Width()) ; 2247 SetScrollPosX(rcContent.right - rcPlate.Width());
2275 » » » } 2248 }
2276 » » } 2249 }
2277 2250
2278 » » if (rcPlate.Height() > rcContent.Height()) 2251 if (rcPlate.Height() > rcContent.Height())
2279 » » { 2252 {
2280 » » » SetScrollPosY(rcPlate.top); 2253 SetScrollPosY(rcPlate.top);
2281 » » } 2254 }
2282 » » else 2255 else
2283 » » { 2256 {
2284 » » » if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.y, rcContent.bo ttom + rcPlate.Height())) 2257 if (FX_EDIT_IsFloatSmaller(m_ptScrollPos.y, rcContent.bottom + rcPla te.Height()))
2285 » » » { 2258 {
2286 » » » » SetScrollPosY(rcContent.bottom + rcPlate.Height( )); 2259 SetScrollPosY(rcContent.bottom + rcPlate.Height());
2287 » » » } 2260 }
2288 » » » else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.y, rcConten t.top)) 2261 else if (FX_EDIT_IsFloatBigger(m_ptScrollPos.y, rcContent.top))
2289 » » » { 2262 {
2290 » » » » SetScrollPosY(rcContent.top); 2263 SetScrollPosY(rcContent.top);
2291 » » » } 2264 }
2292 » » } 2265 }
2293 » } 2266 }
2294 } 2267 }
2295 2268
2296 void CFX_Edit::ScrollToCaret() 2269 void CFX_Edit::ScrollToCaret()
2297 { 2270 {
2298 » SetScrollLimit(); 2271 SetScrollLimit();
2299 2272
2300 » if (m_pVT->IsValid()) 2273 if (m_pVT->IsValid())
2301 » { 2274 {
2302 » » CPDF_Point ptHead(0,0); 2275 CPDF_Point ptHead(0,0);
2303 » » CPDF_Point ptFoot(0,0); 2276 CPDF_Point ptFoot(0,0);
2304 2277
2305 » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 2278 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
2306 » » { 2279 {
2307 » » » pIterator->SetAt(m_wpCaret); 2280 pIterator->SetAt(m_wpCaret);
2308 2281
2309 » » » CPVT_Word word; 2282 CPVT_Word word;
2310 » » » CPVT_Line line; 2283 CPVT_Line line;
2311 » » » if (pIterator->GetWord(word)) 2284 if (pIterator->GetWord(word))
2312 » » » { 2285 {
2313 » » » » ptHead.x = word.ptWord.x + word.fWidth; 2286 ptHead.x = word.ptWord.x + word.fWidth;
2314 » » » » ptHead.y = word.ptWord.y + word.fAscent; 2287 ptHead.y = word.ptWord.y + word.fAscent;
2315 » » » » ptFoot.x = word.ptWord.x + word.fWidth; 2288 ptFoot.x = word.ptWord.x + word.fWidth;
2316 » » » » ptFoot.y = word.ptWord.y + word.fDescent; 2289 ptFoot.y = word.ptWord.y + word.fDescent;
2317 » » » } 2290 }
2318 » » » else if (pIterator->GetLine(line)) 2291 else if (pIterator->GetLine(line))
2319 » » » { 2292 {
2320 » » » » ptHead.x = line.ptLine.x; 2293 ptHead.x = line.ptLine.x;
2321 » » » » ptHead.y = line.ptLine.y + line.fLineAscent; 2294 ptHead.y = line.ptLine.y + line.fLineAscent;
2322 » » » » ptFoot.x = line.ptLine.x; 2295 ptFoot.x = line.ptLine.x;
2323 » » » » ptFoot.y = line.ptLine.y + line.fLineDescent; 2296 ptFoot.y = line.ptLine.y + line.fLineDescent;
2324 » » » } 2297 }
2325 » » } 2298 }
2326 2299
2327 » » CPDF_Point ptHeadEdit = VTToEdit(ptHead); 2300 CPDF_Point ptHeadEdit = VTToEdit(ptHead);
2328 » » CPDF_Point ptFootEdit = VTToEdit(ptFoot); 2301 CPDF_Point ptFootEdit = VTToEdit(ptFoot);
2329 2302
2330 » » CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 2303 CPDF_Rect rcPlate = m_pVT->GetPlateRect();
2331 2304
2332 » » if (!FX_EDIT_IsFloatEqual(rcPlate.left,rcPlate.right)) 2305 if (!FX_EDIT_IsFloatEqual(rcPlate.left,rcPlate.right))
2333 » » { 2306 {
2334 » » » if (FX_EDIT_IsFloatSmaller(ptHeadEdit.x, rcPlate.left) | | 2307 if (FX_EDIT_IsFloatSmaller(ptHeadEdit.x, rcPlate.left) ||
2335 » » » » FX_EDIT_IsFloatEqual(ptHeadEdit.x, rcPlate.left) ) 2308 FX_EDIT_IsFloatEqual(ptHeadEdit.x, rcPlate.left))
2336 » » » { 2309 {
2337 » » » » SetScrollPosX(ptHead.x); 2310 SetScrollPosX(ptHead.x);
2338 » » » } 2311 }
2339 » » » else if (FX_EDIT_IsFloatBigger(ptHeadEdit.x, rcPlate.rig ht)) 2312 else if (FX_EDIT_IsFloatBigger(ptHeadEdit.x, rcPlate.right))
2340 » » » { 2313 {
2341 » » » » SetScrollPosX(ptHead.x - rcPlate.Width()); 2314 SetScrollPosX(ptHead.x - rcPlate.Width());
2342 » » » } 2315 }
2343 » » } 2316 }
2344 2317
2345 » » if (!FX_EDIT_IsFloatEqual(rcPlate.top,rcPlate.bottom)) 2318 if (!FX_EDIT_IsFloatEqual(rcPlate.top,rcPlate.bottom))
2346 » » { 2319 {
2347 » » » if (FX_EDIT_IsFloatSmaller(ptFootEdit.y, rcPlate.bottom) || 2320 if (FX_EDIT_IsFloatSmaller(ptFootEdit.y, rcPlate.bottom) ||
2348 » » » » FX_EDIT_IsFloatEqual(ptFootEdit.y, rcPlate.botto m)) 2321 FX_EDIT_IsFloatEqual(ptFootEdit.y, rcPlate.bottom))
2349 » » » { 2322 {
2350 » » » » if (FX_EDIT_IsFloatSmaller(ptHeadEdit.y, rcPlate .top)) 2323 if (FX_EDIT_IsFloatSmaller(ptHeadEdit.y, rcPlate.top))
2351 » » » » { 2324 {
2352 » » » » » SetScrollPosY(ptFoot.y + rcPlate.Height( )); 2325 SetScrollPosY(ptFoot.y + rcPlate.Height());
2353 » » » » } 2326 }
2354 » » » } 2327 }
2355 » » » else if (FX_EDIT_IsFloatBigger(ptHeadEdit.y, rcPlate.top )) 2328 else if (FX_EDIT_IsFloatBigger(ptHeadEdit.y, rcPlate.top))
2356 » » » { 2329 {
2357 » » » » if (FX_EDIT_IsFloatBigger(ptFootEdit.y, rcPlate. bottom)) 2330 if (FX_EDIT_IsFloatBigger(ptFootEdit.y, rcPlate.bottom))
2358 » » » » { 2331 {
2359 » » » » » SetScrollPosY(ptHead.y); 2332 SetScrollPosY(ptHead.y);
2360 » » » » } 2333 }
2361 » » » } 2334 }
2362 » » } 2335 }
2363 » } 2336 }
2364 } 2337 }
2365 2338
2366 void CFX_Edit::Refresh(REFRESH_PLAN_E ePlan,const CPVT_WordRange * pRange1,const CPVT_WordRange * pRange2) 2339 void CFX_Edit::Refresh(REFRESH_PLAN_E ePlan,const CPVT_WordRange * pRange1,const CPVT_WordRange * pRange2)
2367 { 2340 {
2368 » if (m_bEnableRefresh && m_pVT->IsValid()) 2341 if (m_bEnableRefresh && m_pVT->IsValid())
2369 » { 2342 {
2370 » » m_Refresh.BeginRefresh(); 2343 m_Refresh.BeginRefresh();
2371 » » RefreshPushLineRects(GetVisibleWordRange()); 2344 RefreshPushLineRects(GetVisibleWordRange());
2372 2345
2373 // » » if (!FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.x,m_ptScrollPos.x ) || 2346 // if (!FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.x,m_ptScrollPos.x) ||
2374 // » » » !FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.y,m_ptScrollP os.y)) 2347 // !FX_EDIT_IsFloatEqual(m_ptRefreshScrollPos.y,m_ptScrollPos.y))
2375 // » » { 2348 // {
2376 » » » m_Refresh.NoAnalyse(); 2349 m_Refresh.NoAnalyse();
2377 » » » m_ptRefreshScrollPos = m_ptScrollPos; 2350 m_ptRefreshScrollPos = m_ptScrollPos;
2378 // » » } 2351 // }
2379 // » » else 2352 // else
2380 // » » { 2353 // {
2381 // » » » switch (ePlan) 2354 // switch (ePlan)
2382 // » » » { 2355 // {
2383 // » » » case RP_ANALYSE: 2356 // case RP_ANALYSE:
2384 // » » » » m_Refresh.Analyse(m_pVT->GetAlignment()); 2357 // m_Refresh.Analyse(m_pVT->GetAlignment());
2385 // 2358 //
2386 // » » » » if (pRange1) RefreshPushRandomRects(*pRange1); 2359 // if (pRange1) RefreshPushRandomRects(*pRange1);
2387 // » » » » if (pRange2) RefreshPushRandomRects(*pRange2); 2360 // if (pRange2) RefreshPushRandomRects(*pRange2);
2388 // » » » » break; 2361 // break;
2389 // » » » case RP_NOANALYSE: 2362 // case RP_NOANALYSE:
2390 // » » » » m_Refresh.NoAnalyse(); 2363 // m_Refresh.NoAnalyse();
2391 // » » » » break; 2364 // break;
2392 // » » » case RP_OPTIONAL: 2365 // case RP_OPTIONAL:
2393 // » » » » if (pRange1) RefreshPushRandomRects(*pRange1); 2366 // if (pRange1) RefreshPushRandomRects(*pRange1);
2394 // » » » » if (pRange2) RefreshPushRandomRects(*pRange2); 2367 // if (pRange2) RefreshPushRandomRects(*pRange2);
2395 // » » » » break; 2368 // break;
2396 // » » » } 2369 // }
2397 // » » } 2370 // }
2398 2371
2399 » » if (m_bNotify && m_pNotify) 2372 if (m_bNotify && m_pNotify)
2400 » » { 2373 {
2401 » » » if (!m_bNotifyFlag) 2374 if (!m_bNotifyFlag)
2402 » » » { 2375 {
2403 » » » » m_bNotifyFlag = TRUE; 2376 m_bNotifyFlag = TRUE;
2404 » » » » if (const CFX_Edit_RectArray * pRects = m_Refres h.GetRefreshRects()) 2377 if (const CFX_Edit_RectArray * pRects = m_Refresh.GetRefreshRect s())
2405 » » » » { 2378 {
2406 » » » » » for (int32_t i = 0, sz = pRects->GetSize (); i < sz; i++) 2379 for (int32_t i = 0, sz = pRects->GetSize(); i < sz; i++)
2407 » » » » » » m_pNotify->IOnInvalidateRect(pRe cts->GetAt(i)); 2380 m_pNotify->IOnInvalidateRect(pRects->GetAt(i));
2408 » » » » } 2381 }
2409 » » » » m_bNotifyFlag = FALSE; 2382 m_bNotifyFlag = FALSE;
2410 » » » } 2383 }
2411 » » } 2384 }
2412 2385
2413 » » m_Refresh.EndRefresh(); 2386 m_Refresh.EndRefresh();
2414 » } 2387 }
2415 } 2388 }
2416 2389
2417 void CFX_Edit::RefreshPushLineRects(const CPVT_WordRange & wr) 2390 void CFX_Edit::RefreshPushLineRects(const CPVT_WordRange & wr)
2418 { 2391 {
2419 » if (m_pVT->IsValid()) 2392 if (m_pVT->IsValid())
2420 » { 2393 {
2421 » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 2394 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
2422 » » { 2395 {
2423 » » » CPVT_WordPlace wpBegin = wr.BeginPos; 2396 CPVT_WordPlace wpBegin = wr.BeginPos;
2424 » » » m_pVT->UpdateWordPlace(wpBegin); 2397 m_pVT->UpdateWordPlace(wpBegin);
2425 » » » CPVT_WordPlace wpEnd = wr.EndPos; 2398 CPVT_WordPlace wpEnd = wr.EndPos;
2426 » » » m_pVT->UpdateWordPlace(wpEnd); 2399 m_pVT->UpdateWordPlace(wpEnd);
2427 » » » pIterator->SetAt(wpBegin); 2400 pIterator->SetAt(wpBegin);
2428 2401
2429 » » » CPVT_Line lineinfo; 2402 CPVT_Line lineinfo;
2430 » » » do 2403 do
2431 » » » { 2404 {
2432 » » » » if (!pIterator->GetLine(lineinfo))break; 2405 if (!pIterator->GetLine(lineinfo))break;
2433 » » » » if (lineinfo.lineplace.LineCmp(wpEnd) > 0)break; 2406 if (lineinfo.lineplace.LineCmp(wpEnd) > 0)break;
2434 2407
2435 » » » » CPDF_Rect rcLine(lineinfo.ptLine.x, 2408 CPDF_Rect rcLine(lineinfo.ptLine.x,
2436 » » » » » » » » » lineinfo .ptLine.y + lineinfo.fLineDescent, 2409 lineinfo.ptLine.y + lineinfo.fLineDescent,
2437 » » » » » » » » » lineinfo .ptLine.x + lineinfo.fLineWidth, 2410 lineinfo.ptLine.x + lineinfo.fLineWidth,
2438 » » » » » » » » » lineinfo .ptLine.y + lineinfo.fLineAscent); 2411 lineinfo.ptLine.y + lineinfo.fLineAscent);
2439 2412
2440 » » » » m_Refresh.Push(CPVT_WordRange(lineinfo.lineplace ,lineinfo.lineEnd),VTToEdit(rcLine)); 2413 m_Refresh.Push(CPVT_WordRange(lineinfo.lineplace,lineinfo.lineEn d),VTToEdit(rcLine));
2441 2414
2442 » » » }while (pIterator->NextLine()); 2415 }while (pIterator->NextLine());
2443 » » } 2416 }
2444 » } 2417 }
2445 } 2418 }
2446 2419
2447 void CFX_Edit::RefreshPushRandomRects(const CPVT_WordRange & wr) 2420 void CFX_Edit::RefreshPushRandomRects(const CPVT_WordRange & wr)
2448 { 2421 {
2449 » if (m_pVT->IsValid()) 2422 if (m_pVT->IsValid())
2450 » { 2423 {
2451 » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 2424 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
2452 » » { 2425 {
2453 » » » CPVT_WordRange wrTemp = wr; 2426 CPVT_WordRange wrTemp = wr;
2454 2427
2455 » » » m_pVT->UpdateWordPlace(wrTemp.BeginPos); 2428 m_pVT->UpdateWordPlace(wrTemp.BeginPos);
2456 » » » m_pVT->UpdateWordPlace(wrTemp.EndPos); 2429 m_pVT->UpdateWordPlace(wrTemp.EndPos);
2457 » » » pIterator->SetAt(wrTemp.BeginPos); 2430 pIterator->SetAt(wrTemp.BeginPos);
2458 2431
2459 » » » CPVT_Word wordinfo; 2432 CPVT_Word wordinfo;
2460 » » » CPVT_Line lineinfo; 2433 CPVT_Line lineinfo;
2461 » » » CPVT_WordPlace place; 2434 CPVT_WordPlace place;
2462 2435
2463 » » » while (pIterator->NextWord()) 2436 while (pIterator->NextWord())
2464 » » » { 2437 {
2465 » » » » place = pIterator->GetAt(); 2438 place = pIterator->GetAt();
2466 » » » » if (place.WordCmp(wrTemp.EndPos) > 0) break; 2439 if (place.WordCmp(wrTemp.EndPos) > 0) break;
2467 2440
2468 » » » » pIterator->GetWord(wordinfo); 2441 pIterator->GetWord(wordinfo);
2469 » » » » pIterator->GetLine(lineinfo); 2442 pIterator->GetLine(lineinfo);
2470 2443
2471 » » » » if (place.LineCmp(wrTemp.BeginPos) == 0 || place .LineCmp(wrTemp.EndPos) == 0) 2444 if (place.LineCmp(wrTemp.BeginPos) == 0 || place.LineCmp(wrTemp. EndPos) == 0)
2472 » » » » { 2445 {
2473 » » » » » CPDF_Rect rcWord(wordinfo.ptWord.x, 2446 CPDF_Rect rcWord(wordinfo.ptWord.x,
2474 » » » » » » » » » » lineinfo.ptLine.y + lineinfo.fLineDescent, 2447 lineinfo.ptLine.y + lineinfo.fLineDescen t,
2475 » » » » » » » » » » wordinfo.ptWord.x + wordinfo.fWidth, 2448 wordinfo.ptWord.x + wordinfo.fWidth,
2476 » » » » » » » » » » lineinfo.ptLine.y + lineinfo.fLineAscent); 2449 lineinfo.ptLine.y + lineinfo.fLineAscent );
2477 2450
2478 » » » » » m_Refresh.AddRefresh(VTToEdit(rcWord)); 2451 m_Refresh.AddRefresh(VTToEdit(rcWord));
2479 » » » » } 2452 }
2480 » » » » else 2453 else
2481 » » » » { 2454 {
2482 » » » » » CPDF_Rect rcLine(lineinfo.ptLine.x, 2455 CPDF_Rect rcLine(lineinfo.ptLine.x,
2483 » » » » » » » » » » lineinfo.ptLine.y + lineinfo.fLineDescent, 2456 lineinfo.ptLine.y + lineinfo.fLineDescen t,
2484 » » » » » » » » » » lineinfo.ptLine.x + lineinfo.fLineWidth, 2457 lineinfo.ptLine.x + lineinfo.fLineWidth,
2485 » » » » » » » » » » lineinfo.ptLine.y + lineinfo.fLineAscent); 2458 lineinfo.ptLine.y + lineinfo.fLineAscent );
2486 2459
2487 » » » » » m_Refresh.AddRefresh(VTToEdit(rcLine)); 2460 m_Refresh.AddRefresh(VTToEdit(rcLine));
2488 2461
2489 » » » » » pIterator->NextLine(); 2462 pIterator->NextLine();
2490 » » » » } 2463 }
2491 » » » } 2464 }
2492 » » } 2465 }
2493 » } 2466 }
2494 } 2467 }
2495 2468
2496 void CFX_Edit::RefreshWordRange(const CPVT_WordRange& wr) 2469 void CFX_Edit::RefreshWordRange(const CPVT_WordRange& wr)
2497 { 2470 {
2498 » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator()) 2471 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
2499 » { 2472 {
2500 » » CPVT_WordRange wrTemp = wr; 2473 CPVT_WordRange wrTemp = wr;
2501 2474
2502 » » m_pVT->UpdateWordPlace(wrTemp.BeginPos); 2475 m_pVT->UpdateWordPlace(wrTemp.BeginPos);
2503 » » m_pVT->UpdateWordPlace(wrTemp.EndPos); 2476 m_pVT->UpdateWordPlace(wrTemp.EndPos);
2504 » » pIterator->SetAt(wrTemp.BeginPos); 2477 pIterator->SetAt(wrTemp.BeginPos);
2505 2478
2506 » » CPVT_Word wordinfo; 2479 CPVT_Word wordinfo;
2507 » » CPVT_Line lineinfo; 2480 CPVT_Line lineinfo;
2508 » » CPVT_WordPlace place; 2481 CPVT_WordPlace place;
2509 2482
2510 » » while (pIterator->NextWord()) 2483 while (pIterator->NextWord())
2511 » » { 2484 {
2512 » » » place = pIterator->GetAt(); 2485 place = pIterator->GetAt();
2513 » » » if (place.WordCmp(wrTemp.EndPos) > 0) break; 2486 if (place.WordCmp(wrTemp.EndPos) > 0) break;
2514 2487
2515 » » » pIterator->GetWord(wordinfo); 2488 pIterator->GetWord(wordinfo);
2516 » » » pIterator->GetLine(lineinfo); 2489 pIterator->GetLine(lineinfo);
2517 2490
2518 » » » if (place.LineCmp(wrTemp.BeginPos) == 0 || place.LineCmp (wrTemp.EndPos) == 0) 2491 if (place.LineCmp(wrTemp.BeginPos) == 0 || place.LineCmp(wrTemp.EndP os) == 0)
2519 » » » { 2492 {
2520 » » » » CPDF_Rect rcWord(wordinfo.ptWord.x, 2493 CPDF_Rect rcWord(wordinfo.ptWord.x,
2521 » » » » » » » » » lineinfo .ptLine.y + lineinfo.fLineDescent, 2494 lineinfo.ptLine.y + lineinfo.fLineDescent,
2522 » » » » » » » » » wordinfo .ptWord.x + wordinfo.fWidth, 2495 wordinfo.ptWord.x + wordinfo.fWidth,
2523 » » » » » » » » » lineinfo .ptLine.y + lineinfo.fLineAscent); 2496 lineinfo.ptLine.y + lineinfo.fLineAscent);
2524 2497
2525 » » » » if (m_bNotify && m_pNotify) 2498 if (m_bNotify && m_pNotify)
2526 » » » » { 2499 {
2527 » » » » » if (!m_bNotifyFlag) 2500 if (!m_bNotifyFlag)
2528 » » » » » { 2501 {
2529 » » » » » » m_bNotifyFlag = TRUE; 2502 m_bNotifyFlag = TRUE;
2530 » » » » » » CPDF_Rect rcRefresh = VTToEdit(r cWord); 2503 CPDF_Rect rcRefresh = VTToEdit(rcWord);
2531 » » » » » » m_pNotify->IOnInvalidateRect(&rc Refresh); 2504 m_pNotify->IOnInvalidateRect(&rcRefresh);
2532 » » » » » » m_bNotifyFlag = FALSE; 2505 m_bNotifyFlag = FALSE;
2533 » » » » » } 2506 }
2534 » » » » } 2507 }
2535 » » » } 2508 }
2536 » » » else 2509 else
2537 » » » { 2510 {
2538 » » » » CPDF_Rect rcLine(lineinfo.ptLine.x, 2511 CPDF_Rect rcLine(lineinfo.ptLine.x,
2539 » » » » » » » » » lineinfo .ptLine.y + lineinfo.fLineDescent, 2512 lineinfo.ptLine.y + lineinfo.fLineDescent,
2540 » » » » » » » » » lineinfo .ptLine.x + lineinfo.fLineWidth, 2513 lineinfo.ptLine.x + lineinfo.fLineWidth,
2541 » » » » » » » » » lineinfo .ptLine.y + lineinfo.fLineAscent); 2514 lineinfo.ptLine.y + lineinfo.fLineAscent);
2542 2515
2543 » » » » if (m_bNotify && m_pNotify) 2516 if (m_bNotify && m_pNotify)
2544 » » » » { 2517 {
2545 » » » » » if (!m_bNotifyFlag) 2518 if (!m_bNotifyFlag)
2546 » » » » » { 2519 {
2547 » » » » » » m_bNotifyFlag = TRUE; 2520 m_bNotifyFlag = TRUE;
2548 » » » » » » CPDF_Rect rcRefresh = VTToEdit(r cLine); 2521 CPDF_Rect rcRefresh = VTToEdit(rcLine);
2549 » » » » » » m_pNotify->IOnInvalidateRect(&rc Refresh); 2522 m_pNotify->IOnInvalidateRect(&rcRefresh);
2550 » » » » » » m_bNotifyFlag = FALSE; 2523 m_bNotifyFlag = FALSE;
2551 » » » » » } 2524 }
2552 » » » » } 2525 }
2553 2526
2554 » » » » pIterator->NextLine(); 2527 pIterator->NextLine();
2555 » » » } 2528 }
2556 » » } 2529 }
2557 » } 2530 }
2558 } 2531 }
2559 2532
2560 void CFX_Edit::SetCaret(const CPVT_WordPlace & place) 2533 void CFX_Edit::SetCaret(const CPVT_WordPlace & place)
2561 { 2534 {
2562 » m_wpOldCaret = m_wpCaret; 2535 m_wpOldCaret = m_wpCaret;
2563 » m_wpCaret = place; 2536 m_wpCaret = place;
2564 } 2537 }
2565 2538
2566 void CFX_Edit::SetCaretInfo() 2539 void CFX_Edit::SetCaretInfo()
2567 { 2540 {
2568 » if (m_bNotify && m_pNotify) 2541 if (m_bNotify && m_pNotify)
2569 » { 2542 {
2570 » » if (!m_bNotifyFlag) 2543 if (!m_bNotifyFlag)
2571 » » { 2544 {
2572 » » » CPDF_Point ptHead(0.0f,0.0f),ptFoot(0.0f,0.0f); 2545 CPDF_Point ptHead(0.0f,0.0f),ptFoot(0.0f,0.0f);
2573 2546
2574 » » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetI terator()) 2547 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
2575 » » » { 2548 {
2576 » » » » pIterator->SetAt(m_wpCaret); 2549 pIterator->SetAt(m_wpCaret);
2577 » » » » CPVT_Word word; 2550 CPVT_Word word;
2578 » » » » CPVT_Line line; 2551 CPVT_Line line;
2579 » » » » if (pIterator->GetWord(word)) 2552 if (pIterator->GetWord(word))
2580 » » » » { 2553 {
2581 » » » » » ptHead.x = word.ptWord.x + word.fWidth; 2554 ptHead.x = word.ptWord.x + word.fWidth;
2582 » » » » » ptHead.y = word.ptWord.y + word.fAscent; 2555 ptHead.y = word.ptWord.y + word.fAscent;
2583 » » » » » ptFoot.x = word.ptWord.x + word.fWidth; 2556 ptFoot.x = word.ptWord.x + word.fWidth;
2584 » » » » » ptFoot.y = word.ptWord.y + word.fDescent ; 2557 ptFoot.y = word.ptWord.y + word.fDescent;
2585 » » » » } 2558 }
2586 » » » » else if (pIterator->GetLine(line)) 2559 else if (pIterator->GetLine(line))
2587 » » » » { 2560 {
2588 » » » » » ptHead.x = line.ptLine.x; 2561 ptHead.x = line.ptLine.x;
2589 » » » » » ptHead.y = line.ptLine.y + line.fLineAsc ent; 2562 ptHead.y = line.ptLine.y + line.fLineAscent;
2590 » » » » » ptFoot.x = line.ptLine.x; 2563 ptFoot.x = line.ptLine.x;
2591 » » » » » ptFoot.y = line.ptLine.y + line.fLineDes cent; 2564 ptFoot.y = line.ptLine.y + line.fLineDescent;
2592 » » » » } 2565 }
2593 » » » } 2566 }
2594 2567
2595 » » » m_bNotifyFlag = TRUE; 2568 m_bNotifyFlag = TRUE;
2596 » » » m_pNotify->IOnSetCaret(!m_SelState.IsExist(),VTToEdit(pt Head),VTToEdit(ptFoot), m_wpCaret); 2569 m_pNotify->IOnSetCaret(!m_SelState.IsExist(),VTToEdit(ptHead),VTToEd it(ptFoot), m_wpCaret);
2597 » » » m_bNotifyFlag = FALSE; 2570 m_bNotifyFlag = FALSE;
2598 » » } 2571 }
2599 » } 2572 }
2600 2573
2601 » SetCaretChange(); 2574 SetCaretChange();
2602 } 2575 }
2603 2576
2604 void CFX_Edit::SetCaretChange() 2577 void CFX_Edit::SetCaretChange()
2605 { 2578 {
2606 » if (m_wpCaret == m_wpOldCaret) return; 2579 if (m_wpCaret == m_wpOldCaret) return;
2607 2580
2608 » if (m_bNotify && m_pVT->IsRichText() && m_pNotify) 2581 if (m_bNotify && m_pVT->IsRichText() && m_pNotify)
2609 » { 2582 {
2610 » » CPVT_SecProps SecProps; 2583 CPVT_SecProps SecProps;
2611 » » CPVT_WordProps WordProps; 2584 CPVT_WordProps WordProps;
2612 2585
2613 » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 2586 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
2614 » » { 2587 {
2615 » » » pIterator->SetAt(m_wpCaret); 2588 pIterator->SetAt(m_wpCaret);
2616 » » » CPVT_Word word; 2589 CPVT_Word word;
2617 » » » CPVT_Section section; 2590 CPVT_Section section;
2618 2591
2619 » » » if (pIterator->GetSection(section)) 2592 if (pIterator->GetSection(section))
2620 » » » { 2593 {
2621 » » » » SecProps = section.SecProps; 2594 SecProps = section.SecProps;
2622 » » » » WordProps = section.WordProps; 2595 WordProps = section.WordProps;
2623 » » » } 2596 }
2624 2597
2625 » » » if (pIterator->GetWord(word)) 2598 if (pIterator->GetWord(word))
2626 » » » { 2599 {
2627 » » » » WordProps = word.WordProps; 2600 WordProps = word.WordProps;
2628 » » » } 2601 }
2629 » » } 2602 }
2630 2603
2631 » » if (!m_bNotifyFlag) 2604 if (!m_bNotifyFlag)
2632 » » { 2605 {
2633 » » » m_bNotifyFlag = TRUE; 2606 m_bNotifyFlag = TRUE;
2634 » » » m_pNotify->IOnCaretChange(SecProps,WordProps); 2607 m_pNotify->IOnCaretChange(SecProps,WordProps);
2635 » » » m_bNotifyFlag = FALSE; 2608 m_bNotifyFlag = FALSE;
2636 » » } 2609 }
2637 » } 2610 }
2638 } 2611 }
2639 2612
2640 void CFX_Edit::SetCaret(int32_t nPos) 2613 void CFX_Edit::SetCaret(int32_t nPos)
2641 { 2614 {
2642 » if (m_pVT->IsValid()) 2615 if (m_pVT->IsValid())
2643 » { 2616 {
2644 » » SelectNone(); 2617 SelectNone();
2645 » » SetCaret(m_pVT->WordIndexToWordPlace(nPos)); 2618 SetCaret(m_pVT->WordIndexToWordPlace(nPos));
2646 » » m_SelState.Set(m_wpCaret,m_wpCaret); 2619 m_SelState.Set(m_wpCaret,m_wpCaret);
2647 2620
2648 » » ScrollToCaret(); 2621 ScrollToCaret();
2649 » » SetCaretOrigin(); 2622 SetCaretOrigin();
2650 » » SetCaretInfo(); 2623 SetCaretInfo();
2651 » } 2624 }
2652 } 2625 }
2653 2626
2654 void CFX_Edit::OnMouseDown(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl ) 2627 void CFX_Edit::OnMouseDown(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl )
2655 { 2628 {
2656 » if (m_pVT->IsValid()) 2629 if (m_pVT->IsValid())
2657 » { 2630 {
2658 » » SelectNone(); 2631 SelectNone();
2659 » » SetCaret(m_pVT->SearchWordPlace(EditToVT(point))); 2632 SetCaret(m_pVT->SearchWordPlace(EditToVT(point)));
2660 » » m_SelState.Set(m_wpCaret,m_wpCaret); 2633 m_SelState.Set(m_wpCaret,m_wpCaret);
2661 2634
2662 » » ScrollToCaret(); 2635 ScrollToCaret();
2663 » » SetCaretOrigin(); 2636 SetCaretOrigin();
2664 » » SetCaretInfo(); 2637 SetCaretInfo();
2665 » } 2638 }
2666 } 2639 }
2667 2640
2668 void CFX_Edit::OnMouseMove(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl ) 2641 void CFX_Edit::OnMouseMove(const CPDF_Point & point,FX_BOOL bShift,FX_BOOL bCtrl )
2669 { 2642 {
2670 » if (m_pVT->IsValid()) 2643 if (m_pVT->IsValid())
2671 » { 2644 {
2672 » » SetCaret(m_pVT->SearchWordPlace(EditToVT(point))); 2645 SetCaret(m_pVT->SearchWordPlace(EditToVT(point)));
2673 2646
2674 » » if (m_wpCaret != m_wpOldCaret) 2647 if (m_wpCaret != m_wpOldCaret)
2675 » » { 2648 {
2676 » » » m_SelState.SetEndPos(m_wpCaret); 2649 m_SelState.SetEndPos(m_wpCaret);
2677 2650
2678 » » » ScrollToCaret(); 2651 ScrollToCaret();
2679 » » » CPVT_WordRange wr(m_wpOldCaret,m_wpCaret); 2652 CPVT_WordRange wr(m_wpOldCaret,m_wpCaret);
2680 » » » Refresh(RP_OPTIONAL,&wr); 2653 Refresh(RP_OPTIONAL,&wr);
2681 » » » SetCaretOrigin(); 2654 SetCaretOrigin();
2682 » » » SetCaretInfo(); 2655 SetCaretInfo();
2683 » » } 2656 }
2684 » } 2657 }
2685 } 2658 }
2686 2659
2687 void CFX_Edit::OnVK_UP(FX_BOOL bShift,FX_BOOL bCtrl) 2660 void CFX_Edit::OnVK_UP(FX_BOOL bShift,FX_BOOL bCtrl)
2688 { 2661 {
2689 » if (m_pVT->IsValid()) 2662 if (m_pVT->IsValid())
2690 » { 2663 {
2691 » » SetCaret(m_pVT->GetUpWordPlace(m_wpCaret,m_ptCaret)); 2664 SetCaret(m_pVT->GetUpWordPlace(m_wpCaret,m_ptCaret));
2692 2665
2693 » » if (bShift) 2666 if (bShift)
2694 » » { 2667 {
2695 » » » if (m_SelState.IsExist()) 2668 if (m_SelState.IsExist())
2696 » » » » m_SelState.SetEndPos(m_wpCaret); 2669 m_SelState.SetEndPos(m_wpCaret);
2697 » » » else 2670 else
2698 » » » » m_SelState.Set(m_wpOldCaret,m_wpCaret); 2671 m_SelState.Set(m_wpOldCaret,m_wpCaret);
2699 2672
2700 » » » if (m_wpOldCaret != m_wpCaret) 2673 if (m_wpOldCaret != m_wpCaret)
2701 » » » { 2674 {
2702 » » » » ScrollToCaret(); 2675 ScrollToCaret();
2703 » » » » CPVT_WordRange wr(m_wpOldCaret, m_wpCaret); 2676 CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
2704 » » » » Refresh(RP_OPTIONAL, &wr); 2677 Refresh(RP_OPTIONAL, &wr);
2705 » » » » SetCaretInfo(); 2678 SetCaretInfo();
2706 » » » } 2679 }
2707 » » } 2680 }
2708 » » else 2681 else
2709 » » { 2682 {
2710 » » » SelectNone(); 2683 SelectNone();
2711 2684
2712 » » » ScrollToCaret(); 2685 ScrollToCaret();
2713 » » » SetCaretInfo(); 2686 SetCaretInfo();
2714 » » } 2687 }
2715 » } 2688 }
2716 } 2689 }
2717 2690
2718 void CFX_Edit::OnVK_DOWN(FX_BOOL bShift,FX_BOOL bCtrl) 2691 void CFX_Edit::OnVK_DOWN(FX_BOOL bShift,FX_BOOL bCtrl)
2719 { 2692 {
2720 » if (m_pVT->IsValid()) 2693 if (m_pVT->IsValid())
2721 » { 2694 {
2722 » » SetCaret(m_pVT->GetDownWordPlace(m_wpCaret,m_ptCaret)); 2695 SetCaret(m_pVT->GetDownWordPlace(m_wpCaret,m_ptCaret));
2723 2696
2724 » » if (bShift) 2697 if (bShift)
2725 » » { 2698 {
2726 » » » if (m_SelState.IsExist()) 2699 if (m_SelState.IsExist())
2727 » » » » m_SelState.SetEndPos(m_wpCaret); 2700 m_SelState.SetEndPos(m_wpCaret);
2728 » » » else 2701 else
2729 » » » » m_SelState.Set(m_wpOldCaret,m_wpCaret); 2702 m_SelState.Set(m_wpOldCaret,m_wpCaret);
2730 2703
2731 » » » if (m_wpOldCaret != m_wpCaret) 2704 if (m_wpOldCaret != m_wpCaret)
2732 » » » { 2705 {
2733 » » » » ScrollToCaret(); 2706 ScrollToCaret();
2734 » » » » CPVT_WordRange wr(m_wpOldCaret,m_wpCaret); 2707 CPVT_WordRange wr(m_wpOldCaret,m_wpCaret);
2735 » » » » Refresh(RP_OPTIONAL, &wr); 2708 Refresh(RP_OPTIONAL, &wr);
2736 » » » » SetCaretInfo(); 2709 SetCaretInfo();
2737 » » » } 2710 }
2738 » » } 2711 }
2739 » » else 2712 else
2740 » » { 2713 {
2741 » » » SelectNone(); 2714 SelectNone();
2742 2715
2743 » » » ScrollToCaret(); 2716 ScrollToCaret();
2744 » » » SetCaretInfo(); 2717 SetCaretInfo();
2745 » » } 2718 }
2746 » } 2719 }
2747 } 2720 }
2748 2721
2749 void CFX_Edit::OnVK_LEFT(FX_BOOL bShift,FX_BOOL bCtrl) 2722 void CFX_Edit::OnVK_LEFT(FX_BOOL bShift,FX_BOOL bCtrl)
2750 { 2723 {
2751 » if (m_pVT->IsValid()) 2724 if (m_pVT->IsValid())
2752 » { 2725 {
2753 » » if (bShift) 2726 if (bShift)
2754 » » { 2727 {
2755 » » » if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) && 2728 if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) &&
2756 » » » » m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCar et)) 2729 m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCaret))
2757 » » » » SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret)); 2730 SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
2758 2731
2759 » » » SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret)); 2732 SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
2760 2733
2761 » » » if (m_SelState.IsExist()) 2734 if (m_SelState.IsExist())
2762 » » » » m_SelState.SetEndPos(m_wpCaret); 2735 m_SelState.SetEndPos(m_wpCaret);
2763 » » » else 2736 else
2764 » » » » m_SelState.Set(m_wpOldCaret, m_wpCaret); 2737 m_SelState.Set(m_wpOldCaret, m_wpCaret);
2765 2738
2766 » » » if (m_wpOldCaret != m_wpCaret) 2739 if (m_wpOldCaret != m_wpCaret)
2767 » » » { 2740 {
2768 » » » » ScrollToCaret(); 2741 ScrollToCaret();
2769 » » » » CPVT_WordRange wr(m_wpOldCaret,m_wpCaret); 2742 CPVT_WordRange wr(m_wpOldCaret,m_wpCaret);
2770 » » » » Refresh(RP_OPTIONAL,&wr); 2743 Refresh(RP_OPTIONAL,&wr);
2771 » » » » SetCaretInfo(); 2744 SetCaretInfo();
2772 » » » } 2745 }
2773 » » } 2746 }
2774 » » else 2747 else
2775 » » { 2748 {
2776 » » » if (m_SelState.IsExist()) 2749 if (m_SelState.IsExist())
2777 » » » { 2750 {
2778 » » » » if (m_SelState.BeginPos.WordCmp(m_SelState.EndPo s)<0) 2751 if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0)
2779 » » » » » SetCaret(m_SelState.BeginPos); 2752 SetCaret(m_SelState.BeginPos);
2780 » » » » else 2753 else
2781 » » » » » SetCaret(m_SelState.EndPos); 2754 SetCaret(m_SelState.EndPos);
2782 2755
2783 » » » » SelectNone(); 2756 SelectNone();
2784 » » » » ScrollToCaret(); 2757 ScrollToCaret();
2785 » » » » SetCaretInfo(); 2758 SetCaretInfo();
2786 » » » } 2759 }
2787 » » » else 2760 else
2788 » » » { 2761 {
2789 » » » » if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCa ret) && 2762 if (m_wpCaret == m_pVT->GetLineBeginPlace(m_wpCaret) &&
2790 » » » » » m_wpCaret != m_pVT->GetSectionBeginPlace (m_wpCaret)) 2763 m_wpCaret != m_pVT->GetSectionBeginPlace(m_wpCaret))
2791 » » » » » SetCaret(m_pVT->GetPrevWordPlace(m_wpCar et)); 2764 SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
2792 2765
2793 » » » » SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret)); 2766 SetCaret(m_pVT->GetPrevWordPlace(m_wpCaret));
2794 2767
2795 » » » » ScrollToCaret(); 2768 ScrollToCaret();
2796 » » » » SetCaretOrigin(); 2769 SetCaretOrigin();
2797 » » » » SetCaretInfo(); 2770 SetCaretInfo();
2798 » » » } 2771 }
2799 » » } 2772 }
2800 » } 2773 }
2801 } 2774 }
2802 2775
2803 void CFX_Edit::OnVK_RIGHT(FX_BOOL bShift,FX_BOOL bCtrl) 2776 void CFX_Edit::OnVK_RIGHT(FX_BOOL bShift,FX_BOOL bCtrl)
2804 { 2777 {
2805 » if (m_pVT->IsValid()) 2778 if (m_pVT->IsValid())
2806 » { 2779 {
2807 » » if (bShift) 2780 if (bShift)
2808 » » { 2781 {
2809 » » » SetCaret(m_pVT->GetNextWordPlace(m_wpCaret)); 2782 SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
2810 2783
2811 » » » if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) && 2784 if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) &&
2812 » » » » m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret )) 2785 m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret))
2813 » » » » SetCaret(m_pVT->GetNextWordPlace(m_wpCaret)); 2786 SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
2814 2787
2815 » » » if (m_SelState.IsExist()) 2788 if (m_SelState.IsExist())
2816 » » » » m_SelState.SetEndPos(m_wpCaret); 2789 m_SelState.SetEndPos(m_wpCaret);
2817 » » » else 2790 else
2818 » » » » m_SelState.Set(m_wpOldCaret,m_wpCaret); 2791 m_SelState.Set(m_wpOldCaret,m_wpCaret);
2819 2792
2820 » » » if (m_wpOldCaret != m_wpCaret) 2793 if (m_wpOldCaret != m_wpCaret)
2821 » » » { 2794 {
2822 » » » » ScrollToCaret(); 2795 ScrollToCaret();
2823 » » » » CPVT_WordRange wr(m_wpOldCaret,m_wpCaret); 2796 CPVT_WordRange wr(m_wpOldCaret,m_wpCaret);
2824 » » » » Refresh(RP_OPTIONAL,&wr); 2797 Refresh(RP_OPTIONAL,&wr);
2825 » » » » SetCaretInfo(); 2798 SetCaretInfo();
2826 » » » } 2799 }
2827 » » } 2800 }
2828 » » else 2801 else
2829 » » { 2802 {
2830 » » » if (m_SelState.IsExist()) 2803 if (m_SelState.IsExist())
2831 » » » { 2804 {
2832 » » » » if (m_SelState.BeginPos.WordCmp(m_SelState.EndPo s)>0) 2805 if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)>0)
2833 » » » » » SetCaret(m_SelState.BeginPos); 2806 SetCaret(m_SelState.BeginPos);
2834 » » » » else 2807 else
2835 » » » » » SetCaret(m_SelState.EndPos); 2808 SetCaret(m_SelState.EndPos);
2836 2809
2837 » » » » SelectNone(); 2810 SelectNone();
2838 » » » » ScrollToCaret(); 2811 ScrollToCaret();
2839 » » » » SetCaretInfo(); 2812 SetCaretInfo();
2840 » » » } 2813 }
2841 » » » else 2814 else
2842 » » » { 2815 {
2843 » » » » SetCaret(m_pVT->GetNextWordPlace(m_wpCaret)); 2816 SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
2844 2817
2845 » » » » if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCare t) && 2818 if (m_wpCaret == m_pVT->GetLineEndPlace(m_wpCaret) &&
2846 » » » » » m_wpCaret != m_pVT->GetSectionEndPlace(m _wpCaret)) 2819 m_wpCaret != m_pVT->GetSectionEndPlace(m_wpCaret))
2847 » » » » » SetCaret(m_pVT->GetNextWordPlace(m_wpCar et)); 2820 SetCaret(m_pVT->GetNextWordPlace(m_wpCaret));
2848 2821
2849 » » » » ScrollToCaret(); 2822 ScrollToCaret();
2850 » » » » SetCaretOrigin(); 2823 SetCaretOrigin();
2851 » » » » SetCaretInfo(); 2824 SetCaretInfo();
2852 » » » } 2825 }
2853 » » } 2826 }
2854 » } 2827 }
2855 } 2828 }
2856 2829
2857 void CFX_Edit::OnVK_HOME(FX_BOOL bShift,FX_BOOL bCtrl) 2830 void CFX_Edit::OnVK_HOME(FX_BOOL bShift,FX_BOOL bCtrl)
2858 { 2831 {
2859 » if (m_pVT->IsValid()) 2832 if (m_pVT->IsValid())
2860 » { 2833 {
2861 » » if (bShift) 2834 if (bShift)
2862 » » { 2835 {
2863 » » » if (bCtrl) 2836 if (bCtrl)
2864 » » » » SetCaret(m_pVT->GetBeginWordPlace()); 2837 SetCaret(m_pVT->GetBeginWordPlace());
2865 » » » else 2838 else
2866 » » » » SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret)); 2839 SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret));
2867 2840
2868 » » » if (m_SelState.IsExist()) 2841 if (m_SelState.IsExist())
2869 » » » » m_SelState.SetEndPos(m_wpCaret); 2842 m_SelState.SetEndPos(m_wpCaret);
2870 » » » else 2843 else
2871 » » » » m_SelState.Set(m_wpOldCaret,m_wpCaret); 2844 m_SelState.Set(m_wpOldCaret,m_wpCaret);
2872 2845
2873 » » » ScrollToCaret(); 2846 ScrollToCaret();
2874 » » » CPVT_WordRange wr(m_wpOldCaret, m_wpCaret); 2847 CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
2875 » » » Refresh(RP_OPTIONAL, &wr); 2848 Refresh(RP_OPTIONAL, &wr);
2876 » » » SetCaretInfo(); 2849 SetCaretInfo();
2877 » » } 2850 }
2878 » » else 2851 else
2879 » » { 2852 {
2880 » » » if (m_SelState.IsExist()) 2853 if (m_SelState.IsExist())
2881 » » » { 2854 {
2882 » » » » if (m_SelState.BeginPos.WordCmp(m_SelState.EndPo s)<0) 2855 if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)<0)
2883 » » » » » SetCaret(m_SelState.BeginPos); 2856 SetCaret(m_SelState.BeginPos);
2884 » » » » else 2857 else
2885 » » » » » SetCaret(m_SelState.EndPos); 2858 SetCaret(m_SelState.EndPos);
2886 2859
2887 » » » » SelectNone(); 2860 SelectNone();
2888 » » » » ScrollToCaret(); 2861 ScrollToCaret();
2889 » » » » SetCaretInfo(); 2862 SetCaretInfo();
2890 » » » } 2863 }
2891 » » » else 2864 else
2892 » » » { 2865 {
2893 » » » » if (bCtrl) 2866 if (bCtrl)
2894 » » » » » SetCaret(m_pVT->GetBeginWordPlace()); 2867 SetCaret(m_pVT->GetBeginWordPlace());
2895 » » » » else 2868 else
2896 » » » » » SetCaret(m_pVT->GetLineBeginPlace(m_wpCa ret)); 2869 SetCaret(m_pVT->GetLineBeginPlace(m_wpCaret));
2897 2870
2898 » » » » ScrollToCaret(); 2871 ScrollToCaret();
2899 » » » » SetCaretOrigin(); 2872 SetCaretOrigin();
2900 » » » » SetCaretInfo(); 2873 SetCaretInfo();
2901 » » » } 2874 }
2902 » » } 2875 }
2903 » } 2876 }
2904 } 2877 }
2905 2878
2906 void CFX_Edit::OnVK_END(FX_BOOL bShift,FX_BOOL bCtrl) 2879 void CFX_Edit::OnVK_END(FX_BOOL bShift,FX_BOOL bCtrl)
2907 { 2880 {
2908 » if (m_pVT->IsValid()) 2881 if (m_pVT->IsValid())
2909 » { 2882 {
2910 » » if (bShift) 2883 if (bShift)
2911 » » { 2884 {
2912 » » » if (bCtrl) 2885 if (bCtrl)
2913 » » » » SetCaret(m_pVT->GetEndWordPlace()); 2886 SetCaret(m_pVT->GetEndWordPlace());
2914 » » » else 2887 else
2915 » » » » SetCaret(m_pVT->GetLineEndPlace(m_wpCaret)); 2888 SetCaret(m_pVT->GetLineEndPlace(m_wpCaret));
2916 2889
2917 » » » if (m_SelState.IsExist()) 2890 if (m_SelState.IsExist())
2918 » » » » m_SelState.SetEndPos(m_wpCaret); 2891 m_SelState.SetEndPos(m_wpCaret);
2919 » » » else 2892 else
2920 » » » » m_SelState.Set(m_wpOldCaret, m_wpCaret); 2893 m_SelState.Set(m_wpOldCaret, m_wpCaret);
2921 2894
2922 » » » ScrollToCaret(); 2895 ScrollToCaret();
2923 » » » CPVT_WordRange wr(m_wpOldCaret, m_wpCaret); 2896 CPVT_WordRange wr(m_wpOldCaret, m_wpCaret);
2924 » » » Refresh(RP_OPTIONAL, &wr); 2897 Refresh(RP_OPTIONAL, &wr);
2925 » » » SetCaretInfo(); 2898 SetCaretInfo();
2926 » » } 2899 }
2927 » » else 2900 else
2928 » » { 2901 {
2929 » » » if (m_SelState.IsExist()) 2902 if (m_SelState.IsExist())
2930 » » » { 2903 {
2931 » » » » if (m_SelState.BeginPos.WordCmp(m_SelState.EndPo s)>0) 2904 if (m_SelState.BeginPos.WordCmp(m_SelState.EndPos)>0)
2932 » » » » » SetCaret(m_SelState.BeginPos); 2905 SetCaret(m_SelState.BeginPos);
2933 » » » » else 2906 else
2934 » » » » » SetCaret(m_SelState.EndPos); 2907 SetCaret(m_SelState.EndPos);
2935 2908
2936 » » » » SelectNone(); 2909 SelectNone();
2937 » » » » ScrollToCaret(); 2910 ScrollToCaret();
2938 » » » » SetCaretInfo(); 2911 SetCaretInfo();
2939 » » » } 2912 }
2940 » » » else 2913 else
2941 » » » { 2914 {
2942 » » » » if (bCtrl) 2915 if (bCtrl)
2943 » » » » » SetCaret(m_pVT->GetEndWordPlace()); 2916 SetCaret(m_pVT->GetEndWordPlace());
2944 » » » » else 2917 else
2945 » » » » » SetCaret(m_pVT->GetLineEndPlace(m_wpCare t)); 2918 SetCaret(m_pVT->GetLineEndPlace(m_wpCaret));
2946 2919
2947 » » » » ScrollToCaret(); 2920 ScrollToCaret();
2948 » » » » SetCaretOrigin(); 2921 SetCaretOrigin();
2949 » » » » SetCaretInfo(); 2922 SetCaretInfo();
2950 » » » } 2923 }
2951 » » } 2924 }
2952 » } 2925 }
2953 } 2926 }
2954 2927
2955 void CFX_Edit::SetText(const FX_WCHAR* text,int32_t charset, 2928 void CFX_Edit::SetText(const FX_WCHAR* text,int32_t charset,
2956 » » » » » » const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint) 2929 const CPVT_SecProps * pSecProps,const CPVT_WordProps * p WordProps, FX_BOOL bAddUndo, FX_BOOL bPaint)
2957 { 2930 {
2958 » Empty(); 2931 Empty();
2959 » DoInsertText(CPVT_WordPlace(0,0,-1), text, charset, pSecProps, pWordProp s); 2932 DoInsertText(CPVT_WordPlace(0,0,-1), text, charset, pSecProps, pWordProps);
2960 » if (bPaint) Paint(); 2933 if (bPaint) Paint();
2961 » if (m_bOprNotify && m_pOprNotify) 2934 if (m_bOprNotify && m_pOprNotify)
2962 » » m_pOprNotify->OnSetText(m_wpCaret, m_wpOldCaret); 2935 m_pOprNotify->OnSetText(m_wpCaret, m_wpOldCaret);
2963 » //if (bAddUndo) 2936 //if (bAddUndo)
2964 } 2937 }
2965 2938
2966 FX_BOOL CFX_Edit::InsertWord(FX_WORD word, int32_t charset, const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint) 2939 FX_BOOL CFX_Edit::InsertWord(FX_WORD word, int32_t charset, const CPVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint)
2967 { 2940 {
2968 » if (IsTextOverflow()) return FALSE; 2941 if (IsTextOverflow()) return FALSE;
2969 2942
2970 » if (m_pVT->IsValid()) 2943 if (m_pVT->IsValid())
2971 » { 2944 {
2972 » » m_pVT->UpdateWordPlace(m_wpCaret); 2945 m_pVT->UpdateWordPlace(m_wpCaret);
2973 2946
2974 » » SetCaret(m_pVT->InsertWord(m_wpCaret,word,GetCharSetFromUnicode( word, charset),pWordProps)); 2947 SetCaret(m_pVT->InsertWord(m_wpCaret,word,GetCharSetFromUnicode(word, ch arset),pWordProps));
2975 » » m_SelState.Set(m_wpCaret,m_wpCaret); 2948 m_SelState.Set(m_wpCaret,m_wpCaret);
2976 2949
2977 » » if (m_wpCaret != m_wpOldCaret) 2950 if (m_wpCaret != m_wpOldCaret)
2978 » » { 2951 {
2979 » » » if (bAddUndo && m_bEnableUndo) 2952 if (bAddUndo && m_bEnableUndo)
2980 » » » { 2953 {
2981 » » » » AddEditUndoItem(new CFXEU_InsertWord(this,m_wpOl dCaret,m_wpCaret,word,charset,pWordProps)); 2954 AddEditUndoItem(new CFXEU_InsertWord(this,m_wpOldCaret,m_wpCaret ,word,charset,pWordProps));
2982 » » » } 2955 }
2983 2956
2984 » » » if (bPaint) 2957 if (bPaint)
2985 » » » » PaintInsertText(m_wpOldCaret, m_wpCaret); 2958 PaintInsertText(m_wpOldCaret, m_wpCaret);
2986 2959
2987 » » » if (m_bOprNotify && m_pOprNotify) 2960 if (m_bOprNotify && m_pOprNotify)
2988 » » » » m_pOprNotify->OnInsertWord(m_wpCaret, m_wpOldCar et); 2961 m_pOprNotify->OnInsertWord(m_wpCaret, m_wpOldCaret);
2989 2962
2990 » » » return TRUE; 2963 return TRUE;
2991 » » } 2964 }
2992 » } 2965 }
2993 2966
2994 » return FALSE; 2967 return FALSE;
2995 } 2968 }
2996 2969
2997 FX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps * pSecProps,const CPVT_WordPr ops * pWordProps, 2970 FX_BOOL CFX_Edit::InsertReturn(const CPVT_SecProps * pSecProps,const CPVT_WordPr ops * pWordProps,
2998 » » » » » » » FX_BOOL bAddUndo, FX_ BOOL bPaint) 2971 FX_BOOL bAddUndo, FX_BOOL bPaint)
2999 { 2972 {
3000 » if (IsTextOverflow()) return FALSE; 2973 if (IsTextOverflow()) return FALSE;
3001 2974
3002 » if (m_pVT->IsValid()) 2975 if (m_pVT->IsValid())
3003 » { 2976 {
3004 » » m_pVT->UpdateWordPlace(m_wpCaret); 2977 m_pVT->UpdateWordPlace(m_wpCaret);
3005 » » SetCaret(m_pVT->InsertSection(m_wpCaret,pSecProps,pWordProps)); 2978 SetCaret(m_pVT->InsertSection(m_wpCaret,pSecProps,pWordProps));
3006 » » m_SelState.Set(m_wpCaret,m_wpCaret); 2979 m_SelState.Set(m_wpCaret,m_wpCaret);
3007 2980
3008 » » if (m_wpCaret != m_wpOldCaret) 2981 if (m_wpCaret != m_wpOldCaret)
3009 » » { 2982 {
3010 » » » if (bAddUndo && m_bEnableUndo) 2983 if (bAddUndo && m_bEnableUndo)
3011 » » » { 2984 {
3012 » » » » AddEditUndoItem(new CFXEU_InsertReturn(this,m_wp OldCaret,m_wpCaret,pSecProps,pWordProps)); 2985 AddEditUndoItem(new CFXEU_InsertReturn(this,m_wpOldCaret,m_wpCar et,pSecProps,pWordProps));
3013 » » » } 2986 }
3014 2987
3015 » » » if (bPaint) 2988 if (bPaint)
3016 » » » { 2989 {
3017 » » » » RearrangePart(CPVT_WordRange(m_wpOldCaret, m_wpC aret)); 2990 RearrangePart(CPVT_WordRange(m_wpOldCaret, m_wpCaret));
3018 » » » » ScrollToCaret(); 2991 ScrollToCaret();
3019 » » » » CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRa nge().EndPos); 2992 CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRange().EndPos);
3020 » » » » Refresh(RP_ANALYSE, &wr); 2993 Refresh(RP_ANALYSE, &wr);
3021 » » » » SetCaretOrigin(); 2994 SetCaretOrigin();
3022 » » » » SetCaretInfo(); 2995 SetCaretInfo();
3023 » » » } 2996 }
3024 2997
3025 » » » if (m_bOprNotify && m_pOprNotify) 2998 if (m_bOprNotify && m_pOprNotify)
3026 » » » » m_pOprNotify->OnInsertReturn(m_wpCaret, m_wpOldC aret); 2999 m_pOprNotify->OnInsertReturn(m_wpCaret, m_wpOldCaret);
3027 3000
3028 » » » return TRUE; 3001 return TRUE;
3029 » » } 3002 }
3030 » } 3003 }
3031 3004
3032 » return FALSE; 3005 return FALSE;
3033 } 3006 }
3034 3007
3035 FX_BOOL CFX_Edit::Backspace(FX_BOOL bAddUndo, FX_BOOL bPaint) 3008 FX_BOOL CFX_Edit::Backspace(FX_BOOL bAddUndo, FX_BOOL bPaint)
3036 { 3009 {
3037 » if (m_pVT->IsValid()) 3010 if (m_pVT->IsValid())
3038 » { 3011 {
3039 » » if (m_wpCaret == m_pVT->GetBeginWordPlace()) return FALSE; 3012 if (m_wpCaret == m_pVT->GetBeginWordPlace()) return FALSE;
3040 3013
3041 » » CPVT_Section section; 3014 CPVT_Section section;
3042 » » CPVT_Word word; 3015 CPVT_Word word;
3043 3016
3044 » » if (bAddUndo) 3017 if (bAddUndo)
3045 » » { 3018 {
3046 » » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetI terator()) 3019 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
3047 » » » { 3020 {
3048 » » » » pIterator->SetAt(m_wpCaret); 3021 pIterator->SetAt(m_wpCaret);
3049 » » » » pIterator->GetSection(section); 3022 pIterator->GetSection(section);
3050 » » » » pIterator->GetWord(word); 3023 pIterator->GetWord(word);
3051 » » » } 3024 }
3052 » » } 3025 }
3053 3026
3054 » » m_pVT->UpdateWordPlace(m_wpCaret); 3027 m_pVT->UpdateWordPlace(m_wpCaret);
3055 » » SetCaret(m_pVT->BackSpaceWord(m_wpCaret)); 3028 SetCaret(m_pVT->BackSpaceWord(m_wpCaret));
3056 » » m_SelState.Set(m_wpCaret,m_wpCaret); 3029 m_SelState.Set(m_wpCaret,m_wpCaret);
3057 3030
3058 » » if (m_wpCaret != m_wpOldCaret) 3031 if (m_wpCaret != m_wpOldCaret)
3059 » » { 3032 {
3060 » » » if (bAddUndo && m_bEnableUndo) 3033 if (bAddUndo && m_bEnableUndo)
3061 » » » { 3034 {
3062 » » » » if (m_wpCaret.SecCmp(m_wpOldCaret) != 0) 3035 if (m_wpCaret.SecCmp(m_wpOldCaret) != 0)
3063 » » » » » AddEditUndoItem(new CFXEU_Backspace(this ,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset, 3036 AddEditUndoItem(new CFXEU_Backspace(this,m_wpOldCaret,m_wpCa ret,word.Word,word.nCharset,
3064 » » » » » » section.SecProps,section.WordPro ps)); 3037 section.SecProps,section.WordProps));
3065 » » » » else 3038 else
3066 » » » » » AddEditUndoItem(new CFXEU_Backspace(this ,m_wpOldCaret,m_wpCaret,word.Word,word.nCharset, 3039 AddEditUndoItem(new CFXEU_Backspace(this,m_wpOldCaret,m_wpCa ret,word.Word,word.nCharset,
3067 » » » » » » section.SecProps,word.WordProps) ); 3040 section.SecProps,word.WordProps));
3068 » » » } 3041 }
3069 3042
3070 » » » if (bPaint) 3043 if (bPaint)
3071 » » » { 3044 {
3072 » » » » RearrangePart(CPVT_WordRange(m_wpCaret,m_wpOldCa ret)); 3045 RearrangePart(CPVT_WordRange(m_wpCaret,m_wpOldCaret));
3073 » » » » ScrollToCaret(); 3046 ScrollToCaret();
3074 3047
3075 » » » » CPVT_WordRange wr; 3048 CPVT_WordRange wr;
3076 » » » » if (m_wpCaret.SecCmp(m_wpOldCaret) !=0) 3049 if (m_wpCaret.SecCmp(m_wpOldCaret) !=0)
3077 » » » » » wr = CPVT_WordRange(m_pVT->GetPrevWordPl ace(m_wpCaret),GetVisibleWordRange().EndPos); 3050 wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpCaret),GetVi sibleWordRange().EndPos);
3078 » » » » else if (m_wpCaret.LineCmp(m_wpOldCaret) !=0) 3051 else if (m_wpCaret.LineCmp(m_wpOldCaret) !=0)
3079 » » » » » wr = CPVT_WordRange(m_pVT->GetLineBeginP lace(m_wpCaret),m_pVT->GetSectionEndPlace(m_wpCaret)); 3052 wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_wpCaret),m_pV T->GetSectionEndPlace(m_wpCaret));
3080 » » » » else 3053 else
3081 » » » » » wr = CPVT_WordRange(m_pVT->GetPrevWordPl ace(m_wpCaret),m_pVT->GetSectionEndPlace(m_wpCaret)); 3054 wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpCaret),m_pVT ->GetSectionEndPlace(m_wpCaret));
3082 3055
3083 » » » » Refresh(RP_ANALYSE, &wr); 3056 Refresh(RP_ANALYSE, &wr);
3084 3057
3085 » » » » SetCaretOrigin(); 3058 SetCaretOrigin();
3086 » » » » SetCaretInfo(); 3059 SetCaretInfo();
3087 » » » } 3060 }
3088 3061
3089 » » » if (m_bOprNotify && m_pOprNotify) 3062 if (m_bOprNotify && m_pOprNotify)
3090 » » » » m_pOprNotify->OnBackSpace(m_wpCaret, m_wpOldCare t); 3063 m_pOprNotify->OnBackSpace(m_wpCaret, m_wpOldCaret);
3091 3064
3092 » » » return TRUE; 3065 return TRUE;
3093 » » } 3066 }
3094 » } 3067 }
3095 3068
3096 » return FALSE; 3069 return FALSE;
3097 } 3070 }
3098 3071
3099 FX_BOOL CFX_Edit::Delete(FX_BOOL bAddUndo, FX_BOOL bPaint) 3072 FX_BOOL CFX_Edit::Delete(FX_BOOL bAddUndo, FX_BOOL bPaint)
3100 { 3073 {
3101 » if (m_pVT->IsValid()) 3074 if (m_pVT->IsValid())
3102 » { 3075 {
3103 » » if (m_wpCaret == m_pVT->GetEndWordPlace()) return FALSE; 3076 if (m_wpCaret == m_pVT->GetEndWordPlace()) return FALSE;
3104 3077
3105 » » CPVT_Section section; 3078 CPVT_Section section;
3106 » » CPVT_Word word; 3079 CPVT_Word word;
3107 3080
3108 » » if (bAddUndo) 3081 if (bAddUndo)
3109 » » { 3082 {
3110 » » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetI terator()) 3083 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
3111 » » » { 3084 {
3112 » » » » pIterator->SetAt(m_pVT->GetNextWordPlace(m_wpCar et)); 3085 pIterator->SetAt(m_pVT->GetNextWordPlace(m_wpCaret));
3113 » » » » pIterator->GetSection(section); 3086 pIterator->GetSection(section);
3114 » » » » pIterator->GetWord(word); 3087 pIterator->GetWord(word);
3115 » » » } 3088 }
3116 » » } 3089 }
3117 3090
3118 » » m_pVT->UpdateWordPlace(m_wpCaret); 3091 m_pVT->UpdateWordPlace(m_wpCaret);
3119 » » FX_BOOL bSecEnd = (m_wpCaret == m_pVT->GetSectionEndPlace(m_wpCa ret)); 3092 FX_BOOL bSecEnd = (m_wpCaret == m_pVT->GetSectionEndPlace(m_wpCaret));
3120 3093
3121 » » SetCaret(m_pVT->DeleteWord(m_wpCaret)); 3094 SetCaret(m_pVT->DeleteWord(m_wpCaret));
3122 » » m_SelState.Set(m_wpCaret,m_wpCaret); 3095 m_SelState.Set(m_wpCaret,m_wpCaret);
3123 3096
3124 » » if (bAddUndo && m_bEnableUndo) 3097 if (bAddUndo && m_bEnableUndo)
3125 » » { 3098 {
3126 » » » if (bSecEnd) 3099 if (bSecEnd)
3127 » » » » AddEditUndoItem(new CFXEU_Delete(this,m_wpOldCar et,m_wpCaret,word.Word,word.nCharset, 3100 AddEditUndoItem(new CFXEU_Delete(this,m_wpOldCaret,m_wpCaret,wor d.Word,word.nCharset,
3128 » » » » » section.SecProps,section.WordProps,bSecE nd)); 3101 section.SecProps,section.WordProps,bSecEnd));
3129 » » » else 3102 else
3130 » » » » AddEditUndoItem(new CFXEU_Delete(this,m_wpOldCar et,m_wpCaret,word.Word,word.nCharset, 3103 AddEditUndoItem(new CFXEU_Delete(this,m_wpOldCaret,m_wpCaret,wor d.Word,word.nCharset,
3131 » » » » » section.SecProps,word.WordProps,bSecEnd) ); 3104 section.SecProps,word.WordProps,bSecEnd));
3132 » » } 3105 }
3133 3106
3134 » » if (bPaint) 3107 if (bPaint)
3135 » » { 3108 {
3136 » » » RearrangePart(CPVT_WordRange(m_wpOldCaret,m_wpCaret)); 3109 RearrangePart(CPVT_WordRange(m_wpOldCaret,m_wpCaret));
3137 » » » ScrollToCaret(); 3110 ScrollToCaret();
3138 3111
3139 » » » CPVT_WordRange wr; 3112 CPVT_WordRange wr;
3140 » » » if (bSecEnd) 3113 if (bSecEnd)
3141 » » » » wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wp OldCaret),GetVisibleWordRange().EndPos); 3114 wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpOldCaret),GetVis ibleWordRange().EndPos);
3142 » » » else if (m_wpCaret.LineCmp(m_wpOldCaret) !=0) 3115 else if (m_wpCaret.LineCmp(m_wpOldCaret) !=0)
3143 » » » » wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_w pCaret),m_pVT->GetSectionEndPlace(m_wpCaret)); 3116 wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(m_wpCaret),m_pVT->G etSectionEndPlace(m_wpCaret));
3144 » » » else 3117 else
3145 » » » » wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wp OldCaret),m_pVT->GetSectionEndPlace(m_wpCaret)); 3118 wr = CPVT_WordRange(m_pVT->GetPrevWordPlace(m_wpOldCaret),m_pVT- >GetSectionEndPlace(m_wpCaret));
3146 3119
3147 » » » Refresh(RP_ANALYSE, &wr); 3120 Refresh(RP_ANALYSE, &wr);
3148 3121
3149 » » » SetCaretOrigin(); 3122 SetCaretOrigin();
3150 » » » SetCaretInfo(); 3123 SetCaretInfo();
3151 » » } 3124 }
3152 3125
3153 » » if (m_bOprNotify && m_pOprNotify) 3126 if (m_bOprNotify && m_pOprNotify)
3154 » » » m_pOprNotify->OnDelete(m_wpCaret, m_wpOldCaret); 3127 m_pOprNotify->OnDelete(m_wpCaret, m_wpOldCaret);
3155 3128
3156 » » return TRUE; 3129 return TRUE;
3157 » } 3130 }
3158 3131
3159 » return FALSE; 3132 return FALSE;
3160 } 3133 }
3161 3134
3162 FX_BOOL»CFX_Edit::Empty() 3135 FX_BOOL CFX_Edit::Empty()
3163 { 3136 {
3164 » if (m_pVT->IsValid()) 3137 if (m_pVT->IsValid())
3165 » { 3138 {
3166 » » m_pVT->DeleteWords(GetWholeWordRange()); 3139 m_pVT->DeleteWords(GetWholeWordRange());
3167 » » SetCaret(m_pVT->GetBeginWordPlace()); 3140 SetCaret(m_pVT->GetBeginWordPlace());
3168 3141
3169 » » return TRUE; 3142 return TRUE;
3170 » } 3143 }
3171 3144
3172 » return FALSE; 3145 return FALSE;
3173 } 3146 }
3174 3147
3175 FX_BOOL CFX_Edit::Clear(FX_BOOL bAddUndo, FX_BOOL bPaint) 3148 FX_BOOL CFX_Edit::Clear(FX_BOOL bAddUndo, FX_BOOL bPaint)
3176 { 3149 {
3177 » if (m_pVT->IsValid()) 3150 if (m_pVT->IsValid())
3178 » { 3151 {
3179 » » if (m_SelState.IsExist()) 3152 if (m_SelState.IsExist())
3180 » » { 3153 {
3181 » » » CPVT_WordRange range = m_SelState.ConvertToWordRange(); 3154 CPVT_WordRange range = m_SelState.ConvertToWordRange();
3182 3155
3183 » » » if (bAddUndo && m_bEnableUndo) 3156 if (bAddUndo && m_bEnableUndo)
3184 » » » { 3157 {
3185 » » » » if (m_pVT->IsRichText()) 3158 if (m_pVT->IsRichText())
3186 » » » » { 3159 {
3187 » » » » » BeginGroupUndo(L""); 3160 BeginGroupUndo(L"");
3188 3161
3189 » » » » » if (IPDF_VariableText_Iterator * pIterat or = m_pVT->GetIterator()) 3162 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetItera tor())
3190 » » » » » { 3163 {
3191 » » » » » » pIterator->SetAt(range.EndPos); 3164 pIterator->SetAt(range.EndPos);
3192 3165
3193 » » » » » » CPVT_Word wordinfo; 3166 CPVT_Word wordinfo;
3194 » » » » » » CPVT_Section secinfo; 3167 CPVT_Section secinfo;
3195 » » » » » » do 3168 do
3196 » » » » » » { 3169 {
3197 » » » » » » » CPVT_WordPlace place = p Iterator->GetAt(); 3170 CPVT_WordPlace place = pIterator->GetAt();
3198 » » » » » » » if (place.WordCmp(range. BeginPos) <= 0)break; 3171 if (place.WordCmp(range.BeginPos) <= 0)break;
3199 3172
3200 » » » » » » » CPVT_WordPlace oldplace = m_pVT->GetPrevWordPlace(place); 3173 CPVT_WordPlace oldplace = m_pVT->GetPrevWordPlace(pl ace);
3201 3174
3202 » » » » » » » if (oldplace.SecCmp(plac e) != 0) 3175 if (oldplace.SecCmp(place) != 0)
3203 » » » » » » » { 3176 {
3204 » » » » » » » » if (pIterator->G etSection(secinfo)) 3177 if (pIterator->GetSection(secinfo))
3205 » » » » » » » » { 3178 {
3206 » » » » » » » » » AddEditU ndoItem(new CFXEU_ClearRich(this,oldplace,place,range,wordinfo.Word, 3179 AddEditUndoItem(new CFXEU_ClearRich(this,old place,place,range,wordinfo.Word,
3207 » » » » » » » » » » wordinfo.nCharset,secinfo.SecProps,secinfo.WordProps)); 3180 wordinfo.nCharset,secinfo.SecProps,secin fo.WordProps));
3208 » » » » » » » » } 3181 }
3209 » » » » » » » } 3182 }
3210 » » » » » » » else 3183 else
3211 » » » » » » » { 3184 {
3212 » » » » » » » » if (pIterator->G etWord(wordinfo)) 3185 if (pIterator->GetWord(wordinfo))
3213 » » » » » » » » { 3186 {
3214 » » » » » » » » » oldplace = m_pVT->AjustLineHeader(oldplace,TRUE); 3187 oldplace = m_pVT->AjustLineHeader(oldplace,T RUE);
3215 » » » » » » » » » place = m_pVT->AjustLineHeader(place,TRUE); 3188 place = m_pVT->AjustLineHeader(place,TRUE);
3216 3189
3217 » » » » » » » » » AddEditU ndoItem(new CFXEU_ClearRich(this,oldplace,place,range,wordinfo.Word, 3190 AddEditUndoItem(new CFXEU_ClearRich(this,old place,place,range,wordinfo.Word,
3218 » » » » » » » » » » wordinfo.nCharset,secinfo.SecProps,wordinfo.WordProps)); 3191 wordinfo.nCharset,secinfo.SecProps,wordi nfo.WordProps));
3219 » » » » » » » » } 3192 }
3220 » » » » » » » } 3193 }
3221 » » » » » » }while (pIterator->PrevWord()); 3194 }while (pIterator->PrevWord());
3222 » » » » » } 3195 }
3223 » » » » » EndGroupUndo(); 3196 EndGroupUndo();
3224 » » » » } 3197 }
3225 » » » » else 3198 else
3226 » » » » { 3199 {
3227 » » » » » AddEditUndoItem(new CFXEU_Clear(this,ran ge,GetSelText())); 3200 AddEditUndoItem(new CFXEU_Clear(this,range,GetSelText()));
3228 » » » » } 3201 }
3229 » » » } 3202 }
3230 3203
3231 » » » SelectNone(); 3204 SelectNone();
3232 » » » SetCaret(m_pVT->DeleteWords(range)); 3205 SetCaret(m_pVT->DeleteWords(range));
3233 » » » m_SelState.Set(m_wpCaret,m_wpCaret); 3206 m_SelState.Set(m_wpCaret,m_wpCaret);
3234 3207
3235 » » » if (bPaint) 3208 if (bPaint)
3236 » » » { 3209 {
3237 » » » » RearrangePart(range); 3210 RearrangePart(range);
3238 » » » » ScrollToCaret(); 3211 ScrollToCaret();
3239 3212
3240 » » » » CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRa nge().EndPos); 3213 CPVT_WordRange wr(m_wpOldCaret, GetVisibleWordRange().EndPos);
3241 » » » » Refresh(RP_ANALYSE, &wr); 3214 Refresh(RP_ANALYSE, &wr);
3242 3215
3243 » » » » SetCaretOrigin(); 3216 SetCaretOrigin();
3244 » » » » SetCaretInfo(); 3217 SetCaretInfo();
3245 » » » } 3218 }
3246 3219
3247 » » » if (m_bOprNotify && m_pOprNotify) 3220 if (m_bOprNotify && m_pOprNotify)
3248 » » » » m_pOprNotify->OnClear(m_wpCaret, m_wpOldCaret); 3221 m_pOprNotify->OnClear(m_wpCaret, m_wpOldCaret);
3249 3222
3250 » » » return TRUE; 3223 return TRUE;
3251 » » } 3224 }
3252 » } 3225 }
3253 3226
3254 » return FALSE; 3227 return FALSE;
3255 } 3228 }
3256 3229
3257 FX_BOOL CFX_Edit::InsertText(const FX_WCHAR* text, int32_t charset, 3230 FX_BOOL CFX_Edit::InsertText(const FX_WCHAR* text, int32_t charset,
3258 » » » » » const CPVT_SecProps * pSecProps, const C PVT_WordProps * pWordProps, FX_BOOL bAddUndo, FX_BOOL bPaint) 3231 const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWor dProps, FX_BOOL bAddUndo, FX_BOOL bPaint)
3259 { 3232 {
3260 » if (IsTextOverflow()) return FALSE; 3233 if (IsTextOverflow()) return FALSE;
3261 3234
3262 » m_pVT->UpdateWordPlace(m_wpCaret); 3235 m_pVT->UpdateWordPlace(m_wpCaret);
3263 » SetCaret(DoInsertText(m_wpCaret, text, charset, pSecProps, pWordProps)); 3236 SetCaret(DoInsertText(m_wpCaret, text, charset, pSecProps, pWordProps));
3264 » m_SelState.Set(m_wpCaret,m_wpCaret); 3237 m_SelState.Set(m_wpCaret,m_wpCaret);
3265 3238
3266 » if (m_wpCaret != m_wpOldCaret) 3239 if (m_wpCaret != m_wpOldCaret)
3267 » { 3240 {
3268 » » if (bAddUndo && m_bEnableUndo) 3241 if (bAddUndo && m_bEnableUndo)
3269 » » { 3242 {
3270 » » » AddEditUndoItem(new CFXEU_InsertText(this,m_wpOldCaret,m _wpCaret,text,charset,pSecProps,pWordProps)); 3243 AddEditUndoItem(new CFXEU_InsertText(this,m_wpOldCaret,m_wpCaret,tex t,charset,pSecProps,pWordProps));
3271 » » } 3244 }
3272 3245
3273 » » if (bPaint) 3246 if (bPaint)
3274 » » » PaintInsertText(m_wpOldCaret, m_wpCaret); 3247 PaintInsertText(m_wpOldCaret, m_wpCaret);
3275 3248
3276 » » if (m_bOprNotify && m_pOprNotify) 3249 if (m_bOprNotify && m_pOprNotify)
3277 » » » m_pOprNotify->OnInsertText(m_wpCaret, m_wpOldCaret); 3250 m_pOprNotify->OnInsertText(m_wpCaret, m_wpOldCaret);
3278 3251
3279 » » return TRUE; 3252 return TRUE;
3280 » } 3253 }
3281 » return FALSE; 3254 return FALSE;
3282 } 3255 }
3283 3256
3284 void CFX_Edit::PaintInsertText(const CPVT_WordPlace & wpOld, const CPVT_WordPlac e & wpNew) 3257 void CFX_Edit::PaintInsertText(const CPVT_WordPlace & wpOld, const CPVT_WordPlac e & wpNew)
3285 { 3258 {
3286 » if (m_pVT->IsValid()) 3259 if (m_pVT->IsValid())
3287 » { 3260 {
3288 » » RearrangePart(CPVT_WordRange(wpOld,wpNew)); 3261 RearrangePart(CPVT_WordRange(wpOld,wpNew));
3289 » » ScrollToCaret(); 3262 ScrollToCaret();
3290 3263
3291 » » CPVT_WordRange wr; 3264 CPVT_WordRange wr;
3292 » » if (m_wpCaret.LineCmp(wpOld) !=0) 3265 if (m_wpCaret.LineCmp(wpOld) !=0)
3293 » » » wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(wpOld),m_pV T->GetSectionEndPlace(wpNew)); 3266 wr = CPVT_WordRange(m_pVT->GetLineBeginPlace(wpOld),m_pVT->GetSectio nEndPlace(wpNew));
3294 » » else 3267 else
3295 » » » wr = CPVT_WordRange(wpOld,m_pVT->GetSectionEndPlace(wpNe w)); 3268 wr = CPVT_WordRange(wpOld,m_pVT->GetSectionEndPlace(wpNew));
3296 » » Refresh(RP_ANALYSE, &wr); 3269 Refresh(RP_ANALYSE, &wr);
3297 » » SetCaretOrigin(); 3270 SetCaretOrigin();
3298 » » SetCaretInfo(); 3271 SetCaretInfo();
3299 » } 3272 }
3300 } 3273 }
3301 3274
3302 FX_BOOL CFX_Edit::Redo() 3275 FX_BOOL CFX_Edit::Redo()
3303 { 3276 {
3304 » if (m_bEnableUndo) 3277 if (m_bEnableUndo)
3305 » { 3278 {
3306 » » if (m_Undo.CanRedo()) 3279 if (m_Undo.CanRedo())
3307 » » { 3280 {
3308 » » » m_Undo.Redo(); 3281 m_Undo.Redo();
3309 » » » return TRUE; 3282 return TRUE;
3310 » » } 3283 }
3311 » } 3284 }
3312 3285
3313 » return FALSE; 3286 return FALSE;
3314 } 3287 }
3315 3288
3316 FX_BOOL CFX_Edit::Undo() 3289 FX_BOOL CFX_Edit::Undo()
3317 { 3290 {
3318 » if (m_bEnableUndo) 3291 if (m_bEnableUndo)
3319 » { 3292 {
3320 » » if (m_Undo.CanUndo()) 3293 if (m_Undo.CanUndo())
3321 » » { 3294 {
3322 » » » m_Undo.Undo(); 3295 m_Undo.Undo();
3323 » » » return TRUE; 3296 return TRUE;
3324 » » } 3297 }
3325 » } 3298 }
3326 3299
3327 » return FALSE; 3300 return FALSE;
3328 } 3301 }
3329 3302
3330 void CFX_Edit::SetCaretOrigin() 3303 void CFX_Edit::SetCaretOrigin()
3331 { 3304 {
3332 » if (m_pVT->IsValid()) 3305 if (m_pVT->IsValid())
3333 » { 3306 {
3334 » » if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator( )) 3307 if (IPDF_VariableText_Iterator * pIterator = m_pVT->GetIterator())
3335 » » { 3308 {
3336 » » » pIterator->SetAt(m_wpCaret); 3309 pIterator->SetAt(m_wpCaret);
3337 » » » CPVT_Word word; 3310 CPVT_Word word;
3338 » » » CPVT_Line line; 3311 CPVT_Line line;
3339 » » » if (pIterator->GetWord(word)) 3312 if (pIterator->GetWord(word))
3340 » » » { 3313 {
3341 » » » » m_ptCaret.x = word.ptWord.x + word.fWidth; 3314 m_ptCaret.x = word.ptWord.x + word.fWidth;
3342 » » » » m_ptCaret.y = word.ptWord.y; 3315 m_ptCaret.y = word.ptWord.y;
3343 » » » } 3316 }
3344 » » » else if (pIterator->GetLine(line)) 3317 else if (pIterator->GetLine(line))
3345 » » » { 3318 {
3346 » » » » m_ptCaret.x = line.ptLine.x; 3319 m_ptCaret.x = line.ptLine.x;
3347 » » » » m_ptCaret.y = line.ptLine.y; 3320 m_ptCaret.y = line.ptLine.y;
3348 » » » } 3321 }
3349 » » } 3322 }
3350 » } 3323 }
3351 } 3324 }
3352 3325
3353 int32_t CFX_Edit::WordPlaceToWordIndex(const CPVT_WordPlace & place) const 3326 int32_t CFX_Edit::WordPlaceToWordIndex(const CPVT_WordPlace & place) const
3354 { 3327 {
3355 » if (m_pVT->IsValid()) 3328 if (m_pVT->IsValid())
3356 » » return m_pVT->WordPlaceToWordIndex(place); 3329 return m_pVT->WordPlaceToWordIndex(place);
3357 3330
3358 » return -1; 3331 return -1;
3359 } 3332 }
3360 3333
3361 CPVT_WordPlace CFX_Edit::WordIndexToWordPlace(int32_t index) const 3334 CPVT_WordPlace CFX_Edit::WordIndexToWordPlace(int32_t index) const
3362 { 3335 {
3363 » if (m_pVT->IsValid()) 3336 if (m_pVT->IsValid())
3364 » » return m_pVT->WordIndexToWordPlace(index); 3337 return m_pVT->WordIndexToWordPlace(index);
3365 3338
3366 » return CPVT_WordPlace(); 3339 return CPVT_WordPlace();
3367 } 3340 }
3368 3341
3369 FX_BOOL»CFX_Edit::IsTextFull() const 3342 FX_BOOL CFX_Edit::IsTextFull() const
3370 { 3343 {
3371 » int32_t nTotalWords = m_pVT->GetTotalWords(); 3344 int32_t nTotalWords = m_pVT->GetTotalWords();
3372 » int32_t nLimitChar = m_pVT->GetLimitChar(); 3345 int32_t nLimitChar = m_pVT->GetLimitChar();
3373 » int32_t nCharArray = m_pVT->GetCharArray(); 3346 int32_t nCharArray = m_pVT->GetCharArray();
3374 3347
3375 » return IsTextOverflow() || (nLimitChar>0 && nTotalWords >= nLimitChar) 3348 return IsTextOverflow() || (nLimitChar>0 && nTotalWords >= nLimitChar)
3376 » » || (nCharArray>0 && nTotalWords >= nCharArray); 3349 || (nCharArray>0 && nTotalWords >= nCharArray);
3377 } 3350 }
3378 3351
3379 FX_BOOL»CFX_Edit::IsTextOverflow() const 3352 FX_BOOL CFX_Edit::IsTextOverflow() const
3380 { 3353 {
3381 » if (!m_bEnableScroll && !m_bEnableOverflow) 3354 if (!m_bEnableScroll && !m_bEnableOverflow)
3382 » { 3355 {
3383 » » CPDF_Rect rcPlate = m_pVT->GetPlateRect(); 3356 CPDF_Rect rcPlate = m_pVT->GetPlateRect();
3384 » » CPDF_Rect rcContent = m_pVT->GetContentRect(); 3357 CPDF_Rect rcContent = m_pVT->GetContentRect();
3385 3358
3386 » » if (m_pVT->IsMultiLine() && GetTotalLines() > 1) 3359 if (m_pVT->IsMultiLine() && GetTotalLines() > 1)
3387 » » { 3360 {
3388 » » » if (FX_EDIT_IsFloatBigger(rcContent.Height(),rcPlate.Hei ght())) return TRUE; 3361 if (FX_EDIT_IsFloatBigger(rcContent.Height(),rcPlate.Height())) retu rn TRUE;
3389 » » } 3362 }
3390 3363
3391 » » if (FX_EDIT_IsFloatBigger(rcContent.Width(),rcPlate.Width())) re turn TRUE; 3364 if (FX_EDIT_IsFloatBigger(rcContent.Width(),rcPlate.Width())) return TRU E;
3392 » } 3365 }
3393 3366
3394 » return FALSE; 3367 return FALSE;
3395 } 3368 }
3396 3369
3397 CPVT_WordPlace CFX_Edit::GetLineBeginPlace(const CPVT_WordPlace & place) const 3370 CPVT_WordPlace CFX_Edit::GetLineBeginPlace(const CPVT_WordPlace & place) const
3398 { 3371 {
3399 » return m_pVT->GetLineBeginPlace(place); 3372 return m_pVT->GetLineBeginPlace(place);
3400 } 3373 }
3401 3374
3402 CPVT_WordPlace CFX_Edit::GetLineEndPlace(const CPVT_WordPlace & place) const 3375 CPVT_WordPlace CFX_Edit::GetLineEndPlace(const CPVT_WordPlace & place) const
3403 { 3376 {
3404 » return m_pVT->GetLineEndPlace(place); 3377 return m_pVT->GetLineEndPlace(place);
3405 } 3378 }
3406 3379
3407 CPVT_WordPlace CFX_Edit::GetSectionBeginPlace(const CPVT_WordPlace & place) cons t 3380 CPVT_WordPlace CFX_Edit::GetSectionBeginPlace(const CPVT_WordPlace & place) cons t
3408 { 3381 {
3409 » return m_pVT->GetSectionBeginPlace(place); 3382 return m_pVT->GetSectionBeginPlace(place);
3410 } 3383 }
3411 3384
3412 CPVT_WordPlace CFX_Edit::GetSectionEndPlace(const CPVT_WordPlace & place) const 3385 CPVT_WordPlace CFX_Edit::GetSectionEndPlace(const CPVT_WordPlace & place) const
3413 { 3386 {
3414 » return m_pVT->GetSectionEndPlace(place); 3387 return m_pVT->GetSectionEndPlace(place);
3415 } 3388 }
3416 3389
3417 FX_BOOL»CFX_Edit::CanUndo() const 3390 FX_BOOL CFX_Edit::CanUndo() const
3418 { 3391 {
3419 » if (m_bEnableUndo) 3392 if (m_bEnableUndo)
3420 » { 3393 {
3421 » » return m_Undo.CanUndo(); 3394 return m_Undo.CanUndo();
3422 » } 3395 }
3423 3396
3424 » return FALSE; 3397 return FALSE;
3425 } 3398 }
3426 3399
3427 FX_BOOL»CFX_Edit::CanRedo() const 3400 FX_BOOL CFX_Edit::CanRedo() const
3428 { 3401 {
3429 » if (m_bEnableUndo) 3402 if (m_bEnableUndo)
3430 » { 3403 {
3431 » » return m_Undo.CanRedo(); 3404 return m_Undo.CanRedo();
3432 » } 3405 }
3433 3406
3434 » return FALSE; 3407 return FALSE;
3435 } 3408 }
3436 3409
3437 FX_BOOL»CFX_Edit::IsModified() const 3410 FX_BOOL CFX_Edit::IsModified() const
3438 { 3411 {
3439 » if (m_bEnableUndo) 3412 if (m_bEnableUndo)
3440 » { 3413 {
3441 » » return m_Undo.IsModified(); 3414 return m_Undo.IsModified();
3442 » } 3415 }
3443 3416
3444 » return FALSE; 3417 return FALSE;
3445 } 3418 }
3446 3419
3447 void CFX_Edit::EnableRefresh(FX_BOOL bRefresh) 3420 void CFX_Edit::EnableRefresh(FX_BOOL bRefresh)
3448 { 3421 {
3449 » m_bEnableRefresh = bRefresh; 3422 m_bEnableRefresh = bRefresh;
3450 } 3423 }
3451 3424
3452 void CFX_Edit::EnableUndo(FX_BOOL bUndo) 3425 void CFX_Edit::EnableUndo(FX_BOOL bUndo)
3453 { 3426 {
3454 m_bEnableUndo = bUndo; 3427 m_bEnableUndo = bUndo;
3455 } 3428 }
3456 3429
3457 void CFX_Edit::EnableNotify(FX_BOOL bNotify) 3430 void CFX_Edit::EnableNotify(FX_BOOL bNotify)
3458 { 3431 {
3459 m_bNotify = bNotify; 3432 m_bNotify = bNotify;
3460 } 3433 }
3461 3434
3462 void CFX_Edit::EnableOprNotify(FX_BOOL bNotify) 3435 void CFX_Edit::EnableOprNotify(FX_BOOL bNotify)
3463 { 3436 {
3464 m_bOprNotify = bNotify; 3437 m_bOprNotify = bNotify;
3465 } 3438 }
3466 3439
3467 FX_FLOAT CFX_Edit::GetLineTop(const CPVT_WordPlace& place) const 3440 FX_FLOAT CFX_Edit::GetLineTop(const CPVT_WordPlace& place) const
3468 { 3441 {
3469 » if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) 3442 if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator())
3470 » { 3443 {
3471 » » CPVT_WordPlace wpOld = pIterator->GetAt(); 3444 CPVT_WordPlace wpOld = pIterator->GetAt();
3472 3445
3473 » » pIterator->SetAt(place); 3446 pIterator->SetAt(place);
3474 » » CPVT_Line line; 3447 CPVT_Line line;
3475 » » pIterator->GetLine(line); 3448 pIterator->GetLine(line);
3476 3449
3477 » » pIterator->SetAt(wpOld); 3450 pIterator->SetAt(wpOld);
3478 3451
3479 » » return line.ptLine.y + line.fLineAscent; 3452 return line.ptLine.y + line.fLineAscent;
3480 » } 3453 }
3481 3454
3482 » return 0.0f; 3455 return 0.0f;
3483 } 3456 }
3484 3457
3485 FX_FLOAT CFX_Edit::GetLineBottom(const CPVT_WordPlace& place) const 3458 FX_FLOAT CFX_Edit::GetLineBottom(const CPVT_WordPlace& place) const
3486 { 3459 {
3487 » if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator()) 3460 if (IPDF_VariableText_Iterator* pIterator = m_pVT->GetIterator())
3488 » { 3461 {
3489 » » CPVT_WordPlace wpOld = pIterator->GetAt(); 3462 CPVT_WordPlace wpOld = pIterator->GetAt();
3490 3463
3491 » » pIterator->SetAt(place); 3464 pIterator->SetAt(place);
3492 » » CPVT_Line line; 3465 CPVT_Line line;
3493 » » pIterator->GetLine(line); 3466 pIterator->GetLine(line);
3494 3467
3495 » » pIterator->SetAt(wpOld); 3468 pIterator->SetAt(wpOld);
3496 3469
3497 » » return line.ptLine.y + line.fLineDescent; 3470 return line.ptLine.y + line.fLineDescent;
3498 » } 3471 }
3499 3472
3500 » return 0.0f; 3473 return 0.0f;
3501 } 3474 }
3502 3475
3503 CPVT_WordPlace CFX_Edit::DoInsertText(const CPVT_WordPlace& place, const FX_WCHA R* text, int32_t charset, 3476 CPVT_WordPlace CFX_Edit::DoInsertText(const CPVT_WordPlace& place, const FX_WCHA R* text, int32_t charset,
3504 » » » » » » » » » const CPVT_SecProps * pSecProps, const CPVT_WordProps * pWordProps) 3477 const CPVT_SecProps * pSecProps, const CPV T_WordProps * pWordProps)
3505 { 3478 {
3506 » CPVT_WordPlace wp = place; 3479 CPVT_WordPlace wp = place;
3507 3480
3508 » if (m_pVT->IsValid()) 3481 if (m_pVT->IsValid())
3509 » { 3482 {
3510 » » CFX_WideString sText = text; 3483 CFX_WideString sText = text;
3511 3484
3512 » » for (int32_t i = 0, sz = sText.GetLength(); i < sz; i++) 3485 for (int32_t i = 0, sz = sText.GetLength(); i < sz; i++)
3513 » » { 3486 {
3514 » » » FX_WORD word = sText[i]; 3487 FX_WORD word = sText[i];
3515 » » » switch (word) 3488 switch (word)
3516 » » » { 3489 {
3517 » » » case 0x0D: 3490 case 0x0D:
3518 » » » » wp = m_pVT->InsertSection(wp,pSecProps,pWordProp s); 3491 wp = m_pVT->InsertSection(wp,pSecProps,pWordProps);
3519 » » » » if (sText[i+1] == 0x0A) 3492 if (sText[i+1] == 0x0A)
3520 » » » » » i++; 3493 i++;
3521 » » » » break; 3494 break;
3522 » » » case 0x0A: 3495 case 0x0A:
3523 » » » » wp = m_pVT->InsertSection(wp,pSecProps,pWordProp s); 3496 wp = m_pVT->InsertSection(wp,pSecProps,pWordProps);
3524 » » » » if (sText[i+1] == 0x0D) 3497 if (sText[i+1] == 0x0D)
3525 » » » » » i++; 3498 i++;
3526 » » » » break; 3499 break;
3527 » » » case 0x09: 3500 case 0x09:
3528 » » » » word = 0x20; 3501 word = 0x20;
3529 » » » default: 3502 default:
3530 » » » » wp = m_pVT->InsertWord(wp,word,GetCharSetFromUni code(word, charset),pWordProps); 3503 wp = m_pVT->InsertWord(wp,word,GetCharSetFromUnicode(word, chars et),pWordProps);
3531 » » » » break; 3504 break;
3532 » » » } 3505 }
3533 » » } 3506 }
3534 » } 3507 }
3535 3508
3536 » return wp; 3509 return wp;
3537 } 3510 }
3538 3511
3539 int32_t CFX_Edit::GetCharSetFromUnicode(FX_WORD word, int32_t nOldCharset) 3512 int32_t CFX_Edit::GetCharSetFromUnicode(FX_WORD word, int32_t nOldCharset)
3540 { 3513 {
3541 if (IFX_Edit_FontMap* pFontMap = GetFontMap()) 3514 if (IFX_Edit_FontMap* pFontMap = GetFontMap())
3542 return pFontMap->CharSetFromUnicode(word, nOldCharset); 3515 return pFontMap->CharSetFromUnicode(word, nOldCharset);
3543 return nOldCharset; 3516 return nOldCharset;
3544 } 3517 }
3545 3518
3546 void CFX_Edit::BeginGroupUndo(const CFX_WideString& sTitle) 3519 void CFX_Edit::BeginGroupUndo(const CFX_WideString& sTitle)
3547 { 3520 {
3548 » ASSERT(m_pGroupUndoItem == NULL); 3521 ASSERT(m_pGroupUndoItem == NULL);
3549 3522
3550 » m_pGroupUndoItem = new CFX_Edit_GroupUndoItem(sTitle); 3523 m_pGroupUndoItem = new CFX_Edit_GroupUndoItem(sTitle);
3551 } 3524 }
3552 3525
3553 void CFX_Edit::EndGroupUndo() 3526 void CFX_Edit::EndGroupUndo()
3554 { 3527 {
3555 » ASSERT(m_pGroupUndoItem != NULL); 3528 ASSERT(m_pGroupUndoItem != NULL);
3556 3529
3557 » m_pGroupUndoItem->UpdateItems(); 3530 m_pGroupUndoItem->UpdateItems();
3558 » m_Undo.AddItem(m_pGroupUndoItem); 3531 m_Undo.AddItem(m_pGroupUndoItem);
3559 » if (m_bOprNotify && m_pOprNotify) 3532 if (m_bOprNotify && m_pOprNotify)
3560 » » m_pOprNotify->OnAddUndo(m_pGroupUndoItem); 3533 m_pOprNotify->OnAddUndo(m_pGroupUndoItem);
3561 » m_pGroupUndoItem = NULL; 3534 m_pGroupUndoItem = NULL;
3562 } 3535 }
3563 3536
3564 void CFX_Edit::AddEditUndoItem(CFX_Edit_UndoItem* pEditUndoItem) 3537 void CFX_Edit::AddEditUndoItem(CFX_Edit_UndoItem* pEditUndoItem)
3565 { 3538 {
3566 » if (m_pGroupUndoItem) 3539 if (m_pGroupUndoItem)
3567 » » m_pGroupUndoItem->AddUndoItem(pEditUndoItem); 3540 m_pGroupUndoItem->AddUndoItem(pEditUndoItem);
3568 » else 3541 else
3569 » { 3542 {
3570 » » m_Undo.AddItem(pEditUndoItem); 3543 m_Undo.AddItem(pEditUndoItem);
3571 » » if (m_bOprNotify && m_pOprNotify) 3544 if (m_bOprNotify && m_pOprNotify)
3572 » » » m_pOprNotify->OnAddUndo(pEditUndoItem); 3545 m_pOprNotify->OnAddUndo(pEditUndoItem);
3573 » } 3546 }
3574 } 3547 }
3575 3548
3576 void CFX_Edit::AddUndoItem(IFX_Edit_UndoItem* pUndoItem) 3549 void CFX_Edit::AddUndoItem(IFX_Edit_UndoItem* pUndoItem)
3577 { 3550 {
3578 » m_Undo.AddItem(pUndoItem); 3551 m_Undo.AddItem(pUndoItem);
3579 » if (m_bOprNotify && m_pOprNotify) 3552 if (m_bOprNotify && m_pOprNotify)
3580 » » m_pOprNotify->OnAddUndo(pUndoItem); 3553 m_pOprNotify->OnAddUndo(pUndoItem);
3581 } 3554 }
3582 3555
OLDNEW
« no previous file with comments | « fpdfsdk/src/fsdk_rendercontext.cpp ('k') | fpdfsdk/src/javascript/Document.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698