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

Side by Side Diff: core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp

Issue 1876023003: Remove ICodec_* Interfaces. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 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_render/fpdf_render_image.cpp ('k') | core/fpdfapi/fpdf_render/render_int.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 "core/fpdfapi/fpdf_render/render_int.h" 7 #include "core/fpdfapi/fpdf_render/render_int.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 template <typename T> 63 template <typename T>
64 T ClampValue(T value, T max_value) { 64 T ClampValue(T value, T max_value) {
65 value = std::min(value, max_value); 65 value = std::min(value, max_value);
66 value = std::max<T>(0, value); 66 value = std::max<T>(0, value);
67 return value; 67 return value;
68 } 68 }
69 69
70 // Wrapper class to use with std::unique_ptr for CJPX_Decoder. 70 // Wrapper class to use with std::unique_ptr for CJPX_Decoder.
71 class JpxBitMapContext { 71 class JpxBitMapContext {
72 public: 72 public:
73 explicit JpxBitMapContext(ICodec_JpxModule* jpx_module) 73 explicit JpxBitMapContext(CCodec_JpxModule* jpx_module)
74 : jpx_module_(jpx_module), decoder_(nullptr) {} 74 : jpx_module_(jpx_module), decoder_(nullptr) {}
75 75
76 ~JpxBitMapContext() { jpx_module_->DestroyDecoder(decoder_); } 76 ~JpxBitMapContext() { jpx_module_->DestroyDecoder(decoder_); }
77 77
78 // Takes ownership of |decoder|. 78 // Takes ownership of |decoder|.
79 void set_decoder(CJPX_Decoder* decoder) { decoder_ = decoder; } 79 void set_decoder(CJPX_Decoder* decoder) { decoder_ = decoder; }
80 80
81 CJPX_Decoder* decoder() { return decoder_; } 81 CJPX_Decoder* decoder() { return decoder_; }
82 82
83 private: 83 private:
84 ICodec_JpxModule* const jpx_module_; // Weak pointer. 84 CCodec_JpxModule* const jpx_module_; // Weak pointer.
85 CJPX_Decoder* decoder_; // Decoder, owned. 85 CJPX_Decoder* decoder_; // Decoder, owned.
86 86
87 // Disallow evil constructors 87 // Disallow evil constructors
88 JpxBitMapContext(const JpxBitMapContext&); 88 JpxBitMapContext(const JpxBitMapContext&);
89 void operator=(const JpxBitMapContext&); 89 void operator=(const JpxBitMapContext&);
90 }; 90 };
91 91
92 const int kMaxImageDimension = 0x01FFFF; 92 const int kMaxImageDimension = 0x01FFFF;
93 93
94 } // namespace 94 } // namespace
(...skipping 27 matching lines...) Expand all
122 CPDF_DIBSource::~CPDF_DIBSource() { 122 CPDF_DIBSource::~CPDF_DIBSource() {
123 FX_Free(m_pMaskedLine); 123 FX_Free(m_pMaskedLine);
124 FX_Free(m_pLineBuf); 124 FX_Free(m_pLineBuf);
125 m_pCachedBitmap.reset(); 125 m_pCachedBitmap.reset();
126 FX_Free(m_pCompData); 126 FX_Free(m_pCompData);
127 CPDF_ColorSpace* pCS = m_pColorSpace; 127 CPDF_ColorSpace* pCS = m_pColorSpace;
128 if (pCS && m_pDocument) { 128 if (pCS && m_pDocument) {
129 m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); 129 m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray());
130 } 130 }
131 if (m_pJbig2Context) { 131 if (m_pJbig2Context) {
132 ICodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module(); 132 CCodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module();
133 pJbig2Module->DestroyJbig2Context(m_pJbig2Context); 133 pJbig2Module->DestroyJbig2Context(m_pJbig2Context);
134 } 134 }
135 } 135 }
136 136
137 CFX_DIBitmap* CPDF_DIBSource::GetBitmap() const { 137 CFX_DIBitmap* CPDF_DIBSource::GetBitmap() const {
138 return m_pCachedBitmap ? m_pCachedBitmap.get() : Clone(); 138 return m_pCachedBitmap ? m_pCachedBitmap.get() : Clone();
139 } 139 }
140 140
141 void CPDF_DIBSource::ReleaseBitmap(CFX_DIBitmap* pBitmap) const { 141 void CPDF_DIBSource::ReleaseBitmap(CFX_DIBitmap* pBitmap) const {
142 if (pBitmap && pBitmap != m_pCachedBitmap.get()) { 142 if (pBitmap && pBitmap != m_pCachedBitmap.get()) {
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 return ret; 337 return ret;
338 } 338 }
339 339
340 int CPDF_DIBSource::ContinueLoadDIBSource(IFX_Pause* pPause) { 340 int CPDF_DIBSource::ContinueLoadDIBSource(IFX_Pause* pPause) {
341 FXCODEC_STATUS ret; 341 FXCODEC_STATUS ret;
342 if (m_Status == 1) { 342 if (m_Status == 1) {
343 const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder(); 343 const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder();
344 if (decoder == "JPXDecode") { 344 if (decoder == "JPXDecode") {
345 return 0; 345 return 0;
346 } 346 }
347 ICodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module(); 347 CCodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module();
348 if (!m_pJbig2Context) { 348 if (!m_pJbig2Context) {
349 m_pJbig2Context = pJbig2Module->CreateJbig2Context(); 349 m_pJbig2Context = pJbig2Module->CreateJbig2Context();
350 if (m_pStreamAcc->GetImageParam()) { 350 if (m_pStreamAcc->GetImageParam()) {
351 CPDF_Stream* pGlobals = 351 CPDF_Stream* pGlobals =
352 m_pStreamAcc->GetImageParam()->GetStreamBy("JBIG2Globals"); 352 m_pStreamAcc->GetImageParam()->GetStreamBy("JBIG2Globals");
353 if (pGlobals) { 353 if (pGlobals) {
354 m_pGlobalStream.reset(new CPDF_StreamAcc); 354 m_pGlobalStream.reset(new CPDF_StreamAcc);
355 m_pGlobalStream->LoadAllData(pGlobals, FALSE); 355 m_pGlobalStream->LoadAllData(pGlobals, FALSE);
356 } 356 }
357 } 357 }
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 pCompData[i].m_ColorKeyMin = std::max(min_num, 0); 520 pCompData[i].m_ColorKeyMin = std::max(min_num, 0);
521 pCompData[i].m_ColorKeyMax = std::min(max_num, max_data); 521 pCompData[i].m_ColorKeyMax = std::min(max_num, max_data);
522 } 522 }
523 } 523 }
524 bColorKey = TRUE; 524 bColorKey = TRUE;
525 } 525 }
526 } 526 }
527 return pCompData; 527 return pCompData;
528 } 528 }
529 529
530 ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder( 530 CCodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder(
531 const uint8_t* src_buf, 531 const uint8_t* src_buf,
532 uint32_t src_size, 532 uint32_t src_size,
533 int width, 533 int width,
534 int height, 534 int height,
535 const CPDF_Dictionary* pParams); 535 const CPDF_Dictionary* pParams);
536 536
537 ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder( 537 CCodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder(
538 const uint8_t* src_buf, 538 const uint8_t* src_buf,
539 uint32_t src_size, 539 uint32_t src_size,
540 int width, 540 int width,
541 int height, 541 int height,
542 int nComps, 542 int nComps,
543 int bpc, 543 int bpc,
544 const CPDF_Dictionary* pParams); 544 const CPDF_Dictionary* pParams);
545 545
546 int CPDF_DIBSource::CreateDecoder() { 546 int CPDF_DIBSource::CreateDecoder() {
547 const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder(); 547 const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder();
(...skipping 10 matching lines...) Expand all
558 m_pDecoder.reset(FPDFAPI_CreateFaxDecoder(src_data, src_size, m_Width, 558 m_pDecoder.reset(FPDFAPI_CreateFaxDecoder(src_data, src_size, m_Width,
559 m_Height, pParams)); 559 m_Height, pParams));
560 } else if (decoder == "DCTDecode") { 560 } else if (decoder == "DCTDecode") {
561 m_pDecoder.reset(CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder( 561 m_pDecoder.reset(CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder(
562 src_data, src_size, m_Width, m_Height, m_nComponents, 562 src_data, src_size, m_Width, m_Height, m_nComponents,
563 pParams ? pParams->GetIntegerBy("ColorTransform", 1) : 1)); 563 pParams ? pParams->GetIntegerBy("ColorTransform", 1) : 1));
564 if (!m_pDecoder) { 564 if (!m_pDecoder) {
565 FX_BOOL bTransform = FALSE; 565 FX_BOOL bTransform = FALSE;
566 int comps; 566 int comps;
567 int bpc; 567 int bpc;
568 ICodec_JpegModule* pJpegModule = CPDF_ModuleMgr::Get()->GetJpegModule(); 568 CCodec_JpegModule* pJpegModule = CPDF_ModuleMgr::Get()->GetJpegModule();
569 if (pJpegModule->LoadInfo(src_data, src_size, m_Width, m_Height, comps, 569 if (pJpegModule->LoadInfo(src_data, src_size, m_Width, m_Height, comps,
570 bpc, bTransform)) { 570 bpc, bTransform)) {
571 if (m_nComponents != static_cast<uint32_t>(comps)) { 571 if (m_nComponents != static_cast<uint32_t>(comps)) {
572 FX_Free(m_pCompData); 572 FX_Free(m_pCompData);
573 m_nComponents = static_cast<uint32_t>(comps); 573 m_nComponents = static_cast<uint32_t>(comps);
574 if (m_Family == PDFCS_LAB && m_nComponents != 3) { 574 if (m_Family == PDFCS_LAB && m_nComponents != 3) {
575 m_pCompData = nullptr; 575 m_pCompData = nullptr;
576 return 0; 576 return 0;
577 } 577 }
578 m_pCompData = GetDecodeAndMaskArray(m_bDefaultDecode, m_bColorKey); 578 m_pCompData = GetDecodeAndMaskArray(m_bDefaultDecode, m_bColorKey);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 if (!provided_pitch.IsValid()) { 621 if (!provided_pitch.IsValid()) {
622 return 0; 622 return 0;
623 } 623 }
624 if (provided_pitch.ValueOrDie() < requested_pitch.ValueOrDie()) { 624 if (provided_pitch.ValueOrDie() < requested_pitch.ValueOrDie()) {
625 return 0; 625 return 0;
626 } 626 }
627 return 1; 627 return 1;
628 } 628 }
629 629
630 void CPDF_DIBSource::LoadJpxBitmap() { 630 void CPDF_DIBSource::LoadJpxBitmap() {
631 ICodec_JpxModule* pJpxModule = CPDF_ModuleMgr::Get()->GetJpxModule(); 631 CCodec_JpxModule* pJpxModule = CPDF_ModuleMgr::Get()->GetJpxModule();
632 if (!pJpxModule) 632 if (!pJpxModule)
633 return; 633 return;
634 634
635 std::unique_ptr<JpxBitMapContext> context(new JpxBitMapContext(pJpxModule)); 635 std::unique_ptr<JpxBitMapContext> context(new JpxBitMapContext(pJpxModule));
636 context->set_decoder(pJpxModule->CreateDecoder( 636 context->set_decoder(pJpxModule->CreateDecoder(
637 m_pStreamAcc->GetData(), m_pStreamAcc->GetSize(), m_pColorSpace)); 637 m_pStreamAcc->GetData(), m_pStreamAcc->GetSize(), m_pColorSpace));
638 if (!context->decoder()) 638 if (!context->decoder())
639 return; 639 return;
640 640
641 uint32_t width = 0; 641 uint32_t width = 0;
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after
1568 IFX_Pause* pPause) { 1568 IFX_Pause* pPause) {
1569 return LoadHandle->Continue(pPause); 1569 return LoadHandle->Continue(pPause);
1570 } 1570 }
1571 1571
1572 CPDF_ImageLoader::~CPDF_ImageLoader() { 1572 CPDF_ImageLoader::~CPDF_ImageLoader() {
1573 if (!m_bCached) { 1573 if (!m_bCached) {
1574 delete m_pBitmap; 1574 delete m_pBitmap;
1575 delete m_pMask; 1575 delete m_pMask;
1576 } 1576 }
1577 } 1577 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_render/fpdf_render_image.cpp ('k') | core/fpdfapi/fpdf_render/render_int.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698