| OLD | NEW |
| 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/src/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> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "core/fpdfapi/fpdf_page/pageint.h" |
| 13 #include "core/include/fpdfapi/cpdf_array.h" | 14 #include "core/include/fpdfapi/cpdf_array.h" |
| 14 #include "core/include/fpdfapi/cpdf_dictionary.h" | 15 #include "core/include/fpdfapi/cpdf_dictionary.h" |
| 15 #include "core/include/fpdfapi/cpdf_document.h" | 16 #include "core/include/fpdfapi/cpdf_document.h" |
| 16 #include "core/include/fpdfapi/fpdf_module.h" | 17 #include "core/include/fpdfapi/fpdf_module.h" |
| 17 #include "core/include/fpdfapi/fpdf_pageobj.h" | 18 #include "core/include/fpdfapi/fpdf_pageobj.h" |
| 18 #include "core/include/fpdfapi/fpdf_render.h" | 19 #include "core/include/fpdfapi/fpdf_render.h" |
| 19 #include "core/include/fxcodec/fx_codec.h" | 20 #include "core/include/fxcodec/fx_codec.h" |
| 20 #include "core/include/fxcrt/fx_safe_types.h" | 21 #include "core/include/fxcrt/fx_safe_types.h" |
| 21 #include "core/include/fxge/fx_ge.h" | 22 #include "core/include/fxge/fx_ge.h" |
| 22 #include "core/src/fpdfapi/fpdf_page/pageint.h" | |
| 23 | 23 |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 unsigned int GetBits8(const uint8_t* pData, uint64_t bitpos, size_t nbits) { | 26 unsigned int GetBits8(const uint8_t* pData, uint64_t bitpos, size_t nbits) { |
| 27 ASSERT(nbits == 1 || nbits == 2 || nbits == 4 || nbits == 8 || nbits == 16); | 27 ASSERT(nbits == 1 || nbits == 2 || nbits == 4 || nbits == 8 || nbits == 16); |
| 28 ASSERT((bitpos & (nbits - 1)) == 0); | 28 ASSERT((bitpos & (nbits - 1)) == 0); |
| 29 unsigned int byte = pData[bitpos / 8]; | 29 unsigned int byte = pData[bitpos / 8]; |
| 30 if (nbits == 8) { | 30 if (nbits == 8) { |
| 31 return byte; | 31 return byte; |
| 32 } else if (nbits == 16) { | 32 } else if (nbits == 16) { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 value = std::max<T>(0, value); | 64 value = std::max<T>(0, value); |
| 65 return value; | 65 return value; |
| 66 } | 66 } |
| 67 | 67 |
| 68 // Wrapper class to use with std::unique_ptr for CJPX_Decoder. | 68 // Wrapper class to use with std::unique_ptr for CJPX_Decoder. |
| 69 class JpxBitMapContext { | 69 class JpxBitMapContext { |
| 70 public: | 70 public: |
| 71 explicit JpxBitMapContext(ICodec_JpxModule* jpx_module) | 71 explicit JpxBitMapContext(ICodec_JpxModule* jpx_module) |
| 72 : jpx_module_(jpx_module), decoder_(nullptr) {} | 72 : jpx_module_(jpx_module), decoder_(nullptr) {} |
| 73 | 73 |
| 74 ~JpxBitMapContext() { | 74 ~JpxBitMapContext() { jpx_module_->DestroyDecoder(decoder_); } |
| 75 jpx_module_->DestroyDecoder(decoder_); | |
| 76 } | |
| 77 | 75 |
| 78 // Takes ownership of |decoder|. | 76 // Takes ownership of |decoder|. |
| 79 void set_decoder(CJPX_Decoder* decoder) { decoder_ = decoder; } | 77 void set_decoder(CJPX_Decoder* decoder) { decoder_ = decoder; } |
| 80 | 78 |
| 81 CJPX_Decoder* decoder() { return decoder_; } | 79 CJPX_Decoder* decoder() { return decoder_; } |
| 82 | 80 |
| 83 private: | 81 private: |
| 84 ICodec_JpxModule* const jpx_module_; // Weak pointer. | 82 ICodec_JpxModule* const jpx_module_; // Weak pointer. |
| 85 CJPX_Decoder* decoder_; // Decoder, owned. | 83 CJPX_Decoder* decoder_; // Decoder, owned. |
| 86 | 84 |
| (...skipping 1560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1647 IFX_Pause* pPause) { | 1645 IFX_Pause* pPause) { |
| 1648 return LoadHandle->Continue(pPause); | 1646 return LoadHandle->Continue(pPause); |
| 1649 } | 1647 } |
| 1650 | 1648 |
| 1651 CPDF_ImageLoader::~CPDF_ImageLoader() { | 1649 CPDF_ImageLoader::~CPDF_ImageLoader() { |
| 1652 if (!m_bCached) { | 1650 if (!m_bCached) { |
| 1653 delete m_pBitmap; | 1651 delete m_pBitmap; |
| 1654 delete m_pMask; | 1652 delete m_pMask; |
| 1655 } | 1653 } |
| 1656 } | 1654 } |
| OLD | NEW |