summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/fpdfdoc/cpvt_wordrange.h11
-rw-r--r--fpdfsdk/pdfwindow/cpwl_edit.cpp9
-rw-r--r--fpdfsdk/pdfwindow/cpwl_utils.cpp11
-rw-r--r--fpdfsdk/pdfwindow/cpwl_utils.h3
4 files changed, 15 insertions, 19 deletions
diff --git a/core/fpdfdoc/cpvt_wordrange.h b/core/fpdfdoc/cpvt_wordrange.h
index ed06d6f0de..638f6c17c0 100644
--- a/core/fpdfdoc/cpvt_wordrange.h
+++ b/core/fpdfdoc/cpvt_wordrange.h
@@ -7,6 +7,7 @@
#ifndef CORE_FPDFDOC_CPVT_WORDRANGE_H_
#define CORE_FPDFDOC_CPVT_WORDRANGE_H_
+#include <algorithm>
#include <utility>
#include "core/fpdfdoc/cpvt_wordplace.h"
@@ -41,6 +42,16 @@ struct CPVT_WordRange {
Normalize();
}
+ CPVT_WordRange Intersect(const CPVT_WordRange& that) const {
+ if (that.EndPos < BeginPos || that.BeginPos > EndPos ||
+ EndPos < that.BeginPos || BeginPos > that.EndPos) {
+ return CPVT_WordRange();
+ }
+
+ return CPVT_WordRange(std::max(BeginPos, that.BeginPos),
+ std::min(EndPos, that.EndPos));
+ }
+
inline bool IsEmpty() const { return BeginPos == EndPos; }
inline bool operator==(const CPVT_WordRange& wr) const {
return wr.BeginPos == BeginPos && wr.EndPos == EndPos;
diff --git a/fpdfsdk/pdfwindow/cpwl_edit.cpp b/fpdfsdk/pdfwindow/cpwl_edit.cpp
index 2f9c5fbea5..8a788dd184 100644
--- a/fpdfsdk/pdfwindow/cpwl_edit.cpp
+++ b/fpdfsdk/pdfwindow/cpwl_edit.cpp
@@ -270,8 +270,7 @@ void CPWL_Edit::GetThisAppearanceStream(std::ostringstream* psAppStream) {
CPVT_WordRange wrSelBefore(wrWhole.BeginPos, wrSelect.BeginPos);
CPVT_WordRange wrSelAfter(wrSelect.EndPos, wrWhole.EndPos);
- CPVT_WordRange wrTemp =
- CPWL_Utils::OverlapWordRange(GetSelectWordRange(), wrVisible);
+ CPVT_WordRange wrTemp = GetSelectWordRange().Intersect(wrVisible);
CFX_ByteString sEditSel =
CPWL_Utils::GetEditSelAppStream(m_pEdit.get(), ptOffset, &wrTemp);
@@ -279,7 +278,7 @@ void CPWL_Edit::GetThisAppearanceStream(std::ostringstream* psAppStream) {
sText << CPWL_Utils::GetColorAppStream(PWL_DEFAULT_SELBACKCOLOR)
<< sEditSel;
- wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelBefore);
+ wrTemp = wrVisible.Intersect(wrSelBefore);
CFX_ByteString sEditBefore = CPWL_Utils::GetEditAppStream(
m_pEdit.get(), ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY),
m_pEdit->GetPasswordChar());
@@ -289,7 +288,7 @@ void CPWL_Edit::GetThisAppearanceStream(std::ostringstream* psAppStream) {
<< CPWL_Utils::GetColorAppStream(GetTextColor()) << sEditBefore
<< "ET\n";
- wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelect);
+ wrTemp = wrVisible.Intersect(wrSelect);
CFX_ByteString sEditMid = CPWL_Utils::GetEditAppStream(
m_pEdit.get(), ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY),
m_pEdit->GetPasswordChar());
@@ -299,7 +298,7 @@ void CPWL_Edit::GetThisAppearanceStream(std::ostringstream* psAppStream) {
<< CPWL_Utils::GetColorAppStream(CPWL_Color(COLORTYPE_GRAY, 1))
<< sEditMid << "ET\n";
- wrTemp = CPWL_Utils::OverlapWordRange(wrVisible, wrSelAfter);
+ wrTemp = wrVisible.Intersect(wrSelAfter);
CFX_ByteString sEditAfter = CPWL_Utils::GetEditAppStream(
m_pEdit.get(), ptOffset, &wrTemp, !HasFlag(PES_CHARARRAY),
m_pEdit->GetPasswordChar());
diff --git a/fpdfsdk/pdfwindow/cpwl_utils.cpp b/fpdfsdk/pdfwindow/cpwl_utils.cpp
index ed1a94542e..998c95c875 100644
--- a/fpdfsdk/pdfwindow/cpwl_utils.cpp
+++ b/fpdfsdk/pdfwindow/cpwl_utils.cpp
@@ -18,17 +18,6 @@
#include "fpdfsdk/pdfwindow/cpwl_icon.h"
#include "fpdfsdk/pdfwindow/cpwl_wnd.h"
-CPVT_WordRange CPWL_Utils::OverlapWordRange(const CPVT_WordRange& wr1,
- const CPVT_WordRange& wr2) {
- if (wr2.EndPos < wr1.BeginPos || wr2.BeginPos > wr1.EndPos ||
- wr1.EndPos < wr2.BeginPos || wr1.BeginPos > wr2.EndPos) {
- return CPVT_WordRange();
- }
-
- return CPVT_WordRange(std::max(wr1.BeginPos, wr2.BeginPos),
- std::min(wr1.EndPos, wr2.EndPos));
-}
-
CFX_ByteString CPWL_Utils::GetAP_Check(const CFX_FloatRect& crBBox) {
const float fWidth = crBBox.right - crBBox.left;
const float fHeight = crBBox.top - crBBox.bottom;
diff --git a/fpdfsdk/pdfwindow/cpwl_utils.h b/fpdfsdk/pdfwindow/cpwl_utils.h
index df364c7f56..ec6188e2b9 100644
--- a/fpdfsdk/pdfwindow/cpwl_utils.h
+++ b/fpdfsdk/pdfwindow/cpwl_utils.h
@@ -32,9 +32,6 @@ struct CPWL_Color;
class CPWL_Utils {
public:
- static CPVT_WordRange OverlapWordRange(const CPVT_WordRange& wr1,
- const CPVT_WordRange& wr2);
-
static CFX_ByteString GetColorAppStream(const CPWL_Color& color,
const bool& bFillOrStroke = true);
static CFX_ByteString GetBorderAppStream(const CFX_FloatRect& rect,