diff options
-rw-r--r-- | core/fpdfdoc/cpvt_wordrange.h | 11 | ||||
-rw-r--r-- | fpdfsdk/pdfwindow/cpwl_edit.cpp | 9 | ||||
-rw-r--r-- | fpdfsdk/pdfwindow/cpwl_utils.cpp | 11 | ||||
-rw-r--r-- | fpdfsdk/pdfwindow/cpwl_utils.h | 3 |
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, |