OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "../../../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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |