Chromium Code Reviews| 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 // Original code is licensed as follows: | 6 // Original code is licensed as follows: |
| 7 /* | 7 /* |
| 8 * Copyright 2009 ZXing authors | 8 * Copyright 2009 ZXing authors |
| 9 * | 9 * |
| 10 * Licensed under the Apache License, Version 2.0 (the "License"); | 10 * Licensed under the Apache License, Version 2.0 (the "License"); |
| 11 * you may not use this file except in compliance with the License. | 11 * you may not use this file except in compliance with the License. |
| 12 * You may obtain a copy of the License at | 12 * You may obtain a copy of the License at |
| 13 * | 13 * |
| 14 * http://www.apache.org/licenses/LICENSE-2.0 | 14 * http://www.apache.org/licenses/LICENSE-2.0 |
| 15 * | 15 * |
| 16 * Unless required by applicable law or agreed to in writing, software | 16 * Unless required by applicable law or agreed to in writing, software |
| 17 * distributed under the License is distributed on an "AS IS" BASIS, | 17 * distributed under the License is distributed on an "AS IS" BASIS, |
| 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 19 * See the License for the specific language governing permissions and | 19 * See the License for the specific language governing permissions and |
| 20 * limitations under the License. | 20 * limitations under the License. |
| 21 */ | 21 */ |
| 22 | 22 |
| 23 #include <memory> | |
| 24 | |
| 23 #include "core/fxcodec/codec/include/ccodec_progressivedecoder.h" | 25 #include "core/fxcodec/codec/include/ccodec_progressivedecoder.h" |
| 24 #include "core/fxcodec/include/fx_codec.h" | 26 #include "core/fxcodec/include/fx_codec.h" |
| 25 #include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h" | 27 #include "xfa/fxbarcode/BC_BufferedImageLuminanceSource.h" |
| 26 #include "xfa/fxbarcode/BC_LuminanceSource.h" | 28 #include "xfa/fxbarcode/BC_LuminanceSource.h" |
| 27 #include "xfa/fxbarcode/utils.h" | 29 #include "xfa/fxbarcode/utils.h" |
| 28 | 30 |
| 29 class CBC_Pause : public IFX_Pause { | 31 class CBC_Pause : public IFX_Pause { |
| 30 public: | 32 public: |
| 31 virtual FX_BOOL NeedToPauseNow() { return TRUE; } | 33 virtual FX_BOOL NeedToPauseNow() { return TRUE; } |
| 32 }; | 34 }; |
| 33 | 35 |
| 34 static CFX_DIBitmap* CreateDIBSource(IFX_FileRead* fileread) { | 36 static CFX_DIBitmap* CreateDIBSource(IFX_FileRead* fileread) { |
| 35 CFX_DIBitmap* bitmap = nullptr; | 37 std::unique_ptr<CCodec_ModuleMgr> pCodecMgr(new CCodec_ModuleMgr()); |
| 36 CCodec_ModuleMgr* pCodecMgr = nullptr; | 38 std::unique_ptr<CCodec_ProgressiveDecoder> pImageCodec( |
| 37 CCodec_ProgressiveDecoder* pImageCodec = nullptr; | 39 pCodecMgr->CreateProgressiveDecoder()); |
| 38 pCodecMgr = new CCodec_ModuleMgr(); | |
| 39 pImageCodec = pCodecMgr->CreateProgressiveDecoder(); | |
| 40 FXCODEC_STATUS status = FXCODEC_STATUS_DECODE_FINISH; | 40 FXCODEC_STATUS status = FXCODEC_STATUS_DECODE_FINISH; |
| 41 status = pImageCodec->LoadImageInfo(fileread, FXCODEC_IMAGE_UNKNOWN, nullptr); | 41 status = pImageCodec->LoadImageInfo(fileread, FXCODEC_IMAGE_UNKNOWN, nullptr); |
| 42 if (status != FXCODEC_STATUS_FRAME_READY) | 42 if (status != FXCODEC_STATUS_FRAME_READY) |
| 43 return nullptr; | 43 return nullptr; |
| 44 | 44 |
| 45 bitmap = new CFX_DIBitmap; | 45 std::unique_ptr<CFX_DIBitmap> bitmap(new CFX_DIBitmap); |
| 46 bitmap->Create(pImageCodec->GetWidth(), pImageCodec->GetHeight(), FXDIB_Argb); | 46 bitmap->Create(pImageCodec->GetWidth(), pImageCodec->GetHeight(), FXDIB_Argb); |
| 47 bitmap->Clear(FXARGB_MAKE(0xFF, 0xFF, 0xFF, 0xFF)); | 47 bitmap->Clear(FXARGB_MAKE(0xFF, 0xFF, 0xFF, 0xFF)); |
| 48 CBC_Pause pause; | 48 CBC_Pause pause; |
| 49 int32_t frames; | 49 int32_t frames; |
| 50 status = pImageCodec->GetFrames(frames, &pause); | 50 status = pImageCodec->GetFrames(frames, &pause); |
| 51 while (status == FXCODEC_STATUS_FRAME_TOBECONTINUE) { | 51 while (status == FXCODEC_STATUS_FRAME_TOBECONTINUE) |
| 52 status = pImageCodec->GetFrames(frames, &pause); | 52 status = pImageCodec->GetFrames(frames, &pause); |
| 53 | |
| 54 if (status != FXCODEC_STATUS_DECODE_READY) | |
| 55 return nullptr; | |
| 56 | |
| 57 status = pImageCodec->StartDecode(bitmap.get(), 0, 0, bitmap->GetWidth(), | |
| 58 bitmap->GetHeight(), 0, FALSE); | |
| 59 if (status == FXCODEC_STATUS_ERR_PARAMS || | |
|
Tom Sepez
2016/04/28 21:47:22
Doesn't the second part cover the first part?
Lei Zhang
2016/04/28 22:31:10
Done.
| |
| 60 status != FXCODEC_STATUS_DECODE_TOBECONTINUE) { | |
| 61 return nullptr; | |
| 53 } | 62 } |
| 54 if (status != FXCODEC_STATUS_DECODE_READY) { | 63 |
| 55 goto except; | 64 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) |
| 56 } | |
| 57 status = pImageCodec->StartDecode(bitmap, 0, 0, bitmap->GetWidth(), | |
| 58 bitmap->GetHeight(), 0, FALSE); | |
| 59 if (status == FXCODEC_STATUS_ERR_PARAMS) { | |
| 60 goto except; | |
| 61 } | |
| 62 if (status != FXCODEC_STATUS_DECODE_TOBECONTINUE) { | |
| 63 goto except; | |
| 64 } | |
| 65 while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { | |
| 66 status = pImageCodec->ContinueDecode(&pause); | 65 status = pImageCodec->ContinueDecode(&pause); |
| 67 } | 66 |
| 68 if (status != FXCODEC_STATUS_DECODE_FINISH) { | 67 return status == FXCODEC_STATUS_DECODE_FINISH ? bitmap.release() : nullptr; |
| 69 goto except; | |
| 70 } | |
| 71 if (pImageCodec) { | |
| 72 delete pImageCodec; | |
| 73 pImageCodec = nullptr; | |
| 74 } | |
| 75 delete pCodecMgr; | |
| 76 pCodecMgr = nullptr; | |
| 77 return bitmap; | |
| 78 except: | |
| 79 if (pImageCodec) { | |
| 80 delete pImageCodec; | |
| 81 pImageCodec = nullptr; | |
| 82 } | |
| 83 delete pCodecMgr; | |
| 84 pCodecMgr = nullptr; | |
| 85 if (bitmap) { | |
| 86 delete bitmap; | |
| 87 } | |
| 88 return nullptr; | |
| 89 } | 68 } |
| 90 | 69 |
| 91 CBC_BufferedImageLuminanceSource::CBC_BufferedImageLuminanceSource( | 70 CBC_BufferedImageLuminanceSource::CBC_BufferedImageLuminanceSource( |
| 92 const CFX_WideString& filename) | 71 const CFX_WideString& filename) |
| 93 : CBC_LuminanceSource(0, 0), m_filename(filename) { | 72 : CBC_LuminanceSource(0, 0), m_filename(filename) { |
| 94 m_height = 0; | 73 m_height = 0; |
| 95 m_width = 0; | 74 m_width = 0; |
| 96 m_bytesPerLine = 0; | 75 m_bytesPerLine = 0; |
| 97 m_top = 0; | 76 m_top = 0; |
| 98 m_left = 0; | 77 m_left = 0; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 169 int32_t pixel = rgb[offset + x]; | 148 int32_t pixel = rgb[offset + x]; |
| 170 int32_t luminance = | 149 int32_t luminance = |
| 171 (306 * ((pixel >> 16) & 0xFF) + 601 * ((pixel >> 8) & 0xFF) + | 150 (306 * ((pixel >> 16) & 0xFF) + 601 * ((pixel >> 8) & 0xFF) + |
| 172 117 * (pixel & 0xFF)) >> | 151 117 * (pixel & 0xFF)) >> |
| 173 10; | 152 10; |
| 174 (*matirx)[offset + x] = (uint8_t)luminance; | 153 (*matirx)[offset + x] = (uint8_t)luminance; |
| 175 } | 154 } |
| 176 } | 155 } |
| 177 return matirx; | 156 return matirx; |
| 178 } | 157 } |
| OLD | NEW |