summaryrefslogtreecommitdiff
path: root/xfa/src/fee/src/fx_wordbreak/fx_wordbreak_impl.h
blob: 91895a54d72dd2997942ad51016d1dd98ff45962 (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
// 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_Object
{
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_Object
{
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