summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-09-06 11:44:39 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-09-06 15:54:37 +0000
commiteb57e0d0b396606b39ef76a864b8bf9dd91a8ed8 (patch)
tree3d4ee88701eed1cbb56f456ea6ebc7c7c0f47f6c /core
parent746552254ad113ef88b40aca4dbc0e57cefbac85 (diff)
downloadpdfium-eb57e0d0b396606b39ef76a864b8bf9dd91a8ed8.tar.xz
Implement word selection in CFDE_TextEditEngine
This CL implements the needed logic in CFDE_TextEditEngine to handle word selection. Change-Id: I6b388c23655037fec107d68ec07d33638b959374 Reviewed-on: https://pdfium-review.googlesource.com/13211 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Diffstat (limited to 'core')
-rw-r--r--core/fxcrt/cfx_wordbreak.cpp24
-rw-r--r--core/fxcrt/cfx_wordbreak.h10
2 files changed, 10 insertions, 24 deletions
diff --git a/core/fxcrt/cfx_wordbreak.cpp b/core/fxcrt/cfx_wordbreak.cpp
index 7a5d8f7dcd..86c6d40522 100644
--- a/core/fxcrt/cfx_wordbreak.cpp
+++ b/core/fxcrt/cfx_wordbreak.cpp
@@ -2779,16 +2779,14 @@ FX_WordBreakProp GetWordBreakProperty(wchar_t wcCodePoint) {
} // namespace
-CFX_WordBreak::CFX_WordBreak() {}
+CFX_WordBreak::CFX_WordBreak(std::unique_ptr<IFX_CharIter> pIter)
+ : m_pCurIter(std::move(pIter)) {
+ ASSERT(m_pCurIter);
+}
CFX_WordBreak::~CFX_WordBreak() {}
-void CFX_WordBreak::Attach(IFX_CharIter* pIter) {
- ASSERT(pIter);
- m_pCurIter.reset(pIter);
-}
-
-void CFX_WordBreak::SetAt(int32_t nIndex) {
+std::pair<size_t, size_t> CFX_WordBreak::BoundsAt(int32_t nIndex) {
m_pPreIter.reset();
m_pCurIter->SetAt(nIndex);
FindNextBreakPos(m_pCurIter.get(), true);
@@ -2796,18 +2794,8 @@ void CFX_WordBreak::SetAt(int32_t nIndex) {
m_pPreIter = std::move(m_pCurIter);
m_pCurIter = m_pPreIter->Clone();
FindNextBreakPos(m_pCurIter.get(), false);
-}
-
-int32_t CFX_WordBreak::GetWordPos() const {
- return m_pPreIter->GetAt();
-}
-
-int32_t CFX_WordBreak::GetWordLength() const {
- return m_pCurIter->GetAt() - m_pPreIter->GetAt() + 1;
-}
-bool CFX_WordBreak::IsEOF(bool bTail) const {
- return m_pCurIter->IsEOF(bTail);
+ return {m_pPreIter->GetAt(), m_pCurIter->GetAt()};
}
bool CFX_WordBreak::FindNextBreakPos(IFX_CharIter* pIter, bool bPrev) {
diff --git a/core/fxcrt/cfx_wordbreak.h b/core/fxcrt/cfx_wordbreak.h
index 59c071be03..6e94c71e95 100644
--- a/core/fxcrt/cfx_wordbreak.h
+++ b/core/fxcrt/cfx_wordbreak.h
@@ -8,22 +8,20 @@
#define CORE_FXCRT_CFX_WORDBREAK_H_
#include <memory>
+#include <utility>
class IFX_CharIter;
class CFX_WordBreak {
public:
- CFX_WordBreak();
+ explicit CFX_WordBreak(std::unique_ptr<IFX_CharIter> pIter);
~CFX_WordBreak();
- void Attach(IFX_CharIter* pIter);
- void SetAt(int32_t nIndex);
- int32_t GetWordPos() const;
- int32_t GetWordLength() const;
+ // <start_idx, end_idx>
+ std::pair<size_t, size_t> BoundsAt(int32_t nIndex);
private:
bool FindNextBreakPos(IFX_CharIter* pIter, bool bPrev);
- bool IsEOF(bool bTail) const;
std::unique_ptr<IFX_CharIter> m_pPreIter;
std::unique_ptr<IFX_CharIter> m_pCurIter;