diff options
Diffstat (limited to 'fpdfsdk/pwl')
-rw-r--r-- | fpdfsdk/pwl/cpwl_edit.cpp | 105 | ||||
-rw-r--r-- | fpdfsdk/pwl/cpwl_edit.h | 6 |
2 files changed, 54 insertions, 57 deletions
diff --git a/fpdfsdk/pwl/cpwl_edit.cpp b/fpdfsdk/pwl/cpwl_edit.cpp index 2f3f20b4dd..438b0ac3c0 100644 --- a/fpdfsdk/pwl/cpwl_edit.cpp +++ b/fpdfsdk/pwl/cpwl_edit.cpp @@ -357,19 +357,18 @@ void CPWL_Edit::SetCharSpace(float fCharSpace) { } CPVT_WordRange CPWL_Edit::GetSelectWordRange() const { - if (m_pEdit->IsSelected()) { - int32_t nStart = -1; - int32_t nEnd = -1; + if (!m_pEdit->IsSelected()) + return CPVT_WordRange(); - m_pEdit->GetSelection(nStart, nEnd); + int32_t nStart = -1; + int32_t nEnd = -1; - CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStart); - CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEnd); + m_pEdit->GetSelection(nStart, nEnd); - return CPVT_WordRange(wpStart, wpEnd); - } + CPVT_WordPlace wpStart = m_pEdit->WordIndexToWordPlace(nStart); + CPVT_WordPlace wpEnd = m_pEdit->WordIndexToWordPlace(nEnd); - return CPVT_WordRange(); + return CPVT_WordRange(wpStart, wpEnd); } CFX_PointF CPWL_Edit::GetWordRightBottomPoint(const CPVT_WordPlace& wpWord) { @@ -379,9 +378,8 @@ CFX_PointF CPWL_Edit::GetWordRightBottomPoint(const CPVT_WordPlace& wpWord) { CFX_PointF pt; CPVT_Word word; - if (pIterator->GetWord(word)) { + if (pIterator->GetWord(word)) pt = CFX_PointF(word.ptWord.x + word.fWidth, word.ptWord.y + word.fDescent); - } pIterator->SetAt(wpOld); return pt; } @@ -393,36 +391,40 @@ bool CPWL_Edit::IsTextFull() const { float CPWL_Edit::GetCharArrayAutoFontSize(CPDF_Font* pFont, const CFX_FloatRect& rcPlate, int32_t nCharArray) { - if (pFont && !pFont->IsStandardFont()) { - FX_RECT rcBBox; - pFont->GetFontBBox(rcBBox); + if (!pFont || pFont->IsStandardFont()) + return 0.0f; - CFX_FloatRect rcCell = rcPlate; - float xdiv = rcCell.Width() / nCharArray * 1000.0f / rcBBox.Width(); - float ydiv = -rcCell.Height() * 1000.0f / rcBBox.Height(); + FX_RECT rcBBox; + pFont->GetFontBBox(rcBBox); - return xdiv < ydiv ? xdiv : ydiv; - } + CFX_FloatRect rcCell = rcPlate; + float xdiv = rcCell.Width() / nCharArray * 1000.0f / rcBBox.Width(); + float ydiv = -rcCell.Height() * 1000.0f / rcBBox.Height(); - return 0.0f; + return xdiv < ydiv ? xdiv : ydiv; } void CPWL_Edit::SetCharArray(int32_t nCharArray) { - if (HasFlag(PES_CHARARRAY) && nCharArray > 0) { - m_pEdit->SetCharArray(nCharArray); - m_pEdit->SetTextOverflow(true, true); - - if (HasFlag(PWS_AUTOFONTSIZE)) { - if (IPVT_FontMap* pFontMap = GetFontMap()) { - float fFontSize = GetCharArrayAutoFontSize(pFontMap->GetPDFFont(0), - GetClientRect(), nCharArray); - if (fFontSize > 0.0f) { - m_pEdit->SetAutoFontSize(false, true); - m_pEdit->SetFontSize(fFontSize); - } - } - } - } + if (!HasFlag(PES_CHARARRAY) || nCharArray <= 0) + return; + + m_pEdit->SetCharArray(nCharArray); + m_pEdit->SetTextOverflow(true, true); + + if (!HasFlag(PWS_AUTOFONTSIZE)) + return; + + IPVT_FontMap* pFontMap = GetFontMap(); + if (!pFontMap) + return; + + float fFontSize = GetCharArrayAutoFontSize(pFontMap->GetPDFFont(0), + GetClientRect(), nCharArray); + if (fFontSize <= 0.0f) + return; + + m_pEdit->SetAutoFontSize(false, true); + m_pEdit->SetFontSize(fFontSize); } void CPWL_Edit::SetLimitChar(int32_t nLimitChar) { @@ -439,9 +441,8 @@ CFX_FloatRect CPWL_Edit::GetFocusRect() const { } bool CPWL_Edit::IsVScrollBarVisible() const { - if (CPWL_ScrollBar* pScroll = GetVScrollBar()) - return pScroll->IsVisible(); - return false; + CPWL_ScrollBar* pScroll = GetVScrollBar(); + return pScroll && pScroll->IsVisible(); } bool CPWL_Edit::OnKeyDown(uint16_t nChar, uint32_t nFlag) { @@ -481,11 +482,7 @@ bool CPWL_Edit::OnKeyDown(uint16_t nChar, uint32_t nFlag) { return bRet; } -/** - *In case of implementation swallow the OnKeyDown event. - *If the event is swallowed, implementation may do other unexpected things, - *which is not the control means to do. - */ +// static bool CPWL_Edit::IsProceedtoOnChar(uint16_t nKeyCode, uint32_t nFlag) { bool bCtrl = IsCTRLpressed(nFlag); bool bAlt = IsALTpressed(nFlag); @@ -568,20 +565,16 @@ bool CPWL_Edit::OnChar(uint16_t nChar, uint32_t nFlag) { bool CPWL_Edit::OnMouseWheel(short zDelta, const CFX_PointF& point, uint32_t nFlag) { - if (HasFlag(PES_MULTILINE)) { - CFX_PointF ptScroll = GetScrollPos(); - - if (zDelta > 0) { - ptScroll.y += GetFontSize(); - } else { - ptScroll.y -= GetFontSize(); - } - SetScrollPos(ptScroll); - - return true; - } + if (!HasFlag(PES_MULTILINE)) + return false; - return false; + CFX_PointF ptScroll = GetScrollPos(); + if (zDelta > 0) + ptScroll.y += GetFontSize(); + else + ptScroll.y -= GetFontSize(); + SetScrollPos(ptScroll); + return true; } void CPWL_Edit::OnInsertReturn(const CPVT_WordPlace& place, diff --git a/fpdfsdk/pwl/cpwl_edit.h b/fpdfsdk/pwl/cpwl_edit.h index 2e92ed2ae7..1c2d9c03bd 100644 --- a/fpdfsdk/pwl/cpwl_edit.h +++ b/fpdfsdk/pwl/cpwl_edit.h @@ -90,7 +90,6 @@ class CPWL_Edit : public CPWL_EditCtrl { m_pFillerNotify = pNotify; } - bool IsProceedtoOnChar(uint16_t nKeyCode, uint32_t nFlag); void AttachFFLData(CFFL_FormFiller* pData) { m_pFormFiller = pData; } void OnInsertWord(const CPVT_WordPlace& place, @@ -104,6 +103,11 @@ class CPWL_Edit : public CPWL_EditCtrl { const CPVT_WordPlace& oldplace); private: + // In case of implementation swallow the OnKeyDown event. If the event is + // swallowed, implementation may do other unexpected things, which is not the + // control means to do. + static bool IsProceedtoOnChar(uint16_t nKeyCode, uint32_t nFlag); + CPVT_WordRange GetSelectWordRange() const; bool IsVScrollBarVisible() const; void SetParamByFlag(); |