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
|
// 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 _FX_WORDBREAK_IMPL_H
#define _FX_WORDBREAK_IMPL_H
extern const FX_WORD gs_FX_WordBreak_Table[16];
extern const FX_BYTE gs_FX_WordBreak_CodePointProperties[(0xFFFF - 1) / 2 + 1];
enum FX_WordBreakProp {
FX_WordBreakProp_None = 0 ,
FX_WordBreakProp_CR ,
FX_WordBreakProp_LF ,
FX_WordBreakProp_NewLine ,
FX_WordBreakProp_Extend ,
FX_WordBreakProp_Format ,
FX_WordBreakProp_KataKana ,
FX_WordBreakProp_ALetter ,
FX_WordBreakProp_MidLetter ,
FX_WordBreakProp_MidNum ,
FX_WordBreakProp_MidNumLet ,
FX_WordBreakProp_Numberic ,
FX_WordBreakProp_ExtendNumLet ,
};
FX_WordBreakProp FX_GetWordBreakProperty(FX_WCHAR wcCodePoint);
class CFX_CharIter : public IFX_CharIter
{
public:
CFX_CharIter(const CFX_WideString & wsText);
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:
~CFX_CharIter();
private:
const CFX_WideString &m_wsText;
FX_INT32 m_nIndex;
};
class CFX_WordBreak : public IFX_WordBreak
{
public:
CFX_WordBreak();
virtual void Release();
virtual void Attach(IFX_CharIter * pIter);
virtual void Attach(const CFX_WideString &wsText);
virtual FX_BOOL Next(FX_BOOL bPrev);
virtual void SetAt(FX_INT32 nIndex);
virtual FX_INT32 GetWordPos() const;
virtual FX_INT32 GetWordLength() const;
virtual void GetWord(CFX_WideString &wsWord) const;
virtual FX_BOOL IsEOF(FX_BOOL bTail ) const;
protected:
~CFX_WordBreak();
FX_BOOL FindNextBreakPos(IFX_CharIter * pIter, FX_BOOL bPrev, FX_BOOL bFromNext = TRUE);
private:
IFX_CharIter * m_pPreIter;
IFX_CharIter * m_pCurIter;
};
#endif
|