OLD | NEW |
| (Empty) |
1 // Copyright 2014 PDFium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
6 | |
7 #ifndef FPDFSDK_FXEDIT_INCLUDE_FXET_EDIT_H_ | |
8 #define FPDFSDK_FXEDIT_INCLUDE_FXET_EDIT_H_ | |
9 | |
10 #include <memory> | |
11 | |
12 #include "core/fpdfdoc/cpvt_secprops.h" | |
13 #include "core/fpdfdoc/cpvt_wordprops.h" | |
14 #include "fpdfsdk/fxedit/include/fx_edit.h" | |
15 | |
16 class CFFL_FormFiller; | |
17 class CFX_Edit; | |
18 class CFX_Edit_Iterator; | |
19 class CFX_Edit_Provider; | |
20 class CFX_RenderDevice; | |
21 class CFX_SystemHandler; | |
22 class CPDF_PageObjectHolder; | |
23 class CPDF_TextObject; | |
24 class CPWL_Edit; | |
25 class CPWL_EditCtrl; | |
26 | |
27 class IFX_Edit_UndoItem; | |
28 | |
29 struct CFX_Edit_LineRect { | |
30 CFX_Edit_LineRect(const CPVT_WordRange& wrLine, const CFX_FloatRect& rcLine) | |
31 : m_wrLine(wrLine), m_rcLine(rcLine) {} | |
32 | |
33 CPVT_WordRange m_wrLine; | |
34 CFX_FloatRect m_rcLine; | |
35 }; | |
36 | |
37 class CFX_Edit_LineRectArray { | |
38 public: | |
39 CFX_Edit_LineRectArray(); | |
40 virtual ~CFX_Edit_LineRectArray(); | |
41 | |
42 void Empty(); | |
43 void RemoveAll(); | |
44 void operator=(CFX_Edit_LineRectArray& rects); | |
45 void Add(const CPVT_WordRange& wrLine, const CFX_FloatRect& rcLine); | |
46 | |
47 int32_t GetSize() const; | |
48 CFX_Edit_LineRect* GetAt(int32_t nIndex) const; | |
49 | |
50 private: | |
51 CFX_ArrayTemplate<CFX_Edit_LineRect*> m_LineRects; | |
52 }; | |
53 | |
54 class CFX_Edit_RectArray { | |
55 public: | |
56 CFX_Edit_RectArray(); | |
57 virtual ~CFX_Edit_RectArray(); | |
58 | |
59 void Empty(); | |
60 void Add(const CFX_FloatRect& rect); | |
61 | |
62 int32_t GetSize() const; | |
63 CFX_FloatRect* GetAt(int32_t nIndex) const; | |
64 | |
65 private: | |
66 CFX_ArrayTemplate<CFX_FloatRect*> m_Rects; | |
67 }; | |
68 | |
69 class CFX_Edit_Refresh { | |
70 public: | |
71 CFX_Edit_Refresh(); | |
72 virtual ~CFX_Edit_Refresh(); | |
73 | |
74 void BeginRefresh(); | |
75 void Push(const CPVT_WordRange& linerange, const CFX_FloatRect& rect); | |
76 void NoAnalyse(); | |
77 void AddRefresh(const CFX_FloatRect& rect); | |
78 const CFX_Edit_RectArray* GetRefreshRects() const; | |
79 void EndRefresh(); | |
80 | |
81 private: | |
82 CFX_Edit_LineRectArray m_NewLineRects; | |
83 CFX_Edit_LineRectArray m_OldLineRects; | |
84 CFX_Edit_RectArray m_RefreshRects; | |
85 }; | |
86 | |
87 class CFX_Edit_Select { | |
88 public: | |
89 CFX_Edit_Select(); | |
90 CFX_Edit_Select(const CPVT_WordPlace& begin, const CPVT_WordPlace& end); | |
91 explicit CFX_Edit_Select(const CPVT_WordRange& range); | |
92 | |
93 void Default(); | |
94 void Set(const CPVT_WordPlace& begin, const CPVT_WordPlace& end); | |
95 void SetBeginPos(const CPVT_WordPlace& begin); | |
96 void SetEndPos(const CPVT_WordPlace& end); | |
97 | |
98 CPVT_WordRange ConvertToWordRange() const; | |
99 FX_BOOL IsExist() const; | |
100 | |
101 CPVT_WordPlace BeginPos, EndPos; | |
102 }; | |
103 | |
104 class CFX_Edit_Undo { | |
105 public: | |
106 explicit CFX_Edit_Undo(int32_t nBufsize); | |
107 virtual ~CFX_Edit_Undo(); | |
108 | |
109 void Undo(); | |
110 void Redo(); | |
111 | |
112 void AddItem(IFX_Edit_UndoItem* pItem); | |
113 | |
114 FX_BOOL CanUndo() const; | |
115 FX_BOOL CanRedo() const; | |
116 FX_BOOL IsModified() const; | |
117 | |
118 void Reset(); | |
119 | |
120 private: | |
121 void RemoveHeads(); | |
122 void RemoveTails(); | |
123 | |
124 private: | |
125 CFX_ArrayTemplate<IFX_Edit_UndoItem*> m_UndoItemStack; | |
126 | |
127 int32_t m_nCurUndoPos; | |
128 int32_t m_nBufSize; | |
129 FX_BOOL m_bModified; | |
130 FX_BOOL m_bVirgin; | |
131 FX_BOOL m_bWorking; | |
132 }; | |
133 | |
134 class IFX_Edit_UndoItem { | |
135 public: | |
136 virtual ~IFX_Edit_UndoItem() {} | |
137 | |
138 virtual void Undo() = 0; | |
139 virtual void Redo() = 0; | |
140 virtual CFX_WideString GetUndoTitle() = 0; | |
141 }; | |
142 | |
143 class CFX_Edit_UndoItem : public IFX_Edit_UndoItem { | |
144 public: | |
145 CFX_Edit_UndoItem(); | |
146 ~CFX_Edit_UndoItem() override; | |
147 | |
148 CFX_WideString GetUndoTitle() override; | |
149 | |
150 void SetFirst(FX_BOOL bFirst); | |
151 void SetLast(FX_BOOL bLast); | |
152 FX_BOOL IsLast(); | |
153 | |
154 private: | |
155 FX_BOOL m_bFirst; | |
156 FX_BOOL m_bLast; | |
157 }; | |
158 | |
159 class CFX_Edit_GroupUndoItem : public IFX_Edit_UndoItem { | |
160 public: | |
161 explicit CFX_Edit_GroupUndoItem(const CFX_WideString& sTitle); | |
162 ~CFX_Edit_GroupUndoItem() override; | |
163 | |
164 // IFX_Edit_UndoItem | |
165 void Undo() override; | |
166 void Redo() override; | |
167 CFX_WideString GetUndoTitle() override; | |
168 | |
169 void AddUndoItem(CFX_Edit_UndoItem* pUndoItem); | |
170 void UpdateItems(); | |
171 | |
172 private: | |
173 CFX_WideString m_sTitle; | |
174 CFX_ArrayTemplate<CFX_Edit_UndoItem*> m_Items; | |
175 }; | |
176 | |
177 class CFXEU_InsertWord : public CFX_Edit_UndoItem { | |
178 public: | |
179 CFXEU_InsertWord(CFX_Edit* pEdit, | |
180 const CPVT_WordPlace& wpOldPlace, | |
181 const CPVT_WordPlace& wpNewPlace, | |
182 uint16_t word, | |
183 int32_t charset, | |
184 const CPVT_WordProps* pWordProps); | |
185 ~CFXEU_InsertWord() override; | |
186 | |
187 // CFX_Edit_UndoItem | |
188 void Redo() override; | |
189 void Undo() override; | |
190 | |
191 private: | |
192 CFX_Edit* m_pEdit; | |
193 | |
194 CPVT_WordPlace m_wpOld; | |
195 CPVT_WordPlace m_wpNew; | |
196 uint16_t m_Word; | |
197 int32_t m_nCharset; | |
198 CPVT_WordProps m_WordProps; | |
199 }; | |
200 | |
201 class CFXEU_InsertReturn : public CFX_Edit_UndoItem { | |
202 public: | |
203 CFXEU_InsertReturn(CFX_Edit* pEdit, | |
204 const CPVT_WordPlace& wpOldPlace, | |
205 const CPVT_WordPlace& wpNewPlace, | |
206 const CPVT_SecProps* pSecProps, | |
207 const CPVT_WordProps* pWordProps); | |
208 ~CFXEU_InsertReturn() override; | |
209 | |
210 // CFX_Edit_UndoItem | |
211 void Redo() override; | |
212 void Undo() override; | |
213 | |
214 private: | |
215 CFX_Edit* m_pEdit; | |
216 | |
217 CPVT_WordPlace m_wpOld; | |
218 CPVT_WordPlace m_wpNew; | |
219 CPVT_SecProps m_SecProps; | |
220 CPVT_WordProps m_WordProps; | |
221 }; | |
222 | |
223 class CFXEU_Backspace : public CFX_Edit_UndoItem { | |
224 public: | |
225 CFXEU_Backspace(CFX_Edit* pEdit, | |
226 const CPVT_WordPlace& wpOldPlace, | |
227 const CPVT_WordPlace& wpNewPlace, | |
228 uint16_t word, | |
229 int32_t charset, | |
230 const CPVT_SecProps& SecProps, | |
231 const CPVT_WordProps& WordProps); | |
232 ~CFXEU_Backspace() override; | |
233 | |
234 // CFX_Edit_UndoItem | |
235 void Redo() override; | |
236 void Undo() override; | |
237 | |
238 private: | |
239 CFX_Edit* m_pEdit; | |
240 | |
241 CPVT_WordPlace m_wpOld; | |
242 CPVT_WordPlace m_wpNew; | |
243 uint16_t m_Word; | |
244 int32_t m_nCharset; | |
245 CPVT_SecProps m_SecProps; | |
246 CPVT_WordProps m_WordProps; | |
247 }; | |
248 | |
249 class CFXEU_Delete : public CFX_Edit_UndoItem { | |
250 public: | |
251 CFXEU_Delete(CFX_Edit* pEdit, | |
252 const CPVT_WordPlace& wpOldPlace, | |
253 const CPVT_WordPlace& wpNewPlace, | |
254 uint16_t word, | |
255 int32_t charset, | |
256 const CPVT_SecProps& SecProps, | |
257 const CPVT_WordProps& WordProps, | |
258 FX_BOOL bSecEnd); | |
259 ~CFXEU_Delete() override; | |
260 | |
261 // CFX_Edit_UndoItem | |
262 void Redo() override; | |
263 void Undo() override; | |
264 | |
265 private: | |
266 CFX_Edit* m_pEdit; | |
267 | |
268 CPVT_WordPlace m_wpOld; | |
269 CPVT_WordPlace m_wpNew; | |
270 uint16_t m_Word; | |
271 int32_t m_nCharset; | |
272 CPVT_SecProps m_SecProps; | |
273 CPVT_WordProps m_WordProps; | |
274 FX_BOOL m_bSecEnd; | |
275 }; | |
276 | |
277 class CFXEU_Clear : public CFX_Edit_UndoItem { | |
278 public: | |
279 CFXEU_Clear(CFX_Edit* pEdit, | |
280 const CPVT_WordRange& wrSel, | |
281 const CFX_WideString& swText); | |
282 ~CFXEU_Clear() override; | |
283 | |
284 // CFX_Edit_UndoItem | |
285 void Redo() override; | |
286 void Undo() override; | |
287 | |
288 private: | |
289 CFX_Edit* m_pEdit; | |
290 | |
291 CPVT_WordRange m_wrSel; | |
292 CFX_WideString m_swText; | |
293 }; | |
294 | |
295 class CFXEU_InsertText : public CFX_Edit_UndoItem { | |
296 public: | |
297 CFXEU_InsertText(CFX_Edit* pEdit, | |
298 const CPVT_WordPlace& wpOldPlace, | |
299 const CPVT_WordPlace& wpNewPlace, | |
300 const CFX_WideString& swText, | |
301 int32_t charset); | |
302 ~CFXEU_InsertText() override; | |
303 | |
304 // CFX_Edit_UndoItem | |
305 void Redo() override; | |
306 void Undo() override; | |
307 | |
308 private: | |
309 CFX_Edit* m_pEdit; | |
310 | |
311 CPVT_WordPlace m_wpOld; | |
312 CPVT_WordPlace m_wpNew; | |
313 CFX_WideString m_swText; | |
314 int32_t m_nCharset; | |
315 }; | |
316 | |
317 class CFX_Edit { | |
318 public: | |
319 static CFX_ByteString GetEditAppearanceStream(CFX_Edit* pEdit, | |
320 const CFX_FloatPoint& ptOffset, | |
321 const CPVT_WordRange* pRange, | |
322 FX_BOOL bContinuous, | |
323 uint16_t SubWord); | |
324 static CFX_ByteString GetSelectAppearanceStream( | |
325 CFX_Edit* pEdit, | |
326 const CFX_FloatPoint& ptOffset, | |
327 const CPVT_WordRange* pRange); | |
328 static void DrawEdit(CFX_RenderDevice* pDevice, | |
329 CFX_Matrix* pUser2Device, | |
330 CFX_Edit* pEdit, | |
331 FX_COLORREF crTextFill, | |
332 FX_COLORREF crTextStroke, | |
333 const CFX_FloatRect& rcClip, | |
334 const CFX_FloatPoint& ptOffset, | |
335 const CPVT_WordRange* pRange, | |
336 CFX_SystemHandler* pSystemHandler, | |
337 CFFL_FormFiller* pFFLData); | |
338 static void GeneratePageObjects( | |
339 CPDF_PageObjectHolder* pObjectHolder, | |
340 CFX_Edit* pEdit, | |
341 const CFX_FloatPoint& ptOffset, | |
342 const CPVT_WordRange* pRange, | |
343 FX_COLORREF crText, | |
344 CFX_ArrayTemplate<CPDF_TextObject*>& ObjArray); | |
345 | |
346 CFX_Edit(); | |
347 ~CFX_Edit(); | |
348 | |
349 void SetFontMap(IPVT_FontMap* pFontMap); | |
350 void SetNotify(CPWL_EditCtrl* pNotify); | |
351 void SetOprNotify(CPWL_Edit* pOprNotify); | |
352 | |
353 // Returns an iterator for the contents. Should not be released. | |
354 CFX_Edit_Iterator* GetIterator(); | |
355 IPVT_FontMap* GetFontMap(); | |
356 void Initialize(); | |
357 | |
358 // Set the bounding box of the text area. | |
359 void SetPlateRect(const CFX_FloatRect& rect); | |
360 void SetScrollPos(const CFX_FloatPoint& point); | |
361 | |
362 // Set the horizontal text alignment. (nFormat [0:left, 1:middle, 2:right]) | |
363 void SetAlignmentH(int32_t nFormat, FX_BOOL bPaint); | |
364 // Set the vertical text alignment. (nFormat [0:left, 1:middle, 2:right]) | |
365 void SetAlignmentV(int32_t nFormat, FX_BOOL bPaint); | |
366 | |
367 // Set the substitution character for hidden text. | |
368 void SetPasswordChar(uint16_t wSubWord, FX_BOOL bPaint); | |
369 | |
370 // Set the maximum number of words in the text. | |
371 void SetLimitChar(int32_t nLimitChar); | |
372 void SetCharArray(int32_t nCharArray); | |
373 void SetCharSpace(FX_FLOAT fCharSpace); | |
374 void SetMultiLine(FX_BOOL bMultiLine, FX_BOOL bPaint); | |
375 void SetAutoReturn(FX_BOOL bAuto, FX_BOOL bPaint); | |
376 void SetAutoFontSize(FX_BOOL bAuto, FX_BOOL bPaint); | |
377 void SetAutoScroll(FX_BOOL bAuto, FX_BOOL bPaint); | |
378 void SetFontSize(FX_FLOAT fFontSize); | |
379 void SetTextOverflow(FX_BOOL bAllowed, FX_BOOL bPaint); | |
380 void OnMouseDown(const CFX_FloatPoint& point, FX_BOOL bShift, FX_BOOL bCtrl); | |
381 void OnMouseMove(const CFX_FloatPoint& point, FX_BOOL bShift, FX_BOOL bCtrl); | |
382 void OnVK_UP(FX_BOOL bShift, FX_BOOL bCtrl); | |
383 void OnVK_DOWN(FX_BOOL bShift, FX_BOOL bCtrl); | |
384 void OnVK_LEFT(FX_BOOL bShift, FX_BOOL bCtrl); | |
385 void OnVK_RIGHT(FX_BOOL bShift, FX_BOOL bCtrl); | |
386 void OnVK_HOME(FX_BOOL bShift, FX_BOOL bCtrl); | |
387 void OnVK_END(FX_BOOL bShift, FX_BOOL bCtrl); | |
388 void SetText(const CFX_WideString& sText); | |
389 FX_BOOL InsertWord(uint16_t word, int32_t charset); | |
390 FX_BOOL InsertReturn(); | |
391 FX_BOOL Backspace(); | |
392 FX_BOOL Delete(); | |
393 FX_BOOL Clear(); | |
394 FX_BOOL InsertText(const CFX_WideString& sText, int32_t charset); | |
395 FX_BOOL Redo(); | |
396 FX_BOOL Undo(); | |
397 int32_t WordPlaceToWordIndex(const CPVT_WordPlace& place) const; | |
398 CPVT_WordPlace WordIndexToWordPlace(int32_t index) const; | |
399 CPVT_WordPlace SearchWordPlace(const CFX_FloatPoint& point) const; | |
400 int32_t GetCaret() const; | |
401 CPVT_WordPlace GetCaretWordPlace() const; | |
402 CFX_WideString GetSelText() const; | |
403 CFX_WideString GetText() const; | |
404 FX_FLOAT GetFontSize() const; | |
405 uint16_t GetPasswordChar() const; | |
406 CFX_FloatPoint GetScrollPos() const; | |
407 int32_t GetCharArray() const; | |
408 CFX_FloatRect GetContentRect() const; | |
409 CFX_WideString GetRangeText(const CPVT_WordRange& range) const; | |
410 int32_t GetHorzScale() const; | |
411 FX_FLOAT GetCharSpace() const; | |
412 int32_t GetTotalWords() const; | |
413 void SetSel(int32_t nStartChar, int32_t nEndChar); | |
414 void GetSel(int32_t& nStartChar, int32_t& nEndChar) const; | |
415 void SelectAll(); | |
416 void SelectNone(); | |
417 FX_BOOL IsSelected() const; | |
418 void Paint(); | |
419 void EnableRefresh(FX_BOOL bRefresh); | |
420 void RefreshWordRange(const CPVT_WordRange& wr); | |
421 void SetCaret(int32_t nPos); | |
422 CPVT_WordRange GetWholeWordRange() const; | |
423 CPVT_WordRange GetSelectWordRange() const; | |
424 void EnableUndo(FX_BOOL bUndo); | |
425 void EnableOprNotify(FX_BOOL bNotify); | |
426 FX_BOOL IsTextFull() const; | |
427 FX_BOOL IsTextOverflow() const; | |
428 FX_BOOL CanUndo() const; | |
429 FX_BOOL CanRedo() const; | |
430 CPVT_WordRange GetVisibleWordRange() const; | |
431 | |
432 FX_BOOL Empty(); | |
433 | |
434 CPVT_WordPlace DoInsertText(const CPVT_WordPlace& place, | |
435 const CFX_WideString& sText, | |
436 int32_t charset); | |
437 int32_t GetCharSetFromUnicode(uint16_t word, int32_t nOldCharset); | |
438 | |
439 int32_t GetTotalLines() const; | |
440 | |
441 private: | |
442 friend class CFX_Edit_Iterator; | |
443 friend class CFXEU_InsertWord; | |
444 friend class CFXEU_InsertReturn; | |
445 friend class CFXEU_Backspace; | |
446 friend class CFXEU_Delete; | |
447 friend class CFXEU_Clear; | |
448 friend class CFXEU_InsertText; | |
449 | |
450 void SetSel(const CPVT_WordPlace& begin, const CPVT_WordPlace& end); | |
451 | |
452 void RearrangeAll(); | |
453 void RearrangePart(const CPVT_WordRange& range); | |
454 void ScrollToCaret(); | |
455 void SetScrollInfo(); | |
456 void SetScrollPosX(FX_FLOAT fx); | |
457 void SetScrollPosY(FX_FLOAT fy); | |
458 void SetScrollLimit(); | |
459 void SetContentChanged(); | |
460 | |
461 FX_BOOL InsertWord(uint16_t word, | |
462 int32_t charset, | |
463 const CPVT_WordProps* pWordProps, | |
464 FX_BOOL bAddUndo, | |
465 FX_BOOL bPaint); | |
466 FX_BOOL InsertReturn(const CPVT_SecProps* pSecProps, | |
467 const CPVT_WordProps* pWordProps, | |
468 FX_BOOL bAddUndo, | |
469 FX_BOOL bPaint); | |
470 FX_BOOL Backspace(FX_BOOL bAddUndo, FX_BOOL bPaint); | |
471 FX_BOOL Delete(FX_BOOL bAddUndo, FX_BOOL bPaint); | |
472 FX_BOOL Clear(FX_BOOL bAddUndo, FX_BOOL bPaint); | |
473 FX_BOOL InsertText(const CFX_WideString& sText, | |
474 int32_t charset, | |
475 FX_BOOL bAddUndo, | |
476 FX_BOOL bPaint); | |
477 void PaintInsertText(const CPVT_WordPlace& wpOld, | |
478 const CPVT_WordPlace& wpNew); | |
479 | |
480 inline CFX_FloatPoint VTToEdit(const CFX_FloatPoint& point) const; | |
481 inline CFX_FloatPoint EditToVT(const CFX_FloatPoint& point) const; | |
482 inline CFX_FloatRect VTToEdit(const CFX_FloatRect& rect) const; | |
483 | |
484 void Refresh(); | |
485 void RefreshPushLineRects(const CPVT_WordRange& wr); | |
486 | |
487 void SetCaret(const CPVT_WordPlace& place); | |
488 void SetCaretInfo(); | |
489 void SetCaretOrigin(); | |
490 | |
491 void AddEditUndoItem(CFX_Edit_UndoItem* pEditUndoItem); | |
492 | |
493 private: | |
494 std::unique_ptr<CPDF_VariableText> m_pVT; | |
495 CPWL_EditCtrl* m_pNotify; | |
496 CPWL_Edit* m_pOprNotify; | |
497 std::unique_ptr<CFX_Edit_Provider> m_pVTProvider; | |
498 | |
499 CPVT_WordPlace m_wpCaret; | |
500 CPVT_WordPlace m_wpOldCaret; | |
501 CFX_Edit_Select m_SelState; | |
502 | |
503 CFX_FloatPoint m_ptScrollPos; | |
504 CFX_FloatPoint m_ptRefreshScrollPos; | |
505 FX_BOOL m_bEnableScroll; | |
506 std::unique_ptr<CFX_Edit_Iterator> m_pIterator; | |
507 CFX_Edit_Refresh m_Refresh; | |
508 CFX_FloatPoint m_ptCaret; | |
509 CFX_Edit_Undo m_Undo; | |
510 int32_t m_nAlignment; | |
511 FX_BOOL m_bNotifyFlag; | |
512 FX_BOOL m_bEnableOverflow; | |
513 FX_BOOL m_bEnableRefresh; | |
514 CFX_FloatRect m_rcOldContent; | |
515 FX_BOOL m_bEnableUndo; | |
516 FX_BOOL m_bOprNotify; | |
517 CFX_Edit_GroupUndoItem* m_pGroupUndoItem; | |
518 }; | |
519 | |
520 class CFX_Edit_Iterator { | |
521 public: | |
522 CFX_Edit_Iterator(CFX_Edit* pEdit, CPDF_VariableText::Iterator* pVTIterator); | |
523 ~CFX_Edit_Iterator(); | |
524 | |
525 FX_BOOL NextWord(); | |
526 FX_BOOL PrevWord(); | |
527 FX_BOOL GetWord(CPVT_Word& word) const; | |
528 FX_BOOL GetLine(CPVT_Line& line) const; | |
529 FX_BOOL GetSection(CPVT_Section& section) const; | |
530 void SetAt(int32_t nWordIndex); | |
531 void SetAt(const CPVT_WordPlace& place); | |
532 const CPVT_WordPlace& GetAt() const; | |
533 | |
534 private: | |
535 CFX_Edit* m_pEdit; | |
536 CPDF_VariableText::Iterator* m_pVTIterator; | |
537 }; | |
538 | |
539 class CFX_Edit_Provider : public CPDF_VariableText::Provider { | |
540 public: | |
541 explicit CFX_Edit_Provider(IPVT_FontMap* pFontMap); | |
542 ~CFX_Edit_Provider() override; | |
543 | |
544 IPVT_FontMap* GetFontMap(); | |
545 | |
546 // CPDF_VariableText::Provider: | |
547 int32_t GetCharWidth(int32_t nFontIndex, uint16_t word) override; | |
548 int32_t GetTypeAscent(int32_t nFontIndex) override; | |
549 int32_t GetTypeDescent(int32_t nFontIndex) override; | |
550 int32_t GetWordFontIndex(uint16_t word, | |
551 int32_t charset, | |
552 int32_t nFontIndex) override; | |
553 int32_t GetDefaultFontIndex() override; | |
554 FX_BOOL IsLatinWord(uint16_t word) override; | |
555 | |
556 private: | |
557 IPVT_FontMap* m_pFontMap; | |
558 }; | |
559 | |
560 #endif // FPDFSDK_FXEDIT_INCLUDE_FXET_EDIT_H_ | |
OLD | NEW |