| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "core/fxcodec/codec/include/ccodec_progressivedecoder.h" | 7 #include "core/fxcodec/codec/include/ccodec_progressivedecoder.h" |
| 8 | 8 |
| 9 #include "core/fxcodec/include/fx_codec.h" | 9 #include "core/fxcodec/include/fx_codec.h" |
| 10 #include "core/fxge/include/fx_dib.h" | 10 #include "core/fxge/include/fx_dib.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 if (dest_len < 0) { | 32 if (dest_len < 0) { |
| 33 base = (FX_FLOAT)(src_len); | 33 base = (FX_FLOAT)(src_len); |
| 34 } else { | 34 } else { |
| 35 base = 0.0f; | 35 base = 0.0f; |
| 36 } | 36 } |
| 37 m_ItemSize = | 37 m_ItemSize = |
| 38 (int)(sizeof(int) * 2 + | 38 (int)(sizeof(int) * 2 + |
| 39 sizeof(int) * (FXSYS_ceil(FXSYS_fabs((FX_FLOAT)scale)) + 1)); | 39 sizeof(int) * (FXSYS_ceil(FXSYS_fabs((FX_FLOAT)scale)) + 1)); |
| 40 m_DestMin = dest_min; | 40 m_DestMin = dest_min; |
| 41 m_pWeightTables = FX_Alloc(uint8_t, (dest_max - dest_min) * m_ItemSize + 4); | 41 m_pWeightTables = FX_Alloc(uint8_t, (dest_max - dest_min) * m_ItemSize + 4); |
| 42 if (m_pWeightTables == NULL) { | |
| 43 return; | |
| 44 } | |
| 45 if (FXSYS_fabs((FX_FLOAT)scale) < 1.0f) { | 42 if (FXSYS_fabs((FX_FLOAT)scale) < 1.0f) { |
| 46 for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { | 43 for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { |
| 47 PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); | 44 PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); |
| 48 double src_pos = dest_pixel * scale + scale / 2 + base; | 45 double src_pos = dest_pixel * scale + scale / 2 + base; |
| 49 if (bInterpol) { | 46 if (bInterpol) { |
| 50 pixel_weights.m_SrcStart = | 47 pixel_weights.m_SrcStart = |
| 51 (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); | 48 (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); |
| 52 pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2); | 49 pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2); |
| 53 if (pixel_weights.m_SrcStart < src_min) { | 50 if (pixel_weights.m_SrcStart < src_min) { |
| 54 pixel_weights.m_SrcStart = src_min; | 51 pixel_weights.m_SrcStart = src_min; |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 void CCodec_ProgressiveDecoder::CFXCODEC_HorzTable::Calc(int dest_len, | 121 void CCodec_ProgressiveDecoder::CFXCODEC_HorzTable::Calc(int dest_len, |
| 125 int src_len, | 122 int src_len, |
| 126 FX_BOOL bInterpol) { | 123 FX_BOOL bInterpol) { |
| 127 if (m_pWeightTables) { | 124 if (m_pWeightTables) { |
| 128 FX_Free(m_pWeightTables); | 125 FX_Free(m_pWeightTables); |
| 129 } | 126 } |
| 130 double scale = (double)dest_len / (double)src_len; | 127 double scale = (double)dest_len / (double)src_len; |
| 131 m_ItemSize = sizeof(int) * 4; | 128 m_ItemSize = sizeof(int) * 4; |
| 132 int size = dest_len * m_ItemSize + 4; | 129 int size = dest_len * m_ItemSize + 4; |
| 133 m_pWeightTables = FX_Alloc(uint8_t, size); | 130 m_pWeightTables = FX_Alloc(uint8_t, size); |
| 134 if (m_pWeightTables == NULL) { | |
| 135 return; | |
| 136 } | |
| 137 FXSYS_memset(m_pWeightTables, 0, size); | 131 FXSYS_memset(m_pWeightTables, 0, size); |
| 138 if (scale > 1) { | 132 if (scale > 1) { |
| 139 int pre_des_col = 0; | 133 int pre_des_col = 0; |
| 140 for (int src_col = 0; src_col < src_len; src_col++) { | 134 for (int src_col = 0; src_col < src_len; src_col++) { |
| 141 double des_col_f = src_col * scale; | 135 double des_col_f = src_col * scale; |
| 142 int des_col = FXSYS_round((FX_FLOAT)des_col_f); | 136 int des_col = FXSYS_round((FX_FLOAT)des_col_f); |
| 143 PixelWeight* pWeight = | 137 PixelWeight* pWeight = |
| 144 (PixelWeight*)(m_pWeightTables + des_col * m_ItemSize); | 138 (PixelWeight*)(m_pWeightTables + des_col * m_ItemSize); |
| 145 pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col; | 139 pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col; |
| 146 pWeight->m_Weights[0] = 65536; | 140 pWeight->m_Weights[0] = 65536; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 } | 179 } |
| 186 void CCodec_ProgressiveDecoder::CFXCODEC_VertTable::Calc(int dest_len, | 180 void CCodec_ProgressiveDecoder::CFXCODEC_VertTable::Calc(int dest_len, |
| 187 int src_len) { | 181 int src_len) { |
| 188 if (m_pWeightTables) { | 182 if (m_pWeightTables) { |
| 189 FX_Free(m_pWeightTables); | 183 FX_Free(m_pWeightTables); |
| 190 } | 184 } |
| 191 double scale = (double)dest_len / (double)src_len; | 185 double scale = (double)dest_len / (double)src_len; |
| 192 m_ItemSize = sizeof(int) * 4; | 186 m_ItemSize = sizeof(int) * 4; |
| 193 int size = dest_len * m_ItemSize + 4; | 187 int size = dest_len * m_ItemSize + 4; |
| 194 m_pWeightTables = FX_Alloc(uint8_t, size); | 188 m_pWeightTables = FX_Alloc(uint8_t, size); |
| 195 if (m_pWeightTables == NULL) { | |
| 196 return; | |
| 197 } | |
| 198 FXSYS_memset(m_pWeightTables, 0, size); | 189 FXSYS_memset(m_pWeightTables, 0, size); |
| 199 if (scale > 1) { | 190 if (scale > 1) { |
| 200 double step = 0.0; | 191 double step = 0.0; |
| 201 int src_row = 0; | 192 int src_row = 0; |
| 202 while (step < (double)dest_len) { | 193 while (step < (double)dest_len) { |
| 203 int start_step = (int)step; | 194 int start_step = (int)step; |
| 204 step = scale * (++src_row); | 195 step = scale * (++src_row); |
| 205 int end_step = (int)step; | 196 int end_step = (int)step; |
| 206 if (end_step >= dest_len) { | 197 if (end_step >= dest_len) { |
| 207 end_step = dest_len; | 198 end_step = dest_len; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize); | 231 (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize); |
| 241 pWeight->m_SrcStart = des_row; | 232 pWeight->m_SrcStart = des_row; |
| 242 pWeight->m_SrcEnd = des_row; | 233 pWeight->m_SrcEnd = des_row; |
| 243 pWeight->m_Weights[0] = 65536; | 234 pWeight->m_Weights[0] = 65536; |
| 244 pWeight->m_Weights[1] = 0; | 235 pWeight->m_Weights[1] = 0; |
| 245 } | 236 } |
| 246 } | 237 } |
| 247 } | 238 } |
| 248 CCodec_ProgressiveDecoder::CCodec_ProgressiveDecoder( | 239 CCodec_ProgressiveDecoder::CCodec_ProgressiveDecoder( |
| 249 CCodec_ModuleMgr* pCodecMgr) { | 240 CCodec_ModuleMgr* pCodecMgr) { |
| 250 m_pFile = NULL; | 241 m_pFile = nullptr; |
| 251 m_pJpegContext = NULL; | 242 m_pJpegContext = nullptr; |
| 252 m_pPngContext = NULL; | 243 m_pPngContext = nullptr; |
| 253 m_pGifContext = NULL; | 244 m_pGifContext = nullptr; |
| 254 m_pBmpContext = NULL; | 245 m_pBmpContext = nullptr; |
| 255 m_pTiffContext = NULL; | 246 m_pTiffContext = nullptr; |
| 256 m_pCodecMgr = NULL; | 247 m_pCodecMgr = nullptr; |
| 257 m_pSrcBuf = NULL; | 248 m_pSrcBuf = nullptr; |
| 258 m_pDecodeBuf = NULL; | 249 m_pDecodeBuf = nullptr; |
| 259 m_pDeviceBitmap = NULL; | 250 m_pDeviceBitmap = nullptr; |
| 260 m_pSrcPalette = NULL; | 251 m_pSrcPalette = nullptr; |
| 261 m_pCodecMgr = pCodecMgr; | 252 m_pCodecMgr = pCodecMgr; |
| 262 m_offSet = 0; | 253 m_offSet = 0; |
| 263 m_SrcSize = 0; | 254 m_SrcSize = 0; |
| 264 m_ScanlineSize = 0; | 255 m_ScanlineSize = 0; |
| 265 m_SrcWidth = m_SrcHeight = 0; | 256 m_SrcWidth = m_SrcHeight = 0; |
| 266 m_SrcComponents = 0; | 257 m_SrcComponents = 0; |
| 267 m_SrcBPC = 0; | 258 m_SrcBPC = 0; |
| 268 m_SrcPassNumber = 0; | 259 m_SrcPassNumber = 0; |
| 269 m_clipBox = FX_RECT(0, 0, 0, 0); | 260 m_clipBox = FX_RECT(0, 0, 0, 0); |
| 270 m_imagType = FXCODEC_IMAGE_UNKNOWN; | 261 m_imagType = FXCODEC_IMAGE_UNKNOWN; |
| 271 m_status = FXCODEC_STATUS_DECODE_FINISH; | 262 m_status = FXCODEC_STATUS_DECODE_FINISH; |
| 272 m_TransMethod = -1; | 263 m_TransMethod = -1; |
| 273 m_SrcRow = 0; | 264 m_SrcRow = 0; |
| 274 m_SrcFormat = FXCodec_Invalid; | 265 m_SrcFormat = FXCodec_Invalid; |
| 275 m_bInterpol = TRUE; | 266 m_bInterpol = TRUE; |
| 276 m_FrameNumber = 0; | 267 m_FrameNumber = 0; |
| 277 m_FrameCur = 0; | 268 m_FrameCur = 0; |
| 278 m_SrcPaletteNumber = 0; | 269 m_SrcPaletteNumber = 0; |
| 279 m_GifPltNumber = 0; | 270 m_GifPltNumber = 0; |
| 280 m_GifBgIndex = 0; | 271 m_GifBgIndex = 0; |
| 281 m_pGifPalette = NULL; | 272 m_pGifPalette = nullptr; |
| 282 m_GifTransIndex = -1; | 273 m_GifTransIndex = -1; |
| 283 m_GifFrameRect = FX_RECT(0, 0, 0, 0); | 274 m_GifFrameRect = FX_RECT(0, 0, 0, 0); |
| 284 m_BmpIsTopBottom = FALSE; | 275 m_BmpIsTopBottom = FALSE; |
| 285 } | 276 } |
| 286 CCodec_ProgressiveDecoder::~CCodec_ProgressiveDecoder() { | 277 CCodec_ProgressiveDecoder::~CCodec_ProgressiveDecoder() { |
| 287 m_pFile = NULL; | 278 m_pFile = nullptr; |
| 288 if (m_pJpegContext) { | 279 if (m_pJpegContext) { |
| 289 m_pCodecMgr->GetJpegModule()->Finish(m_pJpegContext); | 280 m_pCodecMgr->GetJpegModule()->Finish(m_pJpegContext); |
| 290 } | 281 } |
| 291 if (m_pPngContext) { | 282 if (m_pPngContext) { |
| 292 m_pCodecMgr->GetPngModule()->Finish(m_pPngContext); | 283 m_pCodecMgr->GetPngModule()->Finish(m_pPngContext); |
| 293 } | 284 } |
| 294 if (m_pGifContext) { | 285 if (m_pGifContext) { |
| 295 m_pCodecMgr->GetGifModule()->Finish(m_pGifContext); | 286 m_pCodecMgr->GetGifModule()->Finish(m_pGifContext); |
| 296 } | 287 } |
| 297 if (m_pBmpContext) { | 288 if (m_pBmpContext) { |
| 298 m_pCodecMgr->GetBmpModule()->Finish(m_pBmpContext); | 289 m_pCodecMgr->GetBmpModule()->Finish(m_pBmpContext); |
| 299 } | 290 } |
| 300 if (m_pTiffContext) { | 291 if (m_pTiffContext) { |
| 301 m_pCodecMgr->GetTiffModule()->DestroyDecoder(m_pTiffContext); | 292 m_pCodecMgr->GetTiffModule()->DestroyDecoder(m_pTiffContext); |
| 302 } | 293 } |
| 303 FX_Free(m_pSrcBuf); | 294 FX_Free(m_pSrcBuf); |
| 304 FX_Free(m_pDecodeBuf); | 295 FX_Free(m_pDecodeBuf); |
| 305 FX_Free(m_pSrcPalette); | 296 FX_Free(m_pSrcPalette); |
| 306 } | 297 } |
| 307 FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData( | 298 FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData( |
| 308 CCodec_JpegModule* pJpegModule, | 299 CCodec_JpegModule* pJpegModule, |
| 309 FXCODEC_STATUS& err_status) { | 300 FXCODEC_STATUS& err_status) { |
| 310 uint32_t dwSize = (uint32_t)m_pFile->GetSize(); | 301 uint32_t dwSize = (uint32_t)m_pFile->GetSize(); |
| 311 if (dwSize <= m_offSet) { | 302 if (dwSize <= m_offSet) { |
| 312 return FALSE; | 303 return FALSE; |
| 313 } | 304 } |
| 314 dwSize = dwSize - m_offSet; | 305 dwSize = dwSize - m_offSet; |
| 315 uint32_t dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, NULL); | 306 uint32_t dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, nullptr); |
| 316 if (dwAvail == m_SrcSize) { | 307 if (dwAvail == m_SrcSize) { |
| 317 if (dwSize > FXCODEC_BLOCK_SIZE) { | 308 if (dwSize > FXCODEC_BLOCK_SIZE) { |
| 318 dwSize = FXCODEC_BLOCK_SIZE; | 309 dwSize = FXCODEC_BLOCK_SIZE; |
| 319 } | 310 } |
| 320 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / | 311 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / |
| 321 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; | 312 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; |
| 322 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); | 313 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); |
| 323 if (!m_pSrcBuf) { | 314 if (!m_pSrcBuf) { |
| 324 err_status = FXCODEC_STATUS_ERR_MEMORY; | 315 err_status = FXCODEC_STATUS_ERR_MEMORY; |
| 325 return FALSE; | 316 return FALSE; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 342 return TRUE; | 333 return TRUE; |
| 343 } | 334 } |
| 344 FX_BOOL CCodec_ProgressiveDecoder::PngReadHeaderFunc(void* pModule, | 335 FX_BOOL CCodec_ProgressiveDecoder::PngReadHeaderFunc(void* pModule, |
| 345 int width, | 336 int width, |
| 346 int height, | 337 int height, |
| 347 int bpc, | 338 int bpc, |
| 348 int pass, | 339 int pass, |
| 349 int* color_type, | 340 int* color_type, |
| 350 double* gamma) { | 341 double* gamma) { |
| 351 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; | 342 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; |
| 352 if (pCodec->m_pDeviceBitmap == NULL) { | 343 if (!pCodec->m_pDeviceBitmap) { |
| 353 pCodec->m_SrcWidth = width; | 344 pCodec->m_SrcWidth = width; |
| 354 pCodec->m_SrcHeight = height; | 345 pCodec->m_SrcHeight = height; |
| 355 pCodec->m_SrcBPC = bpc; | 346 pCodec->m_SrcBPC = bpc; |
| 356 pCodec->m_SrcPassNumber = pass; | 347 pCodec->m_SrcPassNumber = pass; |
| 357 pCodec->m_SrcComponents = | 348 pCodec->m_SrcComponents = |
| 358 *color_type == 0 ? 1 : *color_type == 2 | 349 *color_type == 0 ? 1 : *color_type == 2 |
| 359 ? 3 | 350 ? 3 |
| 360 : *color_type == 3 | 351 : *color_type == 3 |
| 361 ? 4 | 352 ? 4 |
| 362 : *color_type == 4 | 353 : *color_type == 4 |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 } | 554 } |
| 564 } | 555 } |
| 565 } | 556 } |
| 566 FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(CCodec_GifModule* pGifModule, | 557 FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(CCodec_GifModule* pGifModule, |
| 567 FXCODEC_STATUS& err_status) { | 558 FXCODEC_STATUS& err_status) { |
| 568 uint32_t dwSize = (uint32_t)m_pFile->GetSize(); | 559 uint32_t dwSize = (uint32_t)m_pFile->GetSize(); |
| 569 if (dwSize <= m_offSet) { | 560 if (dwSize <= m_offSet) { |
| 570 return FALSE; | 561 return FALSE; |
| 571 } | 562 } |
| 572 dwSize = dwSize - m_offSet; | 563 dwSize = dwSize - m_offSet; |
| 573 uint32_t dwAvail = pGifModule->GetAvailInput(m_pGifContext, NULL); | 564 uint32_t dwAvail = pGifModule->GetAvailInput(m_pGifContext, nullptr); |
| 574 if (dwAvail == m_SrcSize) { | 565 if (dwAvail == m_SrcSize) { |
| 575 if (dwSize > FXCODEC_BLOCK_SIZE) { | 566 if (dwSize > FXCODEC_BLOCK_SIZE) { |
| 576 dwSize = FXCODEC_BLOCK_SIZE; | 567 dwSize = FXCODEC_BLOCK_SIZE; |
| 577 } | 568 } |
| 578 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / | 569 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / |
| 579 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; | 570 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; |
| 580 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); | 571 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); |
| 581 if (!m_pSrcBuf) { | 572 if (!m_pSrcBuf) { |
| 582 err_status = FXCODEC_STATUS_ERR_MEMORY; | 573 err_status = FXCODEC_STATUS_ERR_MEMORY; |
| 583 return FALSE; | 574 return FALSE; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 int32_t trans_index, | 615 int32_t trans_index, |
| 625 int32_t disposal_method, | 616 int32_t disposal_method, |
| 626 FX_BOOL interlace) { | 617 FX_BOOL interlace) { |
| 627 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; | 618 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; |
| 628 pCodec->m_offSet = rcd_pos; | 619 pCodec->m_offSet = rcd_pos; |
| 629 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; | 620 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; |
| 630 if (!pCodec->GifReadMoreData(pCodec->m_pCodecMgr->GetGifModule(), | 621 if (!pCodec->GifReadMoreData(pCodec->m_pCodecMgr->GetGifModule(), |
| 631 error_status)) { | 622 error_status)) { |
| 632 return FALSE; | 623 return FALSE; |
| 633 } | 624 } |
| 634 uint8_t* pPalette = NULL; | 625 uint8_t* pPalette = nullptr; |
| 635 if (pal_num != 0 && pal_ptr) { | 626 if (pal_num != 0 && pal_ptr) { |
| 636 pPalette = (uint8_t*)pal_ptr; | 627 pPalette = (uint8_t*)pal_ptr; |
| 637 } else { | 628 } else { |
| 638 pal_num = pCodec->m_GifPltNumber; | 629 pal_num = pCodec->m_GifPltNumber; |
| 639 pPalette = pCodec->m_pGifPalette; | 630 pPalette = pCodec->m_pGifPalette; |
| 640 } | 631 } |
| 641 if (pCodec->m_pSrcPalette == NULL) { | 632 if (!pCodec->m_pSrcPalette) { |
| 642 pCodec->m_pSrcPalette = FX_Alloc(FX_ARGB, pal_num); | 633 pCodec->m_pSrcPalette = FX_Alloc(FX_ARGB, pal_num); |
| 643 } else if (pal_num > pCodec->m_SrcPaletteNumber) { | 634 } else if (pal_num > pCodec->m_SrcPaletteNumber) { |
| 644 pCodec->m_pSrcPalette = FX_Realloc(FX_ARGB, pCodec->m_pSrcPalette, pal_num); | 635 pCodec->m_pSrcPalette = FX_Realloc(FX_ARGB, pCodec->m_pSrcPalette, pal_num); |
| 645 } | 636 } |
| 646 if (pCodec->m_pSrcPalette == NULL) { | 637 if (!pCodec->m_pSrcPalette) |
| 647 return FALSE; | 638 return FALSE; |
| 648 } | 639 |
| 649 pCodec->m_SrcPaletteNumber = pal_num; | 640 pCodec->m_SrcPaletteNumber = pal_num; |
| 650 for (int i = 0; i < pal_num; i++) { | 641 for (int i = 0; i < pal_num; i++) { |
| 651 uint32_t j = i * 3; | 642 uint32_t j = i * 3; |
| 652 pCodec->m_pSrcPalette[i] = | 643 pCodec->m_pSrcPalette[i] = |
| 653 ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]); | 644 ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]); |
| 654 } | 645 } |
| 655 pCodec->m_GifTransIndex = trans_index; | 646 pCodec->m_GifTransIndex = trans_index; |
| 656 pCodec->m_GifFrameRect = img_rc; | 647 pCodec->m_GifFrameRect = img_rc; |
| 657 pCodec->m_SrcPassNumber = interlace ? 4 : 1; | 648 pCodec->m_SrcPassNumber = interlace ? 4 : 1; |
| 658 int32_t pal_index = pCodec->m_GifBgIndex; | 649 int32_t pal_index = pCodec->m_GifBgIndex; |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 845 GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y); | 836 GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y); |
| 846 } | 837 } |
| 847 } | 838 } |
| 848 FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(CCodec_BmpModule* pBmpModule, | 839 FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(CCodec_BmpModule* pBmpModule, |
| 849 FXCODEC_STATUS& err_status) { | 840 FXCODEC_STATUS& err_status) { |
| 850 uint32_t dwSize = (uint32_t)m_pFile->GetSize(); | 841 uint32_t dwSize = (uint32_t)m_pFile->GetSize(); |
| 851 if (dwSize <= m_offSet) { | 842 if (dwSize <= m_offSet) { |
| 852 return FALSE; | 843 return FALSE; |
| 853 } | 844 } |
| 854 dwSize = dwSize - m_offSet; | 845 dwSize = dwSize - m_offSet; |
| 855 uint32_t dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, NULL); | 846 uint32_t dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, nullptr); |
| 856 if (dwAvail == m_SrcSize) { | 847 if (dwAvail == m_SrcSize) { |
| 857 if (dwSize > FXCODEC_BLOCK_SIZE) { | 848 if (dwSize > FXCODEC_BLOCK_SIZE) { |
| 858 dwSize = FXCODEC_BLOCK_SIZE; | 849 dwSize = FXCODEC_BLOCK_SIZE; |
| 859 } | 850 } |
| 860 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / | 851 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / |
| 861 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; | 852 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; |
| 862 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); | 853 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); |
| 863 if (!m_pSrcBuf) { | 854 if (!m_pSrcBuf) { |
| 864 err_status = FXCODEC_STATUS_ERR_MEMORY; | 855 err_status = FXCODEC_STATUS_ERR_MEMORY; |
| 865 return FALSE; | 856 return FALSE; |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1013 if (size > FXCODEC_BLOCK_SIZE) { | 1004 if (size > FXCODEC_BLOCK_SIZE) { |
| 1014 size = FXCODEC_BLOCK_SIZE; | 1005 size = FXCODEC_BLOCK_SIZE; |
| 1015 } | 1006 } |
| 1016 FX_Free(m_pSrcBuf); | 1007 FX_Free(m_pSrcBuf); |
| 1017 m_pSrcBuf = FX_Alloc(uint8_t, size); | 1008 m_pSrcBuf = FX_Alloc(uint8_t, size); |
| 1018 FXSYS_memset(m_pSrcBuf, 0, size); | 1009 FXSYS_memset(m_pSrcBuf, 0, size); |
| 1019 m_SrcSize = size; | 1010 m_SrcSize = size; |
| 1020 switch (imageType) { | 1011 switch (imageType) { |
| 1021 case FXCODEC_IMAGE_BMP: { | 1012 case FXCODEC_IMAGE_BMP: { |
| 1022 CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); | 1013 CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); |
| 1023 if (pBmpModule == NULL) { | 1014 if (!pBmpModule) { |
| 1024 m_status = FXCODEC_STATUS_ERR_MEMORY; | 1015 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1025 return FALSE; | 1016 return FALSE; |
| 1026 } | 1017 } |
| 1027 pBmpModule->InputImagePositionBufCallback = | 1018 pBmpModule->InputImagePositionBufCallback = |
| 1028 BmpInputImagePositionBufCallback; | 1019 BmpInputImagePositionBufCallback; |
| 1029 pBmpModule->ReadScanlineCallback = BmpReadScanlineCallback; | 1020 pBmpModule->ReadScanlineCallback = BmpReadScanlineCallback; |
| 1030 m_pBmpContext = pBmpModule->Start((void*)this); | 1021 m_pBmpContext = pBmpModule->Start((void*)this); |
| 1031 if (m_pBmpContext == NULL) { | 1022 if (!m_pBmpContext) { |
| 1032 m_status = FXCODEC_STATUS_ERR_MEMORY; | 1023 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1033 return FALSE; | 1024 return FALSE; |
| 1034 } | 1025 } |
| 1035 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); | 1026 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); |
| 1036 if (!bResult) { | 1027 if (!bResult) { |
| 1037 m_status = FXCODEC_STATUS_ERR_READ; | 1028 m_status = FXCODEC_STATUS_ERR_READ; |
| 1038 return FALSE; | 1029 return FALSE; |
| 1039 } | 1030 } |
| 1040 m_offSet += size; | 1031 m_offSet += size; |
| 1041 pBmpModule->Input(m_pBmpContext, m_pSrcBuf, size); | 1032 pBmpModule->Input(m_pBmpContext, m_pSrcBuf, size); |
| 1042 uint32_t* pPalette = NULL; | 1033 uint32_t* pPalette = nullptr; |
| 1043 int32_t readResult = pBmpModule->ReadHeader( | 1034 int32_t readResult = pBmpModule->ReadHeader( |
| 1044 m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, | 1035 m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, |
| 1045 &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); | 1036 &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); |
| 1046 while (readResult == 2) { | 1037 while (readResult == 2) { |
| 1047 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; | 1038 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1048 if (!BmpReadMoreData(pBmpModule, error_status)) { | 1039 if (!BmpReadMoreData(pBmpModule, error_status)) { |
| 1049 m_status = error_status; | 1040 m_status = error_status; |
| 1050 return FALSE; | 1041 return FALSE; |
| 1051 } | 1042 } |
| 1052 readResult = pBmpModule->ReadHeader( | 1043 readResult = pBmpModule->ReadHeader( |
| 1053 m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, | 1044 m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, |
| 1054 &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); | 1045 &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); |
| 1055 } | 1046 } |
| 1056 if (readResult == 1) { | 1047 if (readResult == 1) { |
| 1057 m_SrcBPC = 8; | 1048 m_SrcBPC = 8; |
| 1058 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); | 1049 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); |
| 1059 FX_Free(m_pSrcPalette); | 1050 FX_Free(m_pSrcPalette); |
| 1060 if (m_SrcPaletteNumber) { | 1051 if (m_SrcPaletteNumber) { |
| 1061 m_pSrcPalette = FX_Alloc(FX_ARGB, m_SrcPaletteNumber); | 1052 m_pSrcPalette = FX_Alloc(FX_ARGB, m_SrcPaletteNumber); |
| 1062 FXSYS_memcpy(m_pSrcPalette, pPalette, | 1053 FXSYS_memcpy(m_pSrcPalette, pPalette, |
| 1063 m_SrcPaletteNumber * sizeof(uint32_t)); | 1054 m_SrcPaletteNumber * sizeof(uint32_t)); |
| 1064 } else { | 1055 } else { |
| 1065 m_pSrcPalette = nullptr; | 1056 m_pSrcPalette = nullptr; |
| 1066 } | 1057 } |
| 1067 return TRUE; | 1058 return TRUE; |
| 1068 } | 1059 } |
| 1069 if (m_pBmpContext) { | 1060 if (m_pBmpContext) { |
| 1070 pBmpModule->Finish(m_pBmpContext); | 1061 pBmpModule->Finish(m_pBmpContext); |
| 1071 m_pBmpContext = NULL; | 1062 m_pBmpContext = nullptr; |
| 1072 } | 1063 } |
| 1073 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1064 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1074 return FALSE; | 1065 return FALSE; |
| 1075 } break; | 1066 } break; |
| 1076 case FXCODEC_IMAGE_JPG: { | 1067 case FXCODEC_IMAGE_JPG: { |
| 1077 CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); | 1068 CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); |
| 1078 if (pJpegModule == NULL) { | 1069 if (!pJpegModule) { |
| 1079 m_status = FXCODEC_STATUS_ERR_MEMORY; | 1070 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1080 return FALSE; | 1071 return FALSE; |
| 1081 } | 1072 } |
| 1082 m_pJpegContext = pJpegModule->Start(); | 1073 m_pJpegContext = pJpegModule->Start(); |
| 1083 if (m_pJpegContext == NULL) { | 1074 if (!m_pJpegContext) { |
| 1084 m_status = FXCODEC_STATUS_ERR_MEMORY; | 1075 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1085 return FALSE; | 1076 return FALSE; |
| 1086 } | 1077 } |
| 1087 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); | 1078 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); |
| 1088 if (!bResult) { | 1079 if (!bResult) { |
| 1089 m_status = FXCODEC_STATUS_ERR_READ; | 1080 m_status = FXCODEC_STATUS_ERR_READ; |
| 1090 return FALSE; | 1081 return FALSE; |
| 1091 } | 1082 } |
| 1092 m_offSet += size; | 1083 m_offSet += size; |
| 1093 pJpegModule->Input(m_pJpegContext, m_pSrcBuf, size); | 1084 pJpegModule->Input(m_pJpegContext, m_pSrcBuf, size); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1104 pJpegModule->ReadHeader(m_pJpegContext, &m_SrcWidth, &m_SrcHeight, | 1095 pJpegModule->ReadHeader(m_pJpegContext, &m_SrcWidth, &m_SrcHeight, |
| 1105 &m_SrcComponents, pAttribute); | 1096 &m_SrcComponents, pAttribute); |
| 1106 } | 1097 } |
| 1107 if (!readResult) { | 1098 if (!readResult) { |
| 1108 m_SrcBPC = 8; | 1099 m_SrcBPC = 8; |
| 1109 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); | 1100 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); |
| 1110 return TRUE; | 1101 return TRUE; |
| 1111 } | 1102 } |
| 1112 if (m_pJpegContext) { | 1103 if (m_pJpegContext) { |
| 1113 pJpegModule->Finish(m_pJpegContext); | 1104 pJpegModule->Finish(m_pJpegContext); |
| 1114 m_pJpegContext = NULL; | 1105 m_pJpegContext = nullptr; |
| 1115 } | 1106 } |
| 1116 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1107 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1117 return FALSE; | 1108 return FALSE; |
| 1118 } break; | 1109 } break; |
| 1119 case FXCODEC_IMAGE_PNG: { | 1110 case FXCODEC_IMAGE_PNG: { |
| 1120 CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); | 1111 CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); |
| 1121 if (pPngModule == NULL) { | 1112 if (!pPngModule) { |
| 1122 m_status = FXCODEC_STATUS_ERR_MEMORY; | 1113 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1123 return FALSE; | 1114 return FALSE; |
| 1124 } | 1115 } |
| 1125 pPngModule->ReadHeaderCallback = | 1116 pPngModule->ReadHeaderCallback = |
| 1126 CCodec_ProgressiveDecoder::PngReadHeaderFunc; | 1117 CCodec_ProgressiveDecoder::PngReadHeaderFunc; |
| 1127 pPngModule->AskScanlineBufCallback = | 1118 pPngModule->AskScanlineBufCallback = |
| 1128 CCodec_ProgressiveDecoder::PngAskScanlineBufFunc; | 1119 CCodec_ProgressiveDecoder::PngAskScanlineBufFunc; |
| 1129 pPngModule->FillScanlineBufCompletedCallback = | 1120 pPngModule->FillScanlineBufCompletedCallback = |
| 1130 CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc; | 1121 CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc; |
| 1131 m_pPngContext = pPngModule->Start((void*)this); | 1122 m_pPngContext = pPngModule->Start((void*)this); |
| 1132 if (m_pPngContext == NULL) { | 1123 if (!m_pPngContext) { |
| 1133 m_status = FXCODEC_STATUS_ERR_MEMORY; | 1124 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1134 return FALSE; | 1125 return FALSE; |
| 1135 } | 1126 } |
| 1136 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); | 1127 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); |
| 1137 if (!bResult) { | 1128 if (!bResult) { |
| 1138 m_status = FXCODEC_STATUS_ERR_READ; | 1129 m_status = FXCODEC_STATUS_ERR_READ; |
| 1139 return FALSE; | 1130 return FALSE; |
| 1140 } | 1131 } |
| 1141 m_offSet += size; | 1132 m_offSet += size; |
| 1142 bResult = pPngModule->Input(m_pPngContext, m_pSrcBuf, size, pAttribute); | 1133 bResult = pPngModule->Input(m_pPngContext, m_pSrcBuf, size, pAttribute); |
| 1143 while (bResult) { | 1134 while (bResult) { |
| 1144 uint32_t remain_size = (uint32_t)m_pFile->GetSize() - m_offSet; | 1135 uint32_t remain_size = (uint32_t)m_pFile->GetSize() - m_offSet; |
| 1145 uint32_t input_size = | 1136 uint32_t input_size = |
| 1146 remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; | 1137 remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; |
| 1147 if (input_size == 0) { | 1138 if (input_size == 0) { |
| 1148 if (m_pPngContext) { | 1139 if (m_pPngContext) { |
| 1149 pPngModule->Finish(m_pPngContext); | 1140 pPngModule->Finish(m_pPngContext); |
| 1150 } | 1141 } |
| 1151 m_pPngContext = NULL; | 1142 m_pPngContext = nullptr; |
| 1152 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1143 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1153 return FALSE; | 1144 return FALSE; |
| 1154 } | 1145 } |
| 1155 if (m_pSrcBuf && input_size > m_SrcSize) { | 1146 if (m_pSrcBuf && input_size > m_SrcSize) { |
| 1156 FX_Free(m_pSrcBuf); | 1147 FX_Free(m_pSrcBuf); |
| 1157 m_pSrcBuf = FX_Alloc(uint8_t, input_size); | 1148 m_pSrcBuf = FX_Alloc(uint8_t, input_size); |
| 1158 FXSYS_memset(m_pSrcBuf, 0, input_size); | 1149 FXSYS_memset(m_pSrcBuf, 0, input_size); |
| 1159 m_SrcSize = input_size; | 1150 m_SrcSize = input_size; |
| 1160 } | 1151 } |
| 1161 bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size); | 1152 bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size); |
| 1162 if (!bResult) { | 1153 if (!bResult) { |
| 1163 m_status = FXCODEC_STATUS_ERR_READ; | 1154 m_status = FXCODEC_STATUS_ERR_READ; |
| 1164 return FALSE; | 1155 return FALSE; |
| 1165 } | 1156 } |
| 1166 m_offSet += input_size; | 1157 m_offSet += input_size; |
| 1167 bResult = | 1158 bResult = |
| 1168 pPngModule->Input(m_pPngContext, m_pSrcBuf, input_size, pAttribute); | 1159 pPngModule->Input(m_pPngContext, m_pSrcBuf, input_size, pAttribute); |
| 1169 } | 1160 } |
| 1170 ASSERT(!bResult); | 1161 ASSERT(!bResult); |
| 1171 if (m_pPngContext) { | 1162 if (m_pPngContext) { |
| 1172 pPngModule->Finish(m_pPngContext); | 1163 pPngModule->Finish(m_pPngContext); |
| 1173 m_pPngContext = NULL; | 1164 m_pPngContext = nullptr; |
| 1174 } | 1165 } |
| 1175 if (m_SrcPassNumber == 0) { | 1166 if (m_SrcPassNumber == 0) { |
| 1176 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1167 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1177 return FALSE; | 1168 return FALSE; |
| 1178 } | 1169 } |
| 1179 } break; | 1170 } break; |
| 1180 case FXCODEC_IMAGE_GIF: { | 1171 case FXCODEC_IMAGE_GIF: { |
| 1181 CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); | 1172 CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); |
| 1182 if (pGifModule == NULL) { | 1173 if (!pGifModule) { |
| 1183 m_status = FXCODEC_STATUS_ERR_MEMORY; | 1174 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1184 return FALSE; | 1175 return FALSE; |
| 1185 } | 1176 } |
| 1186 pGifModule->RecordCurrentPositionCallback = | 1177 pGifModule->RecordCurrentPositionCallback = |
| 1187 CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback; | 1178 CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback; |
| 1188 pGifModule->AskLocalPaletteBufCallback = | 1179 pGifModule->AskLocalPaletteBufCallback = |
| 1189 CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback; | 1180 CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback; |
| 1190 pGifModule->InputRecordPositionBufCallback = | 1181 pGifModule->InputRecordPositionBufCallback = |
| 1191 CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback; | 1182 CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback; |
| 1192 pGifModule->ReadScanlineCallback = | 1183 pGifModule->ReadScanlineCallback = |
| 1193 CCodec_ProgressiveDecoder::GifReadScanlineCallback; | 1184 CCodec_ProgressiveDecoder::GifReadScanlineCallback; |
| 1194 m_pGifContext = pGifModule->Start((void*)this); | 1185 m_pGifContext = pGifModule->Start((void*)this); |
| 1195 if (m_pGifContext == NULL) { | 1186 if (!m_pGifContext) { |
| 1196 m_status = FXCODEC_STATUS_ERR_MEMORY; | 1187 m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1197 return FALSE; | 1188 return FALSE; |
| 1198 } | 1189 } |
| 1199 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); | 1190 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); |
| 1200 if (!bResult) { | 1191 if (!bResult) { |
| 1201 m_status = FXCODEC_STATUS_ERR_READ; | 1192 m_status = FXCODEC_STATUS_ERR_READ; |
| 1202 return FALSE; | 1193 return FALSE; |
| 1203 } | 1194 } |
| 1204 m_offSet += size; | 1195 m_offSet += size; |
| 1205 pGifModule->Input(m_pGifContext, m_pSrcBuf, size); | 1196 pGifModule->Input(m_pGifContext, m_pSrcBuf, size); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1217 m_pGifContext, &m_SrcWidth, &m_SrcHeight, &m_GifPltNumber, | 1208 m_pGifContext, &m_SrcWidth, &m_SrcHeight, &m_GifPltNumber, |
| 1218 (void**)&m_pGifPalette, &m_GifBgIndex, nullptr); | 1209 (void**)&m_pGifPalette, &m_GifBgIndex, nullptr); |
| 1219 } | 1210 } |
| 1220 if (readResult == 1) { | 1211 if (readResult == 1) { |
| 1221 m_SrcBPC = 8; | 1212 m_SrcBPC = 8; |
| 1222 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); | 1213 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); |
| 1223 return TRUE; | 1214 return TRUE; |
| 1224 } | 1215 } |
| 1225 if (m_pGifContext) { | 1216 if (m_pGifContext) { |
| 1226 pGifModule->Finish(m_pGifContext); | 1217 pGifModule->Finish(m_pGifContext); |
| 1227 m_pGifContext = NULL; | 1218 m_pGifContext = nullptr; |
| 1228 } | 1219 } |
| 1229 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1220 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1230 return FALSE; | 1221 return FALSE; |
| 1231 } break; | 1222 } break; |
| 1232 case FXCODEC_IMAGE_TIF: { | 1223 case FXCODEC_IMAGE_TIF: { |
| 1233 CCodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); | 1224 CCodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); |
| 1234 if (pTiffModule == NULL) { | 1225 if (!pTiffModule) { |
| 1235 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1226 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1236 return FALSE; | 1227 return FALSE; |
| 1237 } | 1228 } |
| 1238 m_pTiffContext = pTiffModule->CreateDecoder(m_pFile); | 1229 m_pTiffContext = pTiffModule->CreateDecoder(m_pFile); |
| 1239 if (m_pTiffContext == NULL) { | 1230 if (!m_pTiffContext) { |
| 1240 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1231 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1241 return FALSE; | 1232 return FALSE; |
| 1242 } | 1233 } |
| 1243 int32_t frames = 0; | 1234 int32_t frames = 0; |
| 1244 pTiffModule->GetFrames(m_pTiffContext, frames); | 1235 pTiffModule->GetFrames(m_pTiffContext, frames); |
| 1245 uint32_t bpc; | 1236 uint32_t bpc; |
| 1246 FX_BOOL ret = pTiffModule->LoadFrameInfo( | 1237 FX_BOOL ret = pTiffModule->LoadFrameInfo( |
| 1247 m_pTiffContext, 0, (uint32_t&)m_SrcWidth, (uint32_t&)m_SrcHeight, | 1238 m_pTiffContext, 0, (uint32_t&)m_SrcWidth, (uint32_t&)m_SrcHeight, |
| 1248 (uint32_t&)m_SrcComponents, bpc, pAttribute); | 1239 (uint32_t&)m_SrcComponents, bpc, pAttribute); |
| 1249 m_SrcComponents = 4; | 1240 m_SrcComponents = 4; |
| 1250 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); | 1241 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); |
| 1251 if (!ret) { | 1242 if (!ret) { |
| 1252 pTiffModule->DestroyDecoder(m_pTiffContext); | 1243 pTiffModule->DestroyDecoder(m_pTiffContext); |
| 1253 (m_pTiffContext = NULL); | 1244 (m_pTiffContext = nullptr); |
| 1254 (m_status = FXCODEC_STATUS_ERR_FORMAT); | 1245 (m_status = FXCODEC_STATUS_ERR_FORMAT); |
| 1255 return FALSE; | 1246 return FALSE; |
| 1256 } | 1247 } |
| 1257 } break; | 1248 } break; |
| 1258 default: | 1249 default: |
| 1259 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1250 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1260 return FALSE; | 1251 return FALSE; |
| 1261 } | 1252 } |
| 1262 return TRUE; | 1253 return TRUE; |
| 1263 } | 1254 } |
| 1264 FXCODEC_STATUS CCodec_ProgressiveDecoder::LoadImageInfo( | 1255 FXCODEC_STATUS CCodec_ProgressiveDecoder::LoadImageInfo( |
| 1265 IFX_FileRead* pFile, | 1256 IFX_FileRead* pFile, |
| 1266 FXCODEC_IMAGE_TYPE imageType, | 1257 FXCODEC_IMAGE_TYPE imageType, |
| 1267 CFX_DIBAttribute* pAttribute) { | 1258 CFX_DIBAttribute* pAttribute) { |
| 1268 switch (m_status) { | 1259 switch (m_status) { |
| 1269 case FXCODEC_STATUS_FRAME_READY: | 1260 case FXCODEC_STATUS_FRAME_READY: |
| 1270 case FXCODEC_STATUS_FRAME_TOBECONTINUE: | 1261 case FXCODEC_STATUS_FRAME_TOBECONTINUE: |
| 1271 case FXCODEC_STATUS_DECODE_READY: | 1262 case FXCODEC_STATUS_DECODE_READY: |
| 1272 case FXCODEC_STATUS_DECODE_TOBECONTINUE: | 1263 case FXCODEC_STATUS_DECODE_TOBECONTINUE: |
| 1273 return FXCODEC_STATUS_ERROR; | 1264 return FXCODEC_STATUS_ERROR; |
| 1274 default: | 1265 default: |
| 1275 break; | 1266 break; |
| 1276 } | 1267 } |
| 1277 if (pFile == NULL) { | 1268 if (!pFile) { |
| 1278 m_status = FXCODEC_STATUS_ERR_PARAMS; | 1269 m_status = FXCODEC_STATUS_ERR_PARAMS; |
| 1279 m_pFile = NULL; | 1270 m_pFile = nullptr; |
| 1280 return m_status; | 1271 return m_status; |
| 1281 } | 1272 } |
| 1282 m_pFile = pFile; | 1273 m_pFile = pFile; |
| 1283 m_offSet = 0; | 1274 m_offSet = 0; |
| 1284 m_SrcWidth = m_SrcHeight = 0; | 1275 m_SrcWidth = m_SrcHeight = 0; |
| 1285 m_SrcComponents = m_SrcBPC = 0; | 1276 m_SrcComponents = m_SrcBPC = 0; |
| 1286 m_clipBox = FX_RECT(0, 0, 0, 0); | 1277 m_clipBox = FX_RECT(0, 0, 0, 0); |
| 1287 m_startX = m_startY = 0; | 1278 m_startX = m_startY = 0; |
| 1288 m_sizeX = m_sizeY = 0; | 1279 m_sizeX = m_sizeY = 0; |
| 1289 m_SrcPassNumber = 0; | 1280 m_SrcPassNumber = 0; |
| 1290 if (imageType != FXCODEC_IMAGE_UNKNOWN && | 1281 if (imageType != FXCODEC_IMAGE_UNKNOWN && |
| 1291 DetectImageType(imageType, pAttribute)) { | 1282 DetectImageType(imageType, pAttribute)) { |
| 1292 m_imagType = imageType; | 1283 m_imagType = imageType; |
| 1293 m_status = FXCODEC_STATUS_FRAME_READY; | 1284 m_status = FXCODEC_STATUS_FRAME_READY; |
| 1294 return m_status; | 1285 return m_status; |
| 1295 } | 1286 } |
| 1296 for (int type = FXCODEC_IMAGE_BMP; type < FXCODEC_IMAGE_MAX; type++) { | 1287 for (int type = FXCODEC_IMAGE_BMP; type < FXCODEC_IMAGE_MAX; type++) { |
| 1297 if (DetectImageType((FXCODEC_IMAGE_TYPE)type, pAttribute)) { | 1288 if (DetectImageType((FXCODEC_IMAGE_TYPE)type, pAttribute)) { |
| 1298 m_imagType = (FXCODEC_IMAGE_TYPE)type; | 1289 m_imagType = (FXCODEC_IMAGE_TYPE)type; |
| 1299 m_status = FXCODEC_STATUS_FRAME_READY; | 1290 m_status = FXCODEC_STATUS_FRAME_READY; |
| 1300 return m_status; | 1291 return m_status; |
| 1301 } | 1292 } |
| 1302 } | 1293 } |
| 1303 m_status = FXCODEC_STATUS_ERR_FORMAT; | 1294 m_status = FXCODEC_STATUS_ERR_FORMAT; |
| 1304 m_pFile = NULL; | 1295 m_pFile = nullptr; |
| 1305 return m_status; | 1296 return m_status; |
| 1306 } | 1297 } |
| 1307 void CCodec_ProgressiveDecoder::SetClipBox(FX_RECT* clip) { | 1298 void CCodec_ProgressiveDecoder::SetClipBox(FX_RECT* clip) { |
| 1308 if (m_status != FXCODEC_STATUS_FRAME_READY) { | 1299 if (m_status != FXCODEC_STATUS_FRAME_READY) { |
| 1309 return; | 1300 return; |
| 1310 } | 1301 } |
| 1311 if (clip->IsEmpty()) { | 1302 if (clip->IsEmpty()) { |
| 1312 m_clipBox = FX_RECT(0, 0, 0, 0); | 1303 m_clipBox = FX_RECT(0, 0, 0, 0); |
| 1313 return; | 1304 return; |
| 1314 } | 1305 } |
| (...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1823 return m_status = FXCODEC_STATUS_FRAME_TOBECONTINUE; | 1814 return m_status = FXCODEC_STATUS_FRAME_TOBECONTINUE; |
| 1824 } | 1815 } |
| 1825 readResult = pGifModule->LoadFrameInfo(m_pGifContext, &m_FrameNumber); | 1816 readResult = pGifModule->LoadFrameInfo(m_pGifContext, &m_FrameNumber); |
| 1826 } | 1817 } |
| 1827 if (readResult == 1) { | 1818 if (readResult == 1) { |
| 1828 frames = m_FrameNumber; | 1819 frames = m_FrameNumber; |
| 1829 return m_status = FXCODEC_STATUS_DECODE_READY; | 1820 return m_status = FXCODEC_STATUS_DECODE_READY; |
| 1830 } | 1821 } |
| 1831 if (m_pGifContext) { | 1822 if (m_pGifContext) { |
| 1832 pGifModule->Finish(m_pGifContext); | 1823 pGifModule->Finish(m_pGifContext); |
| 1833 m_pGifContext = NULL; | 1824 m_pGifContext = nullptr; |
| 1834 } | 1825 } |
| 1835 return m_status = FXCODEC_STATUS_ERROR; | 1826 return m_status = FXCODEC_STATUS_ERROR; |
| 1836 } | 1827 } |
| 1837 } break; | 1828 } break; |
| 1838 default: | 1829 default: |
| 1839 break; | 1830 break; |
| 1840 } | 1831 } |
| 1841 return FXCODEC_STATUS_ERROR; | 1832 return FXCODEC_STATUS_ERROR; |
| 1842 } | 1833 } |
| 1843 FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap, | 1834 FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap, |
| 1844 int start_x, | 1835 int start_x, |
| 1845 int start_y, | 1836 int start_y, |
| 1846 int size_x, | 1837 int size_x, |
| 1847 int size_y, | 1838 int size_y, |
| 1848 int32_t frames, | 1839 int32_t frames, |
| 1849 FX_BOOL bInterpol) { | 1840 FX_BOOL bInterpol) { |
| 1850 if (m_status != FXCODEC_STATUS_DECODE_READY) { | 1841 if (m_status != FXCODEC_STATUS_DECODE_READY) |
| 1851 return FXCODEC_STATUS_ERROR; | 1842 return FXCODEC_STATUS_ERROR; |
| 1852 } | 1843 |
| 1853 if (pDIBitmap == NULL || pDIBitmap->GetBPP() < 8 || frames < 0 || | 1844 if (!pDIBitmap || pDIBitmap->GetBPP() < 8 || frames < 0 || |
| 1854 frames >= m_FrameNumber) { | 1845 frames >= m_FrameNumber) { |
| 1855 return FXCODEC_STATUS_ERR_PARAMS; | 1846 return FXCODEC_STATUS_ERR_PARAMS; |
| 1856 } | 1847 } |
| 1857 m_pDeviceBitmap = pDIBitmap; | 1848 m_pDeviceBitmap = pDIBitmap; |
| 1858 if (m_clipBox.IsEmpty()) { | 1849 if (m_clipBox.IsEmpty()) { |
| 1859 return FXCODEC_STATUS_ERR_PARAMS; | 1850 return FXCODEC_STATUS_ERR_PARAMS; |
| 1860 } | 1851 } |
| 1861 if (size_x <= 0 || size_x > 65535 || size_y <= 0 || size_y > 65535) { | 1852 if (size_x <= 0 || size_x > 65535 || size_y <= 0 || size_y > 65535) { |
| 1862 return FXCODEC_STATUS_ERR_PARAMS; | 1853 return FXCODEC_STATUS_ERR_PARAMS; |
| 1863 } | 1854 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1899 } | 1890 } |
| 1900 switch (m_imagType) { | 1891 switch (m_imagType) { |
| 1901 case FXCODEC_IMAGE_JPG: { | 1892 case FXCODEC_IMAGE_JPG: { |
| 1902 CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); | 1893 CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); |
| 1903 int down_scale = 1; | 1894 int down_scale = 1; |
| 1904 GetDownScale(down_scale); | 1895 GetDownScale(down_scale); |
| 1905 FX_BOOL bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale); | 1896 FX_BOOL bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale); |
| 1906 while (!bStart) { | 1897 while (!bStart) { |
| 1907 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; | 1898 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; |
| 1908 if (!JpegReadMoreData(pJpegModule, error_status)) { | 1899 if (!JpegReadMoreData(pJpegModule, error_status)) { |
| 1909 m_pDeviceBitmap = NULL; | 1900 m_pDeviceBitmap = nullptr; |
| 1910 m_pFile = NULL; | 1901 m_pFile = nullptr; |
| 1911 return m_status = error_status; | 1902 return m_status = error_status; |
| 1912 } | 1903 } |
| 1913 bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale); | 1904 bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale); |
| 1914 } | 1905 } |
| 1915 int scanline_size = (m_SrcWidth + down_scale - 1) / down_scale; | 1906 int scanline_size = (m_SrcWidth + down_scale - 1) / down_scale; |
| 1916 scanline_size = (scanline_size * m_SrcComponents + 3) / 4 * 4; | 1907 scanline_size = (scanline_size * m_SrcComponents + 3) / 4 * 4; |
| 1917 FX_Free(m_pDecodeBuf); | 1908 FX_Free(m_pDecodeBuf); |
| 1918 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); | 1909 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); |
| 1919 FXSYS_memset(m_pDecodeBuf, 0, scanline_size); | 1910 FXSYS_memset(m_pDecodeBuf, 0, scanline_size); |
| 1920 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, | 1911 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, |
| 1921 m_clipBox.Width(), m_bInterpol); | 1912 m_clipBox.Width(), m_bInterpol); |
| 1922 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); | 1913 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); |
| 1923 switch (m_SrcComponents) { | 1914 switch (m_SrcComponents) { |
| 1924 case 1: | 1915 case 1: |
| 1925 m_SrcFormat = FXCodec_8bppGray; | 1916 m_SrcFormat = FXCodec_8bppGray; |
| 1926 break; | 1917 break; |
| 1927 case 3: | 1918 case 3: |
| 1928 m_SrcFormat = FXCodec_Rgb; | 1919 m_SrcFormat = FXCodec_Rgb; |
| 1929 break; | 1920 break; |
| 1930 case 4: | 1921 case 4: |
| 1931 m_SrcFormat = FXCodec_Cmyk; | 1922 m_SrcFormat = FXCodec_Cmyk; |
| 1932 break; | 1923 break; |
| 1933 } | 1924 } |
| 1934 GetTransMethod(pDIBitmap->GetFormat(), m_SrcFormat); | 1925 GetTransMethod(pDIBitmap->GetFormat(), m_SrcFormat); |
| 1935 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 1926 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 1936 } break; | 1927 } break; |
| 1937 case FXCODEC_IMAGE_PNG: { | 1928 case FXCODEC_IMAGE_PNG: { |
| 1938 CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); | 1929 CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); |
| 1939 if (pPngModule == NULL) { | 1930 if (!pPngModule) { |
| 1940 m_pDeviceBitmap = NULL; | 1931 m_pDeviceBitmap = nullptr; |
| 1941 m_pFile = NULL; | 1932 m_pFile = nullptr; |
| 1942 return m_status = FXCODEC_STATUS_ERR_MEMORY; | 1933 return m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1943 } | 1934 } |
| 1944 if (m_pPngContext) { | 1935 if (m_pPngContext) { |
| 1945 pPngModule->Finish(m_pPngContext); | 1936 pPngModule->Finish(m_pPngContext); |
| 1946 m_pPngContext = NULL; | 1937 m_pPngContext = nullptr; |
| 1947 } | 1938 } |
| 1948 m_pPngContext = pPngModule->Start((void*)this); | 1939 m_pPngContext = pPngModule->Start((void*)this); |
| 1949 if (m_pPngContext == NULL) { | 1940 if (!m_pPngContext) { |
| 1950 m_pDeviceBitmap = NULL; | 1941 m_pDeviceBitmap = nullptr; |
| 1951 m_pFile = NULL; | 1942 m_pFile = nullptr; |
| 1952 return m_status = FXCODEC_STATUS_ERR_MEMORY; | 1943 return m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1953 } | 1944 } |
| 1954 m_offSet = 0; | 1945 m_offSet = 0; |
| 1955 switch (m_pDeviceBitmap->GetFormat()) { | 1946 switch (m_pDeviceBitmap->GetFormat()) { |
| 1956 case FXDIB_8bppMask: | 1947 case FXDIB_8bppMask: |
| 1957 case FXDIB_8bppRgb: | 1948 case FXDIB_8bppRgb: |
| 1958 m_SrcComponents = 1; | 1949 m_SrcComponents = 1; |
| 1959 m_SrcFormat = FXCodec_8bppGray; | 1950 m_SrcFormat = FXCodec_8bppGray; |
| 1960 break; | 1951 break; |
| 1961 case FXDIB_Rgb: | 1952 case FXDIB_Rgb: |
| 1962 m_SrcComponents = 3; | 1953 m_SrcComponents = 3; |
| 1963 m_SrcFormat = FXCodec_Rgb; | 1954 m_SrcFormat = FXCodec_Rgb; |
| 1964 break; | 1955 break; |
| 1965 case FXDIB_Rgb32: | 1956 case FXDIB_Rgb32: |
| 1966 case FXDIB_Argb: | 1957 case FXDIB_Argb: |
| 1967 m_SrcComponents = 4; | 1958 m_SrcComponents = 4; |
| 1968 m_SrcFormat = FXCodec_Argb; | 1959 m_SrcFormat = FXCodec_Argb; |
| 1969 break; | 1960 break; |
| 1970 default: { | 1961 default: { |
| 1971 m_pDeviceBitmap = NULL; | 1962 m_pDeviceBitmap = nullptr; |
| 1972 m_pFile = NULL; | 1963 m_pFile = nullptr; |
| 1973 return m_status = FXCODEC_STATUS_ERR_PARAMS; | 1964 return m_status = FXCODEC_STATUS_ERR_PARAMS; |
| 1974 } | 1965 } |
| 1975 } | 1966 } |
| 1976 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); | 1967 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); |
| 1977 int scanline_size = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4; | 1968 int scanline_size = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4; |
| 1978 FX_Free(m_pDecodeBuf); | 1969 FX_Free(m_pDecodeBuf); |
| 1979 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); | 1970 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); |
| 1980 FXSYS_memset(m_pDecodeBuf, 0, scanline_size); | 1971 FXSYS_memset(m_pDecodeBuf, 0, scanline_size); |
| 1981 m_WeightHorzOO.Calc(m_sizeX, m_clipBox.Width(), m_bInterpol); | 1972 m_WeightHorzOO.Calc(m_sizeX, m_clipBox.Width(), m_bInterpol); |
| 1982 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); | 1973 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); |
| 1983 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 1974 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 1984 } break; | 1975 } break; |
| 1985 case FXCODEC_IMAGE_GIF: { | 1976 case FXCODEC_IMAGE_GIF: { |
| 1986 CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); | 1977 CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); |
| 1987 if (pGifModule == NULL) { | 1978 if (!pGifModule) { |
| 1988 m_pDeviceBitmap = NULL; | 1979 m_pDeviceBitmap = nullptr; |
| 1989 m_pFile = NULL; | 1980 m_pFile = nullptr; |
| 1990 return m_status = FXCODEC_STATUS_ERR_MEMORY; | 1981 return m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 1991 } | 1982 } |
| 1992 m_SrcFormat = FXCodec_8bppRgb; | 1983 m_SrcFormat = FXCodec_8bppRgb; |
| 1993 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); | 1984 GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); |
| 1994 int scanline_size = (m_SrcWidth + 3) / 4 * 4; | 1985 int scanline_size = (m_SrcWidth + 3) / 4 * 4; |
| 1995 FX_Free(m_pDecodeBuf); | 1986 FX_Free(m_pDecodeBuf); |
| 1996 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); | 1987 m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); |
| 1997 FXSYS_memset(m_pDecodeBuf, 0, scanline_size); | 1988 FXSYS_memset(m_pDecodeBuf, 0, scanline_size); |
| 1998 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, | 1989 m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, |
| 1999 m_clipBox.Width(), m_bInterpol); | 1990 m_clipBox.Width(), m_bInterpol); |
| 2000 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); | 1991 m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); |
| 2001 m_FrameCur = frames; | 1992 m_FrameCur = frames; |
| 2002 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 1993 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 2003 } break; | 1994 } break; |
| 2004 case FXCODEC_IMAGE_BMP: { | 1995 case FXCODEC_IMAGE_BMP: { |
| 2005 CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); | 1996 CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); |
| 2006 if (pBmpModule == NULL) { | 1997 if (!pBmpModule) { |
| 2007 m_pDeviceBitmap = NULL; | 1998 m_pDeviceBitmap = nullptr; |
| 2008 m_pFile = NULL; | 1999 m_pFile = nullptr; |
| 2009 return m_status = FXCODEC_STATUS_ERR_MEMORY; | 2000 return m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 2010 } | 2001 } |
| 2011 switch (m_SrcComponents) { | 2002 switch (m_SrcComponents) { |
| 2012 case 1: | 2003 case 1: |
| 2013 m_SrcFormat = FXCodec_8bppRgb; | 2004 m_SrcFormat = FXCodec_8bppRgb; |
| 2014 break; | 2005 break; |
| 2015 case 3: | 2006 case 3: |
| 2016 m_SrcFormat = FXCodec_Rgb; | 2007 m_SrcFormat = FXCodec_Rgb; |
| 2017 break; | 2008 break; |
| 2018 case 4: | 2009 case 4: |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2042 } | 2033 } |
| 2043 switch (m_imagType) { | 2034 switch (m_imagType) { |
| 2044 case FXCODEC_IMAGE_JPG: { | 2035 case FXCODEC_IMAGE_JPG: { |
| 2045 CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); | 2036 CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); |
| 2046 while (TRUE) { | 2037 while (TRUE) { |
| 2047 FX_BOOL readRes = | 2038 FX_BOOL readRes = |
| 2048 pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf); | 2039 pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf); |
| 2049 while (!readRes) { | 2040 while (!readRes) { |
| 2050 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; | 2041 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2051 if (!JpegReadMoreData(pJpegModule, error_status)) { | 2042 if (!JpegReadMoreData(pJpegModule, error_status)) { |
| 2052 m_pDeviceBitmap = NULL; | 2043 m_pDeviceBitmap = nullptr; |
| 2053 m_pFile = NULL; | 2044 m_pFile = nullptr; |
| 2054 return m_status = error_status; | 2045 return m_status = error_status; |
| 2055 } | 2046 } |
| 2056 readRes = pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf); | 2047 readRes = pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf); |
| 2057 } | 2048 } |
| 2058 if (m_SrcFormat == FXCodec_Rgb) { | 2049 if (m_SrcFormat == FXCodec_Rgb) { |
| 2059 int src_Bpp = (m_SrcFormat & 0xff) >> 3; | 2050 int src_Bpp = (m_SrcFormat & 0xff) >> 3; |
| 2060 _RGB2BGR(m_pDecodeBuf + m_clipBox.left * src_Bpp, m_clipBox.Width()); | 2051 _RGB2BGR(m_pDecodeBuf + m_clipBox.left * src_Bpp, m_clipBox.Width()); |
| 2061 } | 2052 } |
| 2062 if (m_SrcRow >= m_clipBox.bottom) { | 2053 if (m_SrcRow >= m_clipBox.bottom) { |
| 2063 m_pDeviceBitmap = NULL; | 2054 m_pDeviceBitmap = nullptr; |
| 2064 m_pFile = NULL; | 2055 m_pFile = nullptr; |
| 2065 return m_status = FXCODEC_STATUS_DECODE_FINISH; | 2056 return m_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2066 } | 2057 } |
| 2067 Resample(m_pDeviceBitmap, m_SrcRow, m_pDecodeBuf, m_SrcFormat); | 2058 Resample(m_pDeviceBitmap, m_SrcRow, m_pDecodeBuf, m_SrcFormat); |
| 2068 m_SrcRow++; | 2059 m_SrcRow++; |
| 2069 if (pPause && pPause->NeedToPauseNow()) { | 2060 if (pPause && pPause->NeedToPauseNow()) { |
| 2070 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 2061 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 2071 } | 2062 } |
| 2072 } | 2063 } |
| 2073 } break; | 2064 } break; |
| 2074 case FXCODEC_IMAGE_PNG: { | 2065 case FXCODEC_IMAGE_PNG: { |
| 2075 CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); | 2066 CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); |
| 2076 while (TRUE) { | 2067 while (TRUE) { |
| 2077 uint32_t remain_size = (uint32_t)m_pFile->GetSize() - m_offSet; | 2068 uint32_t remain_size = (uint32_t)m_pFile->GetSize() - m_offSet; |
| 2078 uint32_t input_size = | 2069 uint32_t input_size = |
| 2079 remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; | 2070 remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; |
| 2080 if (input_size == 0) { | 2071 if (input_size == 0) { |
| 2081 if (m_pPngContext) { | 2072 if (m_pPngContext) { |
| 2082 pPngModule->Finish(m_pPngContext); | 2073 pPngModule->Finish(m_pPngContext); |
| 2083 } | 2074 } |
| 2084 m_pPngContext = NULL; | 2075 m_pPngContext = nullptr; |
| 2085 m_pDeviceBitmap = NULL; | 2076 m_pDeviceBitmap = nullptr; |
| 2086 m_pFile = NULL; | 2077 m_pFile = nullptr; |
| 2087 return m_status = FXCODEC_STATUS_DECODE_FINISH; | 2078 return m_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2088 } | 2079 } |
| 2089 if (m_pSrcBuf && input_size > m_SrcSize) { | 2080 if (m_pSrcBuf && input_size > m_SrcSize) { |
| 2090 FX_Free(m_pSrcBuf); | 2081 FX_Free(m_pSrcBuf); |
| 2091 m_pSrcBuf = FX_Alloc(uint8_t, input_size); | 2082 m_pSrcBuf = FX_Alloc(uint8_t, input_size); |
| 2092 FXSYS_memset(m_pSrcBuf, 0, input_size); | 2083 FXSYS_memset(m_pSrcBuf, 0, input_size); |
| 2093 m_SrcSize = input_size; | 2084 m_SrcSize = input_size; |
| 2094 } | 2085 } |
| 2095 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size); | 2086 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size); |
| 2096 if (!bResult) { | 2087 if (!bResult) { |
| 2097 m_pDeviceBitmap = NULL; | 2088 m_pDeviceBitmap = nullptr; |
| 2098 m_pFile = NULL; | 2089 m_pFile = nullptr; |
| 2099 return m_status = FXCODEC_STATUS_ERR_READ; | 2090 return m_status = FXCODEC_STATUS_ERR_READ; |
| 2100 } | 2091 } |
| 2101 m_offSet += input_size; | 2092 m_offSet += input_size; |
| 2102 bResult = | 2093 bResult = |
| 2103 pPngModule->Input(m_pPngContext, m_pSrcBuf, input_size, nullptr); | 2094 pPngModule->Input(m_pPngContext, m_pSrcBuf, input_size, nullptr); |
| 2104 if (!bResult) { | 2095 if (!bResult) { |
| 2105 m_pDeviceBitmap = NULL; | 2096 m_pDeviceBitmap = nullptr; |
| 2106 m_pFile = NULL; | 2097 m_pFile = nullptr; |
| 2107 return m_status = FXCODEC_STATUS_ERROR; | 2098 return m_status = FXCODEC_STATUS_ERROR; |
| 2108 } | 2099 } |
| 2109 if (pPause && pPause->NeedToPauseNow()) { | 2100 if (pPause && pPause->NeedToPauseNow()) { |
| 2110 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 2101 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 2111 } | 2102 } |
| 2112 } | 2103 } |
| 2113 } break; | 2104 } break; |
| 2114 case FXCODEC_IMAGE_GIF: { | 2105 case FXCODEC_IMAGE_GIF: { |
| 2115 CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); | 2106 CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); |
| 2116 while (TRUE) { | 2107 while (TRUE) { |
| 2117 int32_t readRes = | 2108 int32_t readRes = |
| 2118 pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr); | 2109 pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr); |
| 2119 while (readRes == 2) { | 2110 while (readRes == 2) { |
| 2120 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; | 2111 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2121 if (!GifReadMoreData(pGifModule, error_status)) { | 2112 if (!GifReadMoreData(pGifModule, error_status)) { |
| 2122 m_pDeviceBitmap = NULL; | 2113 m_pDeviceBitmap = nullptr; |
| 2123 m_pFile = NULL; | 2114 m_pFile = nullptr; |
| 2124 return m_status = error_status; | 2115 return m_status = error_status; |
| 2125 } | 2116 } |
| 2126 if (pPause && pPause->NeedToPauseNow()) { | 2117 if (pPause && pPause->NeedToPauseNow()) { |
| 2127 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 2118 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 2128 } | 2119 } |
| 2129 readRes = pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr); | 2120 readRes = pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr); |
| 2130 } | 2121 } |
| 2131 if (readRes == 1) { | 2122 if (readRes == 1) { |
| 2132 m_pDeviceBitmap = NULL; | 2123 m_pDeviceBitmap = nullptr; |
| 2133 m_pFile = NULL; | 2124 m_pFile = nullptr; |
| 2134 return m_status = FXCODEC_STATUS_DECODE_FINISH; | 2125 return m_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2135 } | 2126 } |
| 2136 m_pDeviceBitmap = NULL; | 2127 m_pDeviceBitmap = nullptr; |
| 2137 m_pFile = NULL; | 2128 m_pFile = nullptr; |
| 2138 return m_status = FXCODEC_STATUS_ERROR; | 2129 return m_status = FXCODEC_STATUS_ERROR; |
| 2139 } | 2130 } |
| 2140 } break; | 2131 } break; |
| 2141 case FXCODEC_IMAGE_BMP: { | 2132 case FXCODEC_IMAGE_BMP: { |
| 2142 CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); | 2133 CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); |
| 2143 while (TRUE) { | 2134 while (TRUE) { |
| 2144 int32_t readRes = pBmpModule->LoadImage(m_pBmpContext); | 2135 int32_t readRes = pBmpModule->LoadImage(m_pBmpContext); |
| 2145 while (readRes == 2) { | 2136 while (readRes == 2) { |
| 2146 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; | 2137 FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2147 if (!BmpReadMoreData(pBmpModule, error_status)) { | 2138 if (!BmpReadMoreData(pBmpModule, error_status)) { |
| 2148 m_pDeviceBitmap = NULL; | 2139 m_pDeviceBitmap = nullptr; |
| 2149 m_pFile = NULL; | 2140 m_pFile = nullptr; |
| 2150 return m_status = error_status; | 2141 return m_status = error_status; |
| 2151 } | 2142 } |
| 2152 if (pPause && pPause->NeedToPauseNow()) { | 2143 if (pPause && pPause->NeedToPauseNow()) { |
| 2153 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; | 2144 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; |
| 2154 } | 2145 } |
| 2155 readRes = pBmpModule->LoadImage(m_pBmpContext); | 2146 readRes = pBmpModule->LoadImage(m_pBmpContext); |
| 2156 } | 2147 } |
| 2157 if (readRes == 1) { | 2148 if (readRes == 1) { |
| 2158 m_pDeviceBitmap = NULL; | 2149 m_pDeviceBitmap = nullptr; |
| 2159 m_pFile = NULL; | 2150 m_pFile = nullptr; |
| 2160 return m_status = FXCODEC_STATUS_DECODE_FINISH; | 2151 return m_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2161 } | 2152 } |
| 2162 m_pDeviceBitmap = NULL; | 2153 m_pDeviceBitmap = nullptr; |
| 2163 m_pFile = NULL; | 2154 m_pFile = nullptr; |
| 2164 return m_status = FXCODEC_STATUS_ERROR; | 2155 return m_status = FXCODEC_STATUS_ERROR; |
| 2165 } | 2156 } |
| 2166 } break; | 2157 } break; |
| 2167 case FXCODEC_IMAGE_TIF: { | 2158 case FXCODEC_IMAGE_TIF: { |
| 2168 CCodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); | 2159 CCodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); |
| 2169 FX_BOOL ret = FALSE; | 2160 FX_BOOL ret = FALSE; |
| 2170 if (m_pDeviceBitmap->GetBPP() == 32 && | 2161 if (m_pDeviceBitmap->GetBPP() == 32 && |
| 2171 m_pDeviceBitmap->GetWidth() == m_SrcWidth && m_SrcWidth == m_sizeX && | 2162 m_pDeviceBitmap->GetWidth() == m_SrcWidth && m_SrcWidth == m_sizeX && |
| 2172 m_pDeviceBitmap->GetHeight() == m_SrcHeight && | 2163 m_pDeviceBitmap->GetHeight() == m_SrcHeight && |
| 2173 m_SrcHeight == m_sizeY && m_startX == 0 && m_startY == 0 && | 2164 m_SrcHeight == m_sizeY && m_startX == 0 && m_startY == 0 && |
| 2174 m_clipBox.left == 0 && m_clipBox.top == 0 && | 2165 m_clipBox.left == 0 && m_clipBox.top == 0 && |
| 2175 m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) { | 2166 m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) { |
| 2176 ret = pTiffModule->Decode(m_pTiffContext, m_pDeviceBitmap); | 2167 ret = pTiffModule->Decode(m_pTiffContext, m_pDeviceBitmap); |
| 2177 m_pDeviceBitmap = NULL; | 2168 m_pDeviceBitmap = nullptr; |
| 2178 m_pFile = NULL; | 2169 m_pFile = nullptr; |
| 2179 if (!ret) { | 2170 if (!ret) { |
| 2180 return m_status = FXCODEC_STATUS_ERROR; | 2171 return m_status = FXCODEC_STATUS_ERROR; |
| 2181 } | 2172 } |
| 2182 return m_status = FXCODEC_STATUS_DECODE_FINISH; | 2173 return m_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2183 } else { | 2174 } else { |
| 2184 CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; | 2175 CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; |
| 2185 pDIBitmap->Create(m_SrcWidth, m_SrcHeight, FXDIB_Argb); | 2176 pDIBitmap->Create(m_SrcWidth, m_SrcHeight, FXDIB_Argb); |
| 2186 if (pDIBitmap->GetBuffer() == NULL) { | 2177 if (!pDIBitmap->GetBuffer()) { |
| 2187 delete pDIBitmap; | 2178 delete pDIBitmap; |
| 2188 m_pDeviceBitmap = NULL; | 2179 m_pDeviceBitmap = nullptr; |
| 2189 m_pFile = NULL; | 2180 m_pFile = nullptr; |
| 2190 return m_status = FXCODEC_STATUS_ERR_MEMORY; | 2181 return m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 2191 } | 2182 } |
| 2192 ret = pTiffModule->Decode(m_pTiffContext, pDIBitmap); | 2183 ret = pTiffModule->Decode(m_pTiffContext, pDIBitmap); |
| 2193 if (!ret) { | 2184 if (!ret) { |
| 2194 delete pDIBitmap; | 2185 delete pDIBitmap; |
| 2195 m_pDeviceBitmap = NULL; | 2186 m_pDeviceBitmap = nullptr; |
| 2196 m_pFile = NULL; | 2187 m_pFile = nullptr; |
| 2197 return m_status = FXCODEC_STATUS_ERROR; | 2188 return m_status = FXCODEC_STATUS_ERROR; |
| 2198 } | 2189 } |
| 2199 CFX_DIBitmap* pClipBitmap = | 2190 CFX_DIBitmap* pClipBitmap = |
| 2200 (m_clipBox.left == 0 && m_clipBox.top == 0 && | 2191 (m_clipBox.left == 0 && m_clipBox.top == 0 && |
| 2201 m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) | 2192 m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) |
| 2202 ? pDIBitmap | 2193 ? pDIBitmap |
| 2203 : pDIBitmap->Clone(&m_clipBox); | 2194 : pDIBitmap->Clone(&m_clipBox); |
| 2204 if (pDIBitmap != pClipBitmap) { | 2195 if (pDIBitmap != pClipBitmap) { |
| 2205 delete pDIBitmap; | 2196 delete pDIBitmap; |
| 2206 } | 2197 } |
| 2207 if (pClipBitmap == NULL) { | 2198 if (!pClipBitmap) { |
| 2208 m_pDeviceBitmap = NULL; | 2199 m_pDeviceBitmap = nullptr; |
| 2209 m_pFile = NULL; | 2200 m_pFile = nullptr; |
| 2210 return m_status = FXCODEC_STATUS_ERR_MEMORY; | 2201 return m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 2211 } | 2202 } |
| 2212 CFX_DIBitmap* pFormatBitmap = NULL; | 2203 CFX_DIBitmap* pFormatBitmap = nullptr; |
| 2213 switch (m_pDeviceBitmap->GetFormat()) { | 2204 switch (m_pDeviceBitmap->GetFormat()) { |
| 2214 case FXDIB_8bppRgb: | 2205 case FXDIB_8bppRgb: |
| 2215 pFormatBitmap = new CFX_DIBitmap; | 2206 pFormatBitmap = new CFX_DIBitmap; |
| 2216 pFormatBitmap->Create(pClipBitmap->GetWidth(), | 2207 pFormatBitmap->Create(pClipBitmap->GetWidth(), |
| 2217 pClipBitmap->GetHeight(), FXDIB_8bppRgb); | 2208 pClipBitmap->GetHeight(), FXDIB_8bppRgb); |
| 2218 break; | 2209 break; |
| 2219 case FXDIB_8bppMask: | 2210 case FXDIB_8bppMask: |
| 2220 pFormatBitmap = new CFX_DIBitmap; | 2211 pFormatBitmap = new CFX_DIBitmap; |
| 2221 pFormatBitmap->Create(pClipBitmap->GetWidth(), | 2212 pFormatBitmap->Create(pClipBitmap->GetWidth(), |
| 2222 pClipBitmap->GetHeight(), FXDIB_8bppMask); | 2213 pClipBitmap->GetHeight(), FXDIB_8bppMask); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2272 src_line += 4; | 2263 src_line += 4; |
| 2273 } | 2264 } |
| 2274 } | 2265 } |
| 2275 } break; | 2266 } break; |
| 2276 default: | 2267 default: |
| 2277 break; | 2268 break; |
| 2278 } | 2269 } |
| 2279 if (pClipBitmap != pFormatBitmap) { | 2270 if (pClipBitmap != pFormatBitmap) { |
| 2280 delete pClipBitmap; | 2271 delete pClipBitmap; |
| 2281 } | 2272 } |
| 2282 if (pFormatBitmap == NULL) { | 2273 if (!pFormatBitmap) { |
| 2283 m_pDeviceBitmap = NULL; | 2274 m_pDeviceBitmap = nullptr; |
| 2284 m_pFile = NULL; | 2275 m_pFile = nullptr; |
| 2285 return m_status = FXCODEC_STATUS_ERR_MEMORY; | 2276 return m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 2286 } | 2277 } |
| 2287 CFX_DIBitmap* pStrechBitmap = pFormatBitmap->StretchTo( | 2278 CFX_DIBitmap* pStrechBitmap = pFormatBitmap->StretchTo( |
| 2288 m_sizeX, m_sizeY, m_bInterpol ? FXDIB_INTERPOL : FXDIB_DOWNSAMPLE); | 2279 m_sizeX, m_sizeY, m_bInterpol ? FXDIB_INTERPOL : FXDIB_DOWNSAMPLE); |
| 2289 delete pFormatBitmap; | 2280 delete pFormatBitmap; |
| 2290 pFormatBitmap = NULL; | 2281 pFormatBitmap = nullptr; |
| 2291 if (pStrechBitmap == NULL) { | 2282 if (!pStrechBitmap) { |
| 2292 m_pDeviceBitmap = NULL; | 2283 m_pDeviceBitmap = nullptr; |
| 2293 m_pFile = NULL; | 2284 m_pFile = nullptr; |
| 2294 return m_status = FXCODEC_STATUS_ERR_MEMORY; | 2285 return m_status = FXCODEC_STATUS_ERR_MEMORY; |
| 2295 } | 2286 } |
| 2296 m_pDeviceBitmap->TransferBitmap(m_startX, m_startY, m_sizeX, m_sizeY, | 2287 m_pDeviceBitmap->TransferBitmap(m_startX, m_startY, m_sizeX, m_sizeY, |
| 2297 pStrechBitmap, 0, 0); | 2288 pStrechBitmap, 0, 0); |
| 2298 delete pStrechBitmap; | 2289 delete pStrechBitmap; |
| 2299 pStrechBitmap = NULL; | 2290 pStrechBitmap = nullptr; |
| 2300 m_pDeviceBitmap = NULL; | 2291 m_pDeviceBitmap = nullptr; |
| 2301 m_pFile = NULL; | 2292 m_pFile = nullptr; |
| 2302 return m_status = FXCODEC_STATUS_DECODE_FINISH; | 2293 return m_status = FXCODEC_STATUS_DECODE_FINISH; |
| 2303 } | 2294 } |
| 2304 } break; | 2295 } break; |
| 2305 default: | 2296 default: |
| 2306 break; | 2297 break; |
| 2307 } | 2298 } |
| 2308 return FXCODEC_STATUS_ERROR; | 2299 return FXCODEC_STATUS_ERROR; |
| 2309 } | 2300 } |
| 2310 CCodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() { | 2301 CCodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() { |
| 2311 return new CCodec_ProgressiveDecoder(this); | 2302 return new CCodec_ProgressiveDecoder(this); |
| 2312 } | 2303 } |
| OLD | NEW |