| 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/include/fx_codec.h" | 7 #include "core/fxcodec/include/fx_codec.h" |
| 8 | 8 |
| 9 #include <cmath> | 9 #include <cmath> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 } else { \ | 93 } else { \ |
| 94 exp_ret *= 10; \ | 94 exp_ret *= 10; \ |
| 95 exp_ret += FXSYS_toDecimalDigit(*ptr); \ | 95 exp_ret += FXSYS_toDecimalDigit(*ptr); \ |
| 96 continue; \ | 96 continue; \ |
| 97 } \ | 97 } \ |
| 98 } | 98 } |
| 99 | 99 |
| 100 extern "C" double FXstrtod(const char* nptr, char** endptr) { | 100 extern "C" double FXstrtod(const char* nptr, char** endptr) { |
| 101 double ret = 0.0; | 101 double ret = 0.0; |
| 102 const char* ptr = nptr; | 102 const char* ptr = nptr; |
| 103 const char* exp_ptr = NULL; | 103 const char* exp_ptr = nullptr; |
| 104 int e_number = 0, e_signal = 0, e_point = 0, is_negative = 0; | 104 int e_number = 0, e_signal = 0, e_point = 0, is_negative = 0; |
| 105 int exp_ret = 0, exp_sig = 1, fra_ret = 0, fra_count = 0, fra_base = 1; | 105 int exp_ret = 0, exp_sig = 1, fra_ret = 0, fra_count = 0, fra_base = 1; |
| 106 if (!nptr) { | 106 if (!nptr) { |
| 107 return 0.0; | 107 return 0.0; |
| 108 } | 108 } |
| 109 for (;; ptr++) { | 109 for (;; ptr++) { |
| 110 if (!e_number && !e_point && (*ptr == '\t' || *ptr == ' ')) | 110 if (!e_number && !e_point && (*ptr == '\t' || *ptr == ' ')) |
| 111 continue; | 111 continue; |
| 112 | 112 |
| 113 if (std::isdigit(*ptr)) { | 113 if (std::isdigit(*ptr)) { |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 | 236 |
| 237 uint8_t* m_pScanline; | 237 uint8_t* m_pScanline; |
| 238 const uint8_t* m_pSrcBuf; | 238 const uint8_t* m_pSrcBuf; |
| 239 uint32_t m_SrcSize; | 239 uint32_t m_SrcSize; |
| 240 uint32_t m_dwLineBytes; | 240 uint32_t m_dwLineBytes; |
| 241 uint32_t m_SrcOffset; | 241 uint32_t m_SrcOffset; |
| 242 FX_BOOL m_bEOD; | 242 FX_BOOL m_bEOD; |
| 243 uint8_t m_Operator; | 243 uint8_t m_Operator; |
| 244 }; | 244 }; |
| 245 CCodec_RLScanlineDecoder::CCodec_RLScanlineDecoder() | 245 CCodec_RLScanlineDecoder::CCodec_RLScanlineDecoder() |
| 246 : m_pScanline(NULL), | 246 : m_pScanline(nullptr), |
| 247 m_pSrcBuf(NULL), | 247 m_pSrcBuf(nullptr), |
| 248 m_SrcSize(0), | 248 m_SrcSize(0), |
| 249 m_dwLineBytes(0), | 249 m_dwLineBytes(0), |
| 250 m_SrcOffset(0), | 250 m_SrcOffset(0), |
| 251 m_bEOD(FALSE), | 251 m_bEOD(FALSE), |
| 252 m_Operator(0) {} | 252 m_Operator(0) {} |
| 253 CCodec_RLScanlineDecoder::~CCodec_RLScanlineDecoder() { | 253 CCodec_RLScanlineDecoder::~CCodec_RLScanlineDecoder() { |
| 254 FX_Free(m_pScanline); | 254 FX_Free(m_pScanline); |
| 255 } | 255 } |
| 256 FX_BOOL CCodec_RLScanlineDecoder::CheckDestSize() { | 256 FX_BOOL CCodec_RLScanlineDecoder::CheckDestSize() { |
| 257 uint32_t i = 0; | 257 uint32_t i = 0; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 m_SrcOffset = 0; | 315 m_SrcOffset = 0; |
| 316 m_bEOD = FALSE; | 316 m_bEOD = FALSE; |
| 317 m_Operator = 0; | 317 m_Operator = 0; |
| 318 return TRUE; | 318 return TRUE; |
| 319 } | 319 } |
| 320 uint8_t* CCodec_RLScanlineDecoder::v_GetNextLine() { | 320 uint8_t* CCodec_RLScanlineDecoder::v_GetNextLine() { |
| 321 if (m_SrcOffset == 0) { | 321 if (m_SrcOffset == 0) { |
| 322 GetNextOperator(); | 322 GetNextOperator(); |
| 323 } else { | 323 } else { |
| 324 if (m_bEOD) { | 324 if (m_bEOD) { |
| 325 return NULL; | 325 return nullptr; |
| 326 } | 326 } |
| 327 } | 327 } |
| 328 FXSYS_memset(m_pScanline, 0, m_Pitch); | 328 FXSYS_memset(m_pScanline, 0, m_Pitch); |
| 329 uint32_t col_pos = 0; | 329 uint32_t col_pos = 0; |
| 330 FX_BOOL eol = FALSE; | 330 FX_BOOL eol = FALSE; |
| 331 while (m_SrcOffset < m_SrcSize && !eol) { | 331 while (m_SrcOffset < m_SrcSize && !eol) { |
| 332 if (m_Operator < 128) { | 332 if (m_Operator < 128) { |
| 333 uint32_t copy_len = m_Operator + 1; | 333 uint32_t copy_len = m_Operator + 1; |
| 334 if (col_pos + copy_len >= m_dwLineBytes) { | 334 if (col_pos + copy_len >= m_dwLineBytes) { |
| 335 copy_len = m_dwLineBytes - col_pos; | 335 copy_len = m_dwLineBytes - col_pos; |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 int bpc) { | 408 int bpc) { |
| 409 std::unique_ptr<CCodec_RLScanlineDecoder> pRLScanlineDecoder( | 409 std::unique_ptr<CCodec_RLScanlineDecoder> pRLScanlineDecoder( |
| 410 new CCodec_RLScanlineDecoder); | 410 new CCodec_RLScanlineDecoder); |
| 411 if (!pRLScanlineDecoder->Create(src_buf, src_size, width, height, nComps, | 411 if (!pRLScanlineDecoder->Create(src_buf, src_size, width, height, nComps, |
| 412 bpc)) { | 412 bpc)) { |
| 413 return nullptr; | 413 return nullptr; |
| 414 } | 414 } |
| 415 | 415 |
| 416 return pRLScanlineDecoder.release(); | 416 return pRLScanlineDecoder.release(); |
| 417 } | 417 } |
| OLD | NEW |