blob: 5baeacd2f675b7ceee0c9dd7b9310c2f0f6434bd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
#ifndef _FDE_TXTEDTBUF_H
#define _FDE_TXTEDTBUF_H
class IFX_CharIter;
class CFDE_TxtEdtBufIter;
class CFDE_TxtEdtBuf;
class CFDE_TxtEdtBufIter : public IFX_CharIter, public CFX_Object
{
public:
#ifdef FDE_USEFORMATBLOCK
CFDE_TxtEdtBufIter(CFDE_TxtEdtBuf * pBuf, FX_BOOL bForDisplay = TRUE);
#else
CFDE_TxtEdtBufIter(CFDE_TxtEdtBuf * pBuf, FX_WCHAR wcAlias = 0);
#endif
virtual void Release();
virtual FX_BOOL Next(FX_BOOL bPrev = FALSE);
virtual FX_WCHAR GetChar();
virtual void SetAt(FX_INT32 nIndex);
virtual FX_INT32 GetAt() const;
virtual FX_BOOL IsEOF(FX_BOOL bTail = TRUE) const;
virtual IFX_CharIter * Clone();
protected:
~CFDE_TxtEdtBufIter();
private:
CFDE_TxtEdtBuf* m_pBuf;
FX_INT32 m_nCurChunk;
FX_INT32 m_nCurIndex;
FX_INT32 m_nIndex;
FX_BOOL m_bInField;
#ifdef FDE_USEFORMATBLOCK
FX_BOOL m_bForDisplay;
FX_INT32 m_nAliasCount;
#endif
FX_WCHAR m_Alias;
};
class CFDE_TxtEdtBuf : public IFDE_TxtEdtBuf, public CFX_Object
{
friend class CFDE_TxtEdtBufIter;
struct _FDE_CHUNKHEADER : public CFX_Object {
FX_INT32 nUsed;
FX_WCHAR wChars[1];
};
typedef _FDE_CHUNKHEADER FDE_CHUNKHEADER;
typedef _FDE_CHUNKHEADER* FDE_LPCHUNKHEADER;
struct _FDE_CHUNKPLACE : public CFX_Object {
FX_INT32 nChunkIndex;
FX_INT32 nCharIndex;
};
typedef _FDE_CHUNKPLACE FDE_CHUNKPLACE;
typedef _FDE_CHUNKPLACE* FDE_LPCHUNKPLACE;
public:
CFDE_TxtEdtBuf(FX_INT32 nDefChunkSize = FDE_DEFCHUNKLENGTH);
virtual void Release();
virtual FX_BOOL SetChunkSize(FX_INT32 nChunkSize);
virtual FX_INT32 GetChunkSize() const;
virtual FX_INT32 GetTextLength() const;
virtual void SetText(const CFX_WideString &wsText);
virtual void GetText(CFX_WideString &wsText) const;
virtual FX_WCHAR GetCharByIndex(FX_INT32 nIndex) const;
virtual void GetRange(CFX_WideString &wsText, FX_INT32 nBegine, FX_INT32 nCount = -1) const;
virtual void Insert(FX_INT32 nPos, FX_LPCWSTR lpText, FX_INT32 nLength = 1);
virtual void Delete(FX_INT32 nIndex, FX_INT32 nLength = 1);
virtual void Clear(FX_BOOL bRelease = TRUE);
virtual FX_BOOL Optimize(IFX_Pause * pPause = NULL);
protected:
virtual ~CFDE_TxtEdtBuf();
private:
void ResetChunkBuffer(FX_INT32 nDefChunkCount, FX_INT32 nChunkSize);
FX_INT32 CP2Index(const FDE_CHUNKPLACE & cp) const;
void Index2CP(FX_INT32 nIndex, FDE_CHUNKPLACE & cp) const;
FX_INT32 m_nChunkSize;
FX_INT32 m_nTotal;
FX_BOOL m_bChanged;
CFX_PtrArray m_Chunks;
IFX_MEMAllocator * m_pAllocator;
};
#endif
|