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

Side by Side Diff: core/fpdftext/cpdf_textpage.cpp

Issue 2358043003: Make ownership explicit in CPDF_ContentMarkItem (Closed)
Patch Set: Not owned Created 4 years, 2 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/fpdfapi/fpdf_page/cpdf_contentmarkitem.cpp ('k') | no next file » | 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 "core/fpdftext/include/cpdf_textpage.h" 7 #include "core/fpdftext/include/cpdf_textpage.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after
811 int nContentMark = pTextObj->m_ContentMark.CountItems(); 811 int nContentMark = pTextObj->m_ContentMark.CountItems();
812 if (nContentMark < 1) 812 if (nContentMark < 1)
813 return FPDFText_MarkedContent::Pass; 813 return FPDFText_MarkedContent::Pass;
814 814
815 CFX_WideString actText; 815 CFX_WideString actText;
816 bool bExist = false; 816 bool bExist = false;
817 CPDF_Dictionary* pDict = nullptr; 817 CPDF_Dictionary* pDict = nullptr;
818 int n = 0; 818 int n = 0;
819 for (n = 0; n < nContentMark; n++) { 819 for (n = 0; n < nContentMark; n++) {
820 const CPDF_ContentMarkItem& item = pTextObj->m_ContentMark.GetItem(n); 820 const CPDF_ContentMarkItem& item = pTextObj->m_ContentMark.GetItem(n);
821 if (item.GetParamType() == CPDF_ContentMarkItem::ParamType::None) 821 pDict = item.GetParam();
822 if (!pDict)
822 continue; 823 continue;
823 pDict = item.GetParam(); 824 CPDF_String* temp = ToString(pDict->GetObjectFor("ActualText"));
824 CPDF_String* temp =
825 ToString(pDict ? pDict->GetObjectFor("ActualText") : nullptr);
826 if (temp) { 825 if (temp) {
827 bExist = true; 826 bExist = true;
828 actText = temp->GetUnicodeText(); 827 actText = temp->GetUnicodeText();
829 } 828 }
830 } 829 }
831 if (!bExist) 830 if (!bExist)
832 return FPDFText_MarkedContent::Pass; 831 return FPDFText_MarkedContent::Pass;
833 832
834 if (m_pPreTextObj && m_pPreTextObj->m_ContentMark && 833 if (m_pPreTextObj && m_pPreTextObj->m_ContentMark &&
835 m_pPreTextObj->m_ContentMark.CountItems() == n && 834 m_pPreTextObj->m_ContentMark.CountItems() == n &&
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 void CPDF_TextPage::ProcessMarkedContent(PDFTEXT_Obj Obj) { 869 void CPDF_TextPage::ProcessMarkedContent(PDFTEXT_Obj Obj) {
871 CPDF_TextObject* pTextObj = Obj.m_pTextObj; 870 CPDF_TextObject* pTextObj = Obj.m_pTextObj;
872 if (!pTextObj->m_ContentMark) 871 if (!pTextObj->m_ContentMark)
873 return; 872 return;
874 873
875 int nContentMark = pTextObj->m_ContentMark.CountItems(); 874 int nContentMark = pTextObj->m_ContentMark.CountItems();
876 if (nContentMark < 1) 875 if (nContentMark < 1)
877 return; 876 return;
878 877
879 CFX_WideString actText; 878 CFX_WideString actText;
880 CPDF_Dictionary* pDict = nullptr;
881 for (int n = 0; n < nContentMark; n++) { 879 for (int n = 0; n < nContentMark; n++) {
882 const CPDF_ContentMarkItem& item = pTextObj->m_ContentMark.GetItem(n); 880 const CPDF_ContentMarkItem& item = pTextObj->m_ContentMark.GetItem(n);
883 if (item.GetParamType() == CPDF_ContentMarkItem::ParamType::None) 881 CPDF_Dictionary* pDict = item.GetParam();
884 continue;
885 pDict = item.GetParam();
886 if (pDict) 882 if (pDict)
887 actText = pDict->GetUnicodeTextFor("ActualText"); 883 actText = pDict->GetUnicodeTextFor("ActualText");
888 } 884 }
889 FX_STRSIZE nItems = actText.GetLength(); 885 FX_STRSIZE nItems = actText.GetLength();
890 if (nItems < 1) 886 if (nItems < 1)
891 return; 887 return;
892 888
893 CPDF_Font* pFont = pTextObj->GetFont(); 889 CPDF_Font* pFont = pTextObj->GetFont();
894 CFX_Matrix formMatrix = Obj.m_formMatrix; 890 CFX_Matrix formMatrix = Obj.m_formMatrix;
895 CFX_Matrix matrix; 891 CFX_Matrix matrix;
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after
1533 info.m_OriginY); 1529 info.m_OriginY);
1534 return TRUE; 1530 return TRUE;
1535 } 1531 }
1536 1532
1537 FX_BOOL CPDF_TextPage::IsRectIntersect(const CFX_FloatRect& rect1, 1533 FX_BOOL CPDF_TextPage::IsRectIntersect(const CFX_FloatRect& rect1,
1538 const CFX_FloatRect& rect2) { 1534 const CFX_FloatRect& rect2) {
1539 CFX_FloatRect rect = rect1; 1535 CFX_FloatRect rect = rect1;
1540 rect.Intersect(rect2); 1536 rect.Intersect(rect2);
1541 return !rect.IsEmpty(); 1537 return !rect.IsEmpty();
1542 } 1538 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_page/cpdf_contentmarkitem.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698