| Index: core/fpdfdoc/cpdf_variabletext.cpp
|
| diff --git a/core/fpdfdoc/cpdf_variabletext.cpp b/core/fpdfdoc/cpdf_variabletext.cpp
|
| index 33451dea5cfcaac4de85345d7f9bed994a0ded67..67887400a47e940523399f7581d60ee80c227780 100644
|
| --- a/core/fpdfdoc/cpdf_variabletext.cpp
|
| +++ b/core/fpdfdoc/cpdf_variabletext.cpp
|
| @@ -4,11 +4,10 @@
|
|
|
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
| -#include "core/fpdfdoc/include/cpdf_variabletext.h"
|
| -
|
| #include "core/fpdfapi/fpdf_font/include/cpdf_font.h"
|
| #include "core/fpdfdoc/cpvt_wordinfo.h"
|
| #include "core/fpdfdoc/csection.h"
|
| +#include "core/fpdfdoc/include/cpdf_variabletext.h"
|
| #include "core/fpdfdoc/include/cpvt_section.h"
|
| #include "core/fpdfdoc/include/cpvt_word.h"
|
| #include "core/fpdfdoc/include/ipvt_fontmap.h"
|
| @@ -71,8 +70,11 @@
|
| }
|
|
|
| FX_BOOL CPDF_VariableText::Provider::IsLatinWord(uint16_t word) {
|
| - return (word >= 0x61 && word <= 0x7A) || (word >= 0x41 && word <= 0x5A) ||
|
| - word == 0x2D || word == 0x27;
|
| + if ((word >= 0x61 && word <= 0x7A) || (word >= 0x41 && word <= 0x5A) ||
|
| + word == 0x2D || word == 0x27) {
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| }
|
|
|
| int32_t CPDF_VariableText::Provider::GetDefaultFontIndex() {
|
| @@ -162,36 +164,28 @@
|
|
|
| FX_BOOL CPDF_VariableText::Iterator::GetWord(CPVT_Word& word) const {
|
| word.WordPlace = m_CurPos;
|
| - CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex);
|
| - if (!pSection)
|
| - return FALSE;
|
| -
|
| - if (!pSection->m_LineArray.GetAt(m_CurPos.nLineIndex))
|
| - return FALSE;
|
| -
|
| - if (m_CurPos.nWordIndex < 0 ||
|
| - m_CurPos.nWordIndex >= pSection->m_WordArray.GetSize()) {
|
| - return FALSE;
|
| - }
|
| -
|
| - CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(m_CurPos.nWordIndex);
|
| - if (!pWord)
|
| - return FALSE;
|
| -
|
| - word.Word = pWord->Word;
|
| - word.nCharset = pWord->nCharset;
|
| - word.fWidth = m_pVT->GetWordWidth(*pWord);
|
| - word.ptWord = m_pVT->InToOut(
|
| - CFX_FloatPoint(pWord->fWordX + pSection->m_SecInfo.rcSection.left,
|
| - pWord->fWordY + pSection->m_SecInfo.rcSection.top));
|
| - word.fAscent = m_pVT->GetWordAscent(*pWord);
|
| - word.fDescent = m_pVT->GetWordDescent(*pWord);
|
| - if (pWord->pWordProps)
|
| - word.WordProps = *pWord->pWordProps;
|
| -
|
| - word.nFontIndex = m_pVT->GetWordFontIndex(*pWord);
|
| - word.fFontSize = m_pVT->GetWordFontSize(*pWord);
|
| - return TRUE;
|
| + if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) {
|
| + if (pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) {
|
| + if (CPVT_WordInfo* pWord =
|
| + pSection->m_WordArray.GetAt(m_CurPos.nWordIndex)) {
|
| + word.Word = pWord->Word;
|
| + word.nCharset = pWord->nCharset;
|
| + word.fWidth = m_pVT->GetWordWidth(*pWord);
|
| + word.ptWord = m_pVT->InToOut(
|
| + CFX_FloatPoint(pWord->fWordX + pSection->m_SecInfo.rcSection.left,
|
| + pWord->fWordY + pSection->m_SecInfo.rcSection.top));
|
| + word.fAscent = m_pVT->GetWordAscent(*pWord);
|
| + word.fDescent = m_pVT->GetWordDescent(*pWord);
|
| + if (pWord->pWordProps)
|
| + word.WordProps = *pWord->pWordProps;
|
| +
|
| + word.nFontIndex = m_pVT->GetWordFontIndex(*pWord);
|
| + word.fFontSize = m_pVT->GetWordFontSize(*pWord);
|
| + return TRUE;
|
| + }
|
| + }
|
| + }
|
| + return FALSE;
|
| }
|
|
|
| FX_BOOL CPDF_VariableText::Iterator::SetWord(const CPVT_Word& word) {
|
| @@ -735,7 +729,7 @@
|
|
|
| CPVT_WordPlace CPDF_VariableText::AddLine(const CPVT_WordPlace& place,
|
| const CPVT_LineInfo& lineinfo) {
|
| - if (m_SectionArray.GetSize() == 0)
|
| + if (m_SectionArray.IsEmpty())
|
| return place;
|
| if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex))
|
| return pSection->AddLine(lineinfo);
|
| @@ -744,9 +738,9 @@
|
|
|
| CPVT_WordPlace CPDF_VariableText::AddWord(const CPVT_WordPlace& place,
|
| const CPVT_WordInfo& wordinfo) {
|
| - if (m_SectionArray.GetSize() <= 0)
|
| + if (m_SectionArray.GetSize() <= 0) {
|
| return place;
|
| -
|
| + }
|
| CPVT_WordPlace newplace = place;
|
| newplace.nSecIndex =
|
| std::max(std::min(newplace.nSecIndex, m_SectionArray.GetSize() - 1), 0);
|
| @@ -1059,20 +1053,22 @@
|
| return (FX_FLOAT)gFontSizeSteps[nMid];
|
| }
|
|
|
| -bool CPDF_VariableText::IsBigger(FX_FLOAT fFontSize) const {
|
| - CFX_PointF szTotal;
|
| +FX_BOOL CPDF_VariableText::IsBigger(FX_FLOAT fFontSize) {
|
| + FX_BOOL bBigger = FALSE;
|
| + CPVT_Size szTotal;
|
| for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) {
|
| if (CSection* pSection = m_SectionArray.GetAt(s)) {
|
| - CFX_PointF size = pSection->GetSectionSize(fFontSize);
|
| + CPVT_Size size = pSection->GetSectionSize(fFontSize);
|
| szTotal.x = std::max(size.x, szTotal.x);
|
| szTotal.y += size.y;
|
| if (IsFloatBigger(szTotal.x, GetPlateWidth()) ||
|
| IsFloatBigger(szTotal.y, GetPlateHeight())) {
|
| - return true;
|
| - }
|
| - }
|
| - }
|
| - return false;
|
| + bBigger = TRUE;
|
| + break;
|
| + }
|
| + }
|
| + }
|
| + return bBigger;
|
| }
|
|
|
| CPVT_FloatRect CPDF_VariableText::RearrangeSections(
|
|
|