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

Side by Side Diff: core/fpdfapi/fpdf_page/fpdf_page_parser.cpp

Issue 2285283003: Revert "Add -> operators to CFX_CountRef." (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 3 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
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/fpdfapi/fpdf_page/pageint.h" 7 #include "core/fpdfapi/fpdf_page/pageint.h"
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 return; 576 return;
577 } 577 }
578 FX_BOOL bDirect = TRUE; 578 FX_BOOL bDirect = TRUE;
579 if (pProperty->IsName()) { 579 if (pProperty->IsName()) {
580 pProperty = FindResourceObj("Properties", pProperty->GetString()); 580 pProperty = FindResourceObj("Properties", pProperty->GetString());
581 if (!pProperty) 581 if (!pProperty)
582 return; 582 return;
583 bDirect = FALSE; 583 bDirect = FALSE;
584 } 584 }
585 if (CPDF_Dictionary* pDict = pProperty->AsDictionary()) { 585 if (CPDF_Dictionary* pDict = pProperty->AsDictionary()) {
586 m_CurContentMark.MakePrivateCopy(); 586 m_CurContentMark.GetPrivateCopy()->AddMark(tag, pDict, bDirect);
587 m_CurContentMark->AddMark(tag, pDict, bDirect);
588 } 587 }
589 } 588 }
590 589
591 void CPDF_StreamContentParser::Handle_BeginImage() { 590 void CPDF_StreamContentParser::Handle_BeginImage() {
592 FX_FILESIZE savePos = m_pSyntax->GetPos(); 591 FX_FILESIZE savePos = m_pSyntax->GetPos();
593 CPDF_Dictionary* pDict = new CPDF_Dictionary; 592 CPDF_Dictionary* pDict = new CPDF_Dictionary;
594 while (1) { 593 while (1) {
595 CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement(); 594 CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
596 if (type == CPDF_StreamParser::Keyword) { 595 if (type == CPDF_StreamParser::Keyword) {
597 CFX_ByteString bsKeyword(m_pSyntax->GetWordBuf(), 596 CFX_ByteString bsKeyword(m_pSyntax->GetWordBuf(),
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 if (!pImgObj) { 651 if (!pImgObj) {
653 if (pStream) { 652 if (pStream) {
654 pStream->Release(); 653 pStream->Release();
655 } else { 654 } else {
656 pDict->Release(); 655 pDict->Release();
657 } 656 }
658 } 657 }
659 } 658 }
660 659
661 void CPDF_StreamContentParser::Handle_BeginMarkedContent() { 660 void CPDF_StreamContentParser::Handle_BeginMarkedContent() {
662 m_CurContentMark.MakePrivateCopy(); 661 CFX_ByteString tag = GetString(0);
663 m_CurContentMark->AddMark(GetString(0), nullptr, FALSE); 662 m_CurContentMark.GetPrivateCopy()->AddMark(tag, nullptr, FALSE);
664 } 663 }
665 664
666 void CPDF_StreamContentParser::Handle_BeginText() { 665 void CPDF_StreamContentParser::Handle_BeginText() {
667 m_pCurStates->m_TextMatrix.Set(1.0f, 0, 0, 1.0f, 0, 0); 666 m_pCurStates->m_TextMatrix.Set(1.0f, 0, 0, 1.0f, 0, 0);
668 OnChangeTextMatrix(); 667 OnChangeTextMatrix();
669 m_pCurStates->m_TextX = 0; 668 m_pCurStates->m_TextX = 0;
670 m_pCurStates->m_TextY = 0; 669 m_pCurStates->m_TextY = 0;
671 m_pCurStates->m_TextLineX = 0; 670 m_pCurStates->m_TextLineX = 0;
672 m_pCurStates->m_TextLineY = 0; 671 m_pCurStates->m_TextLineY = 0;
673 } 672 }
674 673
675 void CPDF_StreamContentParser::Handle_CurveTo_123() { 674 void CPDF_StreamContentParser::Handle_CurveTo_123() {
676 AddPathPoint(GetNumber(5), GetNumber(4), FXPT_BEZIERTO); 675 AddPathPoint(GetNumber(5), GetNumber(4), FXPT_BEZIERTO);
677 AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); 676 AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO);
678 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); 677 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO);
679 } 678 }
680 679
681 void CPDF_StreamContentParser::Handle_ConcatMatrix() { 680 void CPDF_StreamContentParser::Handle_ConcatMatrix() {
682 CFX_Matrix new_matrix(GetNumber(5), GetNumber(4), GetNumber(3), GetNumber(2), 681 CFX_Matrix new_matrix(GetNumber(5), GetNumber(4), GetNumber(3), GetNumber(2),
683 GetNumber(1), GetNumber(0)); 682 GetNumber(1), GetNumber(0));
684 new_matrix.Concat(m_pCurStates->m_CTM); 683 new_matrix.Concat(m_pCurStates->m_CTM);
685 m_pCurStates->m_CTM = new_matrix; 684 m_pCurStates->m_CTM = new_matrix;
686 OnChangeTextMatrix(); 685 OnChangeTextMatrix();
687 } 686 }
688 687
689 void CPDF_StreamContentParser::Handle_SetColorSpace_Fill() { 688 void CPDF_StreamContentParser::Handle_SetColorSpace_Fill() {
690 CPDF_ColorSpace* pCS = FindColorSpace(GetString(0)); 689 CFX_ByteString csname = GetString(0);
691 if (!pCS) 690 CPDF_ColorSpace* pCS = FindColorSpace(csname);
691 if (!pCS) {
692 return; 692 return;
693 693 }
694 m_pCurStates->m_ColorState.MakePrivateCopy(); 694 m_pCurStates->m_ColorState.GetPrivateCopy()->m_FillColor.SetColorSpace(pCS);
695 m_pCurStates->m_ColorState->m_FillColor.SetColorSpace(pCS);
696 } 695 }
697 696
698 void CPDF_StreamContentParser::Handle_SetColorSpace_Stroke() { 697 void CPDF_StreamContentParser::Handle_SetColorSpace_Stroke() {
699 CPDF_ColorSpace* pCS = FindColorSpace(GetString(0)); 698 CFX_ByteString csname = GetString(0);
700 if (!pCS) 699 CPDF_ColorSpace* pCS = FindColorSpace(csname);
700 if (!pCS) {
701 return; 701 return;
702 702 }
703 m_pCurStates->m_ColorState.MakePrivateCopy(); 703 m_pCurStates->m_ColorState.GetPrivateCopy()->m_StrokeColor.SetColorSpace(pCS);
704 m_pCurStates->m_ColorState->m_StrokeColor.SetColorSpace(pCS);
705 } 704 }
706 705
707 void CPDF_StreamContentParser::Handle_SetDash() { 706 void CPDF_StreamContentParser::Handle_SetDash() {
708 CPDF_Array* pArray = ToArray(GetObject(1)); 707 CPDF_Array* pArray = ToArray(GetObject(1));
709 if (!pArray) 708 if (!pArray)
710 return; 709 return;
711 710
712 m_pCurStates->SetLineDash(pArray, GetNumber(0), 1.0f); 711 m_pCurStates->SetLineDash(pArray, GetNumber(0), 1.0f);
713 } 712 }
714 713
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 } 804 }
806 805
807 void CPDF_StreamContentParser::Handle_MarkPlace_Dictionary() {} 806 void CPDF_StreamContentParser::Handle_MarkPlace_Dictionary() {}
808 807
809 void CPDF_StreamContentParser::Handle_EndImage() {} 808 void CPDF_StreamContentParser::Handle_EndImage() {}
810 809
811 void CPDF_StreamContentParser::Handle_EndMarkedContent() { 810 void CPDF_StreamContentParser::Handle_EndMarkedContent() {
812 if (!m_CurContentMark) 811 if (!m_CurContentMark)
813 return; 812 return;
814 813
815 if (m_CurContentMark->CountItems() == 1) { 814 int count = m_CurContentMark.GetObject()->CountItems();
816 m_CurContentMark.Clear(); 815 if (count == 1) {
816 m_CurContentMark.SetNull();
817 return; 817 return;
818 } 818 }
819 819 m_CurContentMark.GetPrivateCopy()->DeleteLastMark();
820 m_CurContentMark.MakePrivateCopy();
821 m_CurContentMark->DeleteLastMark();
822 } 820 }
823 821
824 void CPDF_StreamContentParser::Handle_EndText() { 822 void CPDF_StreamContentParser::Handle_EndText() {
825 if (m_ClipTextList.empty()) 823 if (m_ClipTextList.empty())
826 return; 824 return;
827 825
828 if (TextRenderingModeIsClipMode(m_pCurStates->m_TextState->m_TextMode)) 826 if (TextRenderingModeIsClipMode(
827 m_pCurStates->m_TextState.GetObject()->m_TextMode)) {
829 m_pCurStates->m_ClipPath.AppendTexts(&m_ClipTextList); 828 m_pCurStates->m_ClipPath.AppendTexts(&m_ClipTextList);
830 829 }
831 m_ClipTextList.clear(); 830 m_ClipTextList.clear();
832 } 831 }
833 832
834 void CPDF_StreamContentParser::Handle_FillPath() { 833 void CPDF_StreamContentParser::Handle_FillPath() {
835 AddPathObject(FXFILL_WINDING, FALSE); 834 AddPathObject(FXFILL_WINDING, FALSE);
836 } 835 }
837 836
838 void CPDF_StreamContentParser::Handle_FillPathOld() { 837 void CPDF_StreamContentParser::Handle_FillPathOld() {
839 AddPathObject(FXFILL_WINDING, FALSE); 838 AddPathObject(FXFILL_WINDING, FALSE);
840 } 839 }
(...skipping 29 matching lines...) Expand all
870 return; 869 return;
871 } 870 }
872 if (m_PathStartX != m_PathCurrentX || m_PathStartY != m_PathCurrentY) { 871 if (m_PathStartX != m_PathCurrentX || m_PathStartY != m_PathCurrentY) {
873 AddPathPoint(m_PathStartX, m_PathStartY, FXPT_LINETO | FXPT_CLOSEFIGURE); 872 AddPathPoint(m_PathStartX, m_PathStartY, FXPT_LINETO | FXPT_CLOSEFIGURE);
874 } else if (m_pPathPoints[m_PathPointCount - 1].m_Flag != FXPT_MOVETO) { 873 } else if (m_pPathPoints[m_PathPointCount - 1].m_Flag != FXPT_MOVETO) {
875 m_pPathPoints[m_PathPointCount - 1].m_Flag |= FXPT_CLOSEFIGURE; 874 m_pPathPoints[m_PathPointCount - 1].m_Flag |= FXPT_CLOSEFIGURE;
876 } 875 }
877 } 876 }
878 877
879 void CPDF_StreamContentParser::Handle_SetFlat() { 878 void CPDF_StreamContentParser::Handle_SetFlat() {
880 m_pCurStates->m_GeneralState.MakePrivateCopy(); 879 m_pCurStates->m_GeneralState.GetPrivateCopy()->m_Flatness = GetNumber(0);
881 m_pCurStates->m_GeneralState->m_Flatness = GetNumber(0);
882 } 880 }
883 881
884 void CPDF_StreamContentParser::Handle_BeginImageData() {} 882 void CPDF_StreamContentParser::Handle_BeginImageData() {}
885 883
886 void CPDF_StreamContentParser::Handle_SetLineJoin() { 884 void CPDF_StreamContentParser::Handle_SetLineJoin() {
887 m_pCurStates->m_GraphState.MakePrivateCopy(); 885 m_pCurStates->m_GraphState.GetPrivateCopy()->m_LineJoin =
888 m_pCurStates->m_GraphState->m_LineJoin = 886 (CFX_GraphStateData::LineJoin)GetInteger(0);
889 static_cast<CFX_GraphStateData::LineJoin>(GetInteger(0));
890 } 887 }
891 888
892 void CPDF_StreamContentParser::Handle_SetLineCap() { 889 void CPDF_StreamContentParser::Handle_SetLineCap() {
893 m_pCurStates->m_GraphState.MakePrivateCopy(); 890 m_pCurStates->m_GraphState.GetPrivateCopy()->m_LineCap =
894 m_pCurStates->m_GraphState->m_LineCap = 891 (CFX_GraphStateData::LineCap)GetInteger(0);
895 static_cast<CFX_GraphStateData::LineCap>(GetInteger(0));
896 } 892 }
897 893
898 void CPDF_StreamContentParser::Handle_SetCMYKColor_Fill() { 894 void CPDF_StreamContentParser::Handle_SetCMYKColor_Fill() {
899 if (m_ParamCount != 4) 895 if (m_ParamCount != 4)
900 return; 896 return;
901 897
902 FX_FLOAT values[4]; 898 FX_FLOAT values[4];
903 for (int i = 0; i < 4; i++) { 899 for (int i = 0; i < 4; i++) {
904 values[i] = GetNumber(3 - i); 900 values[i] = GetNumber(3 - i);
905 } 901 }
(...skipping 22 matching lines...) Expand all
928 924
929 void CPDF_StreamContentParser::Handle_MoveTo() { 925 void CPDF_StreamContentParser::Handle_MoveTo() {
930 if (m_ParamCount != 2) 926 if (m_ParamCount != 2)
931 return; 927 return;
932 928
933 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_MOVETO); 929 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_MOVETO);
934 ParsePathObject(); 930 ParsePathObject();
935 } 931 }
936 932
937 void CPDF_StreamContentParser::Handle_SetMiterLimit() { 933 void CPDF_StreamContentParser::Handle_SetMiterLimit() {
938 m_pCurStates->m_GraphState.MakePrivateCopy(); 934 m_pCurStates->m_GraphState.GetPrivateCopy()->m_MiterLimit = GetNumber(0);
939 m_pCurStates->m_GraphState->m_MiterLimit = GetNumber(0);
940 } 935 }
941 936
942 void CPDF_StreamContentParser::Handle_MarkPlace() {} 937 void CPDF_StreamContentParser::Handle_MarkPlace() {}
943 938
944 void CPDF_StreamContentParser::Handle_EndPath() { 939 void CPDF_StreamContentParser::Handle_EndPath() {
945 AddPathObject(0, FALSE); 940 AddPathObject(0, FALSE);
946 } 941 }
947 942
948 void CPDF_StreamContentParser::Handle_SaveGraphState() { 943 void CPDF_StreamContentParser::Handle_SaveGraphState() {
949 std::unique_ptr<CPDF_AllStates> pStates(new CPDF_AllStates); 944 std::unique_ptr<CPDF_AllStates> pStates(new CPDF_AllStates);
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
1112 if (pShading->IsMeshShading()) 1107 if (pShading->IsMeshShading())
1113 bbox.Intersect(GetShadingBBox(pShading, pObj->m_Matrix)); 1108 bbox.Intersect(GetShadingBBox(pShading, pObj->m_Matrix));
1114 pObj->m_Left = bbox.left; 1109 pObj->m_Left = bbox.left;
1115 pObj->m_Right = bbox.right; 1110 pObj->m_Right = bbox.right;
1116 pObj->m_Top = bbox.top; 1111 pObj->m_Top = bbox.top;
1117 pObj->m_Bottom = bbox.bottom; 1112 pObj->m_Bottom = bbox.bottom;
1118 m_pObjectHolder->GetPageObjectList()->push_back(std::move(pObj)); 1113 m_pObjectHolder->GetPageObjectList()->push_back(std::move(pObj));
1119 } 1114 }
1120 1115
1121 void CPDF_StreamContentParser::Handle_SetCharSpace() { 1116 void CPDF_StreamContentParser::Handle_SetCharSpace() {
1122 m_pCurStates->m_TextState.MakePrivateCopy(); 1117 m_pCurStates->m_TextState.GetPrivateCopy()->m_CharSpace = GetNumber(0);
1123 m_pCurStates->m_TextState->m_CharSpace = GetNumber(0);
1124 } 1118 }
1125 1119
1126 void CPDF_StreamContentParser::Handle_MoveTextPoint() { 1120 void CPDF_StreamContentParser::Handle_MoveTextPoint() {
1127 m_pCurStates->m_TextLineX += GetNumber(1); 1121 m_pCurStates->m_TextLineX += GetNumber(1);
1128 m_pCurStates->m_TextLineY += GetNumber(0); 1122 m_pCurStates->m_TextLineY += GetNumber(0);
1129 m_pCurStates->m_TextX = m_pCurStates->m_TextLineX; 1123 m_pCurStates->m_TextX = m_pCurStates->m_TextLineX;
1130 m_pCurStates->m_TextY = m_pCurStates->m_TextLineY; 1124 m_pCurStates->m_TextY = m_pCurStates->m_TextLineY;
1131 } 1125 }
1132 1126
1133 void CPDF_StreamContentParser::Handle_MoveTextPoint_SetLeading() { 1127 void CPDF_StreamContentParser::Handle_MoveTextPoint_SetLeading() {
1134 Handle_MoveTextPoint(); 1128 Handle_MoveTextPoint();
1135 m_pCurStates->m_TextLeading = -GetNumber(0); 1129 m_pCurStates->m_TextLeading = -GetNumber(0);
1136 } 1130 }
1137 1131
1138 void CPDF_StreamContentParser::Handle_SetFont() { 1132 void CPDF_StreamContentParser::Handle_SetFont() {
1139 FX_FLOAT fs = GetNumber(0); 1133 FX_FLOAT fs = GetNumber(0);
1140 if (fs == 0) 1134 if (fs == 0) {
1141 fs = m_DefFontSize; 1135 fs = m_DefFontSize;
1142 1136 }
1143 m_pCurStates->m_TextState.MakePrivateCopy(); 1137 m_pCurStates->m_TextState.GetPrivateCopy()->m_FontSize = fs;
1144 m_pCurStates->m_TextState->m_FontSize = fs;
1145 CPDF_Font* pFont = FindFont(GetString(1)); 1138 CPDF_Font* pFont = FindFont(GetString(1));
1146 if (pFont) 1139 if (pFont) {
1147 m_pCurStates->m_TextState.SetFont(pFont); 1140 m_pCurStates->m_TextState.SetFont(pFont);
1141 }
1148 } 1142 }
1149 1143
1150 CPDF_Object* CPDF_StreamContentParser::FindResourceObj( 1144 CPDF_Object* CPDF_StreamContentParser::FindResourceObj(
1151 const CFX_ByteString& type, 1145 const CFX_ByteString& type,
1152 const CFX_ByteString& name) { 1146 const CFX_ByteString& name) {
1153 if (!m_pResources) 1147 if (!m_pResources)
1154 return nullptr; 1148 return nullptr;
1155 CPDF_Dictionary* pDict = m_pResources->GetDictBy(type); 1149 CPDF_Dictionary* pDict = m_pResources->GetDictBy(type);
1156 if (pDict) 1150 if (pDict)
1157 return pDict->GetDirectObjectBy(name); 1151 return pDict->GetDirectObjectBy(name);
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1242 } else { 1236 } else {
1243 m_pCurStates->m_TextY -= 1237 m_pCurStates->m_TextY -=
1244 (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000; 1238 (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000;
1245 } 1239 }
1246 } 1240 }
1247 if (nsegs == 0) { 1241 if (nsegs == 0) {
1248 return; 1242 return;
1249 } 1243 }
1250 const TextRenderingMode text_mode = 1244 const TextRenderingMode text_mode =
1251 pFont->IsType3Font() ? TextRenderingMode::MODE_FILL 1245 pFont->IsType3Font() ? TextRenderingMode::MODE_FILL
1252 : m_pCurStates->m_TextState->m_TextMode; 1246 : m_pCurStates->m_TextState.GetObject()->m_TextMode;
1253 { 1247 {
1254 std::unique_ptr<CPDF_TextObject> pText(new CPDF_TextObject); 1248 std::unique_ptr<CPDF_TextObject> pText(new CPDF_TextObject);
1255 m_pLastTextObject = pText.get(); 1249 m_pLastTextObject = pText.get();
1256 SetGraphicStates(m_pLastTextObject, TRUE, TRUE, TRUE); 1250 SetGraphicStates(m_pLastTextObject, TRUE, TRUE, TRUE);
1257 if (TextRenderingModeIsStrokeMode(text_mode)) { 1251 if (TextRenderingModeIsStrokeMode(text_mode)) {
1258 pText->m_TextState.MakePrivateCopy(); 1252 FX_FLOAT* pCTM = pText->m_TextState.GetPrivateCopy()->m_CTM;
1259 FX_FLOAT* pCTM = pText->m_TextState->m_CTM;
1260 pCTM[0] = m_pCurStates->m_CTM.a; 1253 pCTM[0] = m_pCurStates->m_CTM.a;
1261 pCTM[1] = m_pCurStates->m_CTM.c; 1254 pCTM[1] = m_pCurStates->m_CTM.c;
1262 pCTM[2] = m_pCurStates->m_CTM.b; 1255 pCTM[2] = m_pCurStates->m_CTM.b;
1263 pCTM[3] = m_pCurStates->m_CTM.d; 1256 pCTM[3] = m_pCurStates->m_CTM.d;
1264 } 1257 }
1265 pText->SetSegments(pStrs, pKerning, nsegs); 1258 pText->SetSegments(pStrs, pKerning, nsegs);
1266 pText->m_PosX = m_pCurStates->m_TextX; 1259 pText->m_PosX = m_pCurStates->m_TextX;
1267 pText->m_PosY = m_pCurStates->m_TextY + m_pCurStates->m_TextRise; 1260 pText->m_PosY = m_pCurStates->m_TextY + m_pCurStates->m_TextRise;
1268 ConvertTextSpace(pText->m_PosX, pText->m_PosY); 1261 ConvertTextSpace(pText->m_PosX, pText->m_PosY);
1269 FX_FLOAT x_advance; 1262 FX_FLOAT x_advance;
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 m_pCurStates->m_TextLineX = 0; 1351 m_pCurStates->m_TextLineX = 0;
1359 m_pCurStates->m_TextLineY = 0; 1352 m_pCurStates->m_TextLineY = 0;
1360 } 1353 }
1361 1354
1362 void CPDF_StreamContentParser::OnChangeTextMatrix() { 1355 void CPDF_StreamContentParser::OnChangeTextMatrix() {
1363 CFX_Matrix text_matrix(m_pCurStates->m_TextHorzScale, 0.0f, 0.0f, 1.0f, 0.0f, 1356 CFX_Matrix text_matrix(m_pCurStates->m_TextHorzScale, 0.0f, 0.0f, 1.0f, 0.0f,
1364 0.0f); 1357 0.0f);
1365 text_matrix.Concat(m_pCurStates->m_TextMatrix); 1358 text_matrix.Concat(m_pCurStates->m_TextMatrix);
1366 text_matrix.Concat(m_pCurStates->m_CTM); 1359 text_matrix.Concat(m_pCurStates->m_CTM);
1367 text_matrix.Concat(m_mtContentToUser); 1360 text_matrix.Concat(m_mtContentToUser);
1368 m_pCurStates->m_TextState.MakePrivateCopy(); 1361 FX_FLOAT* pTextMatrix = m_pCurStates->m_TextState.GetPrivateCopy()->m_Matrix;
1369 FX_FLOAT* pTextMatrix = m_pCurStates->m_TextState->m_Matrix;
1370 pTextMatrix[0] = text_matrix.a; 1362 pTextMatrix[0] = text_matrix.a;
1371 pTextMatrix[1] = text_matrix.c; 1363 pTextMatrix[1] = text_matrix.c;
1372 pTextMatrix[2] = text_matrix.b; 1364 pTextMatrix[2] = text_matrix.b;
1373 pTextMatrix[3] = text_matrix.d; 1365 pTextMatrix[3] = text_matrix.d;
1374 } 1366 }
1375 1367
1376 void CPDF_StreamContentParser::Handle_SetTextRenderMode() { 1368 void CPDF_StreamContentParser::Handle_SetTextRenderMode() {
1377 m_pCurStates->m_TextState.MakePrivateCopy(); 1369 int mode = GetInteger(0);
1378 SetTextRenderingModeFromInt(GetInteger(0), 1370 SetTextRenderingModeFromInt(
1379 &m_pCurStates->m_TextState->m_TextMode); 1371 mode, &m_pCurStates->m_TextState.GetPrivateCopy()->m_TextMode);
1380 } 1372 }
1381 1373
1382 void CPDF_StreamContentParser::Handle_SetTextRise() { 1374 void CPDF_StreamContentParser::Handle_SetTextRise() {
1383 m_pCurStates->m_TextRise = GetNumber(0); 1375 m_pCurStates->m_TextRise = GetNumber(0);
1384 } 1376 }
1385 1377
1386 void CPDF_StreamContentParser::Handle_SetWordSpace() { 1378 void CPDF_StreamContentParser::Handle_SetWordSpace() {
1387 m_pCurStates->m_TextState.MakePrivateCopy(); 1379 m_pCurStates->m_TextState.GetPrivateCopy()->m_WordSpace = GetNumber(0);
1388 m_pCurStates->m_TextState->m_WordSpace = GetNumber(0);
1389 } 1380 }
1390 1381
1391 void CPDF_StreamContentParser::Handle_SetHorzScale() { 1382 void CPDF_StreamContentParser::Handle_SetHorzScale() {
1392 if (m_ParamCount != 1) 1383 if (m_ParamCount != 1) {
1393 return; 1384 return;
1394 1385 }
1395 m_pCurStates->m_TextHorzScale = GetNumber(0) / 100; 1386 m_pCurStates->m_TextHorzScale = GetNumber(0) / 100;
1396 OnChangeTextMatrix(); 1387 OnChangeTextMatrix();
1397 } 1388 }
1398 1389
1399 void CPDF_StreamContentParser::Handle_MoveToNextLine() { 1390 void CPDF_StreamContentParser::Handle_MoveToNextLine() {
1400 m_pCurStates->m_TextLineY -= m_pCurStates->m_TextLeading; 1391 m_pCurStates->m_TextLineY -= m_pCurStates->m_TextLeading;
1401 m_pCurStates->m_TextX = m_pCurStates->m_TextLineX; 1392 m_pCurStates->m_TextX = m_pCurStates->m_TextLineX;
1402 m_pCurStates->m_TextY = m_pCurStates->m_TextLineY; 1393 m_pCurStates->m_TextY = m_pCurStates->m_TextLineY;
1403 } 1394 }
1404 1395
1405 void CPDF_StreamContentParser::Handle_CurveTo_23() { 1396 void CPDF_StreamContentParser::Handle_CurveTo_23() {
1406 AddPathPoint(m_PathCurrentX, m_PathCurrentY, FXPT_BEZIERTO); 1397 AddPathPoint(m_PathCurrentX, m_PathCurrentY, FXPT_BEZIERTO);
1407 AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); 1398 AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO);
1408 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); 1399 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO);
1409 } 1400 }
1410 1401
1411 void CPDF_StreamContentParser::Handle_SetLineWidth() { 1402 void CPDF_StreamContentParser::Handle_SetLineWidth() {
1412 m_pCurStates->m_GraphState.MakePrivateCopy(); 1403 FX_FLOAT width = GetNumber(0);
1413 m_pCurStates->m_GraphState->m_LineWidth = GetNumber(0); 1404 m_pCurStates->m_GraphState.GetPrivateCopy()->m_LineWidth = width;
1414 } 1405 }
1415 1406
1416 void CPDF_StreamContentParser::Handle_Clip() { 1407 void CPDF_StreamContentParser::Handle_Clip() {
1417 m_PathClipType = FXFILL_WINDING; 1408 m_PathClipType = FXFILL_WINDING;
1418 } 1409 }
1419 1410
1420 void CPDF_StreamContentParser::Handle_EOClip() { 1411 void CPDF_StreamContentParser::Handle_EOClip() {
1421 m_PathClipType = FXFILL_ALTERNATE; 1412 m_PathClipType = FXFILL_ALTERNATE;
1422 } 1413 }
1423 1414
1424 void CPDF_StreamContentParser::Handle_CurveTo_13() { 1415 void CPDF_StreamContentParser::Handle_CurveTo_13() {
1425 AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); 1416 AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO);
1426 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); 1417 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO);
1427 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); 1418 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO);
1428 } 1419 }
1429 1420
1430 void CPDF_StreamContentParser::Handle_NextLineShowText() { 1421 void CPDF_StreamContentParser::Handle_NextLineShowText() {
1431 Handle_MoveToNextLine(); 1422 Handle_MoveToNextLine();
1432 Handle_ShowText(); 1423 Handle_ShowText();
1433 } 1424 }
1434 1425
1435 void CPDF_StreamContentParser::Handle_NextLineShowText_Space() { 1426 void CPDF_StreamContentParser::Handle_NextLineShowText_Space() {
1436 m_pCurStates->m_TextState.MakePrivateCopy(); 1427 m_pCurStates->m_TextState.GetPrivateCopy()->m_WordSpace = GetNumber(2);
1437 m_pCurStates->m_TextState->m_WordSpace = GetNumber(2); 1428 m_pCurStates->m_TextState.GetPrivateCopy()->m_CharSpace = GetNumber(1);
1438 m_pCurStates->m_TextState->m_CharSpace = GetNumber(1);
1439 Handle_NextLineShowText(); 1429 Handle_NextLineShowText();
1440 } 1430 }
1441 1431
1442 void CPDF_StreamContentParser::Handle_Invalid() {} 1432 void CPDF_StreamContentParser::Handle_Invalid() {}
1443 1433
1444 void CPDF_StreamContentParser::AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag) { 1434 void CPDF_StreamContentParser::AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag) {
1445 m_PathCurrentX = x; 1435 m_PathCurrentX = x;
1446 m_PathCurrentY = y; 1436 m_PathCurrentY = y;
1447 if (flag == FXPT_MOVETO) { 1437 if (flag == FXPT_MOVETO) {
1448 m_PathStartX = x; 1438 m_PathStartX = x;
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
1695 } else { 1685 } else {
1696 PDF_ReplaceAbbr(pElement); 1686 PDF_ReplaceAbbr(pElement);
1697 } 1687 }
1698 } 1688 }
1699 break; 1689 break;
1700 } 1690 }
1701 default: 1691 default:
1702 break; 1692 break;
1703 } 1693 }
1704 } 1694 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_page/cpdf_textstate.cpp ('k') | core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698