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

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

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 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/fx_codec_progress.h ('k') | core/src/fxcodec/codec/fx_codec_tiff.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/fxge/fx_dib.h" 7 #include "../../../include/fxge/fx_dib.h"
8 #include "../../../include/fxcodec/fx_codec.h" 8 #include "../../../include/fxcodec/fx_codec.h"
9 #include "fx_codec_progress.h" 9 #include "fx_codec_progress.h"
10 void CFXCODEC_WeightTable::Calc(int dest_len, int dest_min, int dest_max, int sr c_len, int src_min, int src_max, FX_BOOL bInterpol) 10 void CFXCODEC_WeightTable::Calc(int dest_len, int dest_min, int dest_max, int sr c_len, int src_min, int src_max, FX_BOOL bInterpol)
11 { 11 {
12 if (m_pWeightTables) { 12 if (m_pWeightTables) {
13 FX_Free(m_pWeightTables); 13 FX_Free(m_pWeightTables);
14 } 14 }
15 double scale, base; 15 double scale, base;
16 scale = FXSYS_Div((FX_FLOAT)(src_len), (FX_FLOAT)(dest_len)); 16 scale = FXSYS_Div((FX_FLOAT)(src_len), (FX_FLOAT)(dest_len));
17 if (dest_len < 0) { 17 if (dest_len < 0) {
18 base = (FX_FLOAT)(src_len); 18 base = (FX_FLOAT)(src_len);
19 } else { 19 } else {
20 base = 0.0f; 20 base = 0.0f;
21 } 21 }
22 m_ItemSize = (int)(sizeof(int) * 2 + sizeof(int) * (FXSYS_ceil(FXSYS_fabs((F X_FLOAT)scale)) + 1)); 22 m_ItemSize = (int)(sizeof(int) * 2 + sizeof(int) * (FXSYS_ceil(FXSYS_fabs((F X_FLOAT)scale)) + 1));
23 m_DestMin = dest_min; 23 m_DestMin = dest_min;
24 m_pWeightTables = FX_Alloc(FX_BYTE, (dest_max - dest_min) * m_ItemSize + 4); 24 m_pWeightTables = FX_Alloc(uint8_t, (dest_max - dest_min) * m_ItemSize + 4);
25 if(m_pWeightTables == NULL) { 25 if(m_pWeightTables == NULL) {
26 return; 26 return;
27 } 27 }
28 if (FXSYS_fabs((FX_FLOAT)scale) < 1.0f) { 28 if (FXSYS_fabs((FX_FLOAT)scale) < 1.0f) {
29 for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel ++) { 29 for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel ++) {
30 PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); 30 PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel);
31 double src_pos = dest_pixel * scale + scale / 2 + base; 31 double src_pos = dest_pixel * scale + scale / 2 + base;
32 if (bInterpol) { 32 if (bInterpol) {
33 pixel_weights.m_SrcStart = (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); 33 pixel_weights.m_SrcStart = (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2);
34 pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1. 0f / 2); 34 pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1. 0f / 2);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 } 96 }
97 } 97 }
98 void CFXCODEC_HorzTable::Calc(int dest_len, int src_len, FX_BOOL bInterpol) 98 void CFXCODEC_HorzTable::Calc(int dest_len, int src_len, FX_BOOL bInterpol)
99 { 99 {
100 if (m_pWeightTables) { 100 if (m_pWeightTables) {
101 FX_Free(m_pWeightTables); 101 FX_Free(m_pWeightTables);
102 } 102 }
103 double scale = (double)dest_len / (double)src_len; 103 double scale = (double)dest_len / (double)src_len;
104 m_ItemSize = sizeof(int) * 4; 104 m_ItemSize = sizeof(int) * 4;
105 int size = dest_len * m_ItemSize + 4; 105 int size = dest_len * m_ItemSize + 4;
106 m_pWeightTables = FX_Alloc(FX_BYTE, size); 106 m_pWeightTables = FX_Alloc(uint8_t, size);
107 if(m_pWeightTables == NULL) { 107 if(m_pWeightTables == NULL) {
108 return; 108 return;
109 } 109 }
110 FXSYS_memset32(m_pWeightTables, 0, size); 110 FXSYS_memset32(m_pWeightTables, 0, size);
111 if(scale > 1) { 111 if(scale > 1) {
112 int pre_des_col = 0; 112 int pre_des_col = 0;
113 for (int src_col = 0; src_col < src_len; src_col++) { 113 for (int src_col = 0; src_col < src_len; src_col++) {
114 double des_col_f = src_col * scale; 114 double des_col_f = src_col * scale;
115 int des_col = FXSYS_round((FX_FLOAT)des_col_f); 115 int des_col = FXSYS_round((FX_FLOAT)des_col_f);
116 PixelWeight* pWeight = (PixelWeight*)(m_pWeightTables + des_col * m_ ItemSize); 116 PixelWeight* pWeight = (PixelWeight*)(m_pWeightTables + des_col * m_ ItemSize);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 } 153 }
154 } 154 }
155 void CFXCODEC_VertTable::Calc(int dest_len, int src_len) 155 void CFXCODEC_VertTable::Calc(int dest_len, int src_len)
156 { 156 {
157 if (m_pWeightTables) { 157 if (m_pWeightTables) {
158 FX_Free(m_pWeightTables); 158 FX_Free(m_pWeightTables);
159 } 159 }
160 double scale = (double)dest_len / (double)src_len; 160 double scale = (double)dest_len / (double)src_len;
161 m_ItemSize = sizeof(int) * 4; 161 m_ItemSize = sizeof(int) * 4;
162 int size = dest_len * m_ItemSize + 4; 162 int size = dest_len * m_ItemSize + 4;
163 m_pWeightTables = FX_Alloc(FX_BYTE, size); 163 m_pWeightTables = FX_Alloc(uint8_t, size);
164 if(m_pWeightTables == NULL) { 164 if(m_pWeightTables == NULL) {
165 return; 165 return;
166 } 166 }
167 FXSYS_memset32(m_pWeightTables, 0, size); 167 FXSYS_memset32(m_pWeightTables, 0, size);
168 if(scale > 1) { 168 if(scale > 1) {
169 double step = 0.0; 169 double step = 0.0;
170 int src_row = 0; 170 int src_row = 0;
171 while ( step < (double)dest_len ) { 171 while ( step < (double)dest_len ) {
172 int start_step = (int)step; 172 int start_step = (int)step;
173 step = scale * (++src_row); 173 step = scale * (++src_row);
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 if (dwSize <= m_offSet) { 281 if (dwSize <= m_offSet) {
282 return FALSE; 282 return FALSE;
283 } 283 }
284 dwSize = dwSize - m_offSet; 284 dwSize = dwSize - m_offSet;
285 FX_DWORD dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, NULL); 285 FX_DWORD dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, NULL);
286 if (dwAvail == m_SrcSize) { 286 if (dwAvail == m_SrcSize) {
287 if (dwSize > FXCODEC_BLOCK_SIZE) { 287 if (dwSize > FXCODEC_BLOCK_SIZE) {
288 dwSize = FXCODEC_BLOCK_SIZE; 288 dwSize = FXCODEC_BLOCK_SIZE;
289 } 289 }
290 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_ SIZE * FXCODEC_BLOCK_SIZE; 290 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_ SIZE * FXCODEC_BLOCK_SIZE;
291 m_pSrcBuf = FX_Realloc(FX_BYTE, m_pSrcBuf, m_SrcSize); 291 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize);
292 if (!m_pSrcBuf) { 292 if (!m_pSrcBuf) {
293 err_status = FXCODEC_STATUS_ERR_MEMORY; 293 err_status = FXCODEC_STATUS_ERR_MEMORY;
294 return FALSE; 294 return FALSE;
295 } 295 }
296 } else { 296 } else {
297 FX_DWORD dwConsume = m_SrcSize - dwAvail; 297 FX_DWORD dwConsume = m_SrcSize - dwAvail;
298 if (dwAvail) { 298 if (dwAvail) {
299 FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); 299 FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);
300 } 300 }
301 if (dwSize > dwConsume) { 301 if (dwSize > dwConsume) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 FX_BOOL CCodec_ProgressiveDecoder::PngAskScanlineBufFunc(void* pModule, int line , FX_LPBYTE& src_buf) 353 FX_BOOL CCodec_ProgressiveDecoder::PngAskScanlineBufFunc(void* pModule, int line , FX_LPBYTE& src_buf)
354 { 354 {
355 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 355 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
356 CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; 356 CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap;
357 ASSERT(pDIBitmap != NULL); 357 ASSERT(pDIBitmap != NULL);
358 if(pDIBitmap == NULL) { 358 if(pDIBitmap == NULL) {
359 return FALSE; 359 return FALSE;
360 } 360 }
361 if(line >= pCodec->m_clipBox.top && line < pCodec->m_clipBox.bottom) { 361 if(line >= pCodec->m_clipBox.top && line < pCodec->m_clipBox.bottom) {
362 double scale_y = (double)pCodec->m_sizeY / (double)pCodec->m_clipBox.Hei ght(); 362 double scale_y = (double)pCodec->m_sizeY / (double)pCodec->m_clipBox.Hei ght();
363 FX_INT32 row = (FX_INT32)((line - pCodec->m_clipBox.top) * scale_y) + pC odec->m_startY; 363 int32_t row = (int32_t)((line - pCodec->m_clipBox.top) * scale_y) + pCod ec->m_startY;
364 FX_LPBYTE src_scan = (FX_LPBYTE)pDIBitmap->GetScanline(row); 364 FX_LPBYTE src_scan = (FX_LPBYTE)pDIBitmap->GetScanline(row);
365 FX_LPBYTE des_scan = pCodec->m_pDecodeBuf; 365 FX_LPBYTE des_scan = pCodec->m_pDecodeBuf;
366 src_buf = pCodec->m_pDecodeBuf; 366 src_buf = pCodec->m_pDecodeBuf;
367 FX_INT32 src_Bpp = pDIBitmap->GetBPP() >> 3; 367 int32_t src_Bpp = pDIBitmap->GetBPP() >> 3;
368 FX_INT32 des_Bpp = (pCodec->m_SrcFormat & 0xff) >> 3; 368 int32_t des_Bpp = (pCodec->m_SrcFormat & 0xff) >> 3;
369 FX_INT32 src_left = pCodec->m_startX; 369 int32_t src_left = pCodec->m_startX;
370 FX_INT32 des_left = pCodec->m_clipBox.left; 370 int32_t des_left = pCodec->m_clipBox.left;
371 src_scan += src_left * src_Bpp; 371 src_scan += src_left * src_Bpp;
372 des_scan += des_left * des_Bpp; 372 des_scan += des_left * des_Bpp;
373 for (FX_INT32 src_col = 0; src_col < pCodec->m_sizeX; src_col++) { 373 for (int32_t src_col = 0; src_col < pCodec->m_sizeX; src_col++) {
374 PixelWeight* pPixelWeights = pCodec->m_WeightHorzOO.GetPixelWeight(s rc_col); 374 PixelWeight* pPixelWeights = pCodec->m_WeightHorzOO.GetPixelWeight(s rc_col);
375 if(pPixelWeights->m_SrcStart != pPixelWeights->m_SrcEnd) { 375 if(pPixelWeights->m_SrcStart != pPixelWeights->m_SrcEnd) {
376 continue; 376 continue;
377 } 377 }
378 switch(pDIBitmap->GetFormat()) { 378 switch(pDIBitmap->GetFormat()) {
379 case FXDIB_1bppMask: 379 case FXDIB_1bppMask:
380 case FXDIB_1bppRgb: 380 case FXDIB_1bppRgb:
381 ASSERT(FALSE); 381 ASSERT(FALSE);
382 return FALSE; 382 return FALSE;
383 case FXDIB_8bppMask: 383 case FXDIB_8bppMask:
384 case FXDIB_8bppRgb: { 384 case FXDIB_8bppRgb: {
385 if(pDIBitmap->GetPalette() != NULL) { 385 if(pDIBitmap->GetPalette() != NULL) {
386 return FALSE; 386 return FALSE;
387 } 387 }
388 FX_DWORD des_g = 0; 388 FX_DWORD des_g = 0;
389 des_g += pPixelWeights->m_Weights[0] * src_scan[src_col] ; 389 des_g += pPixelWeights->m_Weights[0] * src_scan[src_col] ;
390 des_scan[pPixelWeights->m_SrcStart] = (FX_BYTE)(des_g >> 16); 390 des_scan[pPixelWeights->m_SrcStart] = (uint8_t)(des_g >> 16);
391 } 391 }
392 break; 392 break;
393 case FXDIB_Rgb: 393 case FXDIB_Rgb:
394 case FXDIB_Rgb32: { 394 case FXDIB_Rgb32: {
395 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 395 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
396 FX_LPCBYTE p = src_scan + src_col * src_Bpp; 396 FX_LPCBYTE p = src_scan + src_col * src_Bpp;
397 des_b += pPixelWeights->m_Weights[0] * (*p++); 397 des_b += pPixelWeights->m_Weights[0] * (*p++);
398 des_g += pPixelWeights->m_Weights[0] * (*p++); 398 des_g += pPixelWeights->m_Weights[0] * (*p++);
399 des_r += pPixelWeights->m_Weights[0] * (*p); 399 des_r += pPixelWeights->m_Weights[0] * (*p);
400 FX_LPBYTE pDes = &des_scan[pPixelWeights->m_SrcStart * d es_Bpp]; 400 FX_LPBYTE pDes = &des_scan[pPixelWeights->m_SrcStart * d es_Bpp];
401 *pDes++ = (FX_BYTE)((des_b) >> 16); 401 *pDes++ = (uint8_t)((des_b) >> 16);
402 *pDes++ = (FX_BYTE)((des_g) >> 16); 402 *pDes++ = (uint8_t)((des_g) >> 16);
403 *pDes» = (FX_BYTE)((des_r) >> 16); 403 *pDes» = (uint8_t)((des_r) >> 16);
404 } 404 }
405 break; 405 break;
406 case FXDIB_Argb: { 406 case FXDIB_Argb: {
407 FX_DWORD des_r = 0, des_g = 0, des_b = 0; 407 FX_DWORD des_r = 0, des_g = 0, des_b = 0;
408 FX_LPCBYTE p = src_scan + src_col * src_Bpp; 408 FX_LPCBYTE p = src_scan + src_col * src_Bpp;
409 des_b += pPixelWeights->m_Weights[0] * (*p++); 409 des_b += pPixelWeights->m_Weights[0] * (*p++);
410 des_g += pPixelWeights->m_Weights[0] * (*p++); 410 des_g += pPixelWeights->m_Weights[0] * (*p++);
411 des_r += pPixelWeights->m_Weights[0] * (*p++); 411 des_r += pPixelWeights->m_Weights[0] * (*p++);
412 FX_LPBYTE pDes = &des_scan[pPixelWeights->m_SrcStart * d es_Bpp]; 412 FX_LPBYTE pDes = &des_scan[pPixelWeights->m_SrcStart * d es_Bpp];
413 *pDes++ = (FX_BYTE)((des_b) >> 16); 413 *pDes++ = (uint8_t)((des_b) >> 16);
414 *pDes++ = (FX_BYTE)((des_g) >> 16); 414 *pDes++ = (uint8_t)((des_g) >> 16);
415 *pDes++»= (FX_BYTE)((des_r) >> 16); 415 *pDes++»= (uint8_t)((des_r) >> 16);
416 *pDes = *p; 416 *pDes = *p;
417 } 417 }
418 break; 418 break;
419 default: 419 default:
420 return FALSE; 420 return FALSE;
421 } 421 }
422 } 422 }
423 } 423 }
424 return TRUE; 424 return TRUE;
425 } 425 }
426 void CCodec_ProgressiveDecoder::PngOneOneMapResampleHorz(CFX_DIBitmap* pDeviceBi tmap, FX_INT32 des_line, FX_LPBYTE src_scan, FXCodec_Format src_format) 426 void CCodec_ProgressiveDecoder::PngOneOneMapResampleHorz(CFX_DIBitmap* pDeviceBi tmap, int32_t des_line, FX_LPBYTE src_scan, FXCodec_Format src_format)
427 { 427 {
428 FX_LPBYTE des_scan = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_line); 428 FX_LPBYTE des_scan = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_line);
429 FX_INT32 src_Bpp = (m_SrcFormat & 0xff) >> 3; 429 int32_t src_Bpp = (m_SrcFormat & 0xff) >> 3;
430 FX_INT32 des_Bpp = pDeviceBitmap->GetBPP() >> 3; 430 int32_t des_Bpp = pDeviceBitmap->GetBPP() >> 3;
431 FX_INT32 src_left = m_clipBox.left; 431 int32_t src_left = m_clipBox.left;
432 FX_INT32 des_left = m_startX; 432 int32_t des_left = m_startX;
433 src_scan += src_left * src_Bpp; 433 src_scan += src_left * src_Bpp;
434 des_scan += des_left * des_Bpp; 434 des_scan += des_left * des_Bpp;
435 for (FX_INT32 des_col = 0; des_col < m_sizeX; des_col++) { 435 for (int32_t des_col = 0; des_col < m_sizeX; des_col++) {
436 PixelWeight* pPixelWeights = m_WeightHorzOO.GetPixelWeight(des_col); 436 PixelWeight* pPixelWeights = m_WeightHorzOO.GetPixelWeight(des_col);
437 switch(pDeviceBitmap->GetFormat()) { 437 switch(pDeviceBitmap->GetFormat()) {
438 case FXDIB_1bppMask: 438 case FXDIB_1bppMask:
439 case FXDIB_1bppRgb: 439 case FXDIB_1bppRgb:
440 ASSERT(FALSE); 440 ASSERT(FALSE);
441 return; 441 return;
442 case FXDIB_8bppMask: 442 case FXDIB_8bppMask:
443 case FXDIB_8bppRgb: { 443 case FXDIB_8bppRgb: {
444 if(pDeviceBitmap->GetPalette() != NULL) { 444 if(pDeviceBitmap->GetPalette() != NULL) {
445 return; 445 return;
446 } 446 }
447 FX_DWORD des_g = 0; 447 FX_DWORD des_g = 0;
448 des_g += pPixelWeights->m_Weights[0] * src_scan[pPixelWeight s->m_SrcStart]; 448 des_g += pPixelWeights->m_Weights[0] * src_scan[pPixelWeight s->m_SrcStart];
449 des_g += pPixelWeights->m_Weights[1] * src_scan[pPixelWeight s->m_SrcEnd]; 449 des_g += pPixelWeights->m_Weights[1] * src_scan[pPixelWeight s->m_SrcEnd];
450 *des_scan++ = (FX_BYTE)(des_g >> 16); 450 *des_scan++ = (uint8_t)(des_g >> 16);
451 } 451 }
452 break; 452 break;
453 case FXDIB_Rgb: 453 case FXDIB_Rgb:
454 case FXDIB_Rgb32: { 454 case FXDIB_Rgb32: {
455 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 455 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
456 FX_LPCBYTE p = src_scan; 456 FX_LPCBYTE p = src_scan;
457 p = src_scan + pPixelWeights->m_SrcStart * src_Bpp; 457 p = src_scan + pPixelWeights->m_SrcStart * src_Bpp;
458 des_b += pPixelWeights->m_Weights[0] * (*p++); 458 des_b += pPixelWeights->m_Weights[0] * (*p++);
459 des_g += pPixelWeights->m_Weights[0] * (*p++); 459 des_g += pPixelWeights->m_Weights[0] * (*p++);
460 des_r += pPixelWeights->m_Weights[0] * (*p); 460 des_r += pPixelWeights->m_Weights[0] * (*p);
461 p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp; 461 p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp;
462 des_b += pPixelWeights->m_Weights[1] * (*p++); 462 des_b += pPixelWeights->m_Weights[1] * (*p++);
463 des_g += pPixelWeights->m_Weights[1] * (*p++); 463 des_g += pPixelWeights->m_Weights[1] * (*p++);
464 des_r += pPixelWeights->m_Weights[1] * (*p); 464 des_r += pPixelWeights->m_Weights[1] * (*p);
465 *des_scan++ = (FX_BYTE)((des_b) >> 16); 465 *des_scan++ = (uint8_t)((des_b) >> 16);
466 *des_scan++ = (FX_BYTE)((des_g) >> 16); 466 *des_scan++ = (uint8_t)((des_g) >> 16);
467 *des_scan++ = (FX_BYTE)((des_r) >> 16); 467 *des_scan++ = (uint8_t)((des_r) >> 16);
468 des_scan += des_Bpp - 3; 468 des_scan += des_Bpp - 3;
469 } 469 }
470 break; 470 break;
471 case FXDIB_Argb: { 471 case FXDIB_Argb: {
472 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; 472 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0;
473 FX_LPCBYTE p = src_scan; 473 FX_LPCBYTE p = src_scan;
474 p = src_scan + pPixelWeights->m_SrcStart * src_Bpp; 474 p = src_scan + pPixelWeights->m_SrcStart * src_Bpp;
475 des_b += pPixelWeights->m_Weights[0] * (*p++); 475 des_b += pPixelWeights->m_Weights[0] * (*p++);
476 des_g += pPixelWeights->m_Weights[0] * (*p++); 476 des_g += pPixelWeights->m_Weights[0] * (*p++);
477 des_r += pPixelWeights->m_Weights[0] * (*p++); 477 des_r += pPixelWeights->m_Weights[0] * (*p++);
478 des_a += pPixelWeights->m_Weights[0] * (*p); 478 des_a += pPixelWeights->m_Weights[0] * (*p);
479 p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp; 479 p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp;
480 des_b += pPixelWeights->m_Weights[1] * (*p++); 480 des_b += pPixelWeights->m_Weights[1] * (*p++);
481 des_g += pPixelWeights->m_Weights[1] * (*p++); 481 des_g += pPixelWeights->m_Weights[1] * (*p++);
482 des_r += pPixelWeights->m_Weights[1] * (*p++); 482 des_r += pPixelWeights->m_Weights[1] * (*p++);
483 des_a += pPixelWeights->m_Weights[1] * (*p); 483 des_a += pPixelWeights->m_Weights[1] * (*p);
484 *des_scan++ = (FX_BYTE)((des_b) >> 16); 484 *des_scan++ = (uint8_t)((des_b) >> 16);
485 *des_scan++ = (FX_BYTE)((des_g) >> 16); 485 *des_scan++ = (uint8_t)((des_g) >> 16);
486 *des_scan++ = (FX_BYTE)((des_r) >> 16); 486 *des_scan++ = (uint8_t)((des_r) >> 16);
487 *des_scan++ = (FX_BYTE)((des_a) >> 16); 487 *des_scan++ = (uint8_t)((des_a) >> 16);
488 } 488 }
489 break; 489 break;
490 default: 490 default:
491 return; 491 return;
492 } 492 }
493 } 493 }
494 } 494 }
495 void CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc(void* pModule, i nt pass, int line) 495 void CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc(void* pModule, i nt pass, int line)
496 { 496 {
497 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 497 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
(...skipping 27 matching lines...) Expand all
525 if (dwSize <= m_offSet) { 525 if (dwSize <= m_offSet) {
526 return FALSE; 526 return FALSE;
527 } 527 }
528 dwSize = dwSize - m_offSet; 528 dwSize = dwSize - m_offSet;
529 FX_DWORD dwAvail = pGifModule->GetAvailInput(m_pGifContext, NULL); 529 FX_DWORD dwAvail = pGifModule->GetAvailInput(m_pGifContext, NULL);
530 if (dwAvail == m_SrcSize) { 530 if (dwAvail == m_SrcSize) {
531 if (dwSize > FXCODEC_BLOCK_SIZE) { 531 if (dwSize > FXCODEC_BLOCK_SIZE) {
532 dwSize = FXCODEC_BLOCK_SIZE; 532 dwSize = FXCODEC_BLOCK_SIZE;
533 } 533 }
534 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_ SIZE * FXCODEC_BLOCK_SIZE; 534 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_ SIZE * FXCODEC_BLOCK_SIZE;
535 m_pSrcBuf = FX_Realloc(FX_BYTE, m_pSrcBuf, m_SrcSize); 535 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize);
536 if (!m_pSrcBuf) { 536 if (!m_pSrcBuf) {
537 err_status = FXCODEC_STATUS_ERR_MEMORY; 537 err_status = FXCODEC_STATUS_ERR_MEMORY;
538 return FALSE; 538 return FALSE;
539 } 539 }
540 } else { 540 } else {
541 FX_DWORD dwConsume = m_SrcSize - dwAvail; 541 FX_DWORD dwConsume = m_SrcSize - dwAvail;
542 if (dwAvail) { 542 if (dwAvail) {
543 FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); 543 FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);
544 } 544 }
545 if (dwSize > dwConsume) { 545 if (dwSize > dwConsume) {
546 dwSize = dwConsume; 546 dwSize = dwConsume;
547 } 547 }
548 } 548 }
549 if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { 549 if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {
550 err_status = FXCODEC_STATUS_ERR_READ; 550 err_status = FXCODEC_STATUS_ERR_READ;
551 return FALSE; 551 return FALSE;
552 } 552 }
553 m_offSet += dwSize; 553 m_offSet += dwSize;
554 pGifModule->Input(m_pGifContext, m_pSrcBuf, dwSize + dwAvail); 554 pGifModule->Input(m_pGifContext, m_pSrcBuf, dwSize + dwAvail);
555 return TRUE; 555 return TRUE;
556 } 556 }
557 void CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback(void* pModule, FX_DWORD& cur_pos) 557 void CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback(void* pModule, FX_DWORD& cur_pos)
558 { 558 {
559 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 559 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
560 FX_DWORD remain_size = pCodec->m_pCodecMgr->GetGifModule()->GetAvailInput(pC odec->m_pGifContext); 560 FX_DWORD remain_size = pCodec->m_pCodecMgr->GetGifModule()->GetAvailInput(pC odec->m_pGifContext);
561 cur_pos = pCodec->m_offSet - remain_size; 561 cur_pos = pCodec->m_offSet - remain_size;
562 } 562 }
563 FX_LPBYTE CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback(void* pModule , FX_INT32 frame_num, FX_INT32 pal_size) 563 FX_LPBYTE CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback(void* pModule , int32_t frame_num, int32_t pal_size)
564 { 564 {
565 return FX_Alloc(FX_BYTE, pal_size); 565 return FX_Alloc(uint8_t, pal_size);
566 } 566 }
567 FX_BOOL CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback(void* pModu le, FX_DWORD rcd_pos, const FX_RECT& img_rc, 567 FX_BOOL CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback(void* pModu le, FX_DWORD rcd_pos, const FX_RECT& img_rc,
568 FX_INT32 pal_num, void* pal_ptr, 568 int32_t pal_num, void* pal_ptr,
569 FX_INT32 delay_time, FX_BOOL user_input, 569 int32_t delay_time, FX_BOOL user_input,
570 FX_INT32 trans_index, FX_INT32 disposal_method, FX_BOOL interlace) 570 int32_t trans_index, int32_t disposal_method, FX_BOOL interlace)
571 { 571 {
572 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 572 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
573 pCodec->m_offSet = rcd_pos; 573 pCodec->m_offSet = rcd_pos;
574 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; 574 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR;
575 if(!pCodec->GifReadMoreData(pCodec->m_pCodecMgr->GetGifModule(), error_statu s)) { 575 if(!pCodec->GifReadMoreData(pCodec->m_pCodecMgr->GetGifModule(), error_statu s)) {
576 return FALSE; 576 return FALSE;
577 } 577 }
578 FX_LPBYTE pPalette = NULL; 578 FX_LPBYTE pPalette = NULL;
579 if(pal_num != 0 && pal_ptr) { 579 if(pal_num != 0 && pal_ptr) {
580 pPalette = (FX_LPBYTE)pal_ptr; 580 pPalette = (FX_LPBYTE)pal_ptr;
(...skipping 11 matching lines...) Expand all
592 } 592 }
593 pCodec->m_SrcPaletteNumber = pal_num; 593 pCodec->m_SrcPaletteNumber = pal_num;
594 for (int i = 0; i < pal_num; i++) { 594 for (int i = 0; i < pal_num; i++) {
595 register FX_DWORD j = i * 3; 595 register FX_DWORD j = i * 3;
596 pCodec->m_pSrcPalette[i] = 596 pCodec->m_pSrcPalette[i] =
597 ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]); 597 ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]);
598 } 598 }
599 pCodec->m_GifTransIndex = trans_index; 599 pCodec->m_GifTransIndex = trans_index;
600 pCodec->m_GifFrameRect = img_rc; 600 pCodec->m_GifFrameRect = img_rc;
601 pCodec->m_SrcPassNumber = interlace ? 4 : 1; 601 pCodec->m_SrcPassNumber = interlace ? 4 : 1;
602 FX_INT32 pal_index = pCodec->m_GifBgIndex; 602 int32_t pal_index = pCodec->m_GifBgIndex;
603 CFX_DIBitmap* pDevice = pCodec->m_pDeviceBitmap; 603 CFX_DIBitmap* pDevice = pCodec->m_pDeviceBitmap;
604 if (trans_index >= pal_num) { 604 if (trans_index >= pal_num) {
605 trans_index = -1; 605 trans_index = -1;
606 } 606 }
607 if (trans_index != -1) { 607 if (trans_index != -1) {
608 pCodec->m_pSrcPalette[trans_index] &= 0x00ffffff; 608 pCodec->m_pSrcPalette[trans_index] &= 0x00ffffff;
609 if (pDevice->HasAlpha()) { 609 if (pDevice->HasAlpha()) {
610 pal_index = trans_index; 610 pal_index = trans_index;
611 } 611 }
612 } 612 }
613 int startX = pCodec->m_startX; 613 int startX = pCodec->m_startX;
614 int startY = pCodec->m_startY; 614 int startY = pCodec->m_startY;
615 int sizeX = pCodec->m_sizeX; 615 int sizeX = pCodec->m_sizeX;
616 int sizeY = pCodec->m_sizeY; 616 int sizeY = pCodec->m_sizeY;
617 int Bpp = pDevice->GetBPP() / 8; 617 int Bpp = pDevice->GetBPP() / 8;
618 FX_ARGB argb = pCodec->m_pSrcPalette[pal_index]; 618 FX_ARGB argb = pCodec->m_pSrcPalette[pal_index];
619 for (int row = 0; row < sizeY; row ++) { 619 for (int row = 0; row < sizeY; row ++) {
620 FX_LPBYTE pScanline = (FX_LPBYTE)pDevice->GetScanline(row + startY) + st artX * Bpp; 620 FX_LPBYTE pScanline = (FX_LPBYTE)pDevice->GetScanline(row + startY) + st artX * Bpp;
621 switch(pCodec->m_TransMethod) { 621 switch(pCodec->m_TransMethod) {
622 case 3: { 622 case 3: {
623 FX_BYTE gray = FXRGB2GRAY(FXARGB_R(argb), FXARGB_G(argb), FX ARGB_B(argb)); 623 uint8_t gray = FXRGB2GRAY(FXARGB_R(argb), FXARGB_G(argb), FX ARGB_B(argb));
624 FXSYS_memset8(pScanline, gray, sizeX); 624 FXSYS_memset8(pScanline, gray, sizeX);
625 break; 625 break;
626 } 626 }
627 case 8: { 627 case 8: {
628 for (int col = 0; col < sizeX; col ++) { 628 for (int col = 0; col < sizeX; col ++) {
629 *pScanline++ = FXARGB_B(argb); 629 *pScanline++ = FXARGB_B(argb);
630 *pScanline++ = FXARGB_G(argb); 630 *pScanline++ = FXARGB_G(argb);
631 *pScanline++ = FXARGB_R(argb); 631 *pScanline++ = FXARGB_R(argb);
632 pScanline += Bpp - 3; 632 pScanline += Bpp - 3;
633 } 633 }
634 break; 634 break;
635 } 635 }
636 case 12: { 636 case 12: {
637 for (int col = 0; col < sizeX; col ++) { 637 for (int col = 0; col < sizeX; col ++) {
638 FXARGB_SETDIB(pScanline, argb); 638 FXARGB_SETDIB(pScanline, argb);
639 pScanline += 4; 639 pScanline += 4;
640 } 640 }
641 break; 641 break;
642 } 642 }
643 } 643 }
644 } 644 }
645 return TRUE; 645 return TRUE;
646 } 646 }
647 void CCodec_ProgressiveDecoder::GifReadScanlineCallback(void* pModule, FX_INT32 row_num, FX_LPBYTE row_buf) 647 void CCodec_ProgressiveDecoder::GifReadScanlineCallback(void* pModule, int32_t r ow_num, FX_LPBYTE row_buf)
648 { 648 {
649 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 649 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
650 CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; 650 CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap;
651 ASSERT(pDIBitmap != NULL); 651 ASSERT(pDIBitmap != NULL);
652 FX_INT32 img_width = pCodec->m_GifFrameRect.Width(); 652 int32_t img_width = pCodec->m_GifFrameRect.Width();
653 if (!pDIBitmap->HasAlpha()) { 653 if (!pDIBitmap->HasAlpha()) {
654 FX_LPBYTE byte_ptr = row_buf; 654 FX_LPBYTE byte_ptr = row_buf;
655 for (int i = 0; i < img_width; i++ ) { 655 for (int i = 0; i < img_width; i++ ) {
656 if(*byte_ptr == pCodec->m_GifTransIndex) { 656 if(*byte_ptr == pCodec->m_GifTransIndex) {
657 *byte_ptr = pCodec->m_GifBgIndex; 657 *byte_ptr = pCodec->m_GifBgIndex;
658 } 658 }
659 byte_ptr++; 659 byte_ptr++;
660 } 660 }
661 } 661 }
662 FX_INT32 pal_index = pCodec->m_GifBgIndex; 662 int32_t pal_index = pCodec->m_GifBgIndex;
663 if (pCodec->m_GifTransIndex != -1 && pCodec->m_pDeviceBitmap->HasAlpha()) { 663 if (pCodec->m_GifTransIndex != -1 && pCodec->m_pDeviceBitmap->HasAlpha()) {
664 pal_index = pCodec->m_GifTransIndex; 664 pal_index = pCodec->m_GifTransIndex;
665 } 665 }
666 FXSYS_memset8(pCodec->m_pDecodeBuf, pal_index, pCodec->m_SrcWidth); 666 FXSYS_memset8(pCodec->m_pDecodeBuf, pal_index, pCodec->m_SrcWidth);
667 FX_BOOL bLastPass = ((row_num % 2) == 1) ? TRUE : FALSE; 667 FX_BOOL bLastPass = ((row_num % 2) == 1) ? TRUE : FALSE;
668 FX_INT32 line = row_num + pCodec->m_GifFrameRect.top; 668 int32_t line = row_num + pCodec->m_GifFrameRect.top;
669 FX_INT32 left = pCodec->m_GifFrameRect.left; 669 int32_t left = pCodec->m_GifFrameRect.left;
670 FXSYS_memcpy32(pCodec->m_pDecodeBuf + left, row_buf, img_width); 670 FXSYS_memcpy32(pCodec->m_pDecodeBuf + left, row_buf, img_width);
671 int src_top = pCodec->m_clipBox.top; 671 int src_top = pCodec->m_clipBox.top;
672 int src_bottom = pCodec->m_clipBox.bottom; 672 int src_bottom = pCodec->m_clipBox.bottom;
673 int des_top = pCodec->m_startY; 673 int des_top = pCodec->m_startY;
674 int src_hei = pCodec->m_clipBox.Height(); 674 int src_hei = pCodec->m_clipBox.Height();
675 int des_hei = pCodec->m_sizeY; 675 int des_hei = pCodec->m_sizeY;
676 if(line >= src_top && line < src_bottom) { 676 if(line >= src_top && line < src_bottom) {
677 double scale_y = (double)des_hei / (double)src_hei; 677 double scale_y = (double)des_hei / (double)src_hei;
678 int src_row = line - src_top; 678 int src_row = line - src_top;
679 int des_row = (int)(src_row * scale_y) + des_top; 679 int des_row = (int)(src_row * scale_y) + des_top;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 case FXDIB_1bppRgb: 725 case FXDIB_1bppRgb:
726 return; 726 return;
727 case FXDIB_8bppMask: 727 case FXDIB_8bppMask:
728 case FXDIB_8bppRgb: { 728 case FXDIB_8bppRgb: {
729 if(pDeviceBitmap->GetPalette() != NULL) { 729 if(pDeviceBitmap->GetPalette() != NULL) {
730 return; 730 return;
731 } 731 }
732 int des_g = 0; 732 int des_g = 0;
733 des_g += pWeight->m_Weights[0] * (*scan_src1++); 733 des_g += pWeight->m_Weights[0] * (*scan_src1++);
734 des_g += pWeight->m_Weights[1] * (*scan_src2++); 734 des_g += pWeight->m_Weights[1] * (*scan_src2++);
735 *scan_des++ = (FX_BYTE)(des_g >> 16); 735 *scan_des++ = (uint8_t)(des_g >> 16);
736 } 736 }
737 break; 737 break;
738 case FXDIB_Rgb: 738 case FXDIB_Rgb:
739 case FXDIB_Rgb32: { 739 case FXDIB_Rgb32: {
740 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 740 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
741 des_b += pWeight->m_Weights[0] * (*scan_src1++); 741 des_b += pWeight->m_Weights[0] * (*scan_src1++);
742 des_g += pWeight->m_Weights[0] * (*scan_src1++); 742 des_g += pWeight->m_Weights[0] * (*scan_src1++);
743 des_r += pWeight->m_Weights[0] * (*scan_src1++); 743 des_r += pWeight->m_Weights[0] * (*scan_src1++);
744 scan_src1 += des_Bpp - 3; 744 scan_src1 += des_Bpp - 3;
745 des_b += pWeight->m_Weights[1] * (*scan_src2++); 745 des_b += pWeight->m_Weights[1] * (*scan_src2++);
746 des_g += pWeight->m_Weights[1] * (*scan_src2++); 746 des_g += pWeight->m_Weights[1] * (*scan_src2++);
747 des_r += pWeight->m_Weights[1] * (*scan_src2++); 747 des_r += pWeight->m_Weights[1] * (*scan_src2++);
748 scan_src2 += des_Bpp - 3; 748 scan_src2 += des_Bpp - 3;
749 *scan_des++ = (FX_BYTE)((des_b) >> 16); 749 *scan_des++ = (uint8_t)((des_b) >> 16);
750 *scan_des++ = (FX_BYTE)((des_g) >> 16); 750 *scan_des++ = (uint8_t)((des_g) >> 16);
751 *scan_des++ = (FX_BYTE)((des_r) >> 16); 751 *scan_des++ = (uint8_t)((des_r) >> 16);
752 scan_des += des_Bpp - 3; 752 scan_des += des_Bpp - 3;
753 } 753 }
754 break; 754 break;
755 case FXDIB_Argb: { 755 case FXDIB_Argb: {
756 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; 756 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0;
757 des_b += pWeight->m_Weights[0] * (*scan_src1++); 757 des_b += pWeight->m_Weights[0] * (*scan_src1++);
758 des_g += pWeight->m_Weights[0] * (*scan_src1++); 758 des_g += pWeight->m_Weights[0] * (*scan_src1++);
759 des_r += pWeight->m_Weights[0] * (*scan_src1++); 759 des_r += pWeight->m_Weights[0] * (*scan_src1++);
760 des_a += pWeight->m_Weights[0] * (*scan_src1++); 760 des_a += pWeight->m_Weights[0] * (*scan_src1++);
761 des_b += pWeight->m_Weights[1] * (*scan_src2++); 761 des_b += pWeight->m_Weights[1] * (*scan_src2++);
762 des_g += pWeight->m_Weights[1] * (*scan_src2++); 762 des_g += pWeight->m_Weights[1] * (*scan_src2++);
763 des_r += pWeight->m_Weights[1] * (*scan_src2++); 763 des_r += pWeight->m_Weights[1] * (*scan_src2++);
764 des_a += pWeight->m_Weights[1] * (*scan_src2++); 764 des_a += pWeight->m_Weights[1] * (*scan_src2++);
765 *scan_des++ = (FX_BYTE)((des_b) >> 16); 765 *scan_des++ = (uint8_t)((des_b) >> 16);
766 *scan_des++ = (FX_BYTE)((des_g) >> 16); 766 *scan_des++ = (uint8_t)((des_g) >> 16);
767 *scan_des++ = (FX_BYTE)((des_r) >> 16); 767 *scan_des++ = (uint8_t)((des_r) >> 16);
768 *scan_des++ = (FX_BYTE)((des_a) >> 16); 768 *scan_des++ = (uint8_t)((des_a) >> 16);
769 } 769 }
770 break; 770 break;
771 default: 771 default:
772 return; 772 return;
773 } 773 }
774 } 774 }
775 } 775 }
776 int des_bottom = des_top + m_sizeY - 1; 776 int des_bottom = des_top + m_sizeY - 1;
777 if(des_row + (int)(2 * scale_y) >= des_bottom && des_row + (int)scale_y < de s_bottom) { 777 if(des_row + (int)(2 * scale_y) >= des_bottom && des_row + (int)scale_y < de s_bottom) {
778 GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y ); 778 GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y );
779 } 779 }
780 } 780 }
781 FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(ICodec_BmpModule* pBmpModule, FXCODEC_STATUS& err_status) 781 FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(ICodec_BmpModule* pBmpModule, FXCODEC_STATUS& err_status)
782 { 782 {
783 FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); 783 FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize();
784 if (dwSize <= m_offSet) { 784 if (dwSize <= m_offSet) {
785 return FALSE; 785 return FALSE;
786 } 786 }
787 dwSize = dwSize - m_offSet; 787 dwSize = dwSize - m_offSet;
788 FX_DWORD dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, NULL); 788 FX_DWORD dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, NULL);
789 if (dwAvail == m_SrcSize) { 789 if (dwAvail == m_SrcSize) {
790 if (dwSize > FXCODEC_BLOCK_SIZE) { 790 if (dwSize > FXCODEC_BLOCK_SIZE) {
791 dwSize = FXCODEC_BLOCK_SIZE; 791 dwSize = FXCODEC_BLOCK_SIZE;
792 } 792 }
793 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_ SIZE * FXCODEC_BLOCK_SIZE; 793 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / FXCODEC_BLOCK_ SIZE * FXCODEC_BLOCK_SIZE;
794 m_pSrcBuf = FX_Realloc(FX_BYTE, m_pSrcBuf, m_SrcSize); 794 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize);
795 if (!m_pSrcBuf) { 795 if (!m_pSrcBuf) {
796 err_status = FXCODEC_STATUS_ERR_MEMORY; 796 err_status = FXCODEC_STATUS_ERR_MEMORY;
797 return FALSE; 797 return FALSE;
798 } 798 }
799 } else { 799 } else {
800 FX_DWORD dwConsume = m_SrcSize - dwAvail; 800 FX_DWORD dwConsume = m_SrcSize - dwAvail;
801 if (dwAvail) { 801 if (dwAvail) {
802 FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); 802 FXSYS_memcpy32(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);
803 } 803 }
804 if (dwSize > dwConsume) { 804 if (dwSize > dwConsume) {
(...skipping 11 matching lines...) Expand all
816 FX_BOOL CCodec_ProgressiveDecoder::BmpInputImagePositionBufCallback(void* pModul e, FX_DWORD rcd_pos) 816 FX_BOOL CCodec_ProgressiveDecoder::BmpInputImagePositionBufCallback(void* pModul e, FX_DWORD rcd_pos)
817 { 817 {
818 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 818 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
819 pCodec->m_offSet = rcd_pos; 819 pCodec->m_offSet = rcd_pos;
820 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; 820 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR;
821 if(!pCodec->BmpReadMoreData(pCodec->m_pCodecMgr->GetBmpModule(), error_statu s)) { 821 if(!pCodec->BmpReadMoreData(pCodec->m_pCodecMgr->GetBmpModule(), error_statu s)) {
822 return FALSE; 822 return FALSE;
823 } 823 }
824 return TRUE; 824 return TRUE;
825 } 825 }
826 void CCodec_ProgressiveDecoder::BmpReadScanlineCallback(void* pModule, FX_INT32 row_num, FX_LPBYTE row_buf) 826 void CCodec_ProgressiveDecoder::BmpReadScanlineCallback(void* pModule, int32_t r ow_num, FX_LPBYTE row_buf)
827 { 827 {
828 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 828 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
829 CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; 829 CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap;
830 ASSERT(pDIBitmap != NULL); 830 ASSERT(pDIBitmap != NULL);
831 FXSYS_memcpy32(pCodec->m_pDecodeBuf, row_buf, pCodec->m_ScanlineSize); 831 FXSYS_memcpy32(pCodec->m_pDecodeBuf, row_buf, pCodec->m_ScanlineSize);
832 int src_top = pCodec->m_clipBox.top; 832 int src_top = pCodec->m_clipBox.top;
833 int src_bottom = pCodec->m_clipBox.bottom; 833 int src_bottom = pCodec->m_clipBox.bottom;
834 int des_top = pCodec->m_startY; 834 int des_top = pCodec->m_startY;
835 int src_hei = pCodec->m_clipBox.Height(); 835 int src_hei = pCodec->m_clipBox.Height();
836 int des_hei = pCodec->m_sizeY; 836 int des_hei = pCodec->m_sizeY;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 case FXDIB_1bppRgb: 880 case FXDIB_1bppRgb:
881 return; 881 return;
882 case FXDIB_8bppMask: 882 case FXDIB_8bppMask:
883 case FXDIB_8bppRgb: { 883 case FXDIB_8bppRgb: {
884 if(pDeviceBitmap->GetPalette() != NULL) { 884 if(pDeviceBitmap->GetPalette() != NULL) {
885 return; 885 return;
886 } 886 }
887 int des_g = 0; 887 int des_g = 0;
888 des_g += pWeight->m_Weights[0] * (*scan_src1++); 888 des_g += pWeight->m_Weights[0] * (*scan_src1++);
889 des_g += pWeight->m_Weights[1] * (*scan_src2++); 889 des_g += pWeight->m_Weights[1] * (*scan_src2++);
890 *scan_des++ = (FX_BYTE)(des_g >> 16); 890 *scan_des++ = (uint8_t)(des_g >> 16);
891 } 891 }
892 break; 892 break;
893 case FXDIB_Rgb: 893 case FXDIB_Rgb:
894 case FXDIB_Rgb32: { 894 case FXDIB_Rgb32: {
895 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 895 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
896 des_b += pWeight->m_Weights[0] * (*scan_src1++); 896 des_b += pWeight->m_Weights[0] * (*scan_src1++);
897 des_g += pWeight->m_Weights[0] * (*scan_src1++); 897 des_g += pWeight->m_Weights[0] * (*scan_src1++);
898 des_r += pWeight->m_Weights[0] * (*scan_src1++); 898 des_r += pWeight->m_Weights[0] * (*scan_src1++);
899 scan_src1 += des_Bpp - 3; 899 scan_src1 += des_Bpp - 3;
900 des_b += pWeight->m_Weights[1] * (*scan_src2++); 900 des_b += pWeight->m_Weights[1] * (*scan_src2++);
901 des_g += pWeight->m_Weights[1] * (*scan_src2++); 901 des_g += pWeight->m_Weights[1] * (*scan_src2++);
902 des_r += pWeight->m_Weights[1] * (*scan_src2++); 902 des_r += pWeight->m_Weights[1] * (*scan_src2++);
903 scan_src2 += des_Bpp - 3; 903 scan_src2 += des_Bpp - 3;
904 *scan_des++ = (FX_BYTE)((des_b) >> 16); 904 *scan_des++ = (uint8_t)((des_b) >> 16);
905 *scan_des++ = (FX_BYTE)((des_g) >> 16); 905 *scan_des++ = (uint8_t)((des_g) >> 16);
906 *scan_des++ = (FX_BYTE)((des_r) >> 16); 906 *scan_des++ = (uint8_t)((des_r) >> 16);
907 scan_des += des_Bpp - 3; 907 scan_des += des_Bpp - 3;
908 } 908 }
909 break; 909 break;
910 case FXDIB_Argb: { 910 case FXDIB_Argb: {
911 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; 911 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0;
912 des_b += pWeight->m_Weights[0] * (*scan_src1++); 912 des_b += pWeight->m_Weights[0] * (*scan_src1++);
913 des_g += pWeight->m_Weights[0] * (*scan_src1++); 913 des_g += pWeight->m_Weights[0] * (*scan_src1++);
914 des_r += pWeight->m_Weights[0] * (*scan_src1++); 914 des_r += pWeight->m_Weights[0] * (*scan_src1++);
915 des_a += pWeight->m_Weights[0] * (*scan_src1++); 915 des_a += pWeight->m_Weights[0] * (*scan_src1++);
916 des_b += pWeight->m_Weights[1] * (*scan_src2++); 916 des_b += pWeight->m_Weights[1] * (*scan_src2++);
917 des_g += pWeight->m_Weights[1] * (*scan_src2++); 917 des_g += pWeight->m_Weights[1] * (*scan_src2++);
918 des_r += pWeight->m_Weights[1] * (*scan_src2++); 918 des_r += pWeight->m_Weights[1] * (*scan_src2++);
919 des_a += pWeight->m_Weights[1] * (*scan_src2++); 919 des_a += pWeight->m_Weights[1] * (*scan_src2++);
920 *scan_des++ = (FX_BYTE)((des_b) >> 16); 920 *scan_des++ = (uint8_t)((des_b) >> 16);
921 *scan_des++ = (FX_BYTE)((des_g) >> 16); 921 *scan_des++ = (uint8_t)((des_g) >> 16);
922 *scan_des++ = (FX_BYTE)((des_r) >> 16); 922 *scan_des++ = (uint8_t)((des_r) >> 16);
923 *scan_des++ = (FX_BYTE)((des_a) >> 16); 923 *scan_des++ = (uint8_t)((des_a) >> 16);
924 } 924 }
925 break; 925 break;
926 default: 926 default:
927 return; 927 return;
928 } 928 }
929 } 929 }
930 } 930 }
931 } 931 }
932 FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(FXCODEC_IMAGE_TYPE imageType, CFX_DIBAttribute* pAttribute) 932 FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(FXCODEC_IMAGE_TYPE imageType, CFX_DIBAttribute* pAttribute)
933 { 933 {
934 m_offSet = 0; 934 m_offSet = 0;
935 FX_DWORD size = (FX_DWORD)m_pFile->GetSize(); 935 FX_DWORD size = (FX_DWORD)m_pFile->GetSize();
936 if(size > FXCODEC_BLOCK_SIZE) { 936 if(size > FXCODEC_BLOCK_SIZE) {
937 size = FXCODEC_BLOCK_SIZE; 937 size = FXCODEC_BLOCK_SIZE;
938 } 938 }
939 if(m_pSrcBuf != NULL) { 939 if(m_pSrcBuf != NULL) {
940 FX_Free(m_pSrcBuf); 940 FX_Free(m_pSrcBuf);
941 m_pSrcBuf = NULL; 941 m_pSrcBuf = NULL;
942 } 942 }
943 m_pSrcBuf = FX_Alloc(FX_BYTE, size); 943 m_pSrcBuf = FX_Alloc(uint8_t, size);
944 if(m_pSrcBuf == NULL) { 944 if(m_pSrcBuf == NULL) {
945 m_status = FXCODEC_STATUS_ERR_MEMORY; 945 m_status = FXCODEC_STATUS_ERR_MEMORY;
946 return FALSE; 946 return FALSE;
947 } 947 }
948 FXSYS_memset32(m_pSrcBuf, 0, size); 948 FXSYS_memset32(m_pSrcBuf, 0, size);
949 m_SrcSize = size; 949 m_SrcSize = size;
950 switch(imageType) { 950 switch(imageType) {
951 case FXCODEC_IMAGE_BMP: { 951 case FXCODEC_IMAGE_BMP: {
952 ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); 952 ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
953 if(pBmpModule == NULL) { 953 if(pBmpModule == NULL) {
954 m_status = FXCODEC_STATUS_ERR_MEMORY; 954 m_status = FXCODEC_STATUS_ERR_MEMORY;
955 return FALSE; 955 return FALSE;
956 } 956 }
957 pBmpModule->InputImagePositionBufCallback = BmpInputImagePositio nBufCallback; 957 pBmpModule->InputImagePositionBufCallback = BmpInputImagePositio nBufCallback;
958 pBmpModule->ReadScanlineCallback = BmpReadScanlineCallback; 958 pBmpModule->ReadScanlineCallback = BmpReadScanlineCallback;
959 m_pBmpContext = pBmpModule->Start((void*)this); 959 m_pBmpContext = pBmpModule->Start((void*)this);
960 if(m_pBmpContext == NULL) { 960 if(m_pBmpContext == NULL) {
961 m_status = FXCODEC_STATUS_ERR_MEMORY; 961 m_status = FXCODEC_STATUS_ERR_MEMORY;
962 return FALSE; 962 return FALSE;
963 } 963 }
964 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); 964 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
965 if(!bResult) { 965 if(!bResult) {
966 m_status = FXCODEC_STATUS_ERR_READ; 966 m_status = FXCODEC_STATUS_ERR_READ;
967 return FALSE; 967 return FALSE;
968 } 968 }
969 m_offSet += size; 969 m_offSet += size;
970 pBmpModule->Input(m_pBmpContext, m_pSrcBuf, size); 970 pBmpModule->Input(m_pBmpContext, m_pSrcBuf, size);
971 FX_DWORD* pPalette = NULL; 971 FX_DWORD* pPalette = NULL;
972 FX_INT32 readResult = pBmpModule->ReadHeader(m_pBmpContext, &m_S rcWidth, &m_SrcHeight, &m_BmpIsTopBottom, 972 int32_t readResult = pBmpModule->ReadHeader(m_pBmpContext, &m_Sr cWidth, &m_SrcHeight, &m_BmpIsTopBottom,
973 &m_SrcComponents, &m_SrcPaletteNumber, &pP alette, pAttribute); 973 &m_SrcComponents, &m_SrcPaletteNumber, &pP alette, pAttribute);
974 while(readResult == 2) { 974 while(readResult == 2) {
975 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; 975 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT;
976 if(!BmpReadMoreData(pBmpModule, error_status)) { 976 if(!BmpReadMoreData(pBmpModule, error_status)) {
977 m_status = error_status; 977 m_status = error_status;
978 return FALSE; 978 return FALSE;
979 } 979 }
980 readResult = pBmpModule->ReadHeader(m_pBmpContext, &m_SrcWid th, &m_SrcHeight, &m_BmpIsTopBottom, 980 readResult = pBmpModule->ReadHeader(m_pBmpContext, &m_SrcWid th, &m_SrcHeight, &m_BmpIsTopBottom,
981 &m_SrcComponents, &m_Src PaletteNumber, &pPalette, pAttribute); 981 &m_SrcComponents, &m_Src PaletteNumber, &pPalette, pAttribute);
982 } 982 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 m_status = FXCODEC_STATUS_ERR_MEMORY; 1016 m_status = FXCODEC_STATUS_ERR_MEMORY;
1017 return FALSE; 1017 return FALSE;
1018 } 1018 }
1019 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); 1019 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
1020 if(!bResult) { 1020 if(!bResult) {
1021 m_status = FXCODEC_STATUS_ERR_READ; 1021 m_status = FXCODEC_STATUS_ERR_READ;
1022 return FALSE; 1022 return FALSE;
1023 } 1023 }
1024 m_offSet += size; 1024 m_offSet += size;
1025 pJpegModule->Input(m_pJpegContext, m_pSrcBuf, size); 1025 pJpegModule->Input(m_pJpegContext, m_pSrcBuf, size);
1026 FX_INT32 readResult = pJpegModule->ReadHeader(m_pJpegContext, &m _SrcWidth, &m_SrcHeight, &m_SrcComponents, pAttribute); 1026 int32_t readResult = pJpegModule->ReadHeader(m_pJpegContext, &m_ SrcWidth, &m_SrcHeight, &m_SrcComponents, pAttribute);
1027 while(readResult == 2) { 1027 while(readResult == 2) {
1028 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; 1028 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT;
1029 if(!JpegReadMoreData(pJpegModule, error_status)) { 1029 if(!JpegReadMoreData(pJpegModule, error_status)) {
1030 m_status = error_status; 1030 m_status = error_status;
1031 return FALSE; 1031 return FALSE;
1032 } 1032 }
1033 readResult = pJpegModule->ReadHeader(m_pJpegContext, &m_SrcW idth, &m_SrcHeight, &m_SrcComponents, pAttribute); 1033 readResult = pJpegModule->ReadHeader(m_pJpegContext, &m_SrcW idth, &m_SrcHeight, &m_SrcComponents, pAttribute);
1034 } 1034 }
1035 if(!readResult) { 1035 if(!readResult) {
1036 m_SrcBPC = 8; 1036 m_SrcBPC = 8;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1072 if(input_size == 0) { 1072 if(input_size == 0) {
1073 if(m_pPngContext != NULL) { 1073 if(m_pPngContext != NULL) {
1074 pPngModule->Finish(m_pPngContext); 1074 pPngModule->Finish(m_pPngContext);
1075 } 1075 }
1076 m_pPngContext = NULL; 1076 m_pPngContext = NULL;
1077 m_status = FXCODEC_STATUS_ERR_FORMAT; 1077 m_status = FXCODEC_STATUS_ERR_FORMAT;
1078 return FALSE; 1078 return FALSE;
1079 } 1079 }
1080 if(m_pSrcBuf != NULL && input_size > m_SrcSize) { 1080 if(m_pSrcBuf != NULL && input_size > m_SrcSize) {
1081 FX_Free(m_pSrcBuf); 1081 FX_Free(m_pSrcBuf);
1082 m_pSrcBuf = FX_Alloc(FX_BYTE, input_size); 1082 m_pSrcBuf = FX_Alloc(uint8_t, input_size);
1083 if(m_pSrcBuf == NULL) { 1083 if(m_pSrcBuf == NULL) {
1084 m_status = FXCODEC_STATUS_ERR_MEMORY; 1084 m_status = FXCODEC_STATUS_ERR_MEMORY;
1085 return FALSE; 1085 return FALSE;
1086 } 1086 }
1087 FXSYS_memset32(m_pSrcBuf, 0, input_size); 1087 FXSYS_memset32(m_pSrcBuf, 0, input_size);
1088 m_SrcSize = input_size; 1088 m_SrcSize = input_size;
1089 } 1089 }
1090 bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size ); 1090 bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size );
1091 if(!bResult) { 1091 if(!bResult) {
1092 m_status = FXCODEC_STATUS_ERR_READ; 1092 m_status = FXCODEC_STATUS_ERR_READ;
(...skipping 29 matching lines...) Expand all
1122 return FALSE; 1122 return FALSE;
1123 } 1123 }
1124 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); 1124 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
1125 if(!bResult) { 1125 if(!bResult) {
1126 m_status = FXCODEC_STATUS_ERR_READ; 1126 m_status = FXCODEC_STATUS_ERR_READ;
1127 return FALSE; 1127 return FALSE;
1128 } 1128 }
1129 m_offSet += size; 1129 m_offSet += size;
1130 pGifModule->Input(m_pGifContext, m_pSrcBuf, size); 1130 pGifModule->Input(m_pGifContext, m_pSrcBuf, size);
1131 m_SrcComponents = 1; 1131 m_SrcComponents = 1;
1132 FX_INT32 readResult = pGifModule->ReadHeader(m_pGifContext, &m_S rcWidth, &m_SrcHeight, 1132 int32_t readResult = pGifModule->ReadHeader(m_pGifContext, &m_Sr cWidth, &m_SrcHeight,
1133 &m_GifPltNumber, (void**)&m_pGifPalette, & m_GifBgIndex); 1133 &m_GifPltNumber, (void**)&m_pGifPalette, & m_GifBgIndex);
1134 while(readResult == 2) { 1134 while(readResult == 2) {
1135 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; 1135 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT;
1136 if(!GifReadMoreData(pGifModule, error_status)) { 1136 if(!GifReadMoreData(pGifModule, error_status)) {
1137 m_status = error_status; 1137 m_status = error_status;
1138 return FALSE; 1138 return FALSE;
1139 } 1139 }
1140 readResult = pGifModule->ReadHeader(m_pGifContext, &m_SrcWid th, &m_SrcHeight, 1140 readResult = pGifModule->ReadHeader(m_pGifContext, &m_SrcWid th, &m_SrcHeight,
1141 &m_GifPltNumber, (void** )&m_pGifPalette, &m_GifBgIndex); 1141 &m_GifPltNumber, (void** )&m_pGifPalette, &m_GifBgIndex);
1142 } 1142 }
(...skipping 14 matching lines...) Expand all
1157 ICodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); 1157 ICodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule();
1158 if(pTiffModule == NULL) { 1158 if(pTiffModule == NULL) {
1159 m_status = FXCODEC_STATUS_ERR_FORMAT; 1159 m_status = FXCODEC_STATUS_ERR_FORMAT;
1160 return FALSE; 1160 return FALSE;
1161 } 1161 }
1162 m_pTiffContext = pTiffModule->CreateDecoder(m_pFile); 1162 m_pTiffContext = pTiffModule->CreateDecoder(m_pFile);
1163 if(m_pTiffContext == NULL) { 1163 if(m_pTiffContext == NULL) {
1164 m_status = FXCODEC_STATUS_ERR_FORMAT; 1164 m_status = FXCODEC_STATUS_ERR_FORMAT;
1165 return FALSE; 1165 return FALSE;
1166 } 1166 }
1167 FX_INT32 frames = 0; 1167 int32_t frames = 0;
1168 pTiffModule->GetFrames(m_pTiffContext, frames); 1168 pTiffModule->GetFrames(m_pTiffContext, frames);
1169 FX_DWORD bpc; 1169 FX_DWORD bpc;
1170 FX_BOOL ret = pTiffModule->LoadFrameInfo(m_pTiffContext, 0, (FX_ DWORD&)m_SrcWidth, (FX_DWORD&)m_SrcHeight, (FX_DWORD&)m_SrcComponents, bpc, pAtt ribute); 1170 FX_BOOL ret = pTiffModule->LoadFrameInfo(m_pTiffContext, 0, (FX_ DWORD&)m_SrcWidth, (FX_DWORD&)m_SrcHeight, (FX_DWORD&)m_SrcComponents, bpc, pAtt ribute);
1171 m_SrcComponents = 4; 1171 m_SrcComponents = 4;
1172 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); 1172 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight);
1173 if(!ret) { 1173 if(!ret) {
1174 pTiffModule->DestroyDecoder(m_pTiffContext); 1174 pTiffModule->DestroyDecoder(m_pTiffContext);
1175 (m_pTiffContext = NULL); 1175 (m_pTiffContext = NULL);
1176 (m_status = FXCODEC_STATUS_ERR_FORMAT); 1176 (m_status = FXCODEC_STATUS_ERR_FORMAT);
1177 return FALSE; 1177 return FALSE;
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1373 } 1373 }
1374 } 1374 }
1375 break; 1375 break;
1376 default: 1376 default:
1377 m_TransMethod = -1; 1377 m_TransMethod = -1;
1378 } 1378 }
1379 } 1379 }
1380 void _RGB2BGR(FX_LPBYTE buffer, int width = 1) 1380 void _RGB2BGR(FX_LPBYTE buffer, int width = 1)
1381 { 1381 {
1382 if (buffer && width > 0) { 1382 if (buffer && width > 0) {
1383 FX_BYTE temp; 1383 uint8_t temp;
1384 int i = 0; 1384 int i = 0;
1385 int j = 0; 1385 int j = 0;
1386 for (; i < width; i++, j += 3) { 1386 for (; i < width; i++, j += 3) {
1387 temp = buffer[j]; 1387 temp = buffer[j];
1388 buffer[j] = buffer[j + 2]; 1388 buffer[j] = buffer[j + 2];
1389 buffer[j + 2] = temp; 1389 buffer[j + 2] = temp;
1390 } 1390 }
1391 } 1391 }
1392 } 1392 }
1393 void CCodec_ProgressiveDecoder::ReSampleScanline(CFX_DIBitmap* pDeviceBitmap, in t des_line, FX_LPBYTE src_scan, FXCodec_Format src_format) 1393 void CCodec_ProgressiveDecoder::ReSampleScanline(CFX_DIBitmap* pDeviceBitmap, in t des_line, FX_LPBYTE src_scan, FXCodec_Format src_format)
(...skipping 15 matching lines...) Expand all
1409 case 0: 1409 case 0:
1410 return; 1410 return;
1411 case 1: 1411 case 1:
1412 return; 1412 return;
1413 case 2: { 1413 case 2: {
1414 FX_DWORD des_g = 0; 1414 FX_DWORD des_g = 0;
1415 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) { 1415 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) {
1416 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1416 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1417 des_g += pixel_weight * src_scan[j]; 1417 des_g += pixel_weight * src_scan[j];
1418 } 1418 }
1419 *des_scan++ = (FX_BYTE)(des_g >> 16); 1419 *des_scan++ = (uint8_t)(des_g >> 16);
1420 } 1420 }
1421 break; 1421 break;
1422 case 3: { 1422 case 3: {
1423 int des_r = 0, des_g = 0, des_b = 0; 1423 int des_r = 0, des_g = 0, des_b = 0;
1424 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j ++) { 1424 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j ++) {
1425 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1425 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1426 unsigned long argb = m_pSrcPalette[src_scan[j]]; 1426 unsigned long argb = m_pSrcPalette[src_scan[j]];
1427 des_r += pixel_weight * (FX_BYTE)(argb >> 16); 1427 des_r += pixel_weight * (uint8_t)(argb >> 16);
1428 des_g += pixel_weight * (FX_BYTE)(argb >> 8); 1428 des_g += pixel_weight * (uint8_t)(argb >> 8);
1429 des_b += pixel_weight * (FX_BYTE)argb; 1429 des_b += pixel_weight * (uint8_t)argb;
1430 } 1430 }
1431 *des_scan++ = (FX_BYTE)FXRGB2GRAY((des_r >> 16), (des_g >> 1 6), (des_b >> 16)); 1431 *des_scan++ = (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 1 6), (des_b >> 16));
1432 } 1432 }
1433 break; 1433 break;
1434 case 4: { 1434 case 4: {
1435 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1435 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
1436 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) { 1436 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) {
1437 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1437 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1438 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp; 1438 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp;
1439 des_b += pixel_weight * (*src_pixel++); 1439 des_b += pixel_weight * (*src_pixel++);
1440 des_g += pixel_weight * (*src_pixel++); 1440 des_g += pixel_weight * (*src_pixel++);
1441 des_r += pixel_weight * (*src_pixel); 1441 des_r += pixel_weight * (*src_pixel);
1442 } 1442 }
1443 *des_scan++ = (FX_BYTE)FXRGB2GRAY((des_r >> 16), (des_g >> 1 6), (des_b >> 16)); 1443 *des_scan++ = (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 1 6), (des_b >> 16));
1444 } 1444 }
1445 break; 1445 break;
1446 case 5: { 1446 case 5: {
1447 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1447 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
1448 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) { 1448 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) {
1449 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1449 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1450 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp; 1450 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp;
1451 FX_BYTE src_b = 0, src_g = 0, src_r = 0; 1451 uint8_t src_b = 0, src_g = 0, src_r = 0;
1452 AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1 ], 255 - src_pixel[2], 255 - src_pixel[3], 1452 AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1 ], 255 - src_pixel[2], 255 - src_pixel[3],
1453 src_r, src_g, src_b); 1453 src_r, src_g, src_b);
1454 des_b += pixel_weight * src_b; 1454 des_b += pixel_weight * src_b;
1455 des_g += pixel_weight * src_g; 1455 des_g += pixel_weight * src_g;
1456 des_r += pixel_weight * src_r; 1456 des_r += pixel_weight * src_r;
1457 } 1457 }
1458 *des_scan++ = (FX_BYTE)FXRGB2GRAY((des_r >> 16), (des_g >> 1 6), (des_b >> 16)); 1458 *des_scan++ = (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 1 6), (des_b >> 16));
1459 } 1459 }
1460 break; 1460 break;
1461 case 6: 1461 case 6:
1462 return; 1462 return;
1463 case 7: { 1463 case 7: {
1464 FX_DWORD des_g = 0; 1464 FX_DWORD des_g = 0;
1465 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) { 1465 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) {
1466 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1466 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1467 des_g += pixel_weight * src_scan[j]; 1467 des_g += pixel_weight * src_scan[j];
1468 } 1468 }
1469 FXSYS_memset8(des_scan, (FX_BYTE)(des_g >> 16), 3); 1469 FXSYS_memset8(des_scan, (uint8_t)(des_g >> 16), 3);
1470 des_scan += des_Bpp; 1470 des_scan += des_Bpp;
1471 } 1471 }
1472 break; 1472 break;
1473 case 8: { 1473 case 8: {
1474 int des_r = 0, des_g = 0, des_b = 0; 1474 int des_r = 0, des_g = 0, des_b = 0;
1475 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j ++) { 1475 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j ++) {
1476 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1476 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1477 unsigned long argb = m_pSrcPalette[src_scan[j]]; 1477 unsigned long argb = m_pSrcPalette[src_scan[j]];
1478 des_r += pixel_weight * (FX_BYTE)(argb >> 16); 1478 des_r += pixel_weight * (uint8_t)(argb >> 16);
1479 des_g += pixel_weight * (FX_BYTE)(argb >> 8); 1479 des_g += pixel_weight * (uint8_t)(argb >> 8);
1480 des_b += pixel_weight * (FX_BYTE)argb; 1480 des_b += pixel_weight * (uint8_t)argb;
1481 } 1481 }
1482 *des_scan++ = (FX_BYTE)((des_b) >> 16); 1482 *des_scan++ = (uint8_t)((des_b) >> 16);
1483 *des_scan++ = (FX_BYTE)((des_g) >> 16); 1483 *des_scan++ = (uint8_t)((des_g) >> 16);
1484 *des_scan++ = (FX_BYTE)((des_r) >> 16); 1484 *des_scan++ = (uint8_t)((des_r) >> 16);
1485 des_scan += des_Bpp - 3; 1485 des_scan += des_Bpp - 3;
1486 } 1486 }
1487 break; 1487 break;
1488 case 12: { 1488 case 12: {
1489 if (m_pBmpContext) { 1489 if (m_pBmpContext) {
1490 int des_r = 0, des_g = 0, des_b = 0; 1490 int des_r = 0, des_g = 0, des_b = 0;
1491 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeigh ts->m_SrcEnd; j ++) { 1491 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeigh ts->m_SrcEnd; j ++) {
1492 int pixel_weight = pPixelWeights->m_Weights[j - pPix elWeights->m_SrcStart]; 1492 int pixel_weight = pPixelWeights->m_Weights[j - pPix elWeights->m_SrcStart];
1493 unsigned long argb = m_pSrcPalette[src_scan[j]]; 1493 unsigned long argb = m_pSrcPalette[src_scan[j]];
1494 des_r += pixel_weight * (FX_BYTE)(argb >> 16); 1494 des_r += pixel_weight * (uint8_t)(argb >> 16);
1495 des_g += pixel_weight * (FX_BYTE)(argb >> 8); 1495 des_g += pixel_weight * (uint8_t)(argb >> 8);
1496 des_b += pixel_weight * (FX_BYTE)argb; 1496 des_b += pixel_weight * (uint8_t)argb;
1497 } 1497 }
1498 *des_scan++ = (FX_BYTE)((des_b) >> 16); 1498 *des_scan++ = (uint8_t)((des_b) >> 16);
1499 *des_scan++ = (FX_BYTE)((des_g) >> 16); 1499 *des_scan++ = (uint8_t)((des_g) >> 16);
1500 *des_scan++ = (FX_BYTE)((des_r) >> 16); 1500 *des_scan++ = (uint8_t)((des_r) >> 16);
1501 *des_scan++ = 0xFF; 1501 *des_scan++ = 0xFF;
1502 } else { 1502 } else {
1503 int des_a = 0, des_r = 0, des_g = 0, des_b = 0; 1503 int des_a = 0, des_r = 0, des_g = 0, des_b = 0;
1504 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeigh ts->m_SrcEnd; j ++) { 1504 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeigh ts->m_SrcEnd; j ++) {
1505 int pixel_weight = pPixelWeights->m_Weights[j - pPix elWeights->m_SrcStart]; 1505 int pixel_weight = pPixelWeights->m_Weights[j - pPix elWeights->m_SrcStart];
1506 unsigned long argb = m_pSrcPalette[src_scan[j]]; 1506 unsigned long argb = m_pSrcPalette[src_scan[j]];
1507 des_a += pixel_weight * (FX_BYTE)(argb >> 24); 1507 des_a += pixel_weight * (uint8_t)(argb >> 24);
1508 des_r += pixel_weight * (FX_BYTE)(argb >> 16); 1508 des_r += pixel_weight * (uint8_t)(argb >> 16);
1509 des_g += pixel_weight * (FX_BYTE)(argb >> 8); 1509 des_g += pixel_weight * (uint8_t)(argb >> 8);
1510 des_b += pixel_weight * (FX_BYTE)argb; 1510 des_b += pixel_weight * (uint8_t)argb;
1511 } 1511 }
1512 *des_scan++ = (FX_BYTE)((des_b) >> 16); 1512 *des_scan++ = (uint8_t)((des_b) >> 16);
1513 *des_scan++ = (FX_BYTE)((des_g) >> 16); 1513 *des_scan++ = (uint8_t)((des_g) >> 16);
1514 *des_scan++ = (FX_BYTE)((des_r) >> 16); 1514 *des_scan++ = (uint8_t)((des_r) >> 16);
1515 *des_scan++ = (FX_BYTE)((des_a) >> 16); 1515 *des_scan++ = (uint8_t)((des_a) >> 16);
1516 } 1516 }
1517 } 1517 }
1518 break; 1518 break;
1519 case 9: { 1519 case 9: {
1520 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1520 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
1521 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) { 1521 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) {
1522 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1522 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1523 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp; 1523 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp;
1524 des_b += pixel_weight * (*src_pixel++); 1524 des_b += pixel_weight * (*src_pixel++);
1525 des_g += pixel_weight * (*src_pixel++); 1525 des_g += pixel_weight * (*src_pixel++);
1526 des_r += pixel_weight * (*src_pixel); 1526 des_r += pixel_weight * (*src_pixel);
1527 } 1527 }
1528 *des_scan++ = (FX_BYTE)((des_b) >> 16); 1528 *des_scan++ = (uint8_t)((des_b) >> 16);
1529 *des_scan++ = (FX_BYTE)((des_g) >> 16); 1529 *des_scan++ = (uint8_t)((des_g) >> 16);
1530 *des_scan++ = (FX_BYTE)((des_r) >> 16); 1530 *des_scan++ = (uint8_t)((des_r) >> 16);
1531 des_scan += des_Bpp - 3; 1531 des_scan += des_Bpp - 3;
1532 } 1532 }
1533 break; 1533 break;
1534 case 10: { 1534 case 10: {
1535 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1535 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
1536 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) { 1536 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j++) {
1537 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1537 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1538 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp; 1538 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp;
1539 FX_BYTE src_b = 0, src_g = 0, src_r = 0; 1539 uint8_t src_b = 0, src_g = 0, src_r = 0;
1540 AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1 ], 255 - src_pixel[2], 255 - src_pixel[3], 1540 AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1 ], 255 - src_pixel[2], 255 - src_pixel[3],
1541 src_r, src_g, src_b); 1541 src_r, src_g, src_b);
1542 des_b += pixel_weight * src_b; 1542 des_b += pixel_weight * src_b;
1543 des_g += pixel_weight * src_g; 1543 des_g += pixel_weight * src_g;
1544 des_r += pixel_weight * src_r; 1544 des_r += pixel_weight * src_r;
1545 } 1545 }
1546 *des_scan++ = (FX_BYTE)((des_b) >> 16); 1546 *des_scan++ = (uint8_t)((des_b) >> 16);
1547 *des_scan++ = (FX_BYTE)((des_g) >> 16); 1547 *des_scan++ = (uint8_t)((des_g) >> 16);
1548 *des_scan++ = (FX_BYTE)((des_r) >> 16); 1548 *des_scan++ = (uint8_t)((des_r) >> 16);
1549 des_scan += des_Bpp - 3; 1549 des_scan += des_Bpp - 3;
1550 } 1550 }
1551 break; 1551 break;
1552 case 11: { 1552 case 11: {
1553 FX_DWORD des_alpha = 0, des_r = 0, des_g = 0, des_b = 0; 1553 FX_DWORD des_alpha = 0, des_r = 0, des_g = 0, des_b = 0;
1554 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j ++) { 1554 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights-> m_SrcEnd; j ++) {
1555 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart]; 1555 int pixel_weight = pPixelWeights->m_Weights[j - pPixelWe ights->m_SrcStart];
1556 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp; 1556 FX_LPCBYTE src_pixel = src_scan + j * src_Bpp;
1557 pixel_weight = pixel_weight * src_pixel[3] / 255; 1557 pixel_weight = pixel_weight * src_pixel[3] / 255;
1558 des_b += pixel_weight * (*src_pixel++); 1558 des_b += pixel_weight * (*src_pixel++);
1559 des_g += pixel_weight * (*src_pixel++); 1559 des_g += pixel_weight * (*src_pixel++);
1560 des_r += pixel_weight * (*src_pixel); 1560 des_r += pixel_weight * (*src_pixel);
1561 des_alpha += pixel_weight; 1561 des_alpha += pixel_weight;
1562 } 1562 }
1563 *des_scan++ = (FX_BYTE)((des_b) >> 16); 1563 *des_scan++ = (uint8_t)((des_b) >> 16);
1564 *des_scan++ = (FX_BYTE)((des_g) >> 16); 1564 *des_scan++ = (uint8_t)((des_g) >> 16);
1565 *des_scan++ = (FX_BYTE)((des_r) >> 16); 1565 *des_scan++ = (uint8_t)((des_r) >> 16);
1566 *des_scan++ = (FX_BYTE)((des_alpha * 255) >> 16); 1566 *des_scan++ = (uint8_t)((des_alpha * 255) >> 16);
1567 } 1567 }
1568 break; 1568 break;
1569 default: 1569 default:
1570 return; 1570 return;
1571 } 1571 }
1572 } 1572 }
1573 } 1573 }
1574 void CCodec_ProgressiveDecoder::ResampleVert(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row) 1574 void CCodec_ProgressiveDecoder::ResampleVert(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row)
1575 { 1575 {
1576 int des_Bpp = pDeviceBitmap->GetBPP() >> 3; 1576 int des_Bpp = pDeviceBitmap->GetBPP() >> 3;
(...skipping 25 matching lines...) Expand all
1602 case FXDIB_1bppRgb: 1602 case FXDIB_1bppRgb:
1603 return; 1603 return;
1604 case FXDIB_8bppMask: 1604 case FXDIB_8bppMask:
1605 case FXDIB_8bppRgb: { 1605 case FXDIB_8bppRgb: {
1606 if(pDeviceBitmap->GetPalette() != NULL) { 1606 if(pDeviceBitmap->GetPalette() != NULL) {
1607 return; 1607 return;
1608 } 1608 }
1609 int des_g = 0; 1609 int des_g = 0;
1610 des_g += pWeight->m_Weights[0] * (*scan_src1++); 1610 des_g += pWeight->m_Weights[0] * (*scan_src1++);
1611 des_g += pWeight->m_Weights[1] * (*scan_src2++); 1611 des_g += pWeight->m_Weights[1] * (*scan_src2++);
1612 *scan_des++ = (FX_BYTE)(des_g >> 16); 1612 *scan_des++ = (uint8_t)(des_g >> 16);
1613 } 1613 }
1614 break; 1614 break;
1615 case FXDIB_Rgb: 1615 case FXDIB_Rgb:
1616 case FXDIB_Rgb32: { 1616 case FXDIB_Rgb32: {
1617 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1617 FX_DWORD des_b = 0, des_g = 0, des_r = 0;
1618 des_b += pWeight->m_Weights[0] * (*scan_src1++); 1618 des_b += pWeight->m_Weights[0] * (*scan_src1++);
1619 des_g += pWeight->m_Weights[0] * (*scan_src1++); 1619 des_g += pWeight->m_Weights[0] * (*scan_src1++);
1620 des_r += pWeight->m_Weights[0] * (*scan_src1++); 1620 des_r += pWeight->m_Weights[0] * (*scan_src1++);
1621 scan_src1 += des_Bpp - 3; 1621 scan_src1 += des_Bpp - 3;
1622 des_b += pWeight->m_Weights[1] * (*scan_src2++); 1622 des_b += pWeight->m_Weights[1] * (*scan_src2++);
1623 des_g += pWeight->m_Weights[1] * (*scan_src2++); 1623 des_g += pWeight->m_Weights[1] * (*scan_src2++);
1624 des_r += pWeight->m_Weights[1] * (*scan_src2++); 1624 des_r += pWeight->m_Weights[1] * (*scan_src2++);
1625 scan_src2 += des_Bpp - 3; 1625 scan_src2 += des_Bpp - 3;
1626 *scan_des++ = (FX_BYTE)((des_b) >> 16); 1626 *scan_des++ = (uint8_t)((des_b) >> 16);
1627 *scan_des++ = (FX_BYTE)((des_g) >> 16); 1627 *scan_des++ = (uint8_t)((des_g) >> 16);
1628 *scan_des++ = (FX_BYTE)((des_r) >> 16); 1628 *scan_des++ = (uint8_t)((des_r) >> 16);
1629 scan_des += des_Bpp - 3; 1629 scan_des += des_Bpp - 3;
1630 } 1630 }
1631 break; 1631 break;
1632 case FXDIB_Argb: { 1632 case FXDIB_Argb: {
1633 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; 1633 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0;
1634 des_b += pWeight->m_Weights[0] * (*scan_src1++); 1634 des_b += pWeight->m_Weights[0] * (*scan_src1++);
1635 des_g += pWeight->m_Weights[0] * (*scan_src1++); 1635 des_g += pWeight->m_Weights[0] * (*scan_src1++);
1636 des_r += pWeight->m_Weights[0] * (*scan_src1++); 1636 des_r += pWeight->m_Weights[0] * (*scan_src1++);
1637 des_a += pWeight->m_Weights[0] * (*scan_src1++); 1637 des_a += pWeight->m_Weights[0] * (*scan_src1++);
1638 des_b += pWeight->m_Weights[1] * (*scan_src2++); 1638 des_b += pWeight->m_Weights[1] * (*scan_src2++);
1639 des_g += pWeight->m_Weights[1] * (*scan_src2++); 1639 des_g += pWeight->m_Weights[1] * (*scan_src2++);
1640 des_r += pWeight->m_Weights[1] * (*scan_src2++); 1640 des_r += pWeight->m_Weights[1] * (*scan_src2++);
1641 des_a += pWeight->m_Weights[1] * (*scan_src2++); 1641 des_a += pWeight->m_Weights[1] * (*scan_src2++);
1642 *scan_des++ = (FX_BYTE)((des_b) >> 16); 1642 *scan_des++ = (uint8_t)((des_b) >> 16);
1643 *scan_des++ = (FX_BYTE)((des_g) >> 16); 1643 *scan_des++ = (uint8_t)((des_g) >> 16);
1644 *scan_des++ = (FX_BYTE)((des_r) >> 16); 1644 *scan_des++ = (uint8_t)((des_r) >> 16);
1645 *scan_des++ = (FX_BYTE)((des_a) >> 16); 1645 *scan_des++ = (uint8_t)((des_a) >> 16);
1646 } 1646 }
1647 break; 1647 break;
1648 default: 1648 default:
1649 return; 1649 return;
1650 } 1650 }
1651 } 1651 }
1652 } 1652 }
1653 int des_bottom = des_top + m_sizeY; 1653 int des_bottom = des_top + m_sizeY;
1654 if(des_row + (int)scale_y >= des_bottom - 1) { 1654 if(des_row + (int)scale_y >= des_bottom - 1) {
1655 FX_LPBYTE scan_src = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; 1655 FX_LPBYTE scan_src = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;
(...skipping 11 matching lines...) Expand all
1667 for (int i = 1; i <= multiple; i++) { 1667 for (int i = 1; i <= multiple; i++) {
1668 if(des_row + i >= m_startY + m_sizeY) { 1668 if(des_row + i >= m_startY + m_sizeY) {
1669 return; 1669 return;
1670 } 1670 }
1671 FX_LPBYTE scan_des = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_row + i) + des_ScanOffet; 1671 FX_LPBYTE scan_des = (FX_LPBYTE)pDeviceBitmap->GetScanline(des_row + i) + des_ScanOffet;
1672 FX_DWORD size = m_sizeX * des_Bpp; 1672 FX_DWORD size = m_sizeX * des_Bpp;
1673 FXSYS_memcpy32(scan_des, scan_src, size); 1673 FXSYS_memcpy32(scan_des, scan_src, size);
1674 } 1674 }
1675 } 1675 }
1676 } 1676 }
1677 void CCodec_ProgressiveDecoder::Resample(CFX_DIBitmap* pDeviceBitmap, FX_INT32 s rc_line, FX_LPBYTE src_scan, FXCodec_Format src_format) 1677 void CCodec_ProgressiveDecoder::Resample(CFX_DIBitmap* pDeviceBitmap, int32_t sr c_line, FX_LPBYTE src_scan, FXCodec_Format src_format)
1678 { 1678 {
1679 int src_top = m_clipBox.top; 1679 int src_top = m_clipBox.top;
1680 int des_top = m_startY; 1680 int des_top = m_startY;
1681 int src_hei = m_clipBox.Height(); 1681 int src_hei = m_clipBox.Height();
1682 int des_hei = m_sizeY; 1682 int des_hei = m_sizeY;
1683 if(src_line >= src_top) { 1683 if(src_line >= src_top) {
1684 double scale_y = (double)des_hei / (double)src_hei; 1684 double scale_y = (double)des_hei / (double)src_hei;
1685 int src_row = src_line - src_top; 1685 int src_row = src_line - src_top;
1686 int des_row = (int)(src_row * scale_y) + des_top; 1686 int des_row = (int)(src_row * scale_y) + des_top;
1687 if(des_row >= des_top + des_hei) { 1687 if(des_row >= des_top + des_hei) {
1688 return; 1688 return;
1689 } 1689 }
1690 ReSampleScanline(pDeviceBitmap, des_row, m_pDecodeBuf, src_format); 1690 ReSampleScanline(pDeviceBitmap, des_row, m_pDecodeBuf, src_format);
1691 if(scale_y > 1.0) { 1691 if(scale_y > 1.0) {
1692 ResampleVert(pDeviceBitmap, scale_y, des_row); 1692 ResampleVert(pDeviceBitmap, scale_y, des_row);
1693 } 1693 }
1694 } 1694 }
1695 } 1695 }
1696 FXCODEC_STATUS CCodec_ProgressiveDecoder::GetFrames(FX_INT32& frames, IFX_Pause* pPause) 1696 FXCODEC_STATUS CCodec_ProgressiveDecoder::GetFrames(int32_t& frames, IFX_Pause* pPause)
1697 { 1697 {
1698 if(!(m_status == FXCODEC_STATUS_FRAME_READY || m_status == FXCODEC_STATUS_FR AME_TOBECONTINUE)) { 1698 if(!(m_status == FXCODEC_STATUS_FRAME_READY || m_status == FXCODEC_STATUS_FR AME_TOBECONTINUE)) {
1699 return FXCODEC_STATUS_ERROR; 1699 return FXCODEC_STATUS_ERROR;
1700 } 1700 }
1701 switch(m_imagType) { 1701 switch(m_imagType) {
1702 case FXCODEC_IMAGE_BMP: 1702 case FXCODEC_IMAGE_BMP:
1703 case FXCODEC_IMAGE_JPG: 1703 case FXCODEC_IMAGE_JPG:
1704 case FXCODEC_IMAGE_PNG: 1704 case FXCODEC_IMAGE_PNG:
1705 case FXCODEC_IMAGE_TIF: 1705 case FXCODEC_IMAGE_TIF:
1706 frames = m_FrameNumber = 1; 1706 frames = m_FrameNumber = 1;
1707 return m_status = FXCODEC_STATUS_DECODE_READY; 1707 return m_status = FXCODEC_STATUS_DECODE_READY;
1708 case FXCODEC_IMAGE_GIF: { 1708 case FXCODEC_IMAGE_GIF: {
1709 ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); 1709 ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
1710 while (TRUE) { 1710 while (TRUE) {
1711 FX_INT32 readResult = pGifModule->LoadFrameInfo(m_pGifContex t, &m_FrameNumber); 1711 int32_t readResult = pGifModule->LoadFrameInfo(m_pGifContext , &m_FrameNumber);
1712 while(readResult == 2) { 1712 while(readResult == 2) {
1713 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_READ; 1713 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_READ;
1714 if(!GifReadMoreData(pGifModule, error_status)) { 1714 if(!GifReadMoreData(pGifModule, error_status)) {
1715 return error_status; 1715 return error_status;
1716 } 1716 }
1717 if(pPause && pPause->NeedToPauseNow()) { 1717 if(pPause && pPause->NeedToPauseNow()) {
1718 return m_status = FXCODEC_STATUS_FRAME_TOBECONTINUE; 1718 return m_status = FXCODEC_STATUS_FRAME_TOBECONTINUE;
1719 } 1719 }
1720 readResult = pGifModule->LoadFrameInfo(m_pGifContext, &m _FrameNumber); 1720 readResult = pGifModule->LoadFrameInfo(m_pGifContext, &m _FrameNumber);
1721 } 1721 }
1722 if(readResult == 1) { 1722 if(readResult == 1) {
1723 frames = m_FrameNumber; 1723 frames = m_FrameNumber;
1724 return m_status = FXCODEC_STATUS_DECODE_READY; 1724 return m_status = FXCODEC_STATUS_DECODE_READY;
1725 } 1725 }
1726 if(m_pGifContext != NULL) { 1726 if(m_pGifContext != NULL) {
1727 pGifModule->Finish(m_pGifContext); 1727 pGifModule->Finish(m_pGifContext);
1728 m_pGifContext = NULL; 1728 m_pGifContext = NULL;
1729 } 1729 }
1730 return m_status = FXCODEC_STATUS_ERROR; 1730 return m_status = FXCODEC_STATUS_ERROR;
1731 } 1731 }
1732 } 1732 }
1733 break; 1733 break;
1734 default: 1734 default:
1735 ; 1735 ;
1736 } 1736 }
1737 return FXCODEC_STATUS_ERROR; 1737 return FXCODEC_STATUS_ERROR;
1738 } 1738 }
1739 FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap, 1739 FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap,
1740 int start_x, int start_y, int size_x, int size_y, 1740 int start_x, int start_y, int size_x, int size_y,
1741 FX_INT32 frames, FX_BOOL bInterpol) 1741 int32_t frames, FX_BOOL bInterpol)
1742 { 1742 {
1743 if(m_status != FXCODEC_STATUS_DECODE_READY) { 1743 if(m_status != FXCODEC_STATUS_DECODE_READY) {
1744 return FXCODEC_STATUS_ERROR; 1744 return FXCODEC_STATUS_ERROR;
1745 } 1745 }
1746 if(pDIBitmap == NULL || pDIBitmap->GetBPP() < 8 || 1746 if(pDIBitmap == NULL || pDIBitmap->GetBPP() < 8 ||
1747 frames < 0 || frames >= m_FrameNumber) { 1747 frames < 0 || frames >= m_FrameNumber) {
1748 return FXCODEC_STATUS_ERR_PARAMS; 1748 return FXCODEC_STATUS_ERR_PARAMS;
1749 } 1749 }
1750 m_pDeviceBitmap = pDIBitmap; 1750 m_pDeviceBitmap = pDIBitmap;
1751 if(m_clipBox.IsEmpty()) { 1751 if(m_clipBox.IsEmpty()) {
1752 return FXCODEC_STATUS_ERR_PARAMS; 1752 return FXCODEC_STATUS_ERR_PARAMS;
1753 } 1753 }
1754 if(size_x <= 0 || size_x > 65535 || size_y <= 0 || size_y > 65535) { 1754 if(size_x <= 0 || size_x > 65535 || size_y <= 0 || size_y > 65535) {
1755 return FXCODEC_STATUS_ERR_PARAMS; 1755 return FXCODEC_STATUS_ERR_PARAMS;
1756 } 1756 }
1757 FX_RECT device_rc = FX_RECT(start_x, start_y, start_x + size_x, start_y + si ze_y); 1757 FX_RECT device_rc = FX_RECT(start_x, start_y, start_x + size_x, start_y + si ze_y);
1758 FX_INT32 out_range_x = device_rc.right - pDIBitmap->GetWidth(); 1758 int32_t out_range_x = device_rc.right - pDIBitmap->GetWidth();
1759 FX_INT32 out_range_y = device_rc.bottom - pDIBitmap->GetHeight(); 1759 int32_t out_range_y = device_rc.bottom - pDIBitmap->GetHeight();
1760 device_rc.Intersect(FX_RECT(0, 0, pDIBitmap->GetWidth(), pDIBitmap->GetHeigh t())); 1760 device_rc.Intersect(FX_RECT(0, 0, pDIBitmap->GetWidth(), pDIBitmap->GetHeigh t()));
1761 if(device_rc.IsEmpty()) { 1761 if(device_rc.IsEmpty()) {
1762 return FXCODEC_STATUS_ERR_PARAMS; 1762 return FXCODEC_STATUS_ERR_PARAMS;
1763 } 1763 }
1764 m_startX = device_rc.left; 1764 m_startX = device_rc.left;
1765 m_startY = device_rc.top; 1765 m_startY = device_rc.top;
1766 m_sizeX = device_rc.Width(); 1766 m_sizeX = device_rc.Width();
1767 m_sizeY = device_rc.Height(); 1767 m_sizeY = device_rc.Height();
1768 m_bInterpol = bInterpol; 1768 m_bInterpol = bInterpol;
1769 m_FrameCur = 0; 1769 m_FrameCur = 0;
1770 if(start_x < 0 || out_range_x > 0) { 1770 if(start_x < 0 || out_range_x > 0) {
1771 FX_FLOAT scaleX = (FX_FLOAT)m_clipBox.Width() / (FX_FLOAT)size_x; 1771 FX_FLOAT scaleX = (FX_FLOAT)m_clipBox.Width() / (FX_FLOAT)size_x;
1772 if(start_x < 0) { 1772 if(start_x < 0) {
1773 m_clipBox.left -= (FX_INT32)FXSYS_ceil((FX_FLOAT)start_x * scaleX); 1773 m_clipBox.left -= (int32_t)FXSYS_ceil((FX_FLOAT)start_x * scaleX);
1774 } 1774 }
1775 if(out_range_x > 0) { 1775 if(out_range_x > 0) {
1776 m_clipBox.right -= (FX_INT32)FXSYS_floor((FX_FLOAT)out_range_x * sca leX); 1776 m_clipBox.right -= (int32_t)FXSYS_floor((FX_FLOAT)out_range_x * scal eX);
1777 } 1777 }
1778 } 1778 }
1779 if(start_y < 0 || out_range_y > 0) { 1779 if(start_y < 0 || out_range_y > 0) {
1780 FX_FLOAT scaleY = (FX_FLOAT)m_clipBox.Height() / (FX_FLOAT)size_y; 1780 FX_FLOAT scaleY = (FX_FLOAT)m_clipBox.Height() / (FX_FLOAT)size_y;
1781 if(start_y < 0) { 1781 if(start_y < 0) {
1782 m_clipBox.top -= (FX_INT32)FXSYS_ceil((FX_FLOAT)start_y * scaleY); 1782 m_clipBox.top -= (int32_t)FXSYS_ceil((FX_FLOAT)start_y * scaleY);
1783 } 1783 }
1784 if(out_range_y > 0) { 1784 if(out_range_y > 0) {
1785 m_clipBox.bottom -= (FX_INT32)FXSYS_floor((FX_FLOAT)out_range_y * s caleY); 1785 m_clipBox.bottom -= (int32_t)FXSYS_floor((FX_FLOAT)out_range_y * sc aleY);
1786 } 1786 }
1787 } 1787 }
1788 if(m_clipBox.IsEmpty()) { 1788 if(m_clipBox.IsEmpty()) {
1789 return FXCODEC_STATUS_ERR_PARAMS; 1789 return FXCODEC_STATUS_ERR_PARAMS;
1790 } 1790 }
1791 switch(m_imagType) { 1791 switch(m_imagType) {
1792 case FXCODEC_IMAGE_JPG: { 1792 case FXCODEC_IMAGE_JPG: {
1793 ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); 1793 ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule();
1794 int down_scale = 1; 1794 int down_scale = 1;
1795 GetDownScale(down_scale); 1795 GetDownScale(down_scale);
1796 FX_BOOL bStart = pJpegModule->StartScanline(m_pJpegContext, down _scale); 1796 FX_BOOL bStart = pJpegModule->StartScanline(m_pJpegContext, down _scale);
1797 while(!bStart) { 1797 while(!bStart) {
1798 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; 1798 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR;
1799 if(!JpegReadMoreData(pJpegModule, error_status)) { 1799 if(!JpegReadMoreData(pJpegModule, error_status)) {
1800 m_pDeviceBitmap = NULL; 1800 m_pDeviceBitmap = NULL;
1801 m_pFile = NULL; 1801 m_pFile = NULL;
1802 return m_status = error_status; 1802 return m_status = error_status;
1803 } 1803 }
1804 bStart = pJpegModule->StartScanline(m_pJpegContext, down_sca le); 1804 bStart = pJpegModule->StartScanline(m_pJpegContext, down_sca le);
1805 } 1805 }
1806 int scanline_size = ( m_SrcWidth + down_scale - 1) / down_scale; 1806 int scanline_size = ( m_SrcWidth + down_scale - 1) / down_scale;
1807 scanline_size = (scanline_size * m_SrcComponents + 3) / 4 * 4; 1807 scanline_size = (scanline_size * m_SrcComponents + 3) / 4 * 4;
1808 if(m_pDecodeBuf != NULL) { 1808 if(m_pDecodeBuf != NULL) {
1809 FX_Free(m_pDecodeBuf); 1809 FX_Free(m_pDecodeBuf);
1810 m_pDecodeBuf = NULL; 1810 m_pDecodeBuf = NULL;
1811 } 1811 }
1812 m_pDecodeBuf = FX_Alloc(FX_BYTE, scanline_size); 1812 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size);
1813 if(m_pDecodeBuf == NULL) { 1813 if(m_pDecodeBuf == NULL) {
1814 m_pDeviceBitmap = NULL; 1814 m_pDeviceBitmap = NULL;
1815 m_pFile = NULL; 1815 m_pFile = NULL;
1816 return m_status = FXCODEC_STATUS_ERR_MEMORY; 1816 return m_status = FXCODEC_STATUS_ERR_MEMORY;
1817 } 1817 }
1818 FXSYS_memset32(m_pDecodeBuf, 0, scanline_size); 1818 FXSYS_memset32(m_pDecodeBuf, 0, scanline_size);
1819 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, m_c lipBox.Width(), m_bInterpol); 1819 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, m_c lipBox.Width(), m_bInterpol);
1820 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); 1820 m_WeightVert.Calc(m_sizeY, m_clipBox.Height());
1821 switch(m_SrcComponents) { 1821 switch(m_SrcComponents) {
1822 case 1: 1822 case 1:
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1871 m_pFile = NULL; 1871 m_pFile = NULL;
1872 return m_status = FXCODEC_STATUS_ERR_PARAMS; 1872 return m_status = FXCODEC_STATUS_ERR_PARAMS;
1873 } 1873 }
1874 } 1874 }
1875 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); 1875 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat);
1876 int scanline_size = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4; 1876 int scanline_size = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4;
1877 if(m_pDecodeBuf != NULL) { 1877 if(m_pDecodeBuf != NULL) {
1878 FX_Free(m_pDecodeBuf); 1878 FX_Free(m_pDecodeBuf);
1879 m_pDecodeBuf = NULL; 1879 m_pDecodeBuf = NULL;
1880 } 1880 }
1881 m_pDecodeBuf = FX_Alloc(FX_BYTE, scanline_size); 1881 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size);
1882 if(m_pDecodeBuf == NULL) { 1882 if(m_pDecodeBuf == NULL) {
1883 m_pDeviceBitmap = NULL; 1883 m_pDeviceBitmap = NULL;
1884 m_pFile = NULL; 1884 m_pFile = NULL;
1885 return m_status = FXCODEC_STATUS_ERR_MEMORY; 1885 return m_status = FXCODEC_STATUS_ERR_MEMORY;
1886 } 1886 }
1887 FXSYS_memset32(m_pDecodeBuf, 0, scanline_size); 1887 FXSYS_memset32(m_pDecodeBuf, 0, scanline_size);
1888 m_WeightHorzOO.Calc(m_sizeX, m_clipBox.Width(), m_bInterpol); 1888 m_WeightHorzOO.Calc(m_sizeX, m_clipBox.Width(), m_bInterpol);
1889 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); 1889 m_WeightVert.Calc(m_sizeY, m_clipBox.Height());
1890 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; 1890 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE;
1891 } 1891 }
1892 break; 1892 break;
1893 case FXCODEC_IMAGE_GIF: { 1893 case FXCODEC_IMAGE_GIF: {
1894 ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); 1894 ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
1895 if(pGifModule == NULL) { 1895 if(pGifModule == NULL) {
1896 m_pDeviceBitmap = NULL; 1896 m_pDeviceBitmap = NULL;
1897 m_pFile = NULL; 1897 m_pFile = NULL;
1898 return m_status = FXCODEC_STATUS_ERR_MEMORY; 1898 return m_status = FXCODEC_STATUS_ERR_MEMORY;
1899 } 1899 }
1900 m_SrcFormat = FXCodec_8bppRgb; 1900 m_SrcFormat = FXCodec_8bppRgb;
1901 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); 1901 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat);
1902 int scanline_size = (m_SrcWidth + 3) / 4 * 4; 1902 int scanline_size = (m_SrcWidth + 3) / 4 * 4;
1903 if(m_pDecodeBuf != NULL) { 1903 if(m_pDecodeBuf != NULL) {
1904 FX_Free(m_pDecodeBuf); 1904 FX_Free(m_pDecodeBuf);
1905 m_pDecodeBuf = NULL; 1905 m_pDecodeBuf = NULL;
1906 } 1906 }
1907 m_pDecodeBuf = FX_Alloc(FX_BYTE, scanline_size); 1907 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size);
1908 if(m_pDecodeBuf == NULL) { 1908 if(m_pDecodeBuf == NULL) {
1909 m_pDeviceBitmap = NULL; 1909 m_pDeviceBitmap = NULL;
1910 m_pFile = NULL; 1910 m_pFile = NULL;
1911 return m_status = FXCODEC_STATUS_ERR_MEMORY; 1911 return m_status = FXCODEC_STATUS_ERR_MEMORY;
1912 } 1912 }
1913 FXSYS_memset32(m_pDecodeBuf, 0, scanline_size); 1913 FXSYS_memset32(m_pDecodeBuf, 0, scanline_size);
1914 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, m_c lipBox.Width(), m_bInterpol); 1914 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, m_c lipBox.Width(), m_bInterpol);
1915 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); 1915 m_WeightVert.Calc(m_sizeY, m_clipBox.Height());
1916 m_FrameCur = frames; 1916 m_FrameCur = frames;
1917 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; 1917 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE;
(...skipping 16 matching lines...) Expand all
1934 case 4: 1934 case 4:
1935 m_SrcFormat = FXCodec_Rgb32; 1935 m_SrcFormat = FXCodec_Rgb32;
1936 break; 1936 break;
1937 } 1937 }
1938 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); 1938 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat);
1939 m_ScanlineSize = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4; 1939 m_ScanlineSize = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4;
1940 if(m_pDecodeBuf != NULL) { 1940 if(m_pDecodeBuf != NULL) {
1941 FX_Free(m_pDecodeBuf); 1941 FX_Free(m_pDecodeBuf);
1942 m_pDecodeBuf = NULL; 1942 m_pDecodeBuf = NULL;
1943 } 1943 }
1944 m_pDecodeBuf = FX_Alloc(FX_BYTE, m_ScanlineSize); 1944 m_pDecodeBuf = FX_Alloc(uint8_t, m_ScanlineSize);
1945 if(m_pDecodeBuf == NULL) { 1945 if(m_pDecodeBuf == NULL) {
1946 m_pDeviceBitmap = NULL; 1946 m_pDeviceBitmap = NULL;
1947 m_pFile = NULL; 1947 m_pFile = NULL;
1948 return m_status = FXCODEC_STATUS_ERR_MEMORY; 1948 return m_status = FXCODEC_STATUS_ERR_MEMORY;
1949 } 1949 }
1950 FXSYS_memset32(m_pDecodeBuf, 0, m_ScanlineSize); 1950 FXSYS_memset32(m_pDecodeBuf, 0, m_ScanlineSize);
1951 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, m_c lipBox.Width(), m_bInterpol); 1951 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, m_c lipBox.Width(), m_bInterpol);
1952 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); 1952 m_WeightVert.Calc(m_sizeY, m_clipBox.Height());
1953 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; 1953 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE;
1954 } 1954 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2005 if(m_pPngContext != NULL) { 2005 if(m_pPngContext != NULL) {
2006 pPngModule->Finish(m_pPngContext); 2006 pPngModule->Finish(m_pPngContext);
2007 } 2007 }
2008 m_pPngContext = NULL; 2008 m_pPngContext = NULL;
2009 m_pDeviceBitmap = NULL; 2009 m_pDeviceBitmap = NULL;
2010 m_pFile = NULL; 2010 m_pFile = NULL;
2011 return m_status = FXCODEC_STATUS_DECODE_FINISH; 2011 return m_status = FXCODEC_STATUS_DECODE_FINISH;
2012 } 2012 }
2013 if(m_pSrcBuf != NULL && input_size > m_SrcSize) { 2013 if(m_pSrcBuf != NULL && input_size > m_SrcSize) {
2014 FX_Free(m_pSrcBuf); 2014 FX_Free(m_pSrcBuf);
2015 m_pSrcBuf = FX_Alloc(FX_BYTE, input_size); 2015 m_pSrcBuf = FX_Alloc(uint8_t, input_size);
2016 if(m_pSrcBuf == NULL) { 2016 if(m_pSrcBuf == NULL) {
2017 m_pDeviceBitmap = NULL; 2017 m_pDeviceBitmap = NULL;
2018 m_pFile = NULL; 2018 m_pFile = NULL;
2019 return m_status = FXCODEC_STATUS_ERR_MEMORY; 2019 return m_status = FXCODEC_STATUS_ERR_MEMORY;
2020 } 2020 }
2021 FXSYS_memset32(m_pSrcBuf, 0, input_size); 2021 FXSYS_memset32(m_pSrcBuf, 0, input_size);
2022 m_SrcSize = input_size; 2022 m_SrcSize = input_size;
2023 } 2023 }
2024 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, in put_size); 2024 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, in put_size);
2025 if(!bResult) { 2025 if(!bResult) {
(...skipping 10 matching lines...) Expand all
2036 } 2036 }
2037 if(pPause && pPause->NeedToPauseNow()) { 2037 if(pPause && pPause->NeedToPauseNow()) {
2038 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; 2038 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE;
2039 } 2039 }
2040 } 2040 }
2041 } 2041 }
2042 break; 2042 break;
2043 case FXCODEC_IMAGE_GIF: { 2043 case FXCODEC_IMAGE_GIF: {
2044 ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); 2044 ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
2045 while(TRUE) { 2045 while(TRUE) {
2046 FX_INT32 readRes = pGifModule->LoadFrame(m_pGifContext, m_Fr ameCur); 2046 int32_t readRes = pGifModule->LoadFrame(m_pGifContext, m_Fra meCur);
2047 while(readRes == 2) { 2047 while(readRes == 2) {
2048 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINI SH; 2048 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINI SH;
2049 if(!GifReadMoreData(pGifModule, error_status)) { 2049 if(!GifReadMoreData(pGifModule, error_status)) {
2050 m_pDeviceBitmap = NULL; 2050 m_pDeviceBitmap = NULL;
2051 m_pFile = NULL; 2051 m_pFile = NULL;
2052 return m_status = error_status; 2052 return m_status = error_status;
2053 } 2053 }
2054 if(pPause && pPause->NeedToPauseNow()) { 2054 if(pPause && pPause->NeedToPauseNow()) {
2055 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE ; 2055 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE ;
2056 } 2056 }
2057 readRes = pGifModule->LoadFrame(m_pGifContext, m_FrameCu r); 2057 readRes = pGifModule->LoadFrame(m_pGifContext, m_FrameCu r);
2058 } 2058 }
2059 if(readRes == 1) { 2059 if(readRes == 1) {
2060 m_pDeviceBitmap = NULL; 2060 m_pDeviceBitmap = NULL;
2061 m_pFile = NULL; 2061 m_pFile = NULL;
2062 return m_status = FXCODEC_STATUS_DECODE_FINISH; 2062 return m_status = FXCODEC_STATUS_DECODE_FINISH;
2063 } 2063 }
2064 m_pDeviceBitmap = NULL; 2064 m_pDeviceBitmap = NULL;
2065 m_pFile = NULL; 2065 m_pFile = NULL;
2066 return m_status = FXCODEC_STATUS_ERROR; 2066 return m_status = FXCODEC_STATUS_ERROR;
2067 } 2067 }
2068 } 2068 }
2069 break; 2069 break;
2070 case FXCODEC_IMAGE_BMP: { 2070 case FXCODEC_IMAGE_BMP: {
2071 ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); 2071 ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
2072 while(TRUE) { 2072 while(TRUE) {
2073 FX_INT32 readRes = pBmpModule->LoadImage(m_pBmpContext); 2073 int32_t readRes = pBmpModule->LoadImage(m_pBmpContext);
2074 while(readRes == 2) { 2074 while(readRes == 2) {
2075 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINI SH; 2075 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINI SH;
2076 if(!BmpReadMoreData(pBmpModule, error_status)) { 2076 if(!BmpReadMoreData(pBmpModule, error_status)) {
2077 m_pDeviceBitmap = NULL; 2077 m_pDeviceBitmap = NULL;
2078 m_pFile = NULL; 2078 m_pFile = NULL;
2079 return m_status = error_status; 2079 return m_status = error_status;
2080 } 2080 }
2081 if(pPause && pPause->NeedToPauseNow()) { 2081 if(pPause && pPause->NeedToPauseNow()) {
2082 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE ; 2082 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE ;
2083 } 2083 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
2158 break; 2158 break;
2159 case FXDIB_Argb: 2159 case FXDIB_Argb:
2160 pFormatBitmap = pClipBitmap; 2160 pFormatBitmap = pClipBitmap;
2161 break; 2161 break;
2162 default: 2162 default:
2163 ; 2163 ;
2164 } 2164 }
2165 switch(m_pDeviceBitmap->GetFormat()) { 2165 switch(m_pDeviceBitmap->GetFormat()) {
2166 case FXDIB_8bppRgb: 2166 case FXDIB_8bppRgb:
2167 case FXDIB_8bppMask: { 2167 case FXDIB_8bppMask: {
2168 for (FX_INT32 row = 0; row < pClipBitmap->GetHei ght(); row++) { 2168 for (int32_t row = 0; row < pClipBitmap->GetHeig ht(); row++) {
2169 FX_LPBYTE src_line = (FX_LPBYTE)pClipBitmap- >GetScanline(row); 2169 FX_LPBYTE src_line = (FX_LPBYTE)pClipBitmap- >GetScanline(row);
2170 FX_LPBYTE des_line = (FX_LPBYTE)pFormatBitma p->GetScanline(row); 2170 FX_LPBYTE des_line = (FX_LPBYTE)pFormatBitma p->GetScanline(row);
2171 for (FX_INT32 col = 0; col < pClipBitmap->Ge tWidth(); col++) { 2171 for (int32_t col = 0; col < pClipBitmap->Get Width(); col++) {
2172 FX_BYTE _a = 255 - src_line[3]; 2172 uint8_t _a = 255 - src_line[3];
2173 FX_BYTE b = (src_line[0] * src_line[3] + 0xFF * _a) / 255; 2173 uint8_t b = (src_line[0] * src_line[3] + 0xFF * _a) / 255;
2174 FX_BYTE g = (src_line[1] * src_line[3] + 0xFF * _a) / 255; 2174 uint8_t g = (src_line[1] * src_line[3] + 0xFF * _a) / 255;
2175 FX_BYTE r = (src_line[2] * src_line[3] + 0xFF * _a) / 255; 2175 uint8_t r = (src_line[2] * src_line[3] + 0xFF * _a) / 255;
2176 *des_line++ = FXRGB2GRAY(r, g, b); 2176 *des_line++ = FXRGB2GRAY(r, g, b);
2177 src_line += 4; 2177 src_line += 4;
2178 } 2178 }
2179 } 2179 }
2180 } 2180 }
2181 break; 2181 break;
2182 case FXDIB_Rgb: 2182 case FXDIB_Rgb:
2183 case FXDIB_Rgb32: { 2183 case FXDIB_Rgb32: {
2184 FX_INT32 desBpp = (m_pDeviceBitmap->GetFormat() == FXDIB_Rgb) ? 3 : 4; 2184 int32_t desBpp = (m_pDeviceBitmap->GetFormat() = = FXDIB_Rgb) ? 3 : 4;
2185 for (FX_INT32 row = 0; row < pClipBitmap->GetHei ght(); row++) { 2185 for (int32_t row = 0; row < pClipBitmap->GetHeig ht(); row++) {
2186 FX_LPBYTE src_line = (FX_LPBYTE)pClipBitmap- >GetScanline(row); 2186 FX_LPBYTE src_line = (FX_LPBYTE)pClipBitmap- >GetScanline(row);
2187 FX_LPBYTE des_line = (FX_LPBYTE)pFormatBitma p->GetScanline(row); 2187 FX_LPBYTE des_line = (FX_LPBYTE)pFormatBitma p->GetScanline(row);
2188 for (FX_INT32 col = 0; col < pClipBitmap->Ge tWidth(); col++) { 2188 for (int32_t col = 0; col < pClipBitmap->Get Width(); col++) {
2189 FX_BYTE _a = 255 - src_line[3]; 2189 uint8_t _a = 255 - src_line[3];
2190 FX_BYTE b = (src_line[0] * src_line[3] + 0xFF * _a) / 255; 2190 uint8_t b = (src_line[0] * src_line[3] + 0xFF * _a) / 255;
2191 FX_BYTE g = (src_line[1] * src_line[3] + 0xFF * _a) / 255; 2191 uint8_t g = (src_line[1] * src_line[3] + 0xFF * _a) / 255;
2192 FX_BYTE r = (src_line[2] * src_line[3] + 0xFF * _a) / 255; 2192 uint8_t r = (src_line[2] * src_line[3] + 0xFF * _a) / 255;
2193 *des_line++ = b; 2193 *des_line++ = b;
2194 *des_line++ = g; 2194 *des_line++ = g;
2195 *des_line++ = r; 2195 *des_line++ = r;
2196 des_line += desBpp - 3; 2196 des_line += desBpp - 3;
2197 src_line += 4; 2197 src_line += 4;
2198 } 2198 }
2199 } 2199 }
2200 } 2200 }
2201 break; 2201 break;
2202 default: 2202 default:
(...skipping 26 matching lines...) Expand all
2229 break; 2229 break;
2230 default: 2230 default:
2231 break; 2231 break;
2232 } 2232 }
2233 return FXCODEC_STATUS_ERROR; 2233 return FXCODEC_STATUS_ERROR;
2234 } 2234 }
2235 ICodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() 2235 ICodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder()
2236 { 2236 {
2237 return new CCodec_ProgressiveDecoder(this); 2237 return new CCodec_ProgressiveDecoder(this);
2238 } 2238 }
OLDNEW
« no previous file with comments | « core/src/fxcodec/codec/fx_codec_progress.h ('k') | core/src/fxcodec/codec/fx_codec_tiff.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698