| 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 |