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

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

Issue 1292613003: Use override in more classes in core/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: nit Created 5 years, 4 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_ap.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 "../../include/fpdfdoc/fpdf_doc.h" 7 #include "../../include/fpdfdoc/fpdf_doc.h"
8 #include "../../include/fpdfdoc/fpdf_vt.h" 8 #include "../../include/fpdfdoc/fpdf_vt.h"
9 #include "pdf_vt.h" 9 #include "pdf_vt.h"
10 const uint8_t gFontSizeSteps[] = {4, 6, 8, 9, 10, 12, 14, 18, 20, 10 const uint8_t gFontSizeSteps[] = {4, 6, 8, 9, 10, 12, 14, 18, 20,
(...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 ClearWords(PlaceRange); 953 ClearWords(PlaceRange);
954 if (PlaceRange.BeginPos.nSecIndex != PlaceRange.EndPos.nSecIndex) { 954 if (PlaceRange.BeginPos.nSecIndex != PlaceRange.EndPos.nSecIndex) {
955 ClearEmptySections(PlaceRange); 955 ClearEmptySections(PlaceRange);
956 if (!bLastSecPos) { 956 if (!bLastSecPos) {
957 LinkLatterSection(PlaceRange.BeginPos); 957 LinkLatterSection(PlaceRange.BeginPos);
958 } 958 }
959 } 959 }
960 return PlaceRange.BeginPos; 960 return PlaceRange.BeginPos;
961 } 961 }
962 CPVT_WordPlace CPDF_VariableText::DeleteWord(const CPVT_WordPlace& place) { 962 CPVT_WordPlace CPDF_VariableText::DeleteWord(const CPVT_WordPlace& place) {
963 return ClearRightWord(AjustLineHeader(place, TRUE)); 963 return ClearRightWord(AdjustLineHeader(place, TRUE));
964 } 964 }
965 CPVT_WordPlace CPDF_VariableText::BackSpaceWord(const CPVT_WordPlace& place) { 965 CPVT_WordPlace CPDF_VariableText::BackSpaceWord(const CPVT_WordPlace& place) {
966 return ClearLeftWord(AjustLineHeader(place, TRUE)); 966 return ClearLeftWord(AdjustLineHeader(place, TRUE));
967 } 967 }
968 void CPDF_VariableText::SetText(const FX_WCHAR* text, 968 void CPDF_VariableText::SetText(const FX_WCHAR* text,
969 int32_t charset, 969 int32_t charset,
970 const CPVT_SecProps* pSecProps, 970 const CPVT_SecProps* pSecProps,
971 const CPVT_WordProps* pWordProps) { 971 const CPVT_WordProps* pWordProps) {
972 DeleteWords(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); 972 DeleteWords(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace()));
973 CFX_WideString swText = text; 973 CFX_WideString swText = text;
974 CPVT_WordPlace wp(0, 0, -1); 974 CPVT_WordPlace wp(0, 0, -1);
975 CPVT_SectionInfo secinfo; 975 CPVT_SectionInfo secinfo;
976 if (m_bRichText) { 976 if (m_bRichText) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 nCharCount++; 1025 nCharCount++;
1026 } 1026 }
1027 } 1027 }
1028 void CPDF_VariableText::UpdateWordPlace(CPVT_WordPlace& place) const { 1028 void CPDF_VariableText::UpdateWordPlace(CPVT_WordPlace& place) const {
1029 if (place.nSecIndex < 0) { 1029 if (place.nSecIndex < 0) {
1030 place = GetBeginWordPlace(); 1030 place = GetBeginWordPlace();
1031 } 1031 }
1032 if (place.nSecIndex >= m_SectionArray.GetSize()) { 1032 if (place.nSecIndex >= m_SectionArray.GetSize()) {
1033 place = GetEndWordPlace(); 1033 place = GetEndWordPlace();
1034 } 1034 }
1035 place = AjustLineHeader(place, TRUE); 1035 place = AdjustLineHeader(place, TRUE);
1036 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { 1036 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) {
1037 pSection->UpdateWordPlace(place); 1037 pSection->UpdateWordPlace(place);
1038 } 1038 }
1039 } 1039 }
1040 int32_t CPDF_VariableText::WordPlaceToWordIndex( 1040 int32_t CPDF_VariableText::WordPlaceToWordIndex(
1041 const CPVT_WordPlace& place) const { 1041 const CPVT_WordPlace& place) const {
1042 CPVT_WordPlace newplace = place; 1042 CPVT_WordPlace newplace = place;
1043 UpdateWordPlace(newplace); 1043 UpdateWordPlace(newplace);
1044 int32_t nIndex = 0; 1044 int32_t nIndex = 0;
1045 int32_t i = 0; 1045 int32_t i = 0;
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
1422 } 1422 }
1423 FX_FLOAT CPDF_VariableText::GetCharSpace(const CPVT_WordInfo& WordInfo) { 1423 FX_FLOAT CPDF_VariableText::GetCharSpace(const CPVT_WordInfo& WordInfo) {
1424 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->fCharSpace 1424 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->fCharSpace
1425 : m_fCharSpace; 1425 : m_fCharSpace;
1426 } 1426 }
1427 int32_t CPDF_VariableText::GetHorzScale(const CPVT_WordInfo& WordInfo) { 1427 int32_t CPDF_VariableText::GetHorzScale(const CPVT_WordInfo& WordInfo) {
1428 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nHorzScale 1428 return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nHorzScale
1429 : m_nHorzScale; 1429 : m_nHorzScale;
1430 } 1430 }
1431 void CPDF_VariableText::ClearSectionRightWords(const CPVT_WordPlace& place) { 1431 void CPDF_VariableText::ClearSectionRightWords(const CPVT_WordPlace& place) {
1432 CPVT_WordPlace wordplace = AjustLineHeader(place, TRUE); 1432 CPVT_WordPlace wordplace = AdjustLineHeader(place, TRUE);
1433 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { 1433 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) {
1434 for (int32_t w = pSection->m_WordArray.GetSize() - 1; 1434 for (int32_t w = pSection->m_WordArray.GetSize() - 1;
1435 w > wordplace.nWordIndex; w--) { 1435 w > wordplace.nWordIndex; w--) {
1436 delete pSection->m_WordArray.GetAt(w); 1436 delete pSection->m_WordArray.GetAt(w);
1437 pSection->m_WordArray.RemoveAt(w); 1437 pSection->m_WordArray.RemoveAt(w);
1438 } 1438 }
1439 } 1439 }
1440 } 1440 }
1441 CPVT_WordPlace CPDF_VariableText::AjustLineHeader(const CPVT_WordPlace& place, 1441 CPVT_WordPlace CPDF_VariableText::AdjustLineHeader(const CPVT_WordPlace& place,
1442 FX_BOOL bPrevOrNext) const { 1442 FX_BOOL bPrevOrNext) const {
1443 if (place.nWordIndex < 0 && place.nLineIndex > 0) { 1443 if (place.nWordIndex < 0 && place.nLineIndex > 0) {
1444 return bPrevOrNext ? GetPrevWordPlace(place) : GetNextWordPlace(place); 1444 return bPrevOrNext ? GetPrevWordPlace(place) : GetNextWordPlace(place);
1445 } 1445 }
1446 return place; 1446 return place;
1447 } 1447 }
1448 FX_BOOL CPDF_VariableText::ClearEmptySection(const CPVT_WordPlace& place) { 1448 FX_BOOL CPDF_VariableText::ClearEmptySection(const CPVT_WordPlace& place) {
1449 if (place.nSecIndex == 0 && m_SectionArray.GetSize() == 1) { 1449 if (place.nSecIndex == 0 && m_SectionArray.GetSize() == 1) {
1450 return FALSE; 1450 return FALSE;
1451 } 1451 }
1452 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { 1452 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) {
1453 if (pSection->m_WordArray.GetSize() == 0) { 1453 if (pSection->m_WordArray.GetSize() == 0) {
1454 delete pSection; 1454 delete pSection;
1455 m_SectionArray.RemoveAt(place.nSecIndex); 1455 m_SectionArray.RemoveAt(place.nSecIndex);
1456 return TRUE; 1456 return TRUE;
1457 } 1457 }
1458 } 1458 }
1459 return FALSE; 1459 return FALSE;
1460 } 1460 }
1461 void CPDF_VariableText::ClearEmptySections(const CPVT_WordRange& PlaceRange) { 1461 void CPDF_VariableText::ClearEmptySections(const CPVT_WordRange& PlaceRange) {
1462 CPVT_WordPlace wordplace; 1462 CPVT_WordPlace wordplace;
1463 for (int32_t s = PlaceRange.EndPos.nSecIndex; 1463 for (int32_t s = PlaceRange.EndPos.nSecIndex;
1464 s > PlaceRange.BeginPos.nSecIndex; s--) { 1464 s > PlaceRange.BeginPos.nSecIndex; s--) {
1465 wordplace.nSecIndex = s; 1465 wordplace.nSecIndex = s;
1466 ClearEmptySection(wordplace); 1466 ClearEmptySection(wordplace);
1467 } 1467 }
1468 } 1468 }
1469 void CPDF_VariableText::LinkLatterSection(const CPVT_WordPlace& place) { 1469 void CPDF_VariableText::LinkLatterSection(const CPVT_WordPlace& place) {
1470 CPVT_WordPlace oldplace = AjustLineHeader(place, TRUE); 1470 CPVT_WordPlace oldplace = AdjustLineHeader(place, TRUE);
1471 if (CSection* pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) { 1471 if (CSection* pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) {
1472 if (CSection* pSection = m_SectionArray.GetAt(oldplace.nSecIndex)) { 1472 if (CSection* pSection = m_SectionArray.GetAt(oldplace.nSecIndex)) {
1473 for (int32_t w = 0, sz = pNextSection->m_WordArray.GetSize(); w < sz; 1473 for (int32_t w = 0, sz = pNextSection->m_WordArray.GetSize(); w < sz;
1474 w++) { 1474 w++) {
1475 if (CPVT_WordInfo* pWord = pNextSection->m_WordArray.GetAt(w)) { 1475 if (CPVT_WordInfo* pWord = pNextSection->m_WordArray.GetAt(w)) {
1476 oldplace.nWordIndex++; 1476 oldplace.nWordIndex++;
1477 pSection->AddWord(oldplace, *pWord); 1477 pSection->AddWord(oldplace, *pWord);
1478 } 1478 }
1479 } 1479 }
1480 } 1480 }
1481 delete pNextSection; 1481 delete pNextSection;
1482 m_SectionArray.RemoveAt(place.nSecIndex + 1); 1482 m_SectionArray.RemoveAt(place.nSecIndex + 1);
1483 } 1483 }
1484 } 1484 }
1485 void CPDF_VariableText::ClearWords(const CPVT_WordRange& PlaceRange) { 1485 void CPDF_VariableText::ClearWords(const CPVT_WordRange& PlaceRange) {
1486 CPVT_WordRange NewRange; 1486 CPVT_WordRange NewRange;
1487 NewRange.BeginPos = AjustLineHeader(PlaceRange.BeginPos, TRUE); 1487 NewRange.BeginPos = AdjustLineHeader(PlaceRange.BeginPos, TRUE);
1488 NewRange.EndPos = AjustLineHeader(PlaceRange.EndPos, TRUE); 1488 NewRange.EndPos = AdjustLineHeader(PlaceRange.EndPos, TRUE);
1489 for (int32_t s = NewRange.EndPos.nSecIndex; s >= NewRange.BeginPos.nSecIndex; 1489 for (int32_t s = NewRange.EndPos.nSecIndex; s >= NewRange.BeginPos.nSecIndex;
1490 s--) { 1490 s--) {
1491 if (CSection* pSection = m_SectionArray.GetAt(s)) { 1491 if (CSection* pSection = m_SectionArray.GetAt(s)) {
1492 pSection->ClearWords(NewRange); 1492 pSection->ClearWords(NewRange);
1493 } 1493 }
1494 } 1494 }
1495 } 1495 }
1496 CPVT_WordPlace CPDF_VariableText::ClearLeftWord(const CPVT_WordPlace& place) { 1496 CPVT_WordPlace CPDF_VariableText::ClearLeftWord(const CPVT_WordPlace& place) {
1497 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { 1497 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) {
1498 CPVT_WordPlace leftplace = GetPrevWordPlace(place); 1498 CPVT_WordPlace leftplace = GetPrevWordPlace(place);
1499 if (leftplace != place) { 1499 if (leftplace != place) {
1500 if (leftplace.nSecIndex != place.nSecIndex) { 1500 if (leftplace.nSecIndex != place.nSecIndex) {
1501 if (pSection->m_WordArray.GetSize() == 0) { 1501 if (pSection->m_WordArray.GetSize() == 0) {
1502 ClearEmptySection(place); 1502 ClearEmptySection(place);
1503 } else { 1503 } else {
1504 LinkLatterSection(leftplace); 1504 LinkLatterSection(leftplace);
1505 } 1505 }
1506 } else { 1506 } else {
1507 pSection->ClearWord(place); 1507 pSection->ClearWord(place);
1508 } 1508 }
1509 } 1509 }
1510 return leftplace; 1510 return leftplace;
1511 } 1511 }
1512 return place; 1512 return place;
1513 } 1513 }
1514 CPVT_WordPlace CPDF_VariableText::ClearRightWord(const CPVT_WordPlace& place) { 1514 CPVT_WordPlace CPDF_VariableText::ClearRightWord(const CPVT_WordPlace& place) {
1515 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { 1515 if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) {
1516 CPVT_WordPlace rightplace = AjustLineHeader(GetNextWordPlace(place), FALSE); 1516 CPVT_WordPlace rightplace =
1517 AdjustLineHeader(GetNextWordPlace(place), FALSE);
1517 if (rightplace != place) { 1518 if (rightplace != place) {
1518 if (rightplace.nSecIndex != place.nSecIndex) { 1519 if (rightplace.nSecIndex != place.nSecIndex) {
1519 LinkLatterSection(place); 1520 LinkLatterSection(place);
1520 } else { 1521 } else {
1521 pSection->ClearWord(rightplace); 1522 pSection->ClearWord(rightplace);
1522 } 1523 }
1523 } 1524 }
1524 } 1525 }
1525 return place; 1526 return place;
1526 } 1527 }
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
1820 if (pSection->m_SecInfo.pSecProps) { 1821 if (pSection->m_SecInfo.pSecProps) {
1821 *pSection->m_SecInfo.pSecProps = section.SecProps; 1822 *pSection->m_SecInfo.pSecProps = section.SecProps;
1822 } 1823 }
1823 if (pSection->m_SecInfo.pWordProps) { 1824 if (pSection->m_SecInfo.pWordProps) {
1824 *pSection->m_SecInfo.pWordProps = section.WordProps; 1825 *pSection->m_SecInfo.pWordProps = section.WordProps;
1825 } 1826 }
1826 return TRUE; 1827 return TRUE;
1827 } 1828 }
1828 return FALSE; 1829 return FALSE;
1829 } 1830 }
OLDNEW
« no previous file with comments | « core/src/fpdfdoc/doc_ap.cpp ('k') | core/src/fpdfdoc/pdf_vt.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698