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

Side by Side Diff: xfa/src/fee/src/fee/fde_txtedtengine.h

Issue 1778633003: Collapse xfa/src/fee directories (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 9 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 | « xfa/src/fee/src/fee/fde_txtedtbuf.cpp ('k') | xfa/src/fee/src/fee/fde_txtedtengine.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 XFA_SRC_FEE_SRC_FEE_FDE_TXTEDTENGINE_H_
8 #define XFA_SRC_FEE_SRC_FEE_FDE_TXTEDTENGINE_H_
9
10 #include "core/include/fxcrt/fx_string.h"
11 #include "xfa/src/fee/include/ifde_txtedtbuf.h"
12 #include "xfa/src/fee/include/ifde_txtedtengine.h"
13
14 class IFX_TxtBreak;
15 class IFX_CharIter;
16 class CFDE_TxtEdtParag;
17 class CFDE_TxtEdtDoRecord_Insert;
18 class CFDE_TxtEdtDoRecord_DeleteRange;
19
20 class IFDE_TxtEdtDoRecord {
21 public:
22 static IFDE_TxtEdtDoRecord* Create(const CFX_ByteStringC& bsDoRecord);
23 virtual ~IFDE_TxtEdtDoRecord() {}
24 virtual void Release() = 0;
25 virtual FX_BOOL Redo() = 0;
26 virtual FX_BOOL Undo() = 0;
27 virtual void Serialize(CFX_ByteString& bsDoRecord) const = 0;
28 };
29
30 class CFDE_TxtEdtEngine : public IFDE_TxtEdtEngine {
31 friend class CFDE_TxtEdtDoRecord_Insert;
32 friend class CFDE_TxtEdtDoRecord_DeleteRange;
33 friend class CFDE_TxtEdtPage;
34 struct _FDE_TXTEDTSELRANGE {
35 int32_t nStart;
36 int32_t nCount;
37 };
38 typedef _FDE_TXTEDTSELRANGE FDE_TXTEDTSELRANGE;
39 typedef _FDE_TXTEDTSELRANGE* FDE_LPTXTEDTSELRANGE;
40 struct _FDE_TXTEDTPARAGPOS {
41 int32_t nParagIndex;
42 int32_t nCharIndex;
43 };
44 typedef _FDE_TXTEDTPARAGPOS FDE_TXTEDTPARAGPOS;
45 typedef _FDE_TXTEDTPARAGPOS* FDE_LPTXTEDTPARAGPOS;
46
47 public:
48 CFDE_TxtEdtEngine();
49 virtual void Release();
50
51 virtual void SetEditParams(const FDE_TXTEDTPARAMS& params);
52 virtual const FDE_TXTEDTPARAMS* GetEditParams() const;
53
54 virtual int32_t CountPages() const;
55 virtual IFDE_TxtEdtPage* GetPage(int32_t nIndex);
56
57 virtual FX_BOOL SetBufChunkSize(int32_t nChunkSize);
58 virtual void SetTextByStream(IFX_Stream* pStream);
59 virtual void SetText(const CFX_WideString& wsText);
60 virtual int32_t GetTextLength() const;
61 virtual void GetText(CFX_WideString& wsText,
62 int32_t nStart,
63 int32_t nCount = -1);
64 virtual void ClearText();
65
66 virtual int32_t GetCaretRect(CFX_RectF& rtCaret) const;
67 virtual int32_t GetCaretPos() const;
68 virtual int32_t SetCaretPos(int32_t nIndex, FX_BOOL bBefore);
69 virtual int32_t MoveCaretPos(FDE_TXTEDTMOVECARET eMoveCaret,
70 FX_BOOL bShift = FALSE,
71 FX_BOOL bCtrl = FALSE);
72 virtual void Lock();
73 virtual void Unlock();
74 virtual FX_BOOL IsLocked() const;
75
76 virtual int32_t Insert(int32_t nStart,
77 const FX_WCHAR* lpText,
78 int32_t nLength);
79 virtual int32_t Delete(int32_t nStart, FX_BOOL bBackspace = FALSE);
80 virtual int32_t DeleteRange(int32_t nStart, int32_t nCount = -1);
81 virtual int32_t Replace(int32_t nStart,
82 int32_t nLength,
83 const CFX_WideString& wsReplace);
84
85 virtual void SetLimit(int32_t nLimit);
86 virtual void SetAliasChar(FX_WCHAR wcAlias);
87
88 void RemoveSelRange(int32_t nStart, int32_t nCount = -1);
89
90 virtual void AddSelRange(int32_t nStart, int32_t nCount = -1);
91 virtual int32_t CountSelRanges();
92 virtual int32_t GetSelRange(int32_t nIndex, int32_t& nStart);
93 virtual void ClearSelection();
94
95 virtual FX_BOOL Redo(const CFX_ByteStringC& bsRedo);
96 virtual FX_BOOL Undo(const CFX_ByteStringC& bsUndo);
97
98 virtual int32_t StartLayout();
99 virtual int32_t DoLayout(IFX_Pause* pPause);
100 virtual void EndLayout();
101
102 virtual FX_BOOL Optimize(IFX_Pause* pPause = NULL);
103 virtual int32_t CountParags() const;
104 virtual IFDE_TxtEdtParag* GetParag(int32_t nParagIndex) const;
105 virtual IFX_CharIter* CreateCharIter();
106 IFDE_TxtEdtBuf* GetTextBuf() const;
107 int32_t GetTextBufLength() const;
108 IFX_TxtBreak* GetTextBreak() const;
109 int32_t GetLineCount() const;
110 int32_t GetPageLineCount() const;
111
112 int32_t Line2Parag(int32_t nStartParag,
113 int32_t nStartLineofParag,
114 int32_t nLineIndex,
115 int32_t& nStartLine) const;
116 FX_WCHAR GetAliasChar() const { return m_wcAliasChar; }
117
118 protected:
119 virtual ~CFDE_TxtEdtEngine();
120
121 private:
122 void Inner_Insert(int32_t nStart, const FX_WCHAR* lpText, int32_t nLength);
123 void GetPreDeleteText(CFX_WideString& wsText,
124 int32_t nIndex,
125 int32_t nLength);
126 void GetPreInsertText(CFX_WideString& wsText,
127 int32_t nIndex,
128 const FX_WCHAR* lpText,
129 int32_t nLength);
130 void GetPreReplaceText(CFX_WideString& wsText,
131 int32_t nIndex,
132 int32_t nOriginLength,
133 const FX_WCHAR* lpText,
134 int32_t nLength);
135
136 void Inner_DeleteRange(int32_t nStart, int32_t nCount = -1);
137 void DeleteRange_DoRecord(int32_t nStart,
138 int32_t nCount,
139 FX_BOOL bSel = FALSE);
140 void ResetEngine();
141 void RebuildParagraphs();
142 void RemoveAllParags();
143 void RemoveAllPages();
144 void UpdateParags();
145 void UpdatePages();
146 void UpdateTxtBreak();
147
148 FX_BOOL ReplaceParagEnd(FX_WCHAR*& lpText,
149 int32_t& nLength,
150 FX_BOOL bPreIsCR = FALSE);
151 void RecoverParagEnd(CFX_WideString& wsText);
152 int32_t MovePage2Char(int32_t nIndex);
153 void TextPos2ParagPos(int32_t nIndex, FDE_TXTEDTPARAGPOS& ParagPos) const;
154 int32_t MoveForward(FX_BOOL& bBefore);
155 int32_t MoveBackward(FX_BOOL& bBefore);
156 FX_BOOL MoveUp(CFX_PointF& ptCaret);
157 FX_BOOL MoveDown(CFX_PointF& ptCaret);
158 FX_BOOL MoveLineStart();
159 FX_BOOL MoveLineEnd();
160 FX_BOOL MoveParagStart();
161 FX_BOOL MoveParagEnd();
162 FX_BOOL MoveHome();
163 FX_BOOL MoveEnd();
164 FX_BOOL IsFitArea(CFX_WideString& wsText);
165 void UpdateCaretRect(int32_t nIndex, FX_BOOL bBefore = TRUE);
166 void GetCaretRect(CFX_RectF& rtCaret,
167 int32_t nPageIndex,
168 int32_t nCaret,
169 FX_BOOL bBefore = TRUE);
170 void UpdateCaretIndex(const CFX_PointF& ptCaret);
171
172 FX_BOOL IsSelect();
173 void DeleteSelect();
174
175 IFDE_TxtEdtBuf* m_pTxtBuf;
176 IFX_TxtBreak* m_pTextBreak;
177 FDE_TXTEDTPARAMS m_Param;
178 CFX_ArrayTemplate<IFDE_TxtEdtPage*> m_PagePtrArray;
179 CFX_ArrayTemplate<CFDE_TxtEdtParag*> m_ParagPtrArray;
180 CFX_ArrayTemplate<FDE_LPTXTEDTSELRANGE> m_SelRangePtrArr;
181 int32_t m_nPageLineCount;
182 int32_t m_nLineCount;
183 int32_t m_nAnchorPos;
184 int32_t m_nLayoutPos;
185 FX_FLOAT m_fCaretPosReserve;
186 int32_t m_nCaret;
187 FX_BOOL m_bBefore;
188 int32_t m_nCaretPage;
189 CFX_RectF m_rtCaret;
190 FX_DWORD m_dwFindFlags;
191 FX_BOOL m_bLock;
192 int32_t m_nLimit;
193 FX_WCHAR m_wcAliasChar;
194 int32_t m_nFirstLineEnd;
195 FX_BOOL m_bAutoLineEnd;
196 FX_WCHAR m_wLineEnd;
197 FDE_TXTEDT_TEXTCHANGE_INFO m_ChangeInfo;
198 };
199
200 class CFDE_TxtEdtDoRecord_Insert : public IFDE_TxtEdtDoRecord {
201 public:
202 CFDE_TxtEdtDoRecord_Insert(const CFX_ByteStringC& bsDoRecord);
203 CFDE_TxtEdtDoRecord_Insert(CFDE_TxtEdtEngine* pEngine,
204 int32_t nCaret,
205 const FX_WCHAR* lpText,
206 int32_t nLength);
207 virtual void Release();
208 virtual FX_BOOL Undo();
209 virtual FX_BOOL Redo();
210 virtual void Serialize(CFX_ByteString& bsDoRecord) const;
211
212 protected:
213 ~CFDE_TxtEdtDoRecord_Insert();
214 void Deserialize(const CFX_ByteStringC& bsDoRecord);
215
216 private:
217 CFDE_TxtEdtEngine* m_pEngine;
218 int32_t m_nCaret;
219 CFX_WideString m_wsInsert;
220 };
221
222 class CFDE_TxtEdtDoRecord_DeleteRange : public IFDE_TxtEdtDoRecord {
223 public:
224 CFDE_TxtEdtDoRecord_DeleteRange(const CFX_ByteStringC& bsDoRecord);
225 CFDE_TxtEdtDoRecord_DeleteRange(CFDE_TxtEdtEngine* pEngine,
226 int32_t nIndex,
227 int32_t nCaret,
228 const CFX_WideString& wsRange,
229 FX_BOOL bSel = FALSE);
230 virtual void Release();
231 virtual FX_BOOL Undo();
232 virtual FX_BOOL Redo();
233 virtual void Serialize(CFX_ByteString& bsDoRecord) const;
234
235 protected:
236 ~CFDE_TxtEdtDoRecord_DeleteRange();
237 void Deserialize(const CFX_ByteStringC& bsDoRecord);
238
239 private:
240 CFDE_TxtEdtEngine* m_pEngine;
241 FX_BOOL m_bSel;
242 int32_t m_nIndex;
243 int32_t m_nCaret;
244 CFX_WideString m_wsRange;
245 };
246
247 #endif // XFA_SRC_FEE_SRC_FEE_FDE_TXTEDTENGINE_H_
OLDNEW
« no previous file with comments | « xfa/src/fee/src/fee/fde_txtedtbuf.cpp ('k') | xfa/src/fee/src/fee/fde_txtedtengine.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698