Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: core/src/fpdfdoc/doc_vt.cpp

Issue 1737593006: Re-land "Replace CPDF_Rect and CPDF_Point with CFX types." (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Ooops. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/src/fpdfdoc/doc_link.cpp ('k') | core/src/fpdfdoc/pdf_vt.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "core/include/fpdfdoc/fpdf_doc.h" 9 #include "core/include/fpdfdoc/fpdf_doc.h"
10 #include "core/include/fpdfdoc/fpdf_vt.h" 10 #include "core/include/fpdfdoc/fpdf_vt.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 nMid = (nLeft + nRight) / 2; 159 nMid = (nLeft + nRight) / 2;
160 } else { 160 } else {
161 place.nLineIndex = nMid; 161 place.nLineIndex = nMid;
162 return; 162 return;
163 } 163 }
164 } else { 164 } else {
165 break; 165 break;
166 } 166 }
167 } 167 }
168 } 168 }
169 CPVT_WordPlace CSection::SearchWordPlace(const CPDF_Point& point) const { 169 CPVT_WordPlace CSection::SearchWordPlace(const CFX_FloatPoint& point) const {
170 ASSERT(m_pVT); 170 ASSERT(m_pVT);
171 CPVT_WordPlace place = GetBeginWordPlace(); 171 CPVT_WordPlace place = GetBeginWordPlace();
172 FX_BOOL bUp = TRUE; 172 FX_BOOL bUp = TRUE;
173 FX_BOOL bDown = TRUE; 173 FX_BOOL bDown = TRUE;
174 int32_t nLeft = 0; 174 int32_t nLeft = 0;
175 int32_t nRight = m_LineArray.GetSize() - 1; 175 int32_t nRight = m_LineArray.GetSize() - 1;
176 int32_t nMid = m_LineArray.GetSize() / 2; 176 int32_t nMid = m_LineArray.GetSize() / 2;
177 FX_FLOAT fTop = 0; 177 FX_FLOAT fTop = 0;
178 FX_FLOAT fBottom = 0; 178 FX_FLOAT fBottom = 0;
179 while (nLeft <= nRight) { 179 while (nLeft <= nRight) {
(...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 if (CSection* pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) { 1128 if (CSection* pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) {
1129 return pNextSection->GetBeginWordPlace(); 1129 return pNextSection->GetBeginWordPlace();
1130 } 1130 }
1131 return GetEndWordPlace(); 1131 return GetEndWordPlace();
1132 } 1132 }
1133 return pSection->GetNextWordPlace(place); 1133 return pSection->GetNextWordPlace(place);
1134 } 1134 }
1135 return place; 1135 return place;
1136 } 1136 }
1137 CPVT_WordPlace CPDF_VariableText::SearchWordPlace( 1137 CPVT_WordPlace CPDF_VariableText::SearchWordPlace(
1138 const CPDF_Point& point) const { 1138 const CFX_FloatPoint& point) const {
1139 CPDF_Point pt = OutToIn(point); 1139 CFX_FloatPoint pt = OutToIn(point);
1140 CPVT_WordPlace place = GetBeginWordPlace(); 1140 CPVT_WordPlace place = GetBeginWordPlace();
1141 int32_t nLeft = 0; 1141 int32_t nLeft = 0;
1142 int32_t nRight = m_SectionArray.GetSize() - 1; 1142 int32_t nRight = m_SectionArray.GetSize() - 1;
1143 int32_t nMid = m_SectionArray.GetSize() / 2; 1143 int32_t nMid = m_SectionArray.GetSize() / 2;
1144 FX_BOOL bUp = TRUE; 1144 FX_BOOL bUp = TRUE;
1145 FX_BOOL bDown = TRUE; 1145 FX_BOOL bDown = TRUE;
1146 while (nLeft <= nRight) { 1146 while (nLeft <= nRight) {
1147 if (CSection* pSection = m_SectionArray.GetAt(nMid)) { 1147 if (CSection* pSection = m_SectionArray.GetAt(nMid)) {
1148 if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.top)) { 1148 if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.top)) {
1149 bUp = FALSE; 1149 bUp = FALSE;
1150 } 1150 }
1151 if (IsFloatBigger(pSection->m_SecInfo.rcSection.bottom, pt.y)) { 1151 if (IsFloatBigger(pSection->m_SecInfo.rcSection.bottom, pt.y)) {
1152 bDown = FALSE; 1152 bDown = FALSE;
1153 } 1153 }
1154 if (IsFloatSmaller(pt.y, pSection->m_SecInfo.rcSection.top)) { 1154 if (IsFloatSmaller(pt.y, pSection->m_SecInfo.rcSection.top)) {
1155 nRight = nMid - 1; 1155 nRight = nMid - 1;
1156 nMid = (nLeft + nRight) / 2; 1156 nMid = (nLeft + nRight) / 2;
1157 continue; 1157 continue;
1158 } else if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.bottom)) { 1158 } else if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.bottom)) {
1159 nLeft = nMid + 1; 1159 nLeft = nMid + 1;
1160 nMid = (nLeft + nRight) / 2; 1160 nMid = (nLeft + nRight) / 2;
1161 continue; 1161 continue;
1162 } else { 1162 } else {
1163 place = pSection->SearchWordPlace( 1163 place = pSection->SearchWordPlace(
1164 CPDF_Point(pt.x - pSection->m_SecInfo.rcSection.left, 1164 CFX_FloatPoint(pt.x - pSection->m_SecInfo.rcSection.left,
1165 pt.y - pSection->m_SecInfo.rcSection.top)); 1165 pt.y - pSection->m_SecInfo.rcSection.top));
1166 place.nSecIndex = nMid; 1166 place.nSecIndex = nMid;
1167 return place; 1167 return place;
1168 } 1168 }
1169 } else { 1169 } else {
1170 break; 1170 break;
1171 } 1171 }
1172 } 1172 }
1173 if (bUp) { 1173 if (bUp) {
1174 place = GetBeginWordPlace(); 1174 place = GetBeginWordPlace();
1175 } 1175 }
1176 if (bDown) { 1176 if (bDown) {
1177 place = GetEndWordPlace(); 1177 place = GetEndWordPlace();
1178 } 1178 }
1179 return place; 1179 return place;
1180 } 1180 }
1181 CPVT_WordPlace CPDF_VariableText::GetUpWordPlace( 1181 CPVT_WordPlace CPDF_VariableText::GetUpWordPlace(
1182 const CPVT_WordPlace& place, 1182 const CPVT_WordPlace& place,
1183 const CPDF_Point& point) const { 1183 const CFX_FloatPoint& point) const {
1184 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { 1184 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) {
1185 CPVT_WordPlace temp = place; 1185 CPVT_WordPlace temp = place;
1186 CPDF_Point pt = OutToIn(point); 1186 CFX_FloatPoint pt = OutToIn(point);
1187 if (temp.nLineIndex-- > 0) { 1187 if (temp.nLineIndex-- > 0) {
1188 return pSection->SearchWordPlace( 1188 return pSection->SearchWordPlace(
1189 pt.x - pSection->m_SecInfo.rcSection.left, temp); 1189 pt.x - pSection->m_SecInfo.rcSection.left, temp);
1190 } 1190 }
1191 if (temp.nSecIndex-- > 0) { 1191 if (temp.nSecIndex-- > 0) {
1192 if (CSection* pLastSection = m_SectionArray.GetAt(temp.nSecIndex)) { 1192 if (CSection* pLastSection = m_SectionArray.GetAt(temp.nSecIndex)) {
1193 temp.nLineIndex = pLastSection->m_LineArray.GetSize() - 1; 1193 temp.nLineIndex = pLastSection->m_LineArray.GetSize() - 1;
1194 return pLastSection->SearchWordPlace( 1194 return pLastSection->SearchWordPlace(
1195 pt.x - pLastSection->m_SecInfo.rcSection.left, temp); 1195 pt.x - pLastSection->m_SecInfo.rcSection.left, temp);
1196 } 1196 }
1197 } 1197 }
1198 } 1198 }
1199 return place; 1199 return place;
1200 } 1200 }
1201 CPVT_WordPlace CPDF_VariableText::GetDownWordPlace( 1201 CPVT_WordPlace CPDF_VariableText::GetDownWordPlace(
1202 const CPVT_WordPlace& place, 1202 const CPVT_WordPlace& place,
1203 const CPDF_Point& point) const { 1203 const CFX_FloatPoint& point) const {
1204 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { 1204 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) {
1205 CPVT_WordPlace temp = place; 1205 CPVT_WordPlace temp = place;
1206 CPDF_Point pt = OutToIn(point); 1206 CFX_FloatPoint pt = OutToIn(point);
1207 if (temp.nLineIndex++ < pSection->m_LineArray.GetSize() - 1) { 1207 if (temp.nLineIndex++ < pSection->m_LineArray.GetSize() - 1) {
1208 return pSection->SearchWordPlace( 1208 return pSection->SearchWordPlace(
1209 pt.x - pSection->m_SecInfo.rcSection.left, temp); 1209 pt.x - pSection->m_SecInfo.rcSection.left, temp);
1210 } 1210 }
1211 if (temp.nSecIndex++ < m_SectionArray.GetSize() - 1) { 1211 if (temp.nSecIndex++ < m_SectionArray.GetSize() - 1) {
1212 if (CSection* pNextSection = m_SectionArray.GetAt(temp.nSecIndex)) { 1212 if (CSection* pNextSection = m_SectionArray.GetAt(temp.nSecIndex)) {
1213 temp.nLineIndex = 0; 1213 temp.nLineIndex = 0;
1214 return pNextSection->SearchWordPlace( 1214 return pNextSection->SearchWordPlace(
1215 pt.x - pSection->m_SecInfo.rcSection.left, temp); 1215 pt.x - pSection->m_SecInfo.rcSection.left, temp);
1216 } 1216 }
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1326 return FALSE; 1326 return FALSE;
1327 } 1327 }
1328 FX_BOOL CPDF_VariableText::GetSectionInfo(const CPVT_WordPlace& place, 1328 FX_BOOL CPDF_VariableText::GetSectionInfo(const CPVT_WordPlace& place,
1329 CPVT_SectionInfo& secinfo) { 1329 CPVT_SectionInfo& secinfo) {
1330 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { 1330 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) {
1331 secinfo = pSection->m_SecInfo; 1331 secinfo = pSection->m_SecInfo;
1332 return TRUE; 1332 return TRUE;
1333 } 1333 }
1334 return FALSE; 1334 return FALSE;
1335 } 1335 }
1336 CPDF_Rect CPDF_VariableText::GetContentRect() const { 1336 CFX_FloatRect CPDF_VariableText::GetContentRect() const {
1337 return InToOut(CPVT_FloatRect(CPDF_EditContainer::GetContentRect())); 1337 return InToOut(CPVT_FloatRect(CPDF_EditContainer::GetContentRect()));
1338 } 1338 }
1339 FX_FLOAT CPDF_VariableText::GetWordFontSize(const CPVT_WordInfo& WordInfo, 1339 FX_FLOAT CPDF_VariableText::GetWordFontSize(const CPVT_WordInfo& WordInfo,
1340 FX_BOOL bFactFontSize) { 1340 FX_BOOL bFactFontSize) {
1341 return m_bRichText && WordInfo.pWordProps 1341 return m_bRichText && WordInfo.pWordProps
1342 ? (WordInfo.pWordProps->nScriptType == PVTWORD_SCRIPT_NORMAL || 1342 ? (WordInfo.pWordProps->nScriptType == PVTWORD_SCRIPT_NORMAL ||
1343 bFactFontSize 1343 bFactFontSize
1344 ? WordInfo.pWordProps->fFontSize 1344 ? WordInfo.pWordProps->fFontSize
1345 : WordInfo.pWordProps->fFontSize * PVT_HALF) 1345 : WordInfo.pWordProps->fFontSize * PVT_HALF)
1346 : GetFontSize(); 1346 : GetFontSize();
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
1746 FX_BOOL CPDF_VariableText_Iterator::GetWord(CPVT_Word& word) const { 1746 FX_BOOL CPDF_VariableText_Iterator::GetWord(CPVT_Word& word) const {
1747 word.WordPlace = m_CurPos; 1747 word.WordPlace = m_CurPos;
1748 if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { 1748 if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) {
1749 if (pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { 1749 if (pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) {
1750 if (CPVT_WordInfo* pWord = 1750 if (CPVT_WordInfo* pWord =
1751 pSection->m_WordArray.GetAt(m_CurPos.nWordIndex)) { 1751 pSection->m_WordArray.GetAt(m_CurPos.nWordIndex)) {
1752 word.Word = pWord->Word; 1752 word.Word = pWord->Word;
1753 word.nCharset = pWord->nCharset; 1753 word.nCharset = pWord->nCharset;
1754 word.fWidth = m_pVT->GetWordWidth(*pWord); 1754 word.fWidth = m_pVT->GetWordWidth(*pWord);
1755 word.ptWord = m_pVT->InToOut( 1755 word.ptWord = m_pVT->InToOut(
1756 CPDF_Point(pWord->fWordX + pSection->m_SecInfo.rcSection.left, 1756 CFX_FloatPoint(pWord->fWordX + pSection->m_SecInfo.rcSection.left,
1757 pWord->fWordY + pSection->m_SecInfo.rcSection.top)); 1757 pWord->fWordY + pSection->m_SecInfo.rcSection.top));
1758 word.fAscent = m_pVT->GetWordAscent(*pWord); 1758 word.fAscent = m_pVT->GetWordAscent(*pWord);
1759 word.fDescent = m_pVT->GetWordDescent(*pWord); 1759 word.fDescent = m_pVT->GetWordDescent(*pWord);
1760 if (pWord->pWordProps) { 1760 if (pWord->pWordProps) {
1761 word.WordProps = *pWord->pWordProps; 1761 word.WordProps = *pWord->pWordProps;
1762 } 1762 }
1763 word.nFontIndex = m_pVT->GetWordFontIndex(*pWord); 1763 word.nFontIndex = m_pVT->GetWordFontIndex(*pWord);
1764 word.fFontSize = m_pVT->GetWordFontSize(*pWord); 1764 word.fFontSize = m_pVT->GetWordFontSize(*pWord);
1765 return TRUE; 1765 return TRUE;
1766 } 1766 }
1767 } 1767 }
(...skipping 10 matching lines...) Expand all
1778 return TRUE; 1778 return TRUE;
1779 } 1779 }
1780 } 1780 }
1781 return FALSE; 1781 return FALSE;
1782 } 1782 }
1783 FX_BOOL CPDF_VariableText_Iterator::GetLine(CPVT_Line& line) const { 1783 FX_BOOL CPDF_VariableText_Iterator::GetLine(CPVT_Line& line) const {
1784 ASSERT(m_pVT); 1784 ASSERT(m_pVT);
1785 line.lineplace = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex, -1); 1785 line.lineplace = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex, -1);
1786 if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { 1786 if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) {
1787 if (CLine* pLine = pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { 1787 if (CLine* pLine = pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) {
1788 line.ptLine = m_pVT->InToOut(CPDF_Point( 1788 line.ptLine = m_pVT->InToOut(CFX_FloatPoint(
1789 pLine->m_LineInfo.fLineX + pSection->m_SecInfo.rcSection.left, 1789 pLine->m_LineInfo.fLineX + pSection->m_SecInfo.rcSection.left,
1790 pLine->m_LineInfo.fLineY + pSection->m_SecInfo.rcSection.top)); 1790 pLine->m_LineInfo.fLineY + pSection->m_SecInfo.rcSection.top));
1791 line.fLineWidth = pLine->m_LineInfo.fLineWidth; 1791 line.fLineWidth = pLine->m_LineInfo.fLineWidth;
1792 line.fLineAscent = pLine->m_LineInfo.fLineAscent; 1792 line.fLineAscent = pLine->m_LineInfo.fLineAscent;
1793 line.fLineDescent = pLine->m_LineInfo.fLineDescent; 1793 line.fLineDescent = pLine->m_LineInfo.fLineDescent;
1794 line.lineEnd = pLine->GetEndWordPlace(); 1794 line.lineEnd = pLine->GetEndWordPlace();
1795 return TRUE; 1795 return TRUE;
1796 } 1796 }
1797 } 1797 }
1798 return FALSE; 1798 return FALSE;
(...skipping 17 matching lines...) Expand all
1816 if (pSection->m_SecInfo.pSecProps) { 1816 if (pSection->m_SecInfo.pSecProps) {
1817 *pSection->m_SecInfo.pSecProps = section.SecProps; 1817 *pSection->m_SecInfo.pSecProps = section.SecProps;
1818 } 1818 }
1819 if (pSection->m_SecInfo.pWordProps) { 1819 if (pSection->m_SecInfo.pWordProps) {
1820 *pSection->m_SecInfo.pWordProps = section.WordProps; 1820 *pSection->m_SecInfo.pWordProps = section.WordProps;
1821 } 1821 }
1822 return TRUE; 1822 return TRUE;
1823 } 1823 }
1824 return FALSE; 1824 return FALSE;
1825 } 1825 }
OLDNEW
« no previous file with comments | « core/src/fpdfdoc/doc_link.cpp ('k') | core/src/fpdfdoc/pdf_vt.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698