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

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

Issue 2294553002: Revert "Use ->() in CPDF_ColorState" (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 <algorithm>
10 #include <memory> 9 #include <memory>
11 #include <utility> 10 #include <utility>
12 #include <vector> 11 #include <vector>
13 12
14 #include "core/fpdfapi/fpdf_edit/include/cpdf_creator.h" 13 #include "core/fpdfapi/fpdf_edit/include/cpdf_creator.h"
15 #include "core/fpdfapi/fpdf_font/cpdf_type3font.h" 14 #include "core/fpdfapi/fpdf_font/cpdf_type3font.h"
16 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" 15 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h"
17 #include "core/fpdfapi/fpdf_page/cpdf_allstates.h" 16 #include "core/fpdfapi/fpdf_page/cpdf_allstates.h"
18 #include "core/fpdfapi/fpdf_page/cpdf_meshstream.h" 17 #include "core/fpdfapi/fpdf_page/cpdf_meshstream.h"
19 #include "core/fpdfapi/fpdf_page/cpdf_shadingpattern.h" 18 #include "core/fpdfapi/fpdf_page/cpdf_shadingpattern.h"
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 m_pCurStates->m_CTM = new_matrix; 685 m_pCurStates->m_CTM = new_matrix;
687 OnChangeTextMatrix(); 686 OnChangeTextMatrix();
688 } 687 }
689 688
690 void CPDF_StreamContentParser::Handle_SetColorSpace_Fill() { 689 void CPDF_StreamContentParser::Handle_SetColorSpace_Fill() {
691 CPDF_ColorSpace* pCS = FindColorSpace(GetString(0)); 690 CPDF_ColorSpace* pCS = FindColorSpace(GetString(0));
692 if (!pCS) 691 if (!pCS)
693 return; 692 return;
694 693
695 m_pCurStates->m_ColorState.MakePrivateCopy(); 694 m_pCurStates->m_ColorState.MakePrivateCopy();
696 m_pCurStates->m_ColorState->GetFillColor()->SetColorSpace(pCS); 695 m_pCurStates->m_ColorState->m_FillColor.SetColorSpace(pCS);
697 } 696 }
698 697
699 void CPDF_StreamContentParser::Handle_SetColorSpace_Stroke() { 698 void CPDF_StreamContentParser::Handle_SetColorSpace_Stroke() {
700 CPDF_ColorSpace* pCS = FindColorSpace(GetString(0)); 699 CPDF_ColorSpace* pCS = FindColorSpace(GetString(0));
701 if (!pCS) 700 if (!pCS)
702 return; 701 return;
703 702
704 m_pCurStates->m_ColorState.MakePrivateCopy(); 703 m_pCurStates->m_ColorState.MakePrivateCopy();
705 m_pCurStates->m_ColorState->GetStrokeColor()->SetColorSpace(pCS); 704 m_pCurStates->m_ColorState->m_StrokeColor.SetColorSpace(pCS);
706 } 705 }
707 706
708 void CPDF_StreamContentParser::Handle_SetDash() { 707 void CPDF_StreamContentParser::Handle_SetDash() {
709 CPDF_Array* pArray = ToArray(GetObject(1)); 708 CPDF_Array* pArray = ToArray(GetObject(1));
710 if (!pArray) 709 if (!pArray)
711 return; 710 return;
712 711
713 m_pCurStates->SetLineDash(pArray, GetNumber(0), 1.0f); 712 m_pCurStates->SetLineDash(pArray, GetNumber(0), 1.0f);
714 } 713 }
715 714
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
839 void CPDF_StreamContentParser::Handle_FillPathOld() { 838 void CPDF_StreamContentParser::Handle_FillPathOld() {
840 AddPathObject(FXFILL_WINDING, FALSE); 839 AddPathObject(FXFILL_WINDING, FALSE);
841 } 840 }
842 841
843 void CPDF_StreamContentParser::Handle_EOFillPath() { 842 void CPDF_StreamContentParser::Handle_EOFillPath() {
844 AddPathObject(FXFILL_ALTERNATE, FALSE); 843 AddPathObject(FXFILL_ALTERNATE, FALSE);
845 } 844 }
846 845
847 void CPDF_StreamContentParser::Handle_SetGray_Fill() { 846 void CPDF_StreamContentParser::Handle_SetGray_Fill() {
848 FX_FLOAT value = GetNumber(0); 847 FX_FLOAT value = GetNumber(0);
849 m_pCurStates->m_ColorState.MakePrivateCopy(); 848 CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY);
850 m_pCurStates->m_ColorState->SetFillColor( 849 m_pCurStates->m_ColorState.SetFillColor(pCS, &value, 1);
851 CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY), &value, 1);
852 } 850 }
853 851
854 void CPDF_StreamContentParser::Handle_SetGray_Stroke() { 852 void CPDF_StreamContentParser::Handle_SetGray_Stroke() {
855 FX_FLOAT value = GetNumber(0); 853 FX_FLOAT value = GetNumber(0);
856 m_pCurStates->m_ColorState.MakePrivateCopy(); 854 CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY);
857 m_pCurStates->m_ColorState->SetStrokeColor( 855 m_pCurStates->m_ColorState.SetStrokeColor(pCS, &value, 1);
858 CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY), &value, 1);
859 } 856 }
860 857
861 void CPDF_StreamContentParser::Handle_SetExtendGraphState() { 858 void CPDF_StreamContentParser::Handle_SetExtendGraphState() {
862 CFX_ByteString name = GetString(0); 859 CFX_ByteString name = GetString(0);
863 CPDF_Dictionary* pGS = ToDictionary(FindResourceObj("ExtGState", name)); 860 CPDF_Dictionary* pGS = ToDictionary(FindResourceObj("ExtGState", name));
864 if (!pGS) { 861 if (!pGS) {
865 m_bResourceMissing = TRUE; 862 m_bResourceMissing = TRUE;
866 return; 863 return;
867 } 864 }
868 m_pCurStates->ProcessExtGS(pGS, this); 865 m_pCurStates->ProcessExtGS(pGS, this);
(...skipping 27 matching lines...) Expand all
896 m_pCurStates->m_GraphState.MakePrivateCopy(); 893 m_pCurStates->m_GraphState.MakePrivateCopy();
897 m_pCurStates->m_GraphState->m_LineCap = 894 m_pCurStates->m_GraphState->m_LineCap =
898 static_cast<CFX_GraphStateData::LineCap>(GetInteger(0)); 895 static_cast<CFX_GraphStateData::LineCap>(GetInteger(0));
899 } 896 }
900 897
901 void CPDF_StreamContentParser::Handle_SetCMYKColor_Fill() { 898 void CPDF_StreamContentParser::Handle_SetCMYKColor_Fill() {
902 if (m_ParamCount != 4) 899 if (m_ParamCount != 4)
903 return; 900 return;
904 901
905 FX_FLOAT values[4]; 902 FX_FLOAT values[4];
906 for (int i = 0; i < 4; i++) 903 for (int i = 0; i < 4; i++) {
907 values[i] = GetNumber(3 - i); 904 values[i] = GetNumber(3 - i);
908 905 }
909 m_pCurStates->m_ColorState.MakePrivateCopy(); 906 CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK);
910 m_pCurStates->m_ColorState->SetFillColor( 907 m_pCurStates->m_ColorState.SetFillColor(pCS, values, 4);
911 CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK), values, 4);
912 } 908 }
913 909
914 void CPDF_StreamContentParser::Handle_SetCMYKColor_Stroke() { 910 void CPDF_StreamContentParser::Handle_SetCMYKColor_Stroke() {
915 if (m_ParamCount != 4) 911 if (m_ParamCount != 4)
916 return; 912 return;
917 913
918 FX_FLOAT values[4]; 914 FX_FLOAT values[4];
919 for (int i = 0; i < 4; i++) 915 for (int i = 0; i < 4; i++) {
920 values[i] = GetNumber(3 - i); 916 values[i] = GetNumber(3 - i);
921 917 }
922 m_pCurStates->m_ColorState.MakePrivateCopy(); 918 CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK);
923 m_pCurStates->m_ColorState->SetStrokeColor( 919 m_pCurStates->m_ColorState.SetStrokeColor(pCS, values, 4);
924 CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK), values, 4);
925 } 920 }
926 921
927 void CPDF_StreamContentParser::Handle_LineTo() { 922 void CPDF_StreamContentParser::Handle_LineTo() {
928 if (m_ParamCount != 2) 923 if (m_ParamCount != 2)
929 return; 924 return;
930 925
931 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_LINETO); 926 AddPathPoint(GetNumber(1), GetNumber(0), FXPT_LINETO);
932 } 927 }
933 928
934 void CPDF_StreamContentParser::Handle_MoveTo() { 929 void CPDF_StreamContentParser::Handle_MoveTo() {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 AddPathPoint(x + w, y + h, FXPT_LINETO); 974 AddPathPoint(x + w, y + h, FXPT_LINETO);
980 AddPathPoint(x, y + h, FXPT_LINETO); 975 AddPathPoint(x, y + h, FXPT_LINETO);
981 AddPathPoint(x, y, FXPT_LINETO | FXPT_CLOSEFIGURE); 976 AddPathPoint(x, y, FXPT_LINETO | FXPT_CLOSEFIGURE);
982 } 977 }
983 978
984 void CPDF_StreamContentParser::Handle_SetRGBColor_Fill() { 979 void CPDF_StreamContentParser::Handle_SetRGBColor_Fill() {
985 if (m_ParamCount != 3) 980 if (m_ParamCount != 3)
986 return; 981 return;
987 982
988 FX_FLOAT values[3]; 983 FX_FLOAT values[3];
989 for (int i = 0; i < 3; i++) 984 for (int i = 0; i < 3; i++) {
990 values[i] = GetNumber(2 - i); 985 values[i] = GetNumber(2 - i);
991 986 }
992 m_pCurStates->m_ColorState.MakePrivateCopy(); 987 CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB);
993 m_pCurStates->m_ColorState->SetFillColor( 988 m_pCurStates->m_ColorState.SetFillColor(pCS, values, 3);
994 CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB), values, 3);
995 } 989 }
996 990
997 void CPDF_StreamContentParser::Handle_SetRGBColor_Stroke() { 991 void CPDF_StreamContentParser::Handle_SetRGBColor_Stroke() {
998 if (m_ParamCount != 3) 992 if (m_ParamCount != 3)
999 return; 993 return;
1000 994
1001 FX_FLOAT values[3]; 995 FX_FLOAT values[3];
1002 for (int i = 0; i < 3; i++) 996 for (int i = 0; i < 3; i++) {
1003 values[i] = GetNumber(2 - i); 997 values[i] = GetNumber(2 - i);
1004 998 }
1005 m_pCurStates->m_ColorState.MakePrivateCopy(); 999 CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB);
1006 m_pCurStates->m_ColorState->SetStrokeColor( 1000 m_pCurStates->m_ColorState.SetStrokeColor(pCS, values, 3);
1007 CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB), values, 3);
1008 } 1001 }
1009 1002
1010 void CPDF_StreamContentParser::Handle_SetRenderIntent() {} 1003 void CPDF_StreamContentParser::Handle_SetRenderIntent() {}
1011 1004
1012 void CPDF_StreamContentParser::Handle_CloseStrokePath() { 1005 void CPDF_StreamContentParser::Handle_CloseStrokePath() {
1013 Handle_ClosePath(); 1006 Handle_ClosePath();
1014 AddPathObject(0, TRUE); 1007 AddPathObject(0, TRUE);
1015 } 1008 }
1016 1009
1017 void CPDF_StreamContentParser::Handle_StrokePath() { 1010 void CPDF_StreamContentParser::Handle_StrokePath() {
1018 AddPathObject(0, TRUE); 1011 AddPathObject(0, TRUE);
1019 } 1012 }
1020 1013
1021 void CPDF_StreamContentParser::Handle_SetColor_Fill() { 1014 void CPDF_StreamContentParser::Handle_SetColor_Fill() {
1022 FX_FLOAT values[4]; 1015 FX_FLOAT values[4];
1023 uint32_t nargs = std::min(m_ParamCount, 4u); 1016 int nargs = m_ParamCount;
1024 for (uint32_t i = 0; i < nargs; i++) 1017 if (nargs > 4) {
1018 nargs = 4;
1019 }
1020 for (int i = 0; i < nargs; i++) {
1025 values[i] = GetNumber(nargs - i - 1); 1021 values[i] = GetNumber(nargs - i - 1);
1026 1022 }
1027 m_pCurStates->m_ColorState.MakePrivateCopy(); 1023 m_pCurStates->m_ColorState.SetFillColor(nullptr, values, nargs);
1028 m_pCurStates->m_ColorState->SetFillColor(nullptr, values, nargs);
1029 } 1024 }
1030 1025
1031 void CPDF_StreamContentParser::Handle_SetColor_Stroke() { 1026 void CPDF_StreamContentParser::Handle_SetColor_Stroke() {
1032 FX_FLOAT values[4]; 1027 FX_FLOAT values[4];
1033 uint32_t nargs = std::min(m_ParamCount, 4u); 1028 int nargs = m_ParamCount;
1034 for (uint32_t i = 0; i < nargs; i++) 1029 if (nargs > 4) {
1030 nargs = 4;
1031 }
1032 for (int i = 0; i < nargs; i++) {
1035 values[i] = GetNumber(nargs - i - 1); 1033 values[i] = GetNumber(nargs - i - 1);
1036 1034 }
1037 m_pCurStates->m_ColorState.MakePrivateCopy(); 1035 m_pCurStates->m_ColorState.SetStrokeColor(nullptr, values, nargs);
1038 m_pCurStates->m_ColorState->SetStrokeColor(nullptr, values, nargs);
1039 } 1036 }
1040 1037
1041 void CPDF_StreamContentParser::Handle_SetColorPS_Fill() { 1038 void CPDF_StreamContentParser::Handle_SetColorPS_Fill() {
1042 CPDF_Object* pLastParam = GetObject(0); 1039 CPDF_Object* pLastParam = GetObject(0);
1043 if (!pLastParam) { 1040 if (!pLastParam) {
1044 return; 1041 return;
1045 } 1042 }
1046 uint32_t nargs = m_ParamCount; 1043 uint32_t nargs = m_ParamCount;
1047 uint32_t nvalues = nargs; 1044 uint32_t nvalues = nargs;
1048 if (pLastParam->IsName()) 1045 if (pLastParam->IsName())
1049 nvalues--; 1046 nvalues--;
1050 FX_FLOAT* values = nullptr; 1047 FX_FLOAT* values = nullptr;
1051 if (nvalues) { 1048 if (nvalues) {
1052 values = FX_Alloc(FX_FLOAT, nvalues); 1049 values = FX_Alloc(FX_FLOAT, nvalues);
1053 for (uint32_t i = 0; i < nvalues; i++) { 1050 for (uint32_t i = 0; i < nvalues; i++) {
1054 values[i] = GetNumber(nargs - i - 1); 1051 values[i] = GetNumber(nargs - i - 1);
1055 } 1052 }
1056 } 1053 }
1057 if (nvalues != nargs) { 1054 if (nvalues != nargs) {
1058 CPDF_Pattern* pPattern = FindPattern(GetString(0), false); 1055 CPDF_Pattern* pPattern = FindPattern(GetString(0), false);
1059 if (pPattern) { 1056 if (pPattern) {
1060 m_pCurStates->m_ColorState.MakePrivateCopy(); 1057 m_pCurStates->m_ColorState.SetFillPattern(pPattern, values, nvalues);
1061 m_pCurStates->m_ColorState->SetFillPattern(pPattern, values, nvalues);
1062 } 1058 }
1063 } else { 1059 } else {
1064 m_pCurStates->m_ColorState.MakePrivateCopy(); 1060 m_pCurStates->m_ColorState.SetFillColor(nullptr, values, nvalues);
1065 m_pCurStates->m_ColorState->SetFillColor(nullptr, values, nvalues);
1066 } 1061 }
1067 FX_Free(values); 1062 FX_Free(values);
1068 } 1063 }
1069 1064
1070 void CPDF_StreamContentParser::Handle_SetColorPS_Stroke() { 1065 void CPDF_StreamContentParser::Handle_SetColorPS_Stroke() {
1071 CPDF_Object* pLastParam = GetObject(0); 1066 CPDF_Object* pLastParam = GetObject(0);
1072 if (!pLastParam) { 1067 if (!pLastParam) {
1073 return; 1068 return;
1074 } 1069 }
1075 int nargs = m_ParamCount; 1070 int nargs = m_ParamCount;
1076 int nvalues = nargs; 1071 int nvalues = nargs;
1077 if (pLastParam->IsName()) 1072 if (pLastParam->IsName())
1078 nvalues--; 1073 nvalues--;
1079 1074
1080 FX_FLOAT* values = nullptr; 1075 FX_FLOAT* values = nullptr;
1081 if (nvalues) { 1076 if (nvalues) {
1082 values = FX_Alloc(FX_FLOAT, nvalues); 1077 values = FX_Alloc(FX_FLOAT, nvalues);
1083 for (int i = 0; i < nvalues; i++) { 1078 for (int i = 0; i < nvalues; i++) {
1084 values[i] = GetNumber(nargs - i - 1); 1079 values[i] = GetNumber(nargs - i - 1);
1085 } 1080 }
1086 } 1081 }
1087 if (nvalues != nargs) { 1082 if (nvalues != nargs) {
1088 CPDF_Pattern* pPattern = FindPattern(GetString(0), false); 1083 CPDF_Pattern* pPattern = FindPattern(GetString(0), false);
1089 if (pPattern) { 1084 if (pPattern) {
1090 m_pCurStates->m_ColorState.MakePrivateCopy(); 1085 m_pCurStates->m_ColorState.SetStrokePattern(pPattern, values, nvalues);
1091 m_pCurStates->m_ColorState->SetStrokePattern(pPattern, values, nvalues);
1092 } 1086 }
1093 } else { 1087 } else {
1094 m_pCurStates->m_ColorState.MakePrivateCopy(); 1088 m_pCurStates->m_ColorState.SetStrokeColor(nullptr, values, nvalues);
1095 m_pCurStates->m_ColorState->SetStrokeColor(nullptr, values, nvalues);
1096 } 1089 }
1097 FX_Free(values); 1090 FX_Free(values);
1098 } 1091 }
1099 1092
1100 void CPDF_StreamContentParser::Handle_ShadeFill() { 1093 void CPDF_StreamContentParser::Handle_ShadeFill() {
1101 CPDF_Pattern* pPattern = FindPattern(GetString(0), true); 1094 CPDF_Pattern* pPattern = FindPattern(GetString(0), true);
1102 if (!pPattern) 1095 if (!pPattern)
1103 return; 1096 return;
1104 1097
1105 CPDF_ShadingPattern* pShading = pPattern->AsShadingPattern(); 1098 CPDF_ShadingPattern* pShading = pPattern->AsShadingPattern();
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
1702 } else { 1695 } else {
1703 PDF_ReplaceAbbr(pElement); 1696 PDF_ReplaceAbbr(pElement);
1704 } 1697 }
1705 } 1698 }
1706 break; 1699 break;
1707 } 1700 }
1708 default: 1701 default:
1709 break; 1702 break;
1710 } 1703 }
1711 } 1704 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_page/cpdf_graphicstates.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