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

Side by Side Diff: core/src/fxcodec/codec/fx_codec.cpp

Issue 1252613002: FX_BOOL considered harmful. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Manual edits. Created 5 years, 5 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/src/fxcodec/codec/codec_int.h ('k') | core/src/fxcodec/codec/fx_codec_fax.cpp » ('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 "../../../include/fxcodec/fx_codec.h" 7 #include "../../../include/fxcodec/fx_codec.h"
8 #include "codec_int.h" 8 #include "codec_int.h"
9 CCodec_ModuleMgr::CCodec_ModuleMgr() 9 CCodec_ModuleMgr::CCodec_ModuleMgr()
10 : m_pBasicModule(new CCodec_BasicModule), 10 : m_pBasicModule(new CCodec_BasicModule),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 m_NextLine = 0; 42 m_NextLine = 0;
43 } 43 }
44 while (m_NextLine < line) { 44 while (m_NextLine < line) {
45 ReadNextLine(); 45 ReadNextLine();
46 m_NextLine ++; 46 m_NextLine ++;
47 } 47 }
48 m_pLastScanline = ReadNextLine(); 48 m_pLastScanline = ReadNextLine();
49 m_NextLine ++; 49 m_NextLine ++;
50 return m_pLastScanline; 50 return m_pLastScanline;
51 } 51 }
52 FX_BOOL CCodec_ScanlineDecoder::SkipToScanline(int line, IFX_Pause* pPause) 52 bool CCodec_ScanlineDecoder::SkipToScanline(int line, IFX_Pause* pPause)
53 { 53 {
54 if (m_pDataCache && line < m_pDataCache->m_nCachedLines) { 54 if (m_pDataCache && line < m_pDataCache->m_nCachedLines) {
55 return FALSE; 55 return false;
56 } 56 }
57 if (m_NextLine == line || m_NextLine == line + 1) { 57 if (m_NextLine == line || m_NextLine == line + 1) {
58 return FALSE; 58 return false;
59 } 59 }
60 if (m_NextLine < 0 || m_NextLine > line) { 60 if (m_NextLine < 0 || m_NextLine > line) {
61 v_Rewind(); 61 v_Rewind();
62 m_NextLine = 0; 62 m_NextLine = 0;
63 } 63 }
64 m_pLastScanline = NULL; 64 m_pLastScanline = NULL;
65 while (m_NextLine < line) { 65 while (m_NextLine < line) {
66 m_pLastScanline = ReadNextLine(); 66 m_pLastScanline = ReadNextLine();
67 m_NextLine ++; 67 m_NextLine ++;
68 if (pPause && pPause->NeedToPauseNow()) { 68 if (pPause && pPause->NeedToPauseNow()) {
69 return TRUE; 69 return true;
70 } 70 }
71 } 71 }
72 return FALSE; 72 return false;
73 } 73 }
74 uint8_t* CCodec_ScanlineDecoder::ReadNextLine() 74 uint8_t* CCodec_ScanlineDecoder::ReadNextLine()
75 { 75 {
76 uint8_t* pLine = v_GetNextLine(); 76 uint8_t* pLine = v_GetNextLine();
77 if (pLine == NULL) { 77 if (pLine == NULL) {
78 return NULL; 78 return NULL;
79 } 79 }
80 if (m_pDataCache && m_NextLine == m_pDataCache->m_nCachedLines) { 80 if (m_pDataCache && m_NextLine == m_pDataCache->m_nCachedLines) {
81 FXSYS_memcpy(&m_pDataCache->m_Data + m_NextLine * m_Pitch, pLine, m_Pitc h); 81 FXSYS_memcpy(&m_pDataCache->m_Data + m_NextLine * m_Pitch, pLine, m_Pitc h);
82 m_pDataCache->m_nCachedLines ++; 82 m_pDataCache->m_nCachedLines ++;
(...skipping 17 matching lines...) Expand all
100 m_pDataCache = NULL; 100 m_pDataCache = NULL;
101 } 101 }
102 m_pDataCache = (CCodec_ImageDataCache*)FX_TryAlloc(uint8_t, sizeof(CCodec_Im ageDataCache) + m_Pitch * m_OutputHeight); 102 m_pDataCache = (CCodec_ImageDataCache*)FX_TryAlloc(uint8_t, sizeof(CCodec_Im ageDataCache) + m_Pitch * m_OutputHeight);
103 if (m_pDataCache == NULL) { 103 if (m_pDataCache == NULL) {
104 return; 104 return;
105 } 105 }
106 m_pDataCache->m_Height = m_OutputHeight; 106 m_pDataCache->m_Height = m_OutputHeight;
107 m_pDataCache->m_Width = m_OutputWidth; 107 m_pDataCache->m_Width = m_OutputWidth;
108 m_pDataCache->m_nCachedLines = 0; 108 m_pDataCache->m_nCachedLines = 0;
109 } 109 }
110 FX_BOOL CCodec_BasicModule::RunLengthEncode(const uint8_t* src_buf, FX_DWORD src _size, uint8_t*& dest_buf, 110 bool CCodec_BasicModule::RunLengthEncode(const uint8_t* src_buf, FX_DWORD src_si ze, uint8_t*& dest_buf,
111 FX_DWORD& dest_size) 111 FX_DWORD& dest_size)
112 { 112 {
113 return FALSE; 113 return false;
114 } 114 }
115 extern "C" double FXstrtod(const char* nptr, char** endptr) 115 extern "C" double FXstrtod(const char* nptr, char** endptr)
116 { 116 {
117 double ret = 0.0; 117 double ret = 0.0;
118 const char* ptr = nptr; 118 const char* ptr = nptr;
119 const char* exp_ptr = NULL; 119 const char* exp_ptr = NULL;
120 int e_number = 0, 120 int e_number = 0,
121 e_signal = 0, 121 e_signal = 0,
122 e_point = 0, 122 e_point = 0,
123 is_negative = 0; 123 is_negative = 0;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 while(exp_ret--) { 209 while(exp_ret--) {
210 ret *= 10.0; 210 ret *= 10.0;
211 } 211 }
212 } else { 212 } else {
213 while(exp_ret--) { 213 while(exp_ret--) {
214 ret /= 10.0; 214 ret /= 10.0;
215 } 215 }
216 } 216 }
217 return is_negative ? -ret : ret; 217 return is_negative ? -ret : ret;
218 } 218 }
219 FX_BOOL CCodec_BasicModule::A85Encode(const uint8_t* src_buf, FX_DWORD src_size, uint8_t*& dest_buf, 219 bool CCodec_BasicModule::A85Encode(const uint8_t* src_buf, FX_DWORD src_size, ui nt8_t*& dest_buf,
220 FX_DWORD& dest_size) 220 FX_DWORD& dest_size)
221 { 221 {
222 return FALSE; 222 return false;
223 } 223 }
224 class CCodec_RLScanlineDecoder : public CCodec_ScanlineDecoder 224 class CCodec_RLScanlineDecoder : public CCodec_ScanlineDecoder
225 { 225 {
226 public: 226 public:
227 CCodec_RLScanlineDecoder(); 227 CCodec_RLScanlineDecoder();
228 virtual ~CCodec_RLScanlineDecoder(); 228 virtual ~CCodec_RLScanlineDecoder();
229 FX_BOOL» » » » Create(const uint8_t* src_buf, FX_DWORD src_size, int width, int height, int nComps, int bpc); 229 bool» » » » Create(const uint8_t* src_buf, FX_DWORD src_size, int width, int height, int nComps, int bpc);
230 virtual void v_DownScale(int dest_width, int dest_height) {} 230 virtual void v_DownScale(int dest_width, int dest_height) {}
231 virtual FX_BOOL» » v_Rewind(); 231 virtual bool» » v_Rewind();
232 virtual uint8_t* v_GetNextLine(); 232 virtual uint8_t* v_GetNextLine();
233 virtual FX_DWORD GetSrcOffset() 233 virtual FX_DWORD GetSrcOffset()
234 { 234 {
235 return m_SrcOffset; 235 return m_SrcOffset;
236 } 236 }
237 protected: 237 protected:
238 FX_BOOL» » » » CheckDestSize(); 238 bool» » » » CheckDestSize();
239 void GetNextOperator(); 239 void GetNextOperator();
240 void UpdateOperator(uint8_t used_bytes); 240 void UpdateOperator(uint8_t used_bytes);
241 241
242 uint8_t* m_pScanline; 242 uint8_t* m_pScanline;
243 const uint8_t* m_pSrcBuf; 243 const uint8_t* m_pSrcBuf;
244 FX_DWORD m_SrcSize; 244 FX_DWORD m_SrcSize;
245 FX_DWORD m_dwLineBytes; 245 FX_DWORD m_dwLineBytes;
246 FX_DWORD m_SrcOffset; 246 FX_DWORD m_SrcOffset;
247 FX_BOOL» » » » m_bEOD; 247 bool» » » » m_bEOD;
248 uint8_t m_Operator; 248 uint8_t m_Operator;
249 }; 249 };
250 CCodec_RLScanlineDecoder::CCodec_RLScanlineDecoder() 250 CCodec_RLScanlineDecoder::CCodec_RLScanlineDecoder()
251 : m_pScanline(NULL) 251 : m_pScanline(NULL)
252 , m_pSrcBuf(NULL) 252 , m_pSrcBuf(NULL)
253 , m_SrcSize(0) 253 , m_SrcSize(0)
254 , m_dwLineBytes(0) 254 , m_dwLineBytes(0)
255 , m_SrcOffset(0) 255 , m_SrcOffset(0)
256 , m_bEOD(FALSE) 256 , m_bEOD(false)
257 , m_Operator(0) 257 , m_Operator(0)
258 { 258 {
259 } 259 }
260 CCodec_RLScanlineDecoder::~CCodec_RLScanlineDecoder() 260 CCodec_RLScanlineDecoder::~CCodec_RLScanlineDecoder()
261 { 261 {
262 if (m_pScanline) { 262 if (m_pScanline) {
263 FX_Free(m_pScanline); 263 FX_Free(m_pScanline);
264 } 264 }
265 } 265 }
266 FX_BOOL CCodec_RLScanlineDecoder::CheckDestSize() 266 bool CCodec_RLScanlineDecoder::CheckDestSize()
267 { 267 {
268 FX_DWORD i = 0; 268 FX_DWORD i = 0;
269 FX_DWORD old_size = 0; 269 FX_DWORD old_size = 0;
270 FX_DWORD dest_size = 0; 270 FX_DWORD dest_size = 0;
271 while (i < m_SrcSize) { 271 while (i < m_SrcSize) {
272 if (m_pSrcBuf[i] < 128) { 272 if (m_pSrcBuf[i] < 128) {
273 old_size = dest_size; 273 old_size = dest_size;
274 dest_size += m_pSrcBuf[i] + 1; 274 dest_size += m_pSrcBuf[i] + 1;
275 if (dest_size < old_size) { 275 if (dest_size < old_size) {
276 return FALSE; 276 return false;
277 } 277 }
278 i += m_pSrcBuf[i] + 2; 278 i += m_pSrcBuf[i] + 2;
279 } else if (m_pSrcBuf[i] > 128) { 279 } else if (m_pSrcBuf[i] > 128) {
280 old_size = dest_size; 280 old_size = dest_size;
281 dest_size += 257 - m_pSrcBuf[i]; 281 dest_size += 257 - m_pSrcBuf[i];
282 if (dest_size < old_size) { 282 if (dest_size < old_size) {
283 return FALSE; 283 return false;
284 } 284 }
285 i += 2; 285 i += 2;
286 } else { 286 } else {
287 break; 287 break;
288 } 288 }
289 } 289 }
290 if (((FX_DWORD)m_OrigWidth * m_nComps * m_bpc * m_OrigHeight + 7) / 8 > dest _size) { 290 if (((FX_DWORD)m_OrigWidth * m_nComps * m_bpc * m_OrigHeight + 7) / 8 > dest _size) {
291 return FALSE; 291 return false;
292 } 292 }
293 return TRUE; 293 return true;
294 } 294 }
295 FX_BOOL CCodec_RLScanlineDecoder::Create(const uint8_t* src_buf, FX_DWORD src_si ze, int width, int height, int nComps, int bpc) 295 bool CCodec_RLScanlineDecoder::Create(const uint8_t* src_buf, FX_DWORD src_size, int width, int height, int nComps, int bpc)
296 { 296 {
297 m_pSrcBuf = src_buf; 297 m_pSrcBuf = src_buf;
298 m_SrcSize = src_size; 298 m_SrcSize = src_size;
299 m_OutputWidth = m_OrigWidth = width; 299 m_OutputWidth = m_OrigWidth = width;
300 m_OutputHeight = m_OrigHeight = height; 300 m_OutputHeight = m_OrigHeight = height;
301 m_nComps = nComps; 301 m_nComps = nComps;
302 m_bpc = bpc; 302 m_bpc = bpc;
303 m_bColorTransformed = FALSE; 303 m_bColorTransformed = false;
304 m_DownScale = 1; 304 m_DownScale = 1;
305 m_Pitch = (width * nComps * bpc + 31) / 32 * 4; 305 m_Pitch = (width * nComps * bpc + 31) / 32 * 4;
306 m_dwLineBytes = (width * nComps * bpc + 7) / 8; 306 m_dwLineBytes = (width * nComps * bpc + 7) / 8;
307 m_pScanline = FX_Alloc(uint8_t, m_Pitch); 307 m_pScanline = FX_Alloc(uint8_t, m_Pitch);
308 return CheckDestSize(); 308 return CheckDestSize();
309 } 309 }
310 FX_BOOL CCodec_RLScanlineDecoder::v_Rewind() 310 bool CCodec_RLScanlineDecoder::v_Rewind()
311 { 311 {
312 FXSYS_memset(m_pScanline, 0, m_Pitch); 312 FXSYS_memset(m_pScanline, 0, m_Pitch);
313 m_SrcOffset = 0; 313 m_SrcOffset = 0;
314 m_bEOD = FALSE; 314 m_bEOD = false;
315 m_Operator = 0; 315 m_Operator = 0;
316 return TRUE; 316 return true;
317 } 317 }
318 uint8_t* CCodec_RLScanlineDecoder::v_GetNextLine() 318 uint8_t* CCodec_RLScanlineDecoder::v_GetNextLine()
319 { 319 {
320 if (m_SrcOffset == 0) { 320 if (m_SrcOffset == 0) {
321 GetNextOperator(); 321 GetNextOperator();
322 } else { 322 } else {
323 if (m_bEOD) { 323 if (m_bEOD) {
324 return NULL; 324 return NULL;
325 } 325 }
326 } 326 }
327 FXSYS_memset(m_pScanline, 0, m_Pitch); 327 FXSYS_memset(m_pScanline, 0, m_Pitch);
328 FX_DWORD col_pos = 0; 328 FX_DWORD col_pos = 0;
329 FX_BOOL» eol = FALSE; 329 bool» eol = false;
330 while (m_SrcOffset < m_SrcSize && !eol) { 330 while (m_SrcOffset < m_SrcSize && !eol) {
331 if (m_Operator < 128) { 331 if (m_Operator < 128) {
332 FX_DWORD copy_len = m_Operator + 1; 332 FX_DWORD copy_len = m_Operator + 1;
333 if (col_pos + copy_len >= m_dwLineBytes) { 333 if (col_pos + copy_len >= m_dwLineBytes) {
334 copy_len = m_dwLineBytes - col_pos; 334 copy_len = m_dwLineBytes - col_pos;
335 eol = TRUE; 335 eol = true;
336 } 336 }
337 if (copy_len >= m_SrcSize - m_SrcOffset) { 337 if (copy_len >= m_SrcSize - m_SrcOffset) {
338 copy_len = m_SrcSize - m_SrcOffset; 338 copy_len = m_SrcSize - m_SrcOffset;
339 m_bEOD = TRUE; 339 m_bEOD = true;
340 } 340 }
341 FXSYS_memcpy(m_pScanline + col_pos, m_pSrcBuf + m_SrcOffset, copy_le n); 341 FXSYS_memcpy(m_pScanline + col_pos, m_pSrcBuf + m_SrcOffset, copy_le n);
342 col_pos += copy_len; 342 col_pos += copy_len;
343 UpdateOperator((uint8_t)copy_len); 343 UpdateOperator((uint8_t)copy_len);
344 } else if (m_Operator > 128) { 344 } else if (m_Operator > 128) {
345 int fill = 0; 345 int fill = 0;
346 if (m_SrcOffset - 1 < m_SrcSize - 1) { 346 if (m_SrcOffset - 1 < m_SrcSize - 1) {
347 fill = m_pSrcBuf[m_SrcOffset]; 347 fill = m_pSrcBuf[m_SrcOffset];
348 } 348 }
349 FX_DWORD duplicate_len = 257 - m_Operator; 349 FX_DWORD duplicate_len = 257 - m_Operator;
350 if (col_pos + duplicate_len >= m_dwLineBytes) { 350 if (col_pos + duplicate_len >= m_dwLineBytes) {
351 duplicate_len = m_dwLineBytes - col_pos; 351 duplicate_len = m_dwLineBytes - col_pos;
352 eol = TRUE; 352 eol = true;
353 } 353 }
354 FXSYS_memset(m_pScanline + col_pos, fill, duplicate_len); 354 FXSYS_memset(m_pScanline + col_pos, fill, duplicate_len);
355 col_pos += duplicate_len; 355 col_pos += duplicate_len;
356 UpdateOperator((uint8_t)duplicate_len); 356 UpdateOperator((uint8_t)duplicate_len);
357 } else { 357 } else {
358 m_bEOD = TRUE; 358 m_bEOD = true;
359 break; 359 break;
360 } 360 }
361 } 361 }
362 return m_pScanline; 362 return m_pScanline;
363 } 363 }
364 void CCodec_RLScanlineDecoder::GetNextOperator() 364 void CCodec_RLScanlineDecoder::GetNextOperator()
365 { 365 {
366 if (m_SrcOffset >= m_SrcSize) { 366 if (m_SrcOffset >= m_SrcSize) {
367 m_Operator = 128; 367 m_Operator = 128;
368 return; 368 return;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 ICodec_ScanlineDecoder* CCodec_BasicModule::CreateRunLengthDecoder(const uint8_t * src_buf, FX_DWORD src_size, int width, int height, 402 ICodec_ScanlineDecoder* CCodec_BasicModule::CreateRunLengthDecoder(const uint8_t * src_buf, FX_DWORD src_size, int width, int height,
403 int nComps, int bpc) 403 int nComps, int bpc)
404 { 404 {
405 CCodec_RLScanlineDecoder* pRLScanlineDecoder = new CCodec_RLScanlineDecoder; 405 CCodec_RLScanlineDecoder* pRLScanlineDecoder = new CCodec_RLScanlineDecoder;
406 if (!pRLScanlineDecoder->Create(src_buf, src_size, width, height, nComps, bp c)) { 406 if (!pRLScanlineDecoder->Create(src_buf, src_size, width, height, nComps, bp c)) {
407 delete pRLScanlineDecoder; 407 delete pRLScanlineDecoder;
408 return NULL; 408 return NULL;
409 } 409 }
410 return pRLScanlineDecoder; 410 return pRLScanlineDecoder;
411 } 411 }
OLDNEW
« no previous file with comments | « core/src/fxcodec/codec/codec_int.h ('k') | core/src/fxcodec/codec/fx_codec_fax.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698