| 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/fxcodec/codec/ccodec_progressivedecoder.h" | 7 #include "core/fxcodec/codec/ccodec_progressivedecoder.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> |
| 10 | 11 |
| 11 #include "core/fxcodec/fx_codec.h" | 12 #include "core/fxcodec/fx_codec.h" |
| 12 #include "core/fxge/fx_dib.h" | 13 #include "core/fxge/fx_dib.h" |
| 13 #include "third_party/base/numerics/safe_math.h" | 14 #include "third_party/base/numerics/safe_math.h" |
| 14 | 15 |
| 15 #define FXCODEC_BLOCK_SIZE 4096 | 16 #define FXCODEC_BLOCK_SIZE 4096 |
| 16 | 17 |
| 17 namespace { | 18 namespace { |
| 18 | 19 |
| 19 #if _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_ | 20 #if _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_ |
| (...skipping 2234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2254 delete pDIBitmap; | 2255 delete pDIBitmap; |
| 2255 m_pDeviceBitmap = nullptr; | 2256 m_pDeviceBitmap = nullptr; |
| 2256 m_pFile = nullptr; | 2257 m_pFile = nullptr; |
| 2257 m_status = FXCODEC_STATUS_ERROR; | 2258 m_status = FXCODEC_STATUS_ERROR; |
| 2258 return m_status; | 2259 return m_status; |
| 2259 } | 2260 } |
| 2260 CFX_DIBitmap* pClipBitmap = | 2261 CFX_DIBitmap* pClipBitmap = |
| 2261 (m_clipBox.left == 0 && m_clipBox.top == 0 && | 2262 (m_clipBox.left == 0 && m_clipBox.top == 0 && |
| 2262 m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) | 2263 m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) |
| 2263 ? pDIBitmap | 2264 ? pDIBitmap |
| 2264 : pDIBitmap->Clone(&m_clipBox); | 2265 : pDIBitmap->Clone(&m_clipBox).release(); |
| 2265 if (pDIBitmap != pClipBitmap) { | 2266 if (pDIBitmap != pClipBitmap) { |
| 2266 delete pDIBitmap; | 2267 delete pDIBitmap; |
| 2267 } | 2268 } |
| 2268 if (!pClipBitmap) { | 2269 if (!pClipBitmap) { |
| 2269 m_pDeviceBitmap = nullptr; | 2270 m_pDeviceBitmap = nullptr; |
| 2270 m_pFile = nullptr; | 2271 m_pFile = nullptr; |
| 2271 m_status = FXCODEC_STATUS_ERR_MEMORY; | 2272 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 2272 return m_status; | 2273 return m_status; |
| 2273 } | 2274 } |
| 2274 CFX_DIBitmap* pFormatBitmap = nullptr; | 2275 CFX_DIBitmap* pFormatBitmap = nullptr; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2339 } | 2340 } |
| 2340 if (pClipBitmap != pFormatBitmap) { | 2341 if (pClipBitmap != pFormatBitmap) { |
| 2341 delete pClipBitmap; | 2342 delete pClipBitmap; |
| 2342 } | 2343 } |
| 2343 if (!pFormatBitmap) { | 2344 if (!pFormatBitmap) { |
| 2344 m_pDeviceBitmap = nullptr; | 2345 m_pDeviceBitmap = nullptr; |
| 2345 m_pFile = nullptr; | 2346 m_pFile = nullptr; |
| 2346 m_status = FXCODEC_STATUS_ERR_MEMORY; | 2347 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 2347 return m_status; | 2348 return m_status; |
| 2348 } | 2349 } |
| 2349 CFX_DIBitmap* pStrechBitmap = pFormatBitmap->StretchTo( | 2350 std::unique_ptr<CFX_DIBitmap> pStrechBitmap = pFormatBitmap->StretchTo( |
| 2350 m_sizeX, m_sizeY, m_bInterpol ? FXDIB_INTERPOL : FXDIB_DOWNSAMPLE); | 2351 m_sizeX, m_sizeY, m_bInterpol ? FXDIB_INTERPOL : FXDIB_DOWNSAMPLE); |
| 2351 delete pFormatBitmap; | 2352 delete pFormatBitmap; |
| 2352 pFormatBitmap = nullptr; | 2353 pFormatBitmap = nullptr; |
| 2353 if (!pStrechBitmap) { | 2354 if (!pStrechBitmap) { |
| 2354 m_pDeviceBitmap = nullptr; | 2355 m_pDeviceBitmap = nullptr; |
| 2355 m_pFile = nullptr; | 2356 m_pFile = nullptr; |
| 2356 m_status = FXCODEC_STATUS_ERR_MEMORY; | 2357 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 2357 return m_status; | 2358 return m_status; |
| 2358 } | 2359 } |
| 2359 m_pDeviceBitmap->TransferBitmap(m_startX, m_startY, m_sizeX, m_sizeY, | 2360 m_pDeviceBitmap->TransferBitmap(m_startX, m_startY, m_sizeX, m_sizeY, |
| 2360 pStrechBitmap, 0, 0); | 2361 pStrechBitmap.get(), 0, 0); |
| 2361 delete pStrechBitmap; | |
| 2362 pStrechBitmap = nullptr; | |
| 2363 m_pDeviceBitmap = nullptr; | 2362 m_pDeviceBitmap = nullptr; |
| 2364 m_pFile = nullptr; | 2363 m_pFile = nullptr; |
| 2365 m_status = FXCODEC_STATUS_DECODE_FINISH; | 2364 m_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2366 return m_status; | 2365 return m_status; |
| 2367 } | 2366 } |
| 2368 default: | 2367 default: |
| 2369 return FXCODEC_STATUS_ERROR; | 2368 return FXCODEC_STATUS_ERROR; |
| 2370 } | 2369 } |
| 2371 } | 2370 } |
| 2372 | 2371 |
| 2373 CCodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() { | 2372 CCodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() { |
| 2374 return new CCodec_ProgressiveDecoder(this); | 2373 return new CCodec_ProgressiveDecoder(this); |
| 2375 } | 2374 } |
| OLD | NEW |