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

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

Issue 2368433003: Make CPDF_ColorSpace::Load() return a unique_ptr (Closed)
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 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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/include/cpdf_colorspace.h" 7 #include "core/fpdfapi/fpdf_page/include/cpdf_colorspace.h"
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 FX_FLOAT& value, 214 FX_FLOAT& value,
215 FX_FLOAT& min, 215 FX_FLOAT& min,
216 FX_FLOAT& max) const override; 216 FX_FLOAT& max) const override;
217 FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; 217 FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
218 FX_BOOL GetRGB(FX_FLOAT* pBuf, 218 FX_BOOL GetRGB(FX_FLOAT* pBuf,
219 FX_FLOAT& R, 219 FX_FLOAT& R,
220 FX_FLOAT& G, 220 FX_FLOAT& G,
221 FX_FLOAT& B) const override; 221 FX_FLOAT& B) const override;
222 void EnableStdConversion(FX_BOOL bEnabled) override; 222 void EnableStdConversion(FX_BOOL bEnabled) override;
223 223
224 CPDF_ColorSpace* m_pAltCS; 224 std::unique_ptr<CPDF_ColorSpace> m_pAltCS;
225 std::unique_ptr<CPDF_Function> m_pFunc; 225 std::unique_ptr<CPDF_Function> m_pFunc;
226 enum { None, All, Colorant } m_Type; 226 enum { None, All, Colorant } m_Type;
227 }; 227 };
228 228
229 class CPDF_DeviceNCS : public CPDF_ColorSpace { 229 class CPDF_DeviceNCS : public CPDF_ColorSpace {
230 public: 230 public:
231 explicit CPDF_DeviceNCS(CPDF_Document* pDoc); 231 explicit CPDF_DeviceNCS(CPDF_Document* pDoc);
232 ~CPDF_DeviceNCS() override; 232 ~CPDF_DeviceNCS() override;
233 233
234 // CPDF_ColorSpace: 234 // CPDF_ColorSpace:
235 void GetDefaultValue(int iComponent, 235 void GetDefaultValue(int iComponent,
236 FX_FLOAT& value, 236 FX_FLOAT& value,
237 FX_FLOAT& min, 237 FX_FLOAT& min,
238 FX_FLOAT& max) const override; 238 FX_FLOAT& max) const override;
239 FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; 239 FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
240 FX_BOOL GetRGB(FX_FLOAT* pBuf, 240 FX_BOOL GetRGB(FX_FLOAT* pBuf,
241 FX_FLOAT& R, 241 FX_FLOAT& R,
242 FX_FLOAT& G, 242 FX_FLOAT& G,
243 FX_FLOAT& B) const override; 243 FX_FLOAT& B) const override;
244 void EnableStdConversion(FX_BOOL bEnabled) override; 244 void EnableStdConversion(FX_BOOL bEnabled) override;
245 245
246 CPDF_ColorSpace* m_pAltCS; 246 std::unique_ptr<CPDF_ColorSpace> m_pAltCS;
247 std::unique_ptr<CPDF_Function> m_pFunc; 247 std::unique_ptr<CPDF_Function> m_pFunc;
248 }; 248 };
249 249
250 FX_FLOAT RGB_Conversion(FX_FLOAT colorComponent) { 250 FX_FLOAT RGB_Conversion(FX_FLOAT colorComponent) {
251 if (colorComponent > 1) 251 if (colorComponent > 1)
252 colorComponent = 1; 252 colorComponent = 1;
253 if (colorComponent < 0) 253 if (colorComponent < 0)
254 colorComponent = 0; 254 colorComponent = 0;
255 255
256 int scale = (int)(colorComponent * 1023); 256 int scale = (int)(colorComponent * 1023);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 306
307 R = RGB_Conversion(RGB.a); 307 R = RGB_Conversion(RGB.a);
308 G = RGB_Conversion(RGB.b); 308 G = RGB_Conversion(RGB.b);
309 B = RGB_Conversion(RGB.c); 309 B = RGB_Conversion(RGB.c);
310 } 310 }
311 311
312 } // namespace 312 } // namespace
313 313
314 CPDF_ColorSpace* CPDF_ColorSpace::ColorspaceFromName( 314 CPDF_ColorSpace* CPDF_ColorSpace::ColorspaceFromName(
315 const CFX_ByteString& name) { 315 const CFX_ByteString& name) {
316 if (name == "DeviceRGB" || name == "RGB") { 316 if (name == "DeviceRGB" || name == "RGB")
317 return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); 317 return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB);
318 } 318 if (name == "DeviceGray" || name == "G")
319 if (name == "DeviceGray" || name == "G") {
320 return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); 319 return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY);
321 } 320 if (name == "DeviceCMYK" || name == "CMYK")
322 if (name == "DeviceCMYK" || name == "CMYK") {
323 return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); 321 return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK);
324 } 322 if (name == "Pattern")
325 if (name == "Pattern") {
326 return CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); 323 return CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN);
327 }
328 return nullptr; 324 return nullptr;
329 } 325 }
330 326
331 CPDF_ColorSpace* CPDF_ColorSpace::GetStockCS(int family) { 327 CPDF_ColorSpace* CPDF_ColorSpace::GetStockCS(int family) {
332 return CPDF_ModuleMgr::Get()->GetPageModule()->GetStockCS(family); 328 return CPDF_ModuleMgr::Get()->GetPageModule()->GetStockCS(family);
333 } 329 }
334 330
335 CPDF_ColorSpace* CPDF_ColorSpace::Load(CPDF_Document* pDoc, CPDF_Object* pObj) { 331 std::unique_ptr<CPDF_ColorSpace> CPDF_ColorSpace::Load(CPDF_Document* pDoc,
332 CPDF_Object* pObj) {
336 if (!pObj) 333 if (!pObj)
337 return nullptr; 334 return std::unique_ptr<CPDF_ColorSpace>();
338 if (pObj->IsName())
339 return ColorspaceFromName(pObj->GetString());
340 335
336 if (pObj->IsName()) {
337 return std::unique_ptr<CPDF_ColorSpace>(
338 ColorspaceFromName(pObj->GetString()));
339 }
341 if (CPDF_Stream* pStream = pObj->AsStream()) { 340 if (CPDF_Stream* pStream = pObj->AsStream()) {
342 CPDF_Dictionary* pDict = pStream->GetDict(); 341 CPDF_Dictionary* pDict = pStream->GetDict();
343 if (!pDict) 342 if (!pDict)
344 return nullptr; 343 return std::unique_ptr<CPDF_ColorSpace>();
345 344
346 for (const auto& it : *pDict) { 345 for (const auto& it : *pDict) {
347 CPDF_ColorSpace* pRet = nullptr; 346 std::unique_ptr<CPDF_ColorSpace> pRet;
348 CPDF_Object* pValue = it.second; 347 CPDF_Object* pValue = it.second;
349 if (ToName(pValue)) 348 if (ToName(pValue))
350 pRet = ColorspaceFromName(pValue->GetString()); 349 pRet.reset(ColorspaceFromName(pValue->GetString()));
351 if (pRet) 350 if (pRet)
352 return pRet; 351 return pRet;
353 } 352 }
354 return nullptr; 353 return std::unique_ptr<CPDF_ColorSpace>();
355 } 354 }
356 355
357 CPDF_Array* pArray = pObj->AsArray(); 356 CPDF_Array* pArray = pObj->AsArray();
358 if (!pArray || pArray->IsEmpty()) 357 if (!pArray || pArray->IsEmpty())
359 return nullptr; 358 return std::unique_ptr<CPDF_ColorSpace>();
360 359
361 CPDF_Object* pFamilyObj = pArray->GetDirectObjectAt(0); 360 CPDF_Object* pFamilyObj = pArray->GetDirectObjectAt(0);
362 if (!pFamilyObj) 361 if (!pFamilyObj)
363 return nullptr; 362 return std::unique_ptr<CPDF_ColorSpace>();
364 363
365 CFX_ByteString familyname = pFamilyObj->GetString(); 364 CFX_ByteString familyname = pFamilyObj->GetString();
366 if (pArray->GetCount() == 1) 365 if (pArray->GetCount() == 1)
367 return ColorspaceFromName(familyname); 366 return std::unique_ptr<CPDF_ColorSpace>(ColorspaceFromName(familyname));
368 367
369 CPDF_ColorSpace* pCS = nullptr; 368 std::unique_ptr<CPDF_ColorSpace> pCS;
370 uint32_t id = familyname.GetID(); 369 uint32_t id = familyname.GetID();
371 if (id == FXBSTR_ID('C', 'a', 'l', 'G')) { 370 if (id == FXBSTR_ID('C', 'a', 'l', 'G')) {
372 pCS = new CPDF_CalGray(pDoc); 371 pCS.reset(new CPDF_CalGray(pDoc));
373 } else if (id == FXBSTR_ID('C', 'a', 'l', 'R')) { 372 } else if (id == FXBSTR_ID('C', 'a', 'l', 'R')) {
374 pCS = new CPDF_CalRGB(pDoc); 373 pCS.reset(new CPDF_CalRGB(pDoc));
375 } else if (id == FXBSTR_ID('L', 'a', 'b', 0)) { 374 } else if (id == FXBSTR_ID('L', 'a', 'b', 0)) {
376 pCS = new CPDF_LabCS(pDoc); 375 pCS.reset(new CPDF_LabCS(pDoc));
377 } else if (id == FXBSTR_ID('I', 'C', 'C', 'B')) { 376 } else if (id == FXBSTR_ID('I', 'C', 'C', 'B')) {
378 pCS = new CPDF_ICCBasedCS(pDoc); 377 pCS.reset(new CPDF_ICCBasedCS(pDoc));
379 } else if (id == FXBSTR_ID('I', 'n', 'd', 'e') || 378 } else if (id == FXBSTR_ID('I', 'n', 'd', 'e') ||
380 id == FXBSTR_ID('I', 0, 0, 0)) { 379 id == FXBSTR_ID('I', 0, 0, 0)) {
381 pCS = new CPDF_IndexedCS(pDoc); 380 pCS.reset(new CPDF_IndexedCS(pDoc));
382 } else if (id == FXBSTR_ID('S', 'e', 'p', 'a')) { 381 } else if (id == FXBSTR_ID('S', 'e', 'p', 'a')) {
383 pCS = new CPDF_SeparationCS(pDoc); 382 pCS.reset(new CPDF_SeparationCS(pDoc));
384 } else if (id == FXBSTR_ID('D', 'e', 'v', 'i')) { 383 } else if (id == FXBSTR_ID('D', 'e', 'v', 'i')) {
385 pCS = new CPDF_DeviceNCS(pDoc); 384 pCS.reset(new CPDF_DeviceNCS(pDoc));
386 } else if (id == FXBSTR_ID('P', 'a', 't', 't')) { 385 } else if (id == FXBSTR_ID('P', 'a', 't', 't')) {
387 pCS = new CPDF_PatternCS(pDoc); 386 pCS.reset(new CPDF_PatternCS(pDoc));
388 } else { 387 } else {
389 return nullptr; 388 return std::unique_ptr<CPDF_ColorSpace>();
390 } 389 }
391 pCS->m_pArray = pArray; 390 pCS->m_pArray = pArray;
392 if (!pCS->v_Load(pDoc, pArray)) { 391 if (!pCS->v_Load(pDoc, pArray))
393 pCS->ReleaseCS(); 392 return std::unique_ptr<CPDF_ColorSpace>();
394 return nullptr; 393
395 }
396 return pCS; 394 return pCS;
397 } 395 }
398 396
399 void CPDF_ColorSpace::ReleaseCS() { 397 void CPDF_ColorSpace::Release() {
400 if (this == GetStockCS(PDFCS_DEVICERGB)) { 398 if (this == GetStockCS(PDFCS_DEVICERGB) ||
401 return; 399 this == GetStockCS(PDFCS_DEVICEGRAY) ||
402 } 400 this == GetStockCS(PDFCS_DEVICECMYK) ||
403 if (this == GetStockCS(PDFCS_DEVICEGRAY)) { 401 this == GetStockCS(PDFCS_PATTERN)) {
404 return;
405 }
406 if (this == GetStockCS(PDFCS_DEVICECMYK)) {
407 return;
408 }
409 if (this == GetStockCS(PDFCS_PATTERN)) {
410 return; 402 return;
411 } 403 }
412 delete this; 404 delete this;
413 } 405 }
414 406
415 int CPDF_ColorSpace::GetBufSize() const { 407 int CPDF_ColorSpace::GetBufSize() const {
416 if (m_Family == PDFCS_PATTERN) { 408 if (m_Family == PDFCS_PATTERN) {
417 return sizeof(PatternValue); 409 return sizeof(PatternValue);
418 } 410 }
419 return m_nComponents * sizeof(FX_FLOAT); 411 return m_nComponents * sizeof(FX_FLOAT);
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 m_pAlterCS(nullptr), 817 m_pAlterCS(nullptr),
826 m_pProfile(nullptr), 818 m_pProfile(nullptr),
827 m_pCache(nullptr), 819 m_pCache(nullptr),
828 m_pRanges(nullptr), 820 m_pRanges(nullptr),
829 m_bOwn(FALSE) {} 821 m_bOwn(FALSE) {}
830 822
831 CPDF_ICCBasedCS::~CPDF_ICCBasedCS() { 823 CPDF_ICCBasedCS::~CPDF_ICCBasedCS() {
832 FX_Free(m_pCache); 824 FX_Free(m_pCache);
833 FX_Free(m_pRanges); 825 FX_Free(m_pRanges);
834 if (m_pAlterCS && m_bOwn) 826 if (m_pAlterCS && m_bOwn)
835 m_pAlterCS->ReleaseCS(); 827 m_pAlterCS->Release();
836 if (m_pProfile && m_pDocument) 828 if (m_pProfile && m_pDocument)
837 m_pDocument->GetPageData()->ReleaseIccProfile(m_pProfile); 829 m_pDocument->GetPageData()->ReleaseIccProfile(m_pProfile);
838 } 830 }
839 831
840 FX_BOOL CPDF_ICCBasedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { 832 FX_BOOL CPDF_ICCBasedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
841 CPDF_Stream* pStream = pArray->GetStreamAt(1); 833 CPDF_Stream* pStream = pArray->GetStreamAt(1);
842 if (!pStream) 834 if (!pStream)
843 return FALSE; 835 return FALSE;
844 836
845 m_pProfile = pDoc->LoadIccProfile(pStream); 837 m_pProfile = pDoc->LoadIccProfile(pStream);
846 if (!m_pProfile) 838 if (!m_pProfile)
847 return FALSE; 839 return FALSE;
848 840
849 m_nComponents = 841 m_nComponents =
850 m_pProfile 842 m_pProfile
851 ->GetComponents(); // Try using the nComponents from ICC profile 843 ->GetComponents(); // Try using the nComponents from ICC profile
852 CPDF_Dictionary* pDict = pStream->GetDict(); 844 CPDF_Dictionary* pDict = pStream->GetDict();
853 if (!m_pProfile->m_pTransform) { // No valid ICC profile or using sRGB 845 if (!m_pProfile->m_pTransform) { // No valid ICC profile or using sRGB
854 CPDF_Object* pAlterCSObj = 846 CPDF_Object* pAlterCSObj =
855 pDict ? pDict->GetDirectObjectFor("Alternate") : nullptr; 847 pDict ? pDict->GetDirectObjectFor("Alternate") : nullptr;
856 if (pAlterCSObj) { 848 if (pAlterCSObj) {
857 CPDF_ColorSpace* pAlterCS = CPDF_ColorSpace::Load(pDoc, pAlterCSObj); 849 std::unique_ptr<CPDF_ColorSpace> pAlterCS =
850 CPDF_ColorSpace::Load(pDoc, pAlterCSObj);
858 if (pAlterCS) { 851 if (pAlterCS) {
859 if (m_nComponents == 0) { // NO valid ICC profile 852 if (m_nComponents == 0) { // NO valid ICC profile
860 if (pAlterCS->CountComponents() > 0) { // Use Alternative colorspace 853 if (pAlterCS->CountComponents() > 0) { // Use Alternative colorspace
861 m_nComponents = pAlterCS->CountComponents(); 854 m_nComponents = pAlterCS->CountComponents();
862 m_pAlterCS = pAlterCS; 855 m_pAlterCS = pAlterCS.release();
863 m_bOwn = TRUE; 856 m_bOwn = TRUE;
864 } else { // No valid alternative colorspace 857 } else { // No valid alternative colorspace
865 pAlterCS->ReleaseCS();
866 int32_t nDictComponents = pDict ? pDict->GetIntegerFor("N") : 0; 858 int32_t nDictComponents = pDict ? pDict->GetIntegerFor("N") : 0;
867 if (nDictComponents != 1 && nDictComponents != 3 && 859 if (nDictComponents != 1 && nDictComponents != 3 &&
868 nDictComponents != 4) { 860 nDictComponents != 4) {
869 return FALSE; 861 return FALSE;
870 } 862 }
871 m_nComponents = nDictComponents; 863 m_nComponents = nDictComponents;
872 } 864 }
873
874 } else { // Using sRGB 865 } else { // Using sRGB
875 if (pAlterCS->CountComponents() != m_nComponents) { 866 if (pAlterCS->CountComponents() == m_nComponents) {
876 pAlterCS->ReleaseCS(); 867 m_pAlterCS = pAlterCS.release();
877 } else {
878 m_pAlterCS = pAlterCS;
879 m_bOwn = TRUE; 868 m_bOwn = TRUE;
880 } 869 }
881 } 870 }
882 } 871 }
883 } 872 }
884 if (!m_pAlterCS) { 873 if (!m_pAlterCS) {
885 if (m_nComponents == 1) 874 if (m_nComponents == 1)
886 m_pAlterCS = GetStockCS(PDFCS_DEVICEGRAY); 875 m_pAlterCS = GetStockCS(PDFCS_DEVICEGRAY);
887 else if (m_nComponents == 3) 876 else if (m_nComponents == 3)
888 m_pAlterCS = GetStockCS(PDFCS_DEVICERGB); 877 m_pAlterCS = GetStockCS(PDFCS_DEVICERGB);
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
1148 } 1137 }
1149 R = G = B = 0.75f; 1138 R = G = B = 0.75f;
1150 return FALSE; 1139 return FALSE;
1151 } 1140 }
1152 1141
1153 CPDF_ColorSpace* CPDF_PatternCS::GetBaseCS() const { 1142 CPDF_ColorSpace* CPDF_PatternCS::GetBaseCS() const {
1154 return m_pBaseCS; 1143 return m_pBaseCS;
1155 } 1144 }
1156 1145
1157 CPDF_SeparationCS::CPDF_SeparationCS(CPDF_Document* pDoc) 1146 CPDF_SeparationCS::CPDF_SeparationCS(CPDF_Document* pDoc)
1158 : CPDF_ColorSpace(pDoc, PDFCS_SEPARATION, 1), m_pAltCS(nullptr) {} 1147 : CPDF_ColorSpace(pDoc, PDFCS_SEPARATION, 1) {}
1159 1148
1160 CPDF_SeparationCS::~CPDF_SeparationCS() { 1149 CPDF_SeparationCS::~CPDF_SeparationCS() {}
1161 if (m_pAltCS)
1162 m_pAltCS->ReleaseCS();
1163 }
1164 1150
1165 void CPDF_SeparationCS::GetDefaultValue(int iComponent, 1151 void CPDF_SeparationCS::GetDefaultValue(int iComponent,
1166 FX_FLOAT& value, 1152 FX_FLOAT& value,
1167 FX_FLOAT& min, 1153 FX_FLOAT& min,
1168 FX_FLOAT& max) const { 1154 FX_FLOAT& max) const {
1169 value = 1.0f; 1155 value = 1.0f;
1170 min = 0; 1156 min = 0;
1171 max = 1.0f; 1157 max = 1.0f;
1172 } 1158 }
1173 1159
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 return FALSE; 1215 return FALSE;
1230 } 1216 }
1231 1217
1232 void CPDF_SeparationCS::EnableStdConversion(FX_BOOL bEnabled) { 1218 void CPDF_SeparationCS::EnableStdConversion(FX_BOOL bEnabled) {
1233 CPDF_ColorSpace::EnableStdConversion(bEnabled); 1219 CPDF_ColorSpace::EnableStdConversion(bEnabled);
1234 if (m_pAltCS) 1220 if (m_pAltCS)
1235 m_pAltCS->EnableStdConversion(bEnabled); 1221 m_pAltCS->EnableStdConversion(bEnabled);
1236 } 1222 }
1237 1223
1238 CPDF_DeviceNCS::CPDF_DeviceNCS(CPDF_Document* pDoc) 1224 CPDF_DeviceNCS::CPDF_DeviceNCS(CPDF_Document* pDoc)
1239 : CPDF_ColorSpace(pDoc, PDFCS_DEVICEN, 0), m_pAltCS(nullptr) {} 1225 : CPDF_ColorSpace(pDoc, PDFCS_DEVICEN, 0) {}
1240 1226
1241 CPDF_DeviceNCS::~CPDF_DeviceNCS() { 1227 CPDF_DeviceNCS::~CPDF_DeviceNCS() {}
1242 if (m_pAltCS)
1243 m_pAltCS->ReleaseCS();
1244 }
1245 1228
1246 void CPDF_DeviceNCS::GetDefaultValue(int iComponent, 1229 void CPDF_DeviceNCS::GetDefaultValue(int iComponent,
1247 FX_FLOAT& value, 1230 FX_FLOAT& value,
1248 FX_FLOAT& min, 1231 FX_FLOAT& min,
1249 FX_FLOAT& max) const { 1232 FX_FLOAT& max) const {
1250 value = 1.0f; 1233 value = 1.0f;
1251 min = 0; 1234 min = 0;
1252 max = 1.0f; 1235 max = 1.0f;
1253 } 1236 }
1254 1237
(...skipping 30 matching lines...) Expand all
1285 1268
1286 return m_pAltCS->GetRGB(results, R, G, B); 1269 return m_pAltCS->GetRGB(results, R, G, B);
1287 } 1270 }
1288 1271
1289 void CPDF_DeviceNCS::EnableStdConversion(FX_BOOL bEnabled) { 1272 void CPDF_DeviceNCS::EnableStdConversion(FX_BOOL bEnabled) {
1290 CPDF_ColorSpace::EnableStdConversion(bEnabled); 1273 CPDF_ColorSpace::EnableStdConversion(bEnabled);
1291 if (m_pAltCS) { 1274 if (m_pAltCS) {
1292 m_pAltCS->EnableStdConversion(bEnabled); 1275 m_pAltCS->EnableStdConversion(bEnabled);
1293 } 1276 }
1294 } 1277 }
OLDNEW
« no previous file with comments | « no previous file | core/fpdfapi/fpdf_page/fpdf_page_doc.cpp » ('j') | core/fpdfapi/fpdf_page/include/cpdf_colorspace.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698