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

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

Issue 1832173003: Remove FX_DWORD from core/ and delete definition (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fxcodec/codec/fx_codec_progress.h ('k') | core/fxcodec/codec/fx_codec_tiff.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/fxcodec/codec/fx_codec_progress.h" 7 #include "core/fxcodec/codec/fx_codec_progress.h"
8 8
9 #include "core/include/fxcodec/fx_codec.h" 9 #include "core/include/fxcodec/fx_codec.h"
10 #include "core/include/fxge/fx_dib.h" 10 #include "core/include/fxge/fx_dib.h"
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 if (m_pTiffContext) { 289 if (m_pTiffContext) {
290 m_pCodecMgr->GetTiffModule()->DestroyDecoder(m_pTiffContext); 290 m_pCodecMgr->GetTiffModule()->DestroyDecoder(m_pTiffContext);
291 } 291 }
292 FX_Free(m_pSrcBuf); 292 FX_Free(m_pSrcBuf);
293 FX_Free(m_pDecodeBuf); 293 FX_Free(m_pDecodeBuf);
294 FX_Free(m_pSrcPalette); 294 FX_Free(m_pSrcPalette);
295 } 295 }
296 FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData( 296 FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData(
297 ICodec_JpegModule* pJpegModule, 297 ICodec_JpegModule* pJpegModule,
298 FXCODEC_STATUS& err_status) { 298 FXCODEC_STATUS& err_status) {
299 FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); 299 uint32_t dwSize = (uint32_t)m_pFile->GetSize();
300 if (dwSize <= m_offSet) { 300 if (dwSize <= m_offSet) {
301 return FALSE; 301 return FALSE;
302 } 302 }
303 dwSize = dwSize - m_offSet; 303 dwSize = dwSize - m_offSet;
304 FX_DWORD dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, NULL); 304 uint32_t dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, NULL);
305 if (dwAvail == m_SrcSize) { 305 if (dwAvail == m_SrcSize) {
306 if (dwSize > FXCODEC_BLOCK_SIZE) { 306 if (dwSize > FXCODEC_BLOCK_SIZE) {
307 dwSize = FXCODEC_BLOCK_SIZE; 307 dwSize = FXCODEC_BLOCK_SIZE;
308 } 308 }
309 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / 309 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) /
310 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; 310 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE;
311 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); 311 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize);
312 if (!m_pSrcBuf) { 312 if (!m_pSrcBuf) {
313 err_status = FXCODEC_STATUS_ERR_MEMORY; 313 err_status = FXCODEC_STATUS_ERR_MEMORY;
314 return FALSE; 314 return FALSE;
315 } 315 }
316 } else { 316 } else {
317 FX_DWORD dwConsume = m_SrcSize - dwAvail; 317 uint32_t dwConsume = m_SrcSize - dwAvail;
318 if (dwAvail) { 318 if (dwAvail) {
319 FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); 319 FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);
320 } 320 }
321 if (dwSize > dwConsume) { 321 if (dwSize > dwConsume) {
322 dwSize = dwConsume; 322 dwSize = dwConsume;
323 } 323 }
324 } 324 }
325 if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { 325 if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {
326 err_status = FXCODEC_STATUS_ERR_READ; 326 err_status = FXCODEC_STATUS_ERR_READ;
327 return FALSE; 327 return FALSE;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 switch (pDIBitmap->GetFormat()) { 410 switch (pDIBitmap->GetFormat()) {
411 case FXDIB_1bppMask: 411 case FXDIB_1bppMask:
412 case FXDIB_1bppRgb: 412 case FXDIB_1bppRgb:
413 ASSERT(FALSE); 413 ASSERT(FALSE);
414 return FALSE; 414 return FALSE;
415 case FXDIB_8bppMask: 415 case FXDIB_8bppMask:
416 case FXDIB_8bppRgb: { 416 case FXDIB_8bppRgb: {
417 if (pDIBitmap->GetPalette()) { 417 if (pDIBitmap->GetPalette()) {
418 return FALSE; 418 return FALSE;
419 } 419 }
420 FX_DWORD des_g = 0; 420 uint32_t des_g = 0;
421 des_g += pPixelWeights->m_Weights[0] * src_scan[src_col]; 421 des_g += pPixelWeights->m_Weights[0] * src_scan[src_col];
422 des_scan[pPixelWeights->m_SrcStart] = (uint8_t)(des_g >> 16); 422 des_scan[pPixelWeights->m_SrcStart] = (uint8_t)(des_g >> 16);
423 } break; 423 } break;
424 case FXDIB_Rgb: 424 case FXDIB_Rgb:
425 case FXDIB_Rgb32: { 425 case FXDIB_Rgb32: {
426 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 426 uint32_t des_b = 0, des_g = 0, des_r = 0;
427 const uint8_t* p = src_scan + src_col * src_Bpp; 427 const uint8_t* p = src_scan + src_col * src_Bpp;
428 des_b += pPixelWeights->m_Weights[0] * (*p++); 428 des_b += pPixelWeights->m_Weights[0] * (*p++);
429 des_g += pPixelWeights->m_Weights[0] * (*p++); 429 des_g += pPixelWeights->m_Weights[0] * (*p++);
430 des_r += pPixelWeights->m_Weights[0] * (*p); 430 des_r += pPixelWeights->m_Weights[0] * (*p);
431 uint8_t* pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp]; 431 uint8_t* pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp];
432 *pDes++ = (uint8_t)((des_b) >> 16); 432 *pDes++ = (uint8_t)((des_b) >> 16);
433 *pDes++ = (uint8_t)((des_g) >> 16); 433 *pDes++ = (uint8_t)((des_g) >> 16);
434 *pDes = (uint8_t)((des_r) >> 16); 434 *pDes = (uint8_t)((des_r) >> 16);
435 } break; 435 } break;
436 case FXDIB_Argb: { 436 case FXDIB_Argb: {
437 FX_DWORD des_r = 0, des_g = 0, des_b = 0; 437 uint32_t des_r = 0, des_g = 0, des_b = 0;
438 const uint8_t* p = src_scan + src_col * src_Bpp; 438 const uint8_t* p = src_scan + src_col * src_Bpp;
439 des_b += pPixelWeights->m_Weights[0] * (*p++); 439 des_b += pPixelWeights->m_Weights[0] * (*p++);
440 des_g += pPixelWeights->m_Weights[0] * (*p++); 440 des_g += pPixelWeights->m_Weights[0] * (*p++);
441 des_r += pPixelWeights->m_Weights[0] * (*p++); 441 des_r += pPixelWeights->m_Weights[0] * (*p++);
442 uint8_t* pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp]; 442 uint8_t* pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp];
443 *pDes++ = (uint8_t)((des_b) >> 16); 443 *pDes++ = (uint8_t)((des_b) >> 16);
444 *pDes++ = (uint8_t)((des_g) >> 16); 444 *pDes++ = (uint8_t)((des_g) >> 16);
445 *pDes++ = (uint8_t)((des_r) >> 16); 445 *pDes++ = (uint8_t)((des_r) >> 16);
446 *pDes = *p; 446 *pDes = *p;
447 } break; 447 } break;
(...skipping 21 matching lines...) Expand all
469 switch (pDeviceBitmap->GetFormat()) { 469 switch (pDeviceBitmap->GetFormat()) {
470 case FXDIB_1bppMask: 470 case FXDIB_1bppMask:
471 case FXDIB_1bppRgb: 471 case FXDIB_1bppRgb:
472 ASSERT(FALSE); 472 ASSERT(FALSE);
473 return; 473 return;
474 case FXDIB_8bppMask: 474 case FXDIB_8bppMask:
475 case FXDIB_8bppRgb: { 475 case FXDIB_8bppRgb: {
476 if (pDeviceBitmap->GetPalette()) { 476 if (pDeviceBitmap->GetPalette()) {
477 return; 477 return;
478 } 478 }
479 FX_DWORD des_g = 0; 479 uint32_t des_g = 0;
480 des_g += 480 des_g +=
481 pPixelWeights->m_Weights[0] * src_scan[pPixelWeights->m_SrcStart]; 481 pPixelWeights->m_Weights[0] * src_scan[pPixelWeights->m_SrcStart];
482 des_g += 482 des_g +=
483 pPixelWeights->m_Weights[1] * src_scan[pPixelWeights->m_SrcEnd]; 483 pPixelWeights->m_Weights[1] * src_scan[pPixelWeights->m_SrcEnd];
484 *des_scan++ = (uint8_t)(des_g >> 16); 484 *des_scan++ = (uint8_t)(des_g >> 16);
485 } break; 485 } break;
486 case FXDIB_Rgb: 486 case FXDIB_Rgb:
487 case FXDIB_Rgb32: { 487 case FXDIB_Rgb32: {
488 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 488 uint32_t des_b = 0, des_g = 0, des_r = 0;
489 const uint8_t* p = src_scan; 489 const uint8_t* p = src_scan;
490 p = src_scan + pPixelWeights->m_SrcStart * src_Bpp; 490 p = src_scan + pPixelWeights->m_SrcStart * src_Bpp;
491 des_b += pPixelWeights->m_Weights[0] * (*p++); 491 des_b += pPixelWeights->m_Weights[0] * (*p++);
492 des_g += pPixelWeights->m_Weights[0] * (*p++); 492 des_g += pPixelWeights->m_Weights[0] * (*p++);
493 des_r += pPixelWeights->m_Weights[0] * (*p); 493 des_r += pPixelWeights->m_Weights[0] * (*p);
494 p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp; 494 p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp;
495 des_b += pPixelWeights->m_Weights[1] * (*p++); 495 des_b += pPixelWeights->m_Weights[1] * (*p++);
496 des_g += pPixelWeights->m_Weights[1] * (*p++); 496 des_g += pPixelWeights->m_Weights[1] * (*p++);
497 des_r += pPixelWeights->m_Weights[1] * (*p); 497 des_r += pPixelWeights->m_Weights[1] * (*p);
498 *des_scan++ = (uint8_t)((des_b) >> 16); 498 *des_scan++ = (uint8_t)((des_b) >> 16);
499 *des_scan++ = (uint8_t)((des_g) >> 16); 499 *des_scan++ = (uint8_t)((des_g) >> 16);
500 *des_scan++ = (uint8_t)((des_r) >> 16); 500 *des_scan++ = (uint8_t)((des_r) >> 16);
501 des_scan += des_Bpp - 3; 501 des_scan += des_Bpp - 3;
502 } break; 502 } break;
503 case FXDIB_Argb: { 503 case FXDIB_Argb: {
504 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; 504 uint32_t des_a = 0, des_b = 0, des_g = 0, des_r = 0;
505 const uint8_t* p = src_scan; 505 const uint8_t* p = src_scan;
506 p = src_scan + pPixelWeights->m_SrcStart * src_Bpp; 506 p = src_scan + pPixelWeights->m_SrcStart * src_Bpp;
507 des_b += pPixelWeights->m_Weights[0] * (*p++); 507 des_b += pPixelWeights->m_Weights[0] * (*p++);
508 des_g += pPixelWeights->m_Weights[0] * (*p++); 508 des_g += pPixelWeights->m_Weights[0] * (*p++);
509 des_r += pPixelWeights->m_Weights[0] * (*p++); 509 des_r += pPixelWeights->m_Weights[0] * (*p++);
510 des_a += pPixelWeights->m_Weights[0] * (*p); 510 des_a += pPixelWeights->m_Weights[0] * (*p);
511 p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp; 511 p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp;
512 des_b += pPixelWeights->m_Weights[1] * (*p++); 512 des_b += pPixelWeights->m_Weights[1] * (*p++);
513 des_g += pPixelWeights->m_Weights[1] * (*p++); 513 des_g += pPixelWeights->m_Weights[1] * (*p++);
514 des_r += pPixelWeights->m_Weights[1] * (*p++); 514 des_r += pPixelWeights->m_Weights[1] * (*p++);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 pCodec->ResampleVert(pDIBitmap, scale_y, des_row); 547 pCodec->ResampleVert(pDIBitmap, scale_y, des_row);
548 return; 548 return;
549 } 549 }
550 if (pass == 6 && scale_y > 1.0) { 550 if (pass == 6 && scale_y > 1.0) {
551 pCodec->ResampleVert(pDIBitmap, scale_y, des_row); 551 pCodec->ResampleVert(pDIBitmap, scale_y, des_row);
552 } 552 }
553 } 553 }
554 } 554 }
555 FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(ICodec_GifModule* pGifModule, 555 FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(ICodec_GifModule* pGifModule,
556 FXCODEC_STATUS& err_status) { 556 FXCODEC_STATUS& err_status) {
557 FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); 557 uint32_t dwSize = (uint32_t)m_pFile->GetSize();
558 if (dwSize <= m_offSet) { 558 if (dwSize <= m_offSet) {
559 return FALSE; 559 return FALSE;
560 } 560 }
561 dwSize = dwSize - m_offSet; 561 dwSize = dwSize - m_offSet;
562 FX_DWORD dwAvail = pGifModule->GetAvailInput(m_pGifContext, NULL); 562 uint32_t dwAvail = pGifModule->GetAvailInput(m_pGifContext, NULL);
563 if (dwAvail == m_SrcSize) { 563 if (dwAvail == m_SrcSize) {
564 if (dwSize > FXCODEC_BLOCK_SIZE) { 564 if (dwSize > FXCODEC_BLOCK_SIZE) {
565 dwSize = FXCODEC_BLOCK_SIZE; 565 dwSize = FXCODEC_BLOCK_SIZE;
566 } 566 }
567 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / 567 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) /
568 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; 568 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE;
569 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); 569 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize);
570 if (!m_pSrcBuf) { 570 if (!m_pSrcBuf) {
571 err_status = FXCODEC_STATUS_ERR_MEMORY; 571 err_status = FXCODEC_STATUS_ERR_MEMORY;
572 return FALSE; 572 return FALSE;
573 } 573 }
574 } else { 574 } else {
575 FX_DWORD dwConsume = m_SrcSize - dwAvail; 575 uint32_t dwConsume = m_SrcSize - dwAvail;
576 if (dwAvail) { 576 if (dwAvail) {
577 FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); 577 FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);
578 } 578 }
579 if (dwSize > dwConsume) { 579 if (dwSize > dwConsume) {
580 dwSize = dwConsume; 580 dwSize = dwConsume;
581 } 581 }
582 } 582 }
583 if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { 583 if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {
584 err_status = FXCODEC_STATUS_ERR_READ; 584 err_status = FXCODEC_STATUS_ERR_READ;
585 return FALSE; 585 return FALSE;
586 } 586 }
587 m_offSet += dwSize; 587 m_offSet += dwSize;
588 pGifModule->Input(m_pGifContext, m_pSrcBuf, dwSize + dwAvail); 588 pGifModule->Input(m_pGifContext, m_pSrcBuf, dwSize + dwAvail);
589 return TRUE; 589 return TRUE;
590 } 590 }
591 void CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback( 591 void CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback(
592 void* pModule, 592 void* pModule,
593 FX_DWORD& cur_pos) { 593 uint32_t& cur_pos) {
594 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 594 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
595 FX_DWORD remain_size = 595 uint32_t remain_size =
596 pCodec->m_pCodecMgr->GetGifModule()->GetAvailInput(pCodec->m_pGifContext); 596 pCodec->m_pCodecMgr->GetGifModule()->GetAvailInput(pCodec->m_pGifContext);
597 cur_pos = pCodec->m_offSet - remain_size; 597 cur_pos = pCodec->m_offSet - remain_size;
598 } 598 }
599 uint8_t* CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback( 599 uint8_t* CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback(
600 void* pModule, 600 void* pModule,
601 int32_t frame_num, 601 int32_t frame_num,
602 int32_t pal_size) { 602 int32_t pal_size) {
603 return FX_Alloc(uint8_t, pal_size); 603 return FX_Alloc(uint8_t, pal_size);
604 } 604 }
605 FX_BOOL CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback( 605 FX_BOOL CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback(
606 void* pModule, 606 void* pModule,
607 FX_DWORD rcd_pos, 607 uint32_t rcd_pos,
608 const FX_RECT& img_rc, 608 const FX_RECT& img_rc,
609 int32_t pal_num, 609 int32_t pal_num,
610 void* pal_ptr, 610 void* pal_ptr,
611 int32_t delay_time, 611 int32_t delay_time,
612 FX_BOOL user_input, 612 FX_BOOL user_input,
613 int32_t trans_index, 613 int32_t trans_index,
614 int32_t disposal_method, 614 int32_t disposal_method,
615 FX_BOOL interlace) { 615 FX_BOOL interlace) {
616 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 616 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
617 pCodec->m_offSet = rcd_pos; 617 pCodec->m_offSet = rcd_pos;
(...skipping 12 matching lines...) Expand all
630 if (pCodec->m_pSrcPalette == NULL) { 630 if (pCodec->m_pSrcPalette == NULL) {
631 pCodec->m_pSrcPalette = FX_Alloc(FX_ARGB, pal_num); 631 pCodec->m_pSrcPalette = FX_Alloc(FX_ARGB, pal_num);
632 } else if (pal_num > pCodec->m_SrcPaletteNumber) { 632 } else if (pal_num > pCodec->m_SrcPaletteNumber) {
633 pCodec->m_pSrcPalette = FX_Realloc(FX_ARGB, pCodec->m_pSrcPalette, pal_num); 633 pCodec->m_pSrcPalette = FX_Realloc(FX_ARGB, pCodec->m_pSrcPalette, pal_num);
634 } 634 }
635 if (pCodec->m_pSrcPalette == NULL) { 635 if (pCodec->m_pSrcPalette == NULL) {
636 return FALSE; 636 return FALSE;
637 } 637 }
638 pCodec->m_SrcPaletteNumber = pal_num; 638 pCodec->m_SrcPaletteNumber = pal_num;
639 for (int i = 0; i < pal_num; i++) { 639 for (int i = 0; i < pal_num; i++) {
640 FX_DWORD j = i * 3; 640 uint32_t j = i * 3;
641 pCodec->m_pSrcPalette[i] = 641 pCodec->m_pSrcPalette[i] =
642 ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]); 642 ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]);
643 } 643 }
644 pCodec->m_GifTransIndex = trans_index; 644 pCodec->m_GifTransIndex = trans_index;
645 pCodec->m_GifFrameRect = img_rc; 645 pCodec->m_GifFrameRect = img_rc;
646 pCodec->m_SrcPassNumber = interlace ? 4 : 1; 646 pCodec->m_SrcPassNumber = interlace ? 4 : 1;
647 int32_t pal_index = pCodec->m_GifBgIndex; 647 int32_t pal_index = pCodec->m_GifBgIndex;
648 CFX_DIBitmap* pDevice = pCodec->m_pDeviceBitmap; 648 CFX_DIBitmap* pDevice = pCodec->m_pDeviceBitmap;
649 if (trans_index >= pal_num) { 649 if (trans_index >= pal_num) {
650 trans_index = -1; 650 trans_index = -1;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 pCodec->ReSampleScanline(pDIBitmap, des_row, pCodec->m_pDecodeBuf, 731 pCodec->ReSampleScanline(pDIBitmap, des_row, pCodec->m_pDecodeBuf,
732 pCodec->m_SrcFormat); 732 pCodec->m_SrcFormat);
733 if (scale_y > 1.0 && 733 if (scale_y > 1.0 &&
734 (!pCodec->m_bInterpol || pCodec->m_SrcPassNumber == 1)) { 734 (!pCodec->m_bInterpol || pCodec->m_SrcPassNumber == 1)) {
735 pCodec->ResampleVert(pDIBitmap, scale_y, des_row); 735 pCodec->ResampleVert(pDIBitmap, scale_y, des_row);
736 return; 736 return;
737 } 737 }
738 if (scale_y > 1.0) { 738 if (scale_y > 1.0) {
739 int des_bottom = des_top + pCodec->m_sizeY; 739 int des_bottom = des_top + pCodec->m_sizeY;
740 int des_Bpp = pDIBitmap->GetBPP() >> 3; 740 int des_Bpp = pDIBitmap->GetBPP() >> 3;
741 FX_DWORD des_ScanOffet = pCodec->m_startX * des_Bpp; 741 uint32_t des_ScanOffet = pCodec->m_startX * des_Bpp;
742 if (des_row + (int)scale_y >= des_bottom - 1) { 742 if (des_row + (int)scale_y >= des_bottom - 1) {
743 uint8_t* scan_src = 743 uint8_t* scan_src =
744 (uint8_t*)pDIBitmap->GetScanline(des_row) + des_ScanOffet; 744 (uint8_t*)pDIBitmap->GetScanline(des_row) + des_ScanOffet;
745 int cur_row = des_row; 745 int cur_row = des_row;
746 while (++cur_row < des_bottom) { 746 while (++cur_row < des_bottom) {
747 uint8_t* scan_des = 747 uint8_t* scan_des =
748 (uint8_t*)pDIBitmap->GetScanline(cur_row) + des_ScanOffet; 748 (uint8_t*)pDIBitmap->GetScanline(cur_row) + des_ScanOffet;
749 FX_DWORD size = pCodec->m_sizeX * des_Bpp; 749 uint32_t size = pCodec->m_sizeX * des_Bpp;
750 FXSYS_memcpy(scan_des, scan_src, size); 750 FXSYS_memcpy(scan_des, scan_src, size);
751 } 751 }
752 } 752 }
753 if (bLastPass) { 753 if (bLastPass) {
754 pCodec->GifDoubleLineResampleVert(pDIBitmap, scale_y, des_row); 754 pCodec->GifDoubleLineResampleVert(pDIBitmap, scale_y, des_row);
755 } 755 }
756 } 756 }
757 } 757 }
758 } 758 }
759 void CCodec_ProgressiveDecoder::GifDoubleLineResampleVert( 759 void CCodec_ProgressiveDecoder::GifDoubleLineResampleVert(
760 CFX_DIBitmap* pDeviceBitmap, 760 CFX_DIBitmap* pDeviceBitmap,
761 double scale_y, 761 double scale_y,
762 int des_row) { 762 int des_row) {
763 int des_Bpp = pDeviceBitmap->GetBPP() >> 3; 763 int des_Bpp = pDeviceBitmap->GetBPP() >> 3;
764 FX_DWORD des_ScanOffet = m_startX * des_Bpp; 764 uint32_t des_ScanOffet = m_startX * des_Bpp;
765 int des_top = m_startY; 765 int des_top = m_startY;
766 int des_row_1 = des_row - int(2 * scale_y); 766 int des_row_1 = des_row - int(2 * scale_y);
767 if (des_row_1 < des_top) { 767 if (des_row_1 < des_top) {
768 des_row_1 = des_top; 768 des_row_1 = des_top;
769 } 769 }
770 for (; des_row_1 < des_row; des_row_1++) { 770 for (; des_row_1 < des_row; des_row_1++) {
771 uint8_t* scan_des = 771 uint8_t* scan_des =
772 (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; 772 (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet;
773 PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); 773 PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top);
774 const uint8_t* scan_src1 = 774 const uint8_t* scan_src1 =
(...skipping 12 matching lines...) Expand all
787 if (pDeviceBitmap->GetPalette()) { 787 if (pDeviceBitmap->GetPalette()) {
788 return; 788 return;
789 } 789 }
790 int des_g = 0; 790 int des_g = 0;
791 des_g += pWeight->m_Weights[0] * (*scan_src1++); 791 des_g += pWeight->m_Weights[0] * (*scan_src1++);
792 des_g += pWeight->m_Weights[1] * (*scan_src2++); 792 des_g += pWeight->m_Weights[1] * (*scan_src2++);
793 *scan_des++ = (uint8_t)(des_g >> 16); 793 *scan_des++ = (uint8_t)(des_g >> 16);
794 } break; 794 } break;
795 case FXDIB_Rgb: 795 case FXDIB_Rgb:
796 case FXDIB_Rgb32: { 796 case FXDIB_Rgb32: {
797 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 797 uint32_t des_b = 0, des_g = 0, des_r = 0;
798 des_b += pWeight->m_Weights[0] * (*scan_src1++); 798 des_b += pWeight->m_Weights[0] * (*scan_src1++);
799 des_g += pWeight->m_Weights[0] * (*scan_src1++); 799 des_g += pWeight->m_Weights[0] * (*scan_src1++);
800 des_r += pWeight->m_Weights[0] * (*scan_src1++); 800 des_r += pWeight->m_Weights[0] * (*scan_src1++);
801 scan_src1 += des_Bpp - 3; 801 scan_src1 += des_Bpp - 3;
802 des_b += pWeight->m_Weights[1] * (*scan_src2++); 802 des_b += pWeight->m_Weights[1] * (*scan_src2++);
803 des_g += pWeight->m_Weights[1] * (*scan_src2++); 803 des_g += pWeight->m_Weights[1] * (*scan_src2++);
804 des_r += pWeight->m_Weights[1] * (*scan_src2++); 804 des_r += pWeight->m_Weights[1] * (*scan_src2++);
805 scan_src2 += des_Bpp - 3; 805 scan_src2 += des_Bpp - 3;
806 *scan_des++ = (uint8_t)((des_b) >> 16); 806 *scan_des++ = (uint8_t)((des_b) >> 16);
807 *scan_des++ = (uint8_t)((des_g) >> 16); 807 *scan_des++ = (uint8_t)((des_g) >> 16);
808 *scan_des++ = (uint8_t)((des_r) >> 16); 808 *scan_des++ = (uint8_t)((des_r) >> 16);
809 scan_des += des_Bpp - 3; 809 scan_des += des_Bpp - 3;
810 } break; 810 } break;
811 case FXDIB_Argb: { 811 case FXDIB_Argb: {
812 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; 812 uint32_t des_a = 0, des_b = 0, des_g = 0, des_r = 0;
813 des_b += pWeight->m_Weights[0] * (*scan_src1++); 813 des_b += pWeight->m_Weights[0] * (*scan_src1++);
814 des_g += pWeight->m_Weights[0] * (*scan_src1++); 814 des_g += pWeight->m_Weights[0] * (*scan_src1++);
815 des_r += pWeight->m_Weights[0] * (*scan_src1++); 815 des_r += pWeight->m_Weights[0] * (*scan_src1++);
816 des_a += pWeight->m_Weights[0] * (*scan_src1++); 816 des_a += pWeight->m_Weights[0] * (*scan_src1++);
817 des_b += pWeight->m_Weights[1] * (*scan_src2++); 817 des_b += pWeight->m_Weights[1] * (*scan_src2++);
818 des_g += pWeight->m_Weights[1] * (*scan_src2++); 818 des_g += pWeight->m_Weights[1] * (*scan_src2++);
819 des_r += pWeight->m_Weights[1] * (*scan_src2++); 819 des_r += pWeight->m_Weights[1] * (*scan_src2++);
820 des_a += pWeight->m_Weights[1] * (*scan_src2++); 820 des_a += pWeight->m_Weights[1] * (*scan_src2++);
821 *scan_des++ = (uint8_t)((des_b) >> 16); 821 *scan_des++ = (uint8_t)((des_b) >> 16);
822 *scan_des++ = (uint8_t)((des_g) >> 16); 822 *scan_des++ = (uint8_t)((des_g) >> 16);
823 *scan_des++ = (uint8_t)((des_r) >> 16); 823 *scan_des++ = (uint8_t)((des_r) >> 16);
824 *scan_des++ = (uint8_t)((des_a) >> 16); 824 *scan_des++ = (uint8_t)((des_a) >> 16);
825 } break; 825 } break;
826 default: 826 default:
827 return; 827 return;
828 } 828 }
829 } 829 }
830 } 830 }
831 int des_bottom = des_top + m_sizeY - 1; 831 int des_bottom = des_top + m_sizeY - 1;
832 if (des_row + (int)(2 * scale_y) >= des_bottom && 832 if (des_row + (int)(2 * scale_y) >= des_bottom &&
833 des_row + (int)scale_y < des_bottom) { 833 des_row + (int)scale_y < des_bottom) {
834 GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y); 834 GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y);
835 } 835 }
836 } 836 }
837 FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(ICodec_BmpModule* pBmpModule, 837 FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(ICodec_BmpModule* pBmpModule,
838 FXCODEC_STATUS& err_status) { 838 FXCODEC_STATUS& err_status) {
839 FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); 839 uint32_t dwSize = (uint32_t)m_pFile->GetSize();
840 if (dwSize <= m_offSet) { 840 if (dwSize <= m_offSet) {
841 return FALSE; 841 return FALSE;
842 } 842 }
843 dwSize = dwSize - m_offSet; 843 dwSize = dwSize - m_offSet;
844 FX_DWORD dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, NULL); 844 uint32_t dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, NULL);
845 if (dwAvail == m_SrcSize) { 845 if (dwAvail == m_SrcSize) {
846 if (dwSize > FXCODEC_BLOCK_SIZE) { 846 if (dwSize > FXCODEC_BLOCK_SIZE) {
847 dwSize = FXCODEC_BLOCK_SIZE; 847 dwSize = FXCODEC_BLOCK_SIZE;
848 } 848 }
849 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / 849 m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) /
850 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; 850 FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE;
851 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); 851 m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize);
852 if (!m_pSrcBuf) { 852 if (!m_pSrcBuf) {
853 err_status = FXCODEC_STATUS_ERR_MEMORY; 853 err_status = FXCODEC_STATUS_ERR_MEMORY;
854 return FALSE; 854 return FALSE;
855 } 855 }
856 } else { 856 } else {
857 FX_DWORD dwConsume = m_SrcSize - dwAvail; 857 uint32_t dwConsume = m_SrcSize - dwAvail;
858 if (dwAvail) { 858 if (dwAvail) {
859 FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); 859 FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail);
860 } 860 }
861 if (dwSize > dwConsume) { 861 if (dwSize > dwConsume) {
862 dwSize = dwConsume; 862 dwSize = dwConsume;
863 } 863 }
864 } 864 }
865 if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { 865 if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) {
866 err_status = FXCODEC_STATUS_ERR_READ; 866 err_status = FXCODEC_STATUS_ERR_READ;
867 return FALSE; 867 return FALSE;
868 } 868 }
869 m_offSet += dwSize; 869 m_offSet += dwSize;
870 pBmpModule->Input(m_pBmpContext, m_pSrcBuf, dwSize + dwAvail); 870 pBmpModule->Input(m_pBmpContext, m_pSrcBuf, dwSize + dwAvail);
871 return TRUE; 871 return TRUE;
872 } 872 }
873 FX_BOOL CCodec_ProgressiveDecoder::BmpInputImagePositionBufCallback( 873 FX_BOOL CCodec_ProgressiveDecoder::BmpInputImagePositionBufCallback(
874 void* pModule, 874 void* pModule,
875 FX_DWORD rcd_pos) { 875 uint32_t rcd_pos) {
876 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; 876 CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule;
877 pCodec->m_offSet = rcd_pos; 877 pCodec->m_offSet = rcd_pos;
878 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; 878 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR;
879 if (!pCodec->BmpReadMoreData(pCodec->m_pCodecMgr->GetBmpModule(), 879 if (!pCodec->BmpReadMoreData(pCodec->m_pCodecMgr->GetBmpModule(),
880 error_status)) { 880 error_status)) {
881 return FALSE; 881 return FALSE;
882 } 882 }
883 return TRUE; 883 return TRUE;
884 } 884 }
885 void CCodec_ProgressiveDecoder::BmpReadScanlineCallback(void* pModule, 885 void CCodec_ProgressiveDecoder::BmpReadScanlineCallback(void* pModule,
(...skipping 24 matching lines...) Expand all
910 } else { 910 } else {
911 pCodec->ResampleVertBT(pDIBitmap, scale_y, des_row); 911 pCodec->ResampleVertBT(pDIBitmap, scale_y, des_row);
912 } 912 }
913 } 913 }
914 } 914 }
915 } 915 }
916 void CCodec_ProgressiveDecoder::ResampleVertBT(CFX_DIBitmap* pDeviceBitmap, 916 void CCodec_ProgressiveDecoder::ResampleVertBT(CFX_DIBitmap* pDeviceBitmap,
917 double scale_y, 917 double scale_y,
918 int des_row) { 918 int des_row) {
919 int des_Bpp = pDeviceBitmap->GetBPP() >> 3; 919 int des_Bpp = pDeviceBitmap->GetBPP() >> 3;
920 FX_DWORD des_ScanOffet = m_startX * des_Bpp; 920 uint32_t des_ScanOffet = m_startX * des_Bpp;
921 int des_top = m_startY; 921 int des_top = m_startY;
922 int des_bottom = m_startY + m_sizeY; 922 int des_bottom = m_startY + m_sizeY;
923 int des_row_1 = des_row + int(scale_y); 923 int des_row_1 = des_row + int(scale_y);
924 if (des_row_1 >= des_bottom - 1) { 924 if (des_row_1 >= des_bottom - 1) {
925 uint8_t* scan_src = 925 uint8_t* scan_src =
926 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; 926 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;
927 while (++des_row < des_bottom) { 927 while (++des_row < des_bottom) {
928 uint8_t* scan_des = 928 uint8_t* scan_des =
929 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; 929 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;
930 FX_DWORD size = m_sizeX * des_Bpp; 930 uint32_t size = m_sizeX * des_Bpp;
931 FXSYS_memcpy(scan_des, scan_src, size); 931 FXSYS_memcpy(scan_des, scan_src, size);
932 } 932 }
933 return; 933 return;
934 } 934 }
935 for (; des_row_1 > des_row; des_row_1--) { 935 for (; des_row_1 > des_row; des_row_1--) {
936 uint8_t* scan_des = 936 uint8_t* scan_des =
937 (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; 937 (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet;
938 PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); 938 PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top);
939 const uint8_t* scan_src1 = 939 const uint8_t* scan_src1 =
940 pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + 940 pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) +
(...skipping 11 matching lines...) Expand all
952 if (pDeviceBitmap->GetPalette()) { 952 if (pDeviceBitmap->GetPalette()) {
953 return; 953 return;
954 } 954 }
955 int des_g = 0; 955 int des_g = 0;
956 des_g += pWeight->m_Weights[0] * (*scan_src1++); 956 des_g += pWeight->m_Weights[0] * (*scan_src1++);
957 des_g += pWeight->m_Weights[1] * (*scan_src2++); 957 des_g += pWeight->m_Weights[1] * (*scan_src2++);
958 *scan_des++ = (uint8_t)(des_g >> 16); 958 *scan_des++ = (uint8_t)(des_g >> 16);
959 } break; 959 } break;
960 case FXDIB_Rgb: 960 case FXDIB_Rgb:
961 case FXDIB_Rgb32: { 961 case FXDIB_Rgb32: {
962 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 962 uint32_t des_b = 0, des_g = 0, des_r = 0;
963 des_b += pWeight->m_Weights[0] * (*scan_src1++); 963 des_b += pWeight->m_Weights[0] * (*scan_src1++);
964 des_g += pWeight->m_Weights[0] * (*scan_src1++); 964 des_g += pWeight->m_Weights[0] * (*scan_src1++);
965 des_r += pWeight->m_Weights[0] * (*scan_src1++); 965 des_r += pWeight->m_Weights[0] * (*scan_src1++);
966 scan_src1 += des_Bpp - 3; 966 scan_src1 += des_Bpp - 3;
967 des_b += pWeight->m_Weights[1] * (*scan_src2++); 967 des_b += pWeight->m_Weights[1] * (*scan_src2++);
968 des_g += pWeight->m_Weights[1] * (*scan_src2++); 968 des_g += pWeight->m_Weights[1] * (*scan_src2++);
969 des_r += pWeight->m_Weights[1] * (*scan_src2++); 969 des_r += pWeight->m_Weights[1] * (*scan_src2++);
970 scan_src2 += des_Bpp - 3; 970 scan_src2 += des_Bpp - 3;
971 *scan_des++ = (uint8_t)((des_b) >> 16); 971 *scan_des++ = (uint8_t)((des_b) >> 16);
972 *scan_des++ = (uint8_t)((des_g) >> 16); 972 *scan_des++ = (uint8_t)((des_g) >> 16);
973 *scan_des++ = (uint8_t)((des_r) >> 16); 973 *scan_des++ = (uint8_t)((des_r) >> 16);
974 scan_des += des_Bpp - 3; 974 scan_des += des_Bpp - 3;
975 } break; 975 } break;
976 case FXDIB_Argb: { 976 case FXDIB_Argb: {
977 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; 977 uint32_t des_a = 0, des_b = 0, des_g = 0, des_r = 0;
978 des_b += pWeight->m_Weights[0] * (*scan_src1++); 978 des_b += pWeight->m_Weights[0] * (*scan_src1++);
979 des_g += pWeight->m_Weights[0] * (*scan_src1++); 979 des_g += pWeight->m_Weights[0] * (*scan_src1++);
980 des_r += pWeight->m_Weights[0] * (*scan_src1++); 980 des_r += pWeight->m_Weights[0] * (*scan_src1++);
981 des_a += pWeight->m_Weights[0] * (*scan_src1++); 981 des_a += pWeight->m_Weights[0] * (*scan_src1++);
982 des_b += pWeight->m_Weights[1] * (*scan_src2++); 982 des_b += pWeight->m_Weights[1] * (*scan_src2++);
983 des_g += pWeight->m_Weights[1] * (*scan_src2++); 983 des_g += pWeight->m_Weights[1] * (*scan_src2++);
984 des_r += pWeight->m_Weights[1] * (*scan_src2++); 984 des_r += pWeight->m_Weights[1] * (*scan_src2++);
985 des_a += pWeight->m_Weights[1] * (*scan_src2++); 985 des_a += pWeight->m_Weights[1] * (*scan_src2++);
986 *scan_des++ = (uint8_t)((des_b) >> 16); 986 *scan_des++ = (uint8_t)((des_b) >> 16);
987 *scan_des++ = (uint8_t)((des_g) >> 16); 987 *scan_des++ = (uint8_t)((des_g) >> 16);
988 *scan_des++ = (uint8_t)((des_r) >> 16); 988 *scan_des++ = (uint8_t)((des_r) >> 16);
989 *scan_des++ = (uint8_t)((des_a) >> 16); 989 *scan_des++ = (uint8_t)((des_a) >> 16);
990 } break; 990 } break;
991 default: 991 default:
992 return; 992 return;
993 } 993 }
994 } 994 }
995 } 995 }
996 } 996 }
997 FX_BOOL CCodec_ProgressiveDecoder::DetectImageType( 997 FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
998 FXCODEC_IMAGE_TYPE imageType, 998 FXCODEC_IMAGE_TYPE imageType,
999 CFX_DIBAttribute* pAttribute) { 999 CFX_DIBAttribute* pAttribute) {
1000 m_offSet = 0; 1000 m_offSet = 0;
1001 FX_DWORD size = (FX_DWORD)m_pFile->GetSize(); 1001 uint32_t size = (uint32_t)m_pFile->GetSize();
1002 if (size > FXCODEC_BLOCK_SIZE) { 1002 if (size > FXCODEC_BLOCK_SIZE) {
1003 size = FXCODEC_BLOCK_SIZE; 1003 size = FXCODEC_BLOCK_SIZE;
1004 } 1004 }
1005 FX_Free(m_pSrcBuf); 1005 FX_Free(m_pSrcBuf);
1006 m_pSrcBuf = FX_Alloc(uint8_t, size); 1006 m_pSrcBuf = FX_Alloc(uint8_t, size);
1007 FXSYS_memset(m_pSrcBuf, 0, size); 1007 FXSYS_memset(m_pSrcBuf, 0, size);
1008 m_SrcSize = size; 1008 m_SrcSize = size;
1009 switch (imageType) { 1009 switch (imageType) {
1010 case FXCODEC_IMAGE_BMP: { 1010 case FXCODEC_IMAGE_BMP: {
1011 ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); 1011 ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
1012 if (pBmpModule == NULL) { 1012 if (pBmpModule == NULL) {
1013 m_status = FXCODEC_STATUS_ERR_MEMORY; 1013 m_status = FXCODEC_STATUS_ERR_MEMORY;
1014 return FALSE; 1014 return FALSE;
1015 } 1015 }
1016 pBmpModule->InputImagePositionBufCallback = 1016 pBmpModule->InputImagePositionBufCallback =
1017 BmpInputImagePositionBufCallback; 1017 BmpInputImagePositionBufCallback;
1018 pBmpModule->ReadScanlineCallback = BmpReadScanlineCallback; 1018 pBmpModule->ReadScanlineCallback = BmpReadScanlineCallback;
1019 m_pBmpContext = pBmpModule->Start((void*)this); 1019 m_pBmpContext = pBmpModule->Start((void*)this);
1020 if (m_pBmpContext == NULL) { 1020 if (m_pBmpContext == NULL) {
1021 m_status = FXCODEC_STATUS_ERR_MEMORY; 1021 m_status = FXCODEC_STATUS_ERR_MEMORY;
1022 return FALSE; 1022 return FALSE;
1023 } 1023 }
1024 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); 1024 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
1025 if (!bResult) { 1025 if (!bResult) {
1026 m_status = FXCODEC_STATUS_ERR_READ; 1026 m_status = FXCODEC_STATUS_ERR_READ;
1027 return FALSE; 1027 return FALSE;
1028 } 1028 }
1029 m_offSet += size; 1029 m_offSet += size;
1030 pBmpModule->Input(m_pBmpContext, m_pSrcBuf, size); 1030 pBmpModule->Input(m_pBmpContext, m_pSrcBuf, size);
1031 FX_DWORD* pPalette = NULL; 1031 uint32_t* pPalette = NULL;
1032 int32_t readResult = pBmpModule->ReadHeader( 1032 int32_t readResult = pBmpModule->ReadHeader(
1033 m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, 1033 m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom,
1034 &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); 1034 &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute);
1035 while (readResult == 2) { 1035 while (readResult == 2) {
1036 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; 1036 FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT;
1037 if (!BmpReadMoreData(pBmpModule, error_status)) { 1037 if (!BmpReadMoreData(pBmpModule, error_status)) {
1038 m_status = error_status; 1038 m_status = error_status;
1039 return FALSE; 1039 return FALSE;
1040 } 1040 }
1041 readResult = pBmpModule->ReadHeader( 1041 readResult = pBmpModule->ReadHeader(
1042 m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, 1042 m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom,
1043 &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); 1043 &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute);
1044 } 1044 }
1045 if (readResult == 1) { 1045 if (readResult == 1) {
1046 m_SrcBPC = 8; 1046 m_SrcBPC = 8;
1047 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); 1047 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight);
1048 FX_Free(m_pSrcPalette); 1048 FX_Free(m_pSrcPalette);
1049 if (m_SrcPaletteNumber) { 1049 if (m_SrcPaletteNumber) {
1050 m_pSrcPalette = FX_Alloc(FX_ARGB, m_SrcPaletteNumber); 1050 m_pSrcPalette = FX_Alloc(FX_ARGB, m_SrcPaletteNumber);
1051 FXSYS_memcpy(m_pSrcPalette, pPalette, 1051 FXSYS_memcpy(m_pSrcPalette, pPalette,
1052 m_SrcPaletteNumber * sizeof(FX_DWORD)); 1052 m_SrcPaletteNumber * sizeof(uint32_t));
1053 } else { 1053 } else {
1054 m_pSrcPalette = nullptr; 1054 m_pSrcPalette = nullptr;
1055 } 1055 }
1056 return TRUE; 1056 return TRUE;
1057 } 1057 }
1058 if (m_pBmpContext) { 1058 if (m_pBmpContext) {
1059 pBmpModule->Finish(m_pBmpContext); 1059 pBmpModule->Finish(m_pBmpContext);
1060 m_pBmpContext = NULL; 1060 m_pBmpContext = NULL;
1061 } 1061 }
1062 m_status = FXCODEC_STATUS_ERR_FORMAT; 1062 m_status = FXCODEC_STATUS_ERR_FORMAT;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1123 return FALSE; 1123 return FALSE;
1124 } 1124 }
1125 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); 1125 FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size);
1126 if (!bResult) { 1126 if (!bResult) {
1127 m_status = FXCODEC_STATUS_ERR_READ; 1127 m_status = FXCODEC_STATUS_ERR_READ;
1128 return FALSE; 1128 return FALSE;
1129 } 1129 }
1130 m_offSet += size; 1130 m_offSet += size;
1131 bResult = pPngModule->Input(m_pPngContext, m_pSrcBuf, size, pAttribute); 1131 bResult = pPngModule->Input(m_pPngContext, m_pSrcBuf, size, pAttribute);
1132 while (bResult) { 1132 while (bResult) {
1133 FX_DWORD remain_size = (FX_DWORD)m_pFile->GetSize() - m_offSet; 1133 uint32_t remain_size = (uint32_t)m_pFile->GetSize() - m_offSet;
1134 FX_DWORD input_size = 1134 uint32_t input_size =
1135 remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; 1135 remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size;
1136 if (input_size == 0) { 1136 if (input_size == 0) {
1137 if (m_pPngContext) { 1137 if (m_pPngContext) {
1138 pPngModule->Finish(m_pPngContext); 1138 pPngModule->Finish(m_pPngContext);
1139 } 1139 }
1140 m_pPngContext = NULL; 1140 m_pPngContext = NULL;
1141 m_status = FXCODEC_STATUS_ERR_FORMAT; 1141 m_status = FXCODEC_STATUS_ERR_FORMAT;
1142 return FALSE; 1142 return FALSE;
1143 } 1143 }
1144 if (m_pSrcBuf && input_size > m_SrcSize) { 1144 if (m_pSrcBuf && input_size > m_SrcSize) {
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 m_status = FXCODEC_STATUS_ERR_FORMAT; 1224 m_status = FXCODEC_STATUS_ERR_FORMAT;
1225 return FALSE; 1225 return FALSE;
1226 } 1226 }
1227 m_pTiffContext = pTiffModule->CreateDecoder(m_pFile); 1227 m_pTiffContext = pTiffModule->CreateDecoder(m_pFile);
1228 if (m_pTiffContext == NULL) { 1228 if (m_pTiffContext == NULL) {
1229 m_status = FXCODEC_STATUS_ERR_FORMAT; 1229 m_status = FXCODEC_STATUS_ERR_FORMAT;
1230 return FALSE; 1230 return FALSE;
1231 } 1231 }
1232 int32_t frames = 0; 1232 int32_t frames = 0;
1233 pTiffModule->GetFrames(m_pTiffContext, frames); 1233 pTiffModule->GetFrames(m_pTiffContext, frames);
1234 FX_DWORD bpc; 1234 uint32_t bpc;
1235 FX_BOOL ret = pTiffModule->LoadFrameInfo( 1235 FX_BOOL ret = pTiffModule->LoadFrameInfo(
1236 m_pTiffContext, 0, (FX_DWORD&)m_SrcWidth, (FX_DWORD&)m_SrcHeight, 1236 m_pTiffContext, 0, (uint32_t&)m_SrcWidth, (uint32_t&)m_SrcHeight,
1237 (FX_DWORD&)m_SrcComponents, bpc, pAttribute); 1237 (uint32_t&)m_SrcComponents, bpc, pAttribute);
1238 m_SrcComponents = 4; 1238 m_SrcComponents = 4;
1239 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); 1239 m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight);
1240 if (!ret) { 1240 if (!ret) {
1241 pTiffModule->DestroyDecoder(m_pTiffContext); 1241 pTiffModule->DestroyDecoder(m_pTiffContext);
1242 (m_pTiffContext = NULL); 1242 (m_pTiffContext = NULL);
1243 (m_status = FXCODEC_STATUS_ERR_FORMAT); 1243 (m_status = FXCODEC_STATUS_ERR_FORMAT);
1244 return FALSE; 1244 return FALSE;
1245 } 1245 }
1246 } break; 1246 } break;
1247 default: 1247 default:
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 for (int des_col = 0; des_col < m_sizeX; des_col++) { 1468 for (int des_col = 0; des_col < m_sizeX; des_col++) {
1469 PixelWeight* pPixelWeights = m_WeightHorz.GetPixelWeight(des_col); 1469 PixelWeight* pPixelWeights = m_WeightHorz.GetPixelWeight(des_col);
1470 switch (m_TransMethod) { 1470 switch (m_TransMethod) {
1471 case -1: 1471 case -1:
1472 return; 1472 return;
1473 case 0: 1473 case 0:
1474 return; 1474 return;
1475 case 1: 1475 case 1:
1476 return; 1476 return;
1477 case 2: { 1477 case 2: {
1478 FX_DWORD des_g = 0; 1478 uint32_t des_g = 0;
1479 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 1479 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
1480 j++) { 1480 j++) {
1481 int pixel_weight = 1481 int pixel_weight =
1482 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 1482 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart];
1483 des_g += pixel_weight * src_scan[j]; 1483 des_g += pixel_weight * src_scan[j];
1484 } 1484 }
1485 *des_scan++ = (uint8_t)(des_g >> 16); 1485 *des_scan++ = (uint8_t)(des_g >> 16);
1486 } break; 1486 } break;
1487 case 3: { 1487 case 3: {
1488 int des_r = 0, des_g = 0, des_b = 0; 1488 int des_r = 0, des_g = 0, des_b = 0;
1489 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 1489 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
1490 j++) { 1490 j++) {
1491 int pixel_weight = 1491 int pixel_weight =
1492 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 1492 pPixelWeights->m_Weights[j - pPixelWeights->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 * (uint8_t)(argb >> 16); 1494 des_r += pixel_weight * (uint8_t)(argb >> 16);
1495 des_g += pixel_weight * (uint8_t)(argb >> 8); 1495 des_g += pixel_weight * (uint8_t)(argb >> 8);
1496 des_b += pixel_weight * (uint8_t)argb; 1496 des_b += pixel_weight * (uint8_t)argb;
1497 } 1497 }
1498 *des_scan++ = 1498 *des_scan++ =
1499 (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); 1499 (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16));
1500 } break; 1500 } break;
1501 case 4: { 1501 case 4: {
1502 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1502 uint32_t des_b = 0, des_g = 0, des_r = 0;
1503 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 1503 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
1504 j++) { 1504 j++) {
1505 int pixel_weight = 1505 int pixel_weight =
1506 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 1506 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart];
1507 const uint8_t* src_pixel = src_scan + j * src_Bpp; 1507 const uint8_t* src_pixel = src_scan + j * src_Bpp;
1508 des_b += pixel_weight * (*src_pixel++); 1508 des_b += pixel_weight * (*src_pixel++);
1509 des_g += pixel_weight * (*src_pixel++); 1509 des_g += pixel_weight * (*src_pixel++);
1510 des_r += pixel_weight * (*src_pixel); 1510 des_r += pixel_weight * (*src_pixel);
1511 } 1511 }
1512 *des_scan++ = 1512 *des_scan++ =
1513 (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); 1513 (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16));
1514 } break; 1514 } break;
1515 case 5: { 1515 case 5: {
1516 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1516 uint32_t des_b = 0, des_g = 0, des_r = 0;
1517 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 1517 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
1518 j++) { 1518 j++) {
1519 int pixel_weight = 1519 int pixel_weight =
1520 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 1520 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart];
1521 const uint8_t* src_pixel = src_scan + j * src_Bpp; 1521 const uint8_t* src_pixel = src_scan + j * src_Bpp;
1522 uint8_t src_b = 0, src_g = 0, src_r = 0; 1522 uint8_t src_b = 0, src_g = 0, src_r = 0;
1523 AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1], 1523 AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1],
1524 255 - src_pixel[2], 255 - src_pixel[3], src_r, 1524 255 - src_pixel[2], 255 - src_pixel[3], src_r,
1525 src_g, src_b); 1525 src_g, src_b);
1526 des_b += pixel_weight * src_b; 1526 des_b += pixel_weight * src_b;
1527 des_g += pixel_weight * src_g; 1527 des_g += pixel_weight * src_g;
1528 des_r += pixel_weight * src_r; 1528 des_r += pixel_weight * src_r;
1529 } 1529 }
1530 *des_scan++ = 1530 *des_scan++ =
1531 (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); 1531 (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16));
1532 } break; 1532 } break;
1533 case 6: 1533 case 6:
1534 return; 1534 return;
1535 case 7: { 1535 case 7: {
1536 FX_DWORD des_g = 0; 1536 uint32_t des_g = 0;
1537 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 1537 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
1538 j++) { 1538 j++) {
1539 int pixel_weight = 1539 int pixel_weight =
1540 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 1540 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart];
1541 des_g += pixel_weight * src_scan[j]; 1541 des_g += pixel_weight * src_scan[j];
1542 } 1542 }
1543 FXSYS_memset(des_scan, (uint8_t)(des_g >> 16), 3); 1543 FXSYS_memset(des_scan, (uint8_t)(des_g >> 16), 3);
1544 des_scan += des_Bpp; 1544 des_scan += des_Bpp;
1545 } break; 1545 } break;
1546 case 8: { 1546 case 8: {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1587 des_g += pixel_weight * (uint8_t)(argb >> 8); 1587 des_g += pixel_weight * (uint8_t)(argb >> 8);
1588 des_b += pixel_weight * (uint8_t)argb; 1588 des_b += pixel_weight * (uint8_t)argb;
1589 } 1589 }
1590 *des_scan++ = (uint8_t)((des_b) >> 16); 1590 *des_scan++ = (uint8_t)((des_b) >> 16);
1591 *des_scan++ = (uint8_t)((des_g) >> 16); 1591 *des_scan++ = (uint8_t)((des_g) >> 16);
1592 *des_scan++ = (uint8_t)((des_r) >> 16); 1592 *des_scan++ = (uint8_t)((des_r) >> 16);
1593 *des_scan++ = (uint8_t)((des_a) >> 16); 1593 *des_scan++ = (uint8_t)((des_a) >> 16);
1594 } 1594 }
1595 } break; 1595 } break;
1596 case 9: { 1596 case 9: {
1597 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1597 uint32_t des_b = 0, des_g = 0, des_r = 0;
1598 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 1598 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
1599 j++) { 1599 j++) {
1600 int pixel_weight = 1600 int pixel_weight =
1601 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 1601 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart];
1602 const uint8_t* src_pixel = src_scan + j * src_Bpp; 1602 const uint8_t* src_pixel = src_scan + j * src_Bpp;
1603 des_b += pixel_weight * (*src_pixel++); 1603 des_b += pixel_weight * (*src_pixel++);
1604 des_g += pixel_weight * (*src_pixel++); 1604 des_g += pixel_weight * (*src_pixel++);
1605 des_r += pixel_weight * (*src_pixel); 1605 des_r += pixel_weight * (*src_pixel);
1606 } 1606 }
1607 *des_scan++ = (uint8_t)((des_b) >> 16); 1607 *des_scan++ = (uint8_t)((des_b) >> 16);
1608 *des_scan++ = (uint8_t)((des_g) >> 16); 1608 *des_scan++ = (uint8_t)((des_g) >> 16);
1609 *des_scan++ = (uint8_t)((des_r) >> 16); 1609 *des_scan++ = (uint8_t)((des_r) >> 16);
1610 des_scan += des_Bpp - 3; 1610 des_scan += des_Bpp - 3;
1611 } break; 1611 } break;
1612 case 10: { 1612 case 10: {
1613 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1613 uint32_t des_b = 0, des_g = 0, des_r = 0;
1614 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 1614 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
1615 j++) { 1615 j++) {
1616 int pixel_weight = 1616 int pixel_weight =
1617 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 1617 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart];
1618 const uint8_t* src_pixel = src_scan + j * src_Bpp; 1618 const uint8_t* src_pixel = src_scan + j * src_Bpp;
1619 uint8_t src_b = 0, src_g = 0, src_r = 0; 1619 uint8_t src_b = 0, src_g = 0, src_r = 0;
1620 AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1], 1620 AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1],
1621 255 - src_pixel[2], 255 - src_pixel[3], src_r, 1621 255 - src_pixel[2], 255 - src_pixel[3], src_r,
1622 src_g, src_b); 1622 src_g, src_b);
1623 des_b += pixel_weight * src_b; 1623 des_b += pixel_weight * src_b;
1624 des_g += pixel_weight * src_g; 1624 des_g += pixel_weight * src_g;
1625 des_r += pixel_weight * src_r; 1625 des_r += pixel_weight * src_r;
1626 } 1626 }
1627 *des_scan++ = (uint8_t)((des_b) >> 16); 1627 *des_scan++ = (uint8_t)((des_b) >> 16);
1628 *des_scan++ = (uint8_t)((des_g) >> 16); 1628 *des_scan++ = (uint8_t)((des_g) >> 16);
1629 *des_scan++ = (uint8_t)((des_r) >> 16); 1629 *des_scan++ = (uint8_t)((des_r) >> 16);
1630 des_scan += des_Bpp - 3; 1630 des_scan += des_Bpp - 3;
1631 } break; 1631 } break;
1632 case 11: { 1632 case 11: {
1633 FX_DWORD des_alpha = 0, des_r = 0, des_g = 0, des_b = 0; 1633 uint32_t des_alpha = 0, des_r = 0, des_g = 0, des_b = 0;
1634 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; 1634 for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd;
1635 j++) { 1635 j++) {
1636 int pixel_weight = 1636 int pixel_weight =
1637 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; 1637 pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart];
1638 const uint8_t* src_pixel = src_scan + j * src_Bpp; 1638 const uint8_t* src_pixel = src_scan + j * src_Bpp;
1639 pixel_weight = pixel_weight * src_pixel[3] / 255; 1639 pixel_weight = pixel_weight * src_pixel[3] / 255;
1640 des_b += pixel_weight * (*src_pixel++); 1640 des_b += pixel_weight * (*src_pixel++);
1641 des_g += pixel_weight * (*src_pixel++); 1641 des_g += pixel_weight * (*src_pixel++);
1642 des_r += pixel_weight * (*src_pixel); 1642 des_r += pixel_weight * (*src_pixel);
1643 des_alpha += pixel_weight; 1643 des_alpha += pixel_weight;
1644 } 1644 }
1645 *des_scan++ = (uint8_t)((des_b) >> 16); 1645 *des_scan++ = (uint8_t)((des_b) >> 16);
1646 *des_scan++ = (uint8_t)((des_g) >> 16); 1646 *des_scan++ = (uint8_t)((des_g) >> 16);
1647 *des_scan++ = (uint8_t)((des_r) >> 16); 1647 *des_scan++ = (uint8_t)((des_r) >> 16);
1648 *des_scan++ = (uint8_t)((des_alpha * 255) >> 16); 1648 *des_scan++ = (uint8_t)((des_alpha * 255) >> 16);
1649 } break; 1649 } break;
1650 default: 1650 default:
1651 return; 1651 return;
1652 } 1652 }
1653 } 1653 }
1654 } 1654 }
1655 void CCodec_ProgressiveDecoder::ResampleVert(CFX_DIBitmap* pDeviceBitmap, 1655 void CCodec_ProgressiveDecoder::ResampleVert(CFX_DIBitmap* pDeviceBitmap,
1656 double scale_y, 1656 double scale_y,
1657 int des_row) { 1657 int des_row) {
1658 int des_Bpp = pDeviceBitmap->GetBPP() >> 3; 1658 int des_Bpp = pDeviceBitmap->GetBPP() >> 3;
1659 FX_DWORD des_ScanOffet = m_startX * des_Bpp; 1659 uint32_t des_ScanOffet = m_startX * des_Bpp;
1660 if (m_bInterpol) { 1660 if (m_bInterpol) {
1661 int des_top = m_startY; 1661 int des_top = m_startY;
1662 int des_row_1 = des_row - int(scale_y); 1662 int des_row_1 = des_row - int(scale_y);
1663 if (des_row_1 < des_top) { 1663 if (des_row_1 < des_top) {
1664 int des_bottom = des_top + m_sizeY; 1664 int des_bottom = des_top + m_sizeY;
1665 if (des_row + (int)scale_y >= des_bottom - 1) { 1665 if (des_row + (int)scale_y >= des_bottom - 1) {
1666 uint8_t* scan_src = 1666 uint8_t* scan_src =
1667 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; 1667 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;
1668 while (++des_row < des_bottom) { 1668 while (++des_row < des_bottom) {
1669 uint8_t* scan_des = 1669 uint8_t* scan_des =
1670 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; 1670 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;
1671 FX_DWORD size = m_sizeX * des_Bpp; 1671 uint32_t size = m_sizeX * des_Bpp;
1672 FXSYS_memcpy(scan_des, scan_src, size); 1672 FXSYS_memcpy(scan_des, scan_src, size);
1673 } 1673 }
1674 } 1674 }
1675 return; 1675 return;
1676 } 1676 }
1677 for (; des_row_1 < des_row; des_row_1++) { 1677 for (; des_row_1 < des_row; des_row_1++) {
1678 uint8_t* scan_des = 1678 uint8_t* scan_des =
1679 (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; 1679 (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet;
1680 PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); 1680 PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top);
1681 const uint8_t* scan_src1 = 1681 const uint8_t* scan_src1 =
(...skipping 13 matching lines...) Expand all
1695 if (pDeviceBitmap->GetPalette()) { 1695 if (pDeviceBitmap->GetPalette()) {
1696 return; 1696 return;
1697 } 1697 }
1698 int des_g = 0; 1698 int des_g = 0;
1699 des_g += pWeight->m_Weights[0] * (*scan_src1++); 1699 des_g += pWeight->m_Weights[0] * (*scan_src1++);
1700 des_g += pWeight->m_Weights[1] * (*scan_src2++); 1700 des_g += pWeight->m_Weights[1] * (*scan_src2++);
1701 *scan_des++ = (uint8_t)(des_g >> 16); 1701 *scan_des++ = (uint8_t)(des_g >> 16);
1702 } break; 1702 } break;
1703 case FXDIB_Rgb: 1703 case FXDIB_Rgb:
1704 case FXDIB_Rgb32: { 1704 case FXDIB_Rgb32: {
1705 FX_DWORD des_b = 0, des_g = 0, des_r = 0; 1705 uint32_t des_b = 0, des_g = 0, des_r = 0;
1706 des_b += pWeight->m_Weights[0] * (*scan_src1++); 1706 des_b += pWeight->m_Weights[0] * (*scan_src1++);
1707 des_g += pWeight->m_Weights[0] * (*scan_src1++); 1707 des_g += pWeight->m_Weights[0] * (*scan_src1++);
1708 des_r += pWeight->m_Weights[0] * (*scan_src1++); 1708 des_r += pWeight->m_Weights[0] * (*scan_src1++);
1709 scan_src1 += des_Bpp - 3; 1709 scan_src1 += des_Bpp - 3;
1710 des_b += pWeight->m_Weights[1] * (*scan_src2++); 1710 des_b += pWeight->m_Weights[1] * (*scan_src2++);
1711 des_g += pWeight->m_Weights[1] * (*scan_src2++); 1711 des_g += pWeight->m_Weights[1] * (*scan_src2++);
1712 des_r += pWeight->m_Weights[1] * (*scan_src2++); 1712 des_r += pWeight->m_Weights[1] * (*scan_src2++);
1713 scan_src2 += des_Bpp - 3; 1713 scan_src2 += des_Bpp - 3;
1714 *scan_des++ = (uint8_t)((des_b) >> 16); 1714 *scan_des++ = (uint8_t)((des_b) >> 16);
1715 *scan_des++ = (uint8_t)((des_g) >> 16); 1715 *scan_des++ = (uint8_t)((des_g) >> 16);
1716 *scan_des++ = (uint8_t)((des_r) >> 16); 1716 *scan_des++ = (uint8_t)((des_r) >> 16);
1717 scan_des += des_Bpp - 3; 1717 scan_des += des_Bpp - 3;
1718 } break; 1718 } break;
1719 case FXDIB_Argb: { 1719 case FXDIB_Argb: {
1720 FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; 1720 uint32_t des_a = 0, des_b = 0, des_g = 0, des_r = 0;
1721 des_b += pWeight->m_Weights[0] * (*scan_src1++); 1721 des_b += pWeight->m_Weights[0] * (*scan_src1++);
1722 des_g += pWeight->m_Weights[0] * (*scan_src1++); 1722 des_g += pWeight->m_Weights[0] * (*scan_src1++);
1723 des_r += pWeight->m_Weights[0] * (*scan_src1++); 1723 des_r += pWeight->m_Weights[0] * (*scan_src1++);
1724 des_a += pWeight->m_Weights[0] * (*scan_src1++); 1724 des_a += pWeight->m_Weights[0] * (*scan_src1++);
1725 des_b += pWeight->m_Weights[1] * (*scan_src2++); 1725 des_b += pWeight->m_Weights[1] * (*scan_src2++);
1726 des_g += pWeight->m_Weights[1] * (*scan_src2++); 1726 des_g += pWeight->m_Weights[1] * (*scan_src2++);
1727 des_r += pWeight->m_Weights[1] * (*scan_src2++); 1727 des_r += pWeight->m_Weights[1] * (*scan_src2++);
1728 des_a += pWeight->m_Weights[1] * (*scan_src2++); 1728 des_a += pWeight->m_Weights[1] * (*scan_src2++);
1729 *scan_des++ = (uint8_t)((des_b) >> 16); 1729 *scan_des++ = (uint8_t)((des_b) >> 16);
1730 *scan_des++ = (uint8_t)((des_g) >> 16); 1730 *scan_des++ = (uint8_t)((des_g) >> 16);
1731 *scan_des++ = (uint8_t)((des_r) >> 16); 1731 *scan_des++ = (uint8_t)((des_r) >> 16);
1732 *scan_des++ = (uint8_t)((des_a) >> 16); 1732 *scan_des++ = (uint8_t)((des_a) >> 16);
1733 } break; 1733 } break;
1734 default: 1734 default:
1735 return; 1735 return;
1736 } 1736 }
1737 } 1737 }
1738 } 1738 }
1739 int des_bottom = des_top + m_sizeY; 1739 int des_bottom = des_top + m_sizeY;
1740 if (des_row + (int)scale_y >= des_bottom - 1) { 1740 if (des_row + (int)scale_y >= des_bottom - 1) {
1741 uint8_t* scan_src = 1741 uint8_t* scan_src =
1742 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; 1742 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;
1743 while (++des_row < des_bottom) { 1743 while (++des_row < des_bottom) {
1744 uint8_t* scan_des = 1744 uint8_t* scan_des =
1745 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; 1745 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;
1746 FX_DWORD size = m_sizeX * des_Bpp; 1746 uint32_t size = m_sizeX * des_Bpp;
1747 FXSYS_memcpy(scan_des, scan_src, size); 1747 FXSYS_memcpy(scan_des, scan_src, size);
1748 } 1748 }
1749 } 1749 }
1750 return; 1750 return;
1751 } 1751 }
1752 int multiple = (int)FXSYS_ceil((FX_FLOAT)scale_y - 1); 1752 int multiple = (int)FXSYS_ceil((FX_FLOAT)scale_y - 1);
1753 if (multiple > 0) { 1753 if (multiple > 0) {
1754 uint8_t* scan_src = 1754 uint8_t* scan_src =
1755 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; 1755 (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet;
1756 for (int i = 1; i <= multiple; i++) { 1756 for (int i = 1; i <= multiple; i++) {
1757 if (des_row + i >= m_startY + m_sizeY) { 1757 if (des_row + i >= m_startY + m_sizeY) {
1758 return; 1758 return;
1759 } 1759 }
1760 uint8_t* scan_des = 1760 uint8_t* scan_des =
1761 (uint8_t*)pDeviceBitmap->GetScanline(des_row + i) + des_ScanOffet; 1761 (uint8_t*)pDeviceBitmap->GetScanline(des_row + i) + des_ScanOffet;
1762 FX_DWORD size = m_sizeX * des_Bpp; 1762 uint32_t size = m_sizeX * des_Bpp;
1763 FXSYS_memcpy(scan_des, scan_src, size); 1763 FXSYS_memcpy(scan_des, scan_src, size);
1764 } 1764 }
1765 } 1765 }
1766 } 1766 }
1767 void CCodec_ProgressiveDecoder::Resample(CFX_DIBitmap* pDeviceBitmap, 1767 void CCodec_ProgressiveDecoder::Resample(CFX_DIBitmap* pDeviceBitmap,
1768 int32_t src_line, 1768 int32_t src_line,
1769 uint8_t* src_scan, 1769 uint8_t* src_scan,
1770 FXCodec_Format src_format) { 1770 FXCodec_Format src_format) {
1771 int src_top = m_clipBox.top; 1771 int src_top = m_clipBox.top;
1772 int des_top = m_startY; 1772 int des_top = m_startY;
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
2056 Resample(m_pDeviceBitmap, m_SrcRow, m_pDecodeBuf, m_SrcFormat); 2056 Resample(m_pDeviceBitmap, m_SrcRow, m_pDecodeBuf, m_SrcFormat);
2057 m_SrcRow++; 2057 m_SrcRow++;
2058 if (pPause && pPause->NeedToPauseNow()) { 2058 if (pPause && pPause->NeedToPauseNow()) {
2059 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; 2059 return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE;
2060 } 2060 }
2061 } 2061 }
2062 } break; 2062 } break;
2063 case FXCODEC_IMAGE_PNG: { 2063 case FXCODEC_IMAGE_PNG: {
2064 ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); 2064 ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule();
2065 while (TRUE) { 2065 while (TRUE) {
2066 FX_DWORD remain_size = (FX_DWORD)m_pFile->GetSize() - m_offSet; 2066 uint32_t remain_size = (uint32_t)m_pFile->GetSize() - m_offSet;
2067 FX_DWORD input_size = 2067 uint32_t input_size =
2068 remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; 2068 remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size;
2069 if (input_size == 0) { 2069 if (input_size == 0) {
2070 if (m_pPngContext) { 2070 if (m_pPngContext) {
2071 pPngModule->Finish(m_pPngContext); 2071 pPngModule->Finish(m_pPngContext);
2072 } 2072 }
2073 m_pPngContext = NULL; 2073 m_pPngContext = NULL;
2074 m_pDeviceBitmap = NULL; 2074 m_pDeviceBitmap = NULL;
2075 m_pFile = NULL; 2075 m_pFile = NULL;
2076 return m_status = FXCODEC_STATUS_DECODE_FINISH; 2076 return m_status = FXCODEC_STATUS_DECODE_FINISH;
2077 } 2077 }
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
2292 } 2292 }
2293 } break; 2293 } break;
2294 default: 2294 default:
2295 break; 2295 break;
2296 } 2296 }
2297 return FXCODEC_STATUS_ERROR; 2297 return FXCODEC_STATUS_ERROR;
2298 } 2298 }
2299 ICodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() { 2299 ICodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() {
2300 return new CCodec_ProgressiveDecoder(this); 2300 return new CCodec_ProgressiveDecoder(this);
2301 } 2301 }
OLDNEW
« no previous file with comments | « core/fxcodec/codec/fx_codec_progress.h ('k') | core/fxcodec/codec/fx_codec_tiff.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698