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/include/fxge/fx_dib.h" | 7 #include "core/include/fxge/fx_dib.h" |
8 | 8 |
9 #include <limits.h> | 9 #include <limits.h> |
10 | 10 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 return FALSE; | 82 return FALSE; |
83 } | 83 } |
84 if (pBuffer) { | 84 if (pBuffer) { |
85 m_pBuffer = pBuffer; | 85 m_pBuffer = pBuffer; |
86 m_bExtBuf = TRUE; | 86 m_bExtBuf = TRUE; |
87 } else { | 87 } else { |
88 int size = pitch * height + 4; | 88 int size = pitch * height + 4; |
89 int oomlimit = _MAX_OOM_LIMIT_; | 89 int oomlimit = _MAX_OOM_LIMIT_; |
90 if (oomlimit >= 0 && size >= oomlimit) { | 90 if (oomlimit >= 0 && size >= oomlimit) { |
91 m_pBuffer = FX_TryAlloc(uint8_t, size); | 91 m_pBuffer = FX_TryAlloc(uint8_t, size); |
92 if (m_pBuffer == NULL) { | 92 if (!m_pBuffer) { |
93 return FALSE; | 93 return FALSE; |
94 } | 94 } |
95 } else { | 95 } else { |
96 m_pBuffer = FX_Alloc(uint8_t, size); | 96 m_pBuffer = FX_Alloc(uint8_t, size); |
97 } | 97 } |
98 } | 98 } |
99 m_Width = width; | 99 m_Width = width; |
100 m_Height = height; | 100 m_Height = height; |
101 m_Pitch = pitch; | 101 m_Pitch = pitch; |
102 if (HasAlpha() && format != FXDIB_Argb) { | 102 if (HasAlpha() && format != FXDIB_Argb) { |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 } | 243 } |
244 return 0xff - index; | 244 return 0xff - index; |
245 } | 245 } |
246 if (GetBPP() == 1) { | 246 if (GetBPP() == 1) { |
247 return index ? 0xffffffff : 0xff000000; | 247 return index ? 0xffffffff : 0xff000000; |
248 } | 248 } |
249 return index * 0x10101 | 0xff000000; | 249 return index * 0x10101 | 0xff000000; |
250 } | 250 } |
251 void CFX_DIBSource::SetPaletteEntry(int index, FX_DWORD color) { | 251 void CFX_DIBSource::SetPaletteEntry(int index, FX_DWORD color) { |
252 ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); | 252 ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); |
253 if (m_pPalette == NULL) { | 253 if (!m_pPalette) { |
254 BuildPalette(); | 254 BuildPalette(); |
255 } | 255 } |
256 m_pPalette[index] = color; | 256 m_pPalette[index] = color; |
257 } | 257 } |
258 int CFX_DIBSource::FindPalette(FX_DWORD color) const { | 258 int CFX_DIBSource::FindPalette(FX_DWORD color) const { |
259 ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); | 259 ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); |
260 if (m_pPalette == NULL) { | 260 if (!m_pPalette) { |
261 if (IsCmykImage()) { | 261 if (IsCmykImage()) { |
262 if (GetBPP() == 1) { | 262 if (GetBPP() == 1) { |
263 return ((uint8_t)color == 0xff) ? 0 : 1; | 263 return ((uint8_t)color == 0xff) ? 0 : 1; |
264 } | 264 } |
265 return 0xff - (uint8_t)color; | 265 return 0xff - (uint8_t)color; |
266 } | 266 } |
267 if (GetBPP() == 1) { | 267 if (GetBPP() == 1) { |
268 return ((uint8_t)color == 0xff) ? 1 : 0; | 268 return ((uint8_t)color == 0xff) ? 1 : 0; |
269 } | 269 } |
270 return (uint8_t)color; | 270 return (uint8_t)color; |
271 } | 271 } |
272 int palsize = (1 << GetBPP()); | 272 int palsize = (1 << GetBPP()); |
273 for (int i = 0; i < palsize; i++) | 273 for (int i = 0; i < palsize; i++) |
274 if (m_pPalette[i] == color) { | 274 if (m_pPalette[i] == color) { |
275 return i; | 275 return i; |
276 } | 276 } |
277 return -1; | 277 return -1; |
278 } | 278 } |
279 void CFX_DIBitmap::Clear(FX_DWORD color) { | 279 void CFX_DIBitmap::Clear(FX_DWORD color) { |
280 if (m_pBuffer == NULL) { | 280 if (!m_pBuffer) { |
281 return; | 281 return; |
282 } | 282 } |
283 switch (GetFormat()) { | 283 switch (GetFormat()) { |
284 case FXDIB_1bppMask: | 284 case FXDIB_1bppMask: |
285 FXSYS_memset(m_pBuffer, (color & 0xff000000) ? 0xff : 0, | 285 FXSYS_memset(m_pBuffer, (color & 0xff000000) ? 0xff : 0, |
286 m_Pitch * m_Height); | 286 m_Pitch * m_Height); |
287 break; | 287 break; |
288 case FXDIB_1bppRgb: { | 288 case FXDIB_1bppRgb: { |
289 int index = FindPalette(color); | 289 int index = FindPalette(color); |
290 FXSYS_memset(m_pBuffer, index ? 0xff : 0, m_Pitch * m_Height); | 290 FXSYS_memset(m_pBuffer, index ? 0xff : 0, m_Pitch * m_Height); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 height = dest_rect.bottom - dest_rect.top; | 370 height = dest_rect.bottom - dest_rect.top; |
371 } | 371 } |
372 FX_BOOL CFX_DIBitmap::TransferBitmap(int dest_left, | 372 FX_BOOL CFX_DIBitmap::TransferBitmap(int dest_left, |
373 int dest_top, | 373 int dest_top, |
374 int width, | 374 int width, |
375 int height, | 375 int height, |
376 const CFX_DIBSource* pSrcBitmap, | 376 const CFX_DIBSource* pSrcBitmap, |
377 int src_left, | 377 int src_left, |
378 int src_top, | 378 int src_top, |
379 void* pIccTransform) { | 379 void* pIccTransform) { |
380 if (m_pBuffer == NULL) { | 380 if (!m_pBuffer) { |
381 return FALSE; | 381 return FALSE; |
382 } | 382 } |
383 GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetWidth(), | 383 GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetWidth(), |
384 pSrcBitmap->GetHeight(), src_left, src_top, NULL); | 384 pSrcBitmap->GetHeight(), src_left, src_top, NULL); |
385 if (width == 0 || height == 0) { | 385 if (width == 0 || height == 0) { |
386 return TRUE; | 386 return TRUE; |
387 } | 387 } |
388 FXDIB_Format dest_format = GetFormat(); | 388 FXDIB_Format dest_format = GetFormat(); |
389 FXDIB_Format src_format = pSrcBitmap->GetFormat(); | 389 FXDIB_Format src_format = pSrcBitmap->GetFormat(); |
390 if (dest_format == src_format && pIccTransform == NULL) { | 390 if (dest_format == src_format && !pIccTransform) { |
391 if (GetBPP() == 1) { | 391 if (GetBPP() == 1) { |
392 for (int row = 0; row < height; row++) { | 392 for (int row = 0; row < height; row++) { |
393 uint8_t* dest_scan = m_pBuffer + (dest_top + row) * m_Pitch; | 393 uint8_t* dest_scan = m_pBuffer + (dest_top + row) * m_Pitch; |
394 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); | 394 const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); |
395 for (int col = 0; col < width; col++) { | 395 for (int col = 0; col < width; col++) { |
396 if (src_scan[(src_left + col) / 8] & | 396 if (src_scan[(src_left + col) / 8] & |
397 (1 << (7 - (src_left + col) % 8))) { | 397 (1 << (7 - (src_left + col) % 8))) { |
398 dest_scan[(dest_left + col) / 8] |= 1 | 398 dest_scan[(dest_left + col) / 8] |= 1 |
399 << (7 - (dest_left + col) % 8); | 399 << (7 - (dest_left + col) % 8); |
400 } else { | 400 } else { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 FX_BOOL CFX_DIBitmap::TransferMask(int dest_left, | 433 FX_BOOL CFX_DIBitmap::TransferMask(int dest_left, |
434 int dest_top, | 434 int dest_top, |
435 int width, | 435 int width, |
436 int height, | 436 int height, |
437 const CFX_DIBSource* pMask, | 437 const CFX_DIBSource* pMask, |
438 FX_DWORD color, | 438 FX_DWORD color, |
439 int src_left, | 439 int src_left, |
440 int src_top, | 440 int src_top, |
441 int alpha_flag, | 441 int alpha_flag, |
442 void* pIccTransform) { | 442 void* pIccTransform) { |
443 if (m_pBuffer == NULL) { | 443 if (!m_pBuffer) { |
444 return FALSE; | 444 return FALSE; |
445 } | 445 } |
446 ASSERT(HasAlpha() && (m_bpp >= 24)); | 446 ASSERT(HasAlpha() && (m_bpp >= 24)); |
447 ASSERT(pMask->IsAlphaMask()); | 447 ASSERT(pMask->IsAlphaMask()); |
448 if (!HasAlpha() || !pMask->IsAlphaMask() || m_bpp < 24) { | 448 if (!HasAlpha() || !pMask->IsAlphaMask() || m_bpp < 24) { |
449 return FALSE; | 449 return FALSE; |
450 } | 450 } |
451 GetOverlapRect(dest_left, dest_top, width, height, pMask->GetWidth(), | 451 GetOverlapRect(dest_left, dest_top, width, height, pMask->GetWidth(), |
452 pMask->GetHeight(), src_left, src_top, NULL); | 452 pMask->GetHeight(), src_left, src_top, NULL); |
453 if (width == 0 || height == 0) { | 453 if (width == 0 || height == 0) { |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 FXSYS_memcpy(dest_color_pos, color_p, comps); | 533 FXSYS_memcpy(dest_color_pos, color_p, comps); |
534 dest_color_pos += comps; | 534 dest_color_pos += comps; |
535 *dest_alpha_pos++ = (alpha * (*src_scan++) / 255); | 535 *dest_alpha_pos++ = (alpha * (*src_scan++) / 255); |
536 } | 536 } |
537 } | 537 } |
538 } | 538 } |
539 } | 539 } |
540 return TRUE; | 540 return TRUE; |
541 } | 541 } |
542 void CFX_DIBSource::CopyPalette(const FX_DWORD* pSrc, FX_DWORD size) { | 542 void CFX_DIBSource::CopyPalette(const FX_DWORD* pSrc, FX_DWORD size) { |
543 if (pSrc == NULL || GetBPP() > 8) { | 543 if (!pSrc || GetBPP() > 8) { |
544 FX_Free(m_pPalette); | 544 FX_Free(m_pPalette); |
545 m_pPalette = NULL; | 545 m_pPalette = NULL; |
546 } else { | 546 } else { |
547 FX_DWORD pal_size = 1 << GetBPP(); | 547 FX_DWORD pal_size = 1 << GetBPP(); |
548 if (m_pPalette == NULL) { | 548 if (!m_pPalette) { |
549 m_pPalette = FX_Alloc(FX_DWORD, pal_size); | 549 m_pPalette = FX_Alloc(FX_DWORD, pal_size); |
550 } | 550 } |
551 if (pal_size > size) { | 551 if (pal_size > size) { |
552 pal_size = size; | 552 pal_size = size; |
553 } | 553 } |
554 FXSYS_memcpy(m_pPalette, pSrc, pal_size * sizeof(FX_DWORD)); | 554 FXSYS_memcpy(m_pPalette, pSrc, pal_size * sizeof(FX_DWORD)); |
555 } | 555 } |
556 } | 556 } |
557 void CFX_DIBSource::GetPalette(FX_DWORD* pal, int alpha) const { | 557 void CFX_DIBSource::GetPalette(FX_DWORD* pal, int alpha) const { |
558 ASSERT(GetBPP() <= 8 && !IsCmykImage()); | 558 ASSERT(GetBPP() <= 8 && !IsCmykImage()); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
621 m_pAlphaMask->m_Pitch); | 621 m_pAlphaMask->m_Pitch); |
622 } else { | 622 } else { |
623 m_pAlphaMask->Clear(0xff000000); | 623 m_pAlphaMask->Clear(0xff000000); |
624 } | 624 } |
625 return TRUE; | 625 return TRUE; |
626 } | 626 } |
627 const int g_ChannelOffset[] = {0, 2, 1, 0, 0, 1, 2, 3, 3}; | 627 const int g_ChannelOffset[] = {0, 2, 1, 0, 0, 1, 2, 3, 3}; |
628 FX_BOOL CFX_DIBitmap::LoadChannel(FXDIB_Channel destChannel, | 628 FX_BOOL CFX_DIBitmap::LoadChannel(FXDIB_Channel destChannel, |
629 const CFX_DIBSource* pSrcBitmap, | 629 const CFX_DIBSource* pSrcBitmap, |
630 FXDIB_Channel srcChannel) { | 630 FXDIB_Channel srcChannel) { |
631 if (m_pBuffer == NULL) { | 631 if (!m_pBuffer) { |
632 return FALSE; | 632 return FALSE; |
633 } | 633 } |
634 CFX_DIBSource* pSrcClone = (CFX_DIBSource*)pSrcBitmap; | 634 CFX_DIBSource* pSrcClone = (CFX_DIBSource*)pSrcBitmap; |
635 CFX_DIBitmap* pDst = this; | 635 CFX_DIBitmap* pDst = this; |
636 int destOffset, srcOffset; | 636 int destOffset, srcOffset; |
637 if (srcChannel == FXDIB_Alpha) { | 637 if (srcChannel == FXDIB_Alpha) { |
638 if (!pSrcBitmap->HasAlpha() && !pSrcBitmap->IsAlphaMask()) { | 638 if (!pSrcBitmap->HasAlpha() && !pSrcBitmap->IsAlphaMask()) { |
639 return FALSE; | 639 return FALSE; |
640 } | 640 } |
641 if (pSrcBitmap->GetBPP() == 1) { | 641 if (pSrcBitmap->GetBPP() == 1) { |
642 pSrcClone = pSrcBitmap->CloneConvert(FXDIB_8bppMask); | 642 pSrcClone = pSrcBitmap->CloneConvert(FXDIB_8bppMask); |
643 if (pSrcClone == NULL) { | 643 if (!pSrcClone) { |
644 return FALSE; | 644 return FALSE; |
645 } | 645 } |
646 } | 646 } |
647 if (pSrcBitmap->GetFormat() == FXDIB_Argb) { | 647 if (pSrcBitmap->GetFormat() == FXDIB_Argb) { |
648 srcOffset = 3; | 648 srcOffset = 3; |
649 } else { | 649 } else { |
650 srcOffset = 0; | 650 srcOffset = 0; |
651 } | 651 } |
652 } else { | 652 } else { |
653 if (pSrcBitmap->IsAlphaMask()) { | 653 if (pSrcBitmap->IsAlphaMask()) { |
654 return FALSE; | 654 return FALSE; |
655 } | 655 } |
656 if (pSrcBitmap->GetBPP() < 24) { | 656 if (pSrcBitmap->GetBPP() < 24) { |
657 if (pSrcBitmap->IsCmykImage()) { | 657 if (pSrcBitmap->IsCmykImage()) { |
658 pSrcClone = pSrcBitmap->CloneConvert( | 658 pSrcClone = pSrcBitmap->CloneConvert( |
659 (FXDIB_Format)((pSrcBitmap->GetFormat() & 0xff00) | 0x20)); | 659 (FXDIB_Format)((pSrcBitmap->GetFormat() & 0xff00) | 0x20)); |
660 } else { | 660 } else { |
661 pSrcClone = pSrcBitmap->CloneConvert( | 661 pSrcClone = pSrcBitmap->CloneConvert( |
662 (FXDIB_Format)((pSrcBitmap->GetFormat() & 0xff00) | 0x18)); | 662 (FXDIB_Format)((pSrcBitmap->GetFormat() & 0xff00) | 0x18)); |
663 } | 663 } |
664 if (pSrcClone == NULL) { | 664 if (!pSrcClone) { |
665 return FALSE; | 665 return FALSE; |
666 } | 666 } |
667 } | 667 } |
668 srcOffset = g_ChannelOffset[srcChannel]; | 668 srcOffset = g_ChannelOffset[srcChannel]; |
669 } | 669 } |
670 if (destChannel == FXDIB_Alpha) { | 670 if (destChannel == FXDIB_Alpha) { |
671 if (IsAlphaMask()) { | 671 if (IsAlphaMask()) { |
672 if (!ConvertFormat(FXDIB_8bppMask)) { | 672 if (!ConvertFormat(FXDIB_8bppMask)) { |
673 if (pSrcClone != pSrcBitmap) { | 673 if (pSrcClone != pSrcBitmap) { |
674 delete pSrcClone; | 674 delete pSrcClone; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 } | 716 } |
717 } | 717 } |
718 destOffset = g_ChannelOffset[destChannel]; | 718 destOffset = g_ChannelOffset[destChannel]; |
719 } | 719 } |
720 if (srcChannel == FXDIB_Alpha && pSrcClone->m_pAlphaMask) { | 720 if (srcChannel == FXDIB_Alpha && pSrcClone->m_pAlphaMask) { |
721 CFX_DIBitmap* pAlphaMask = pSrcClone->m_pAlphaMask; | 721 CFX_DIBitmap* pAlphaMask = pSrcClone->m_pAlphaMask; |
722 if (pSrcClone->GetWidth() != m_Width || | 722 if (pSrcClone->GetWidth() != m_Width || |
723 pSrcClone->GetHeight() != m_Height) { | 723 pSrcClone->GetHeight() != m_Height) { |
724 if (pAlphaMask) { | 724 if (pAlphaMask) { |
725 pAlphaMask = pAlphaMask->StretchTo(m_Width, m_Height); | 725 pAlphaMask = pAlphaMask->StretchTo(m_Width, m_Height); |
726 if (pAlphaMask == NULL) { | 726 if (!pAlphaMask) { |
727 if (pSrcClone != pSrcBitmap) { | 727 if (pSrcClone != pSrcBitmap) { |
728 delete pSrcClone; | 728 delete pSrcClone; |
729 } | 729 } |
730 return FALSE; | 730 return FALSE; |
731 } | 731 } |
732 } | 732 } |
733 } | 733 } |
734 if (pSrcClone != pSrcBitmap) { | 734 if (pSrcClone != pSrcBitmap) { |
735 pSrcClone->m_pAlphaMask = NULL; | 735 pSrcClone->m_pAlphaMask = NULL; |
736 delete pSrcClone; | 736 delete pSrcClone; |
737 } | 737 } |
738 pSrcClone = pAlphaMask; | 738 pSrcClone = pAlphaMask; |
739 srcOffset = 0; | 739 srcOffset = 0; |
740 } else if (pSrcClone->GetWidth() != m_Width || | 740 } else if (pSrcClone->GetWidth() != m_Width || |
741 pSrcClone->GetHeight() != m_Height) { | 741 pSrcClone->GetHeight() != m_Height) { |
742 CFX_DIBitmap* pSrcMatched = pSrcClone->StretchTo(m_Width, m_Height); | 742 CFX_DIBitmap* pSrcMatched = pSrcClone->StretchTo(m_Width, m_Height); |
743 if (pSrcClone != pSrcBitmap) { | 743 if (pSrcClone != pSrcBitmap) { |
744 delete pSrcClone; | 744 delete pSrcClone; |
745 } | 745 } |
746 if (pSrcMatched == NULL) { | 746 if (!pSrcMatched) { |
747 return FALSE; | 747 return FALSE; |
748 } | 748 } |
749 pSrcClone = pSrcMatched; | 749 pSrcClone = pSrcMatched; |
750 } | 750 } |
751 if (destChannel == FXDIB_Alpha && m_pAlphaMask) { | 751 if (destChannel == FXDIB_Alpha && m_pAlphaMask) { |
752 pDst = m_pAlphaMask; | 752 pDst = m_pAlphaMask; |
753 destOffset = 0; | 753 destOffset = 0; |
754 } | 754 } |
755 int srcBytes = pSrcClone->GetBPP() / 8; | 755 int srcBytes = pSrcClone->GetBPP() / 8; |
756 int destBytes = pDst->GetBPP() / 8; | 756 int destBytes = pDst->GetBPP() / 8; |
757 for (int row = 0; row < m_Height; row++) { | 757 for (int row = 0; row < m_Height; row++) { |
758 uint8_t* dest_pos = (uint8_t*)pDst->GetScanline(row) + destOffset; | 758 uint8_t* dest_pos = (uint8_t*)pDst->GetScanline(row) + destOffset; |
759 const uint8_t* src_pos = pSrcClone->GetScanline(row) + srcOffset; | 759 const uint8_t* src_pos = pSrcClone->GetScanline(row) + srcOffset; |
760 for (int col = 0; col < m_Width; col++) { | 760 for (int col = 0; col < m_Width; col++) { |
761 *dest_pos = *src_pos; | 761 *dest_pos = *src_pos; |
762 dest_pos += destBytes; | 762 dest_pos += destBytes; |
763 src_pos += srcBytes; | 763 src_pos += srcBytes; |
764 } | 764 } |
765 } | 765 } |
766 if (pSrcClone != pSrcBitmap && pSrcClone != pSrcBitmap->m_pAlphaMask) { | 766 if (pSrcClone != pSrcBitmap && pSrcClone != pSrcBitmap->m_pAlphaMask) { |
767 delete pSrcClone; | 767 delete pSrcClone; |
768 } | 768 } |
769 return TRUE; | 769 return TRUE; |
770 } | 770 } |
771 FX_BOOL CFX_DIBitmap::LoadChannel(FXDIB_Channel destChannel, int value) { | 771 FX_BOOL CFX_DIBitmap::LoadChannel(FXDIB_Channel destChannel, int value) { |
772 if (m_pBuffer == NULL) { | 772 if (!m_pBuffer) { |
773 return FALSE; | 773 return FALSE; |
774 } | 774 } |
775 int destOffset; | 775 int destOffset; |
776 if (destChannel == FXDIB_Alpha) { | 776 if (destChannel == FXDIB_Alpha) { |
777 if (IsAlphaMask()) { | 777 if (IsAlphaMask()) { |
778 if (!ConvertFormat(FXDIB_8bppMask)) { | 778 if (!ConvertFormat(FXDIB_8bppMask)) { |
779 return FALSE; | 779 return FALSE; |
780 } | 780 } |
781 destOffset = 0; | 781 destOffset = 0; |
782 } else { | 782 } else { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
823 for (int row = 0; row < m_Height; row++) { | 823 for (int row = 0; row < m_Height; row++) { |
824 uint8_t* scan_line = m_pBuffer + row * m_Pitch + destOffset; | 824 uint8_t* scan_line = m_pBuffer + row * m_Pitch + destOffset; |
825 for (int col = 0; col < m_Width; col++) { | 825 for (int col = 0; col < m_Width; col++) { |
826 *scan_line = value; | 826 *scan_line = value; |
827 scan_line += Bpp; | 827 scan_line += Bpp; |
828 } | 828 } |
829 } | 829 } |
830 return TRUE; | 830 return TRUE; |
831 } | 831 } |
832 FX_BOOL CFX_DIBitmap::MultiplyAlpha(const CFX_DIBSource* pSrcBitmap) { | 832 FX_BOOL CFX_DIBitmap::MultiplyAlpha(const CFX_DIBSource* pSrcBitmap) { |
833 if (m_pBuffer == NULL) { | 833 if (!m_pBuffer) { |
834 return FALSE; | 834 return FALSE; |
835 } | 835 } |
836 ASSERT(pSrcBitmap->IsAlphaMask()); | 836 ASSERT(pSrcBitmap->IsAlphaMask()); |
837 if (!pSrcBitmap->IsAlphaMask()) { | 837 if (!pSrcBitmap->IsAlphaMask()) { |
838 return FALSE; | 838 return FALSE; |
839 } | 839 } |
840 if (!IsAlphaMask() && !HasAlpha()) { | 840 if (!IsAlphaMask() && !HasAlpha()) { |
841 return LoadChannel(FXDIB_Alpha, pSrcBitmap, FXDIB_Alpha); | 841 return LoadChannel(FXDIB_Alpha, pSrcBitmap, FXDIB_Alpha); |
842 } | 842 } |
843 CFX_DIBitmap* pSrcClone = (CFX_DIBitmap*)pSrcBitmap; | 843 CFX_DIBitmap* pSrcClone = (CFX_DIBitmap*)pSrcBitmap; |
844 if (pSrcBitmap->GetWidth() != m_Width || | 844 if (pSrcBitmap->GetWidth() != m_Width || |
845 pSrcBitmap->GetHeight() != m_Height) { | 845 pSrcBitmap->GetHeight() != m_Height) { |
846 pSrcClone = pSrcBitmap->StretchTo(m_Width, m_Height); | 846 pSrcClone = pSrcBitmap->StretchTo(m_Width, m_Height); |
847 if (pSrcClone == NULL) { | 847 if (!pSrcClone) { |
848 return FALSE; | 848 return FALSE; |
849 } | 849 } |
850 } | 850 } |
851 if (IsAlphaMask()) { | 851 if (IsAlphaMask()) { |
852 if (!ConvertFormat(FXDIB_8bppMask)) { | 852 if (!ConvertFormat(FXDIB_8bppMask)) { |
853 if (pSrcClone != pSrcBitmap) { | 853 if (pSrcClone != pSrcBitmap) { |
854 delete pSrcClone; | 854 delete pSrcClone; |
855 } | 855 } |
856 return FALSE; | 856 return FALSE; |
857 } | 857 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
890 } else { | 890 } else { |
891 m_pAlphaMask->MultiplyAlpha(pSrcClone); | 891 m_pAlphaMask->MultiplyAlpha(pSrcClone); |
892 } | 892 } |
893 } | 893 } |
894 if (pSrcClone != pSrcBitmap) { | 894 if (pSrcClone != pSrcBitmap) { |
895 delete pSrcClone; | 895 delete pSrcClone; |
896 } | 896 } |
897 return TRUE; | 897 return TRUE; |
898 } | 898 } |
899 FX_BOOL CFX_DIBitmap::GetGrayData(void* pIccTransform) { | 899 FX_BOOL CFX_DIBitmap::GetGrayData(void* pIccTransform) { |
900 if (m_pBuffer == NULL) { | 900 if (!m_pBuffer) { |
901 return FALSE; | 901 return FALSE; |
902 } | 902 } |
903 switch (GetFormat()) { | 903 switch (GetFormat()) { |
904 case FXDIB_1bppRgb: { | 904 case FXDIB_1bppRgb: { |
905 if (m_pPalette == NULL) { | 905 if (!m_pPalette) { |
906 return FALSE; | 906 return FALSE; |
907 } | 907 } |
908 uint8_t gray[2]; | 908 uint8_t gray[2]; |
909 for (int i = 0; i < 2; i++) { | 909 for (int i = 0; i < 2; i++) { |
910 int r = (uint8_t)(m_pPalette[i] >> 16); | 910 int r = (uint8_t)(m_pPalette[i] >> 16); |
911 int g = (uint8_t)(m_pPalette[i] >> 8); | 911 int g = (uint8_t)(m_pPalette[i] >> 8); |
912 int b = (uint8_t)m_pPalette[i]; | 912 int b = (uint8_t)m_pPalette[i]; |
913 gray[i] = (uint8_t)FXRGB2GRAY(r, g, b); | 913 gray[i] = (uint8_t)FXRGB2GRAY(r, g, b); |
914 } | 914 } |
915 CFX_DIBitmap* pMask = new CFX_DIBitmap; | 915 CFX_DIBitmap* pMask = new CFX_DIBitmap; |
(...skipping 10 matching lines...) Expand all Loading... |
926 *dest_pos = gray[1]; | 926 *dest_pos = gray[1]; |
927 } | 927 } |
928 dest_pos++; | 928 dest_pos++; |
929 } | 929 } |
930 } | 930 } |
931 TakeOver(pMask); | 931 TakeOver(pMask); |
932 delete pMask; | 932 delete pMask; |
933 break; | 933 break; |
934 } | 934 } |
935 case FXDIB_8bppRgb: { | 935 case FXDIB_8bppRgb: { |
936 if (m_pPalette == NULL) { | 936 if (!m_pPalette) { |
937 return FALSE; | 937 return FALSE; |
938 } | 938 } |
939 uint8_t gray[256]; | 939 uint8_t gray[256]; |
940 for (int i = 0; i < 256; i++) { | 940 for (int i = 0; i < 256; i++) { |
941 int r = (uint8_t)(m_pPalette[i] >> 16); | 941 int r = (uint8_t)(m_pPalette[i] >> 16); |
942 int g = (uint8_t)(m_pPalette[i] >> 8); | 942 int g = (uint8_t)(m_pPalette[i] >> 8); |
943 int b = (uint8_t)m_pPalette[i]; | 943 int b = (uint8_t)m_pPalette[i]; |
944 gray[i] = (uint8_t)FXRGB2GRAY(r, g, b); | 944 gray[i] = (uint8_t)FXRGB2GRAY(r, g, b); |
945 } | 945 } |
946 CFX_DIBitmap* pMask = new CFX_DIBitmap; | 946 CFX_DIBitmap* pMask = new CFX_DIBitmap; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
994 TakeOver(pMask); | 994 TakeOver(pMask); |
995 delete pMask; | 995 delete pMask; |
996 break; | 996 break; |
997 } | 997 } |
998 default: | 998 default: |
999 return FALSE; | 999 return FALSE; |
1000 } | 1000 } |
1001 return TRUE; | 1001 return TRUE; |
1002 } | 1002 } |
1003 FX_BOOL CFX_DIBitmap::MultiplyAlpha(int alpha) { | 1003 FX_BOOL CFX_DIBitmap::MultiplyAlpha(int alpha) { |
1004 if (m_pBuffer == NULL) { | 1004 if (!m_pBuffer) { |
1005 return FALSE; | 1005 return FALSE; |
1006 } | 1006 } |
1007 switch (GetFormat()) { | 1007 switch (GetFormat()) { |
1008 case FXDIB_1bppMask: | 1008 case FXDIB_1bppMask: |
1009 if (!ConvertFormat(FXDIB_8bppMask)) { | 1009 if (!ConvertFormat(FXDIB_8bppMask)) { |
1010 return FALSE; | 1010 return FALSE; |
1011 } | 1011 } |
1012 MultiplyAlpha(alpha); | 1012 MultiplyAlpha(alpha); |
1013 break; | 1013 break; |
1014 case FXDIB_8bppMask: { | 1014 case FXDIB_8bppMask: { |
(...skipping 27 matching lines...) Expand all Loading... |
1042 if (!ConvertFormat(FXDIB_Argb)) { | 1042 if (!ConvertFormat(FXDIB_Argb)) { |
1043 return FALSE; | 1043 return FALSE; |
1044 } | 1044 } |
1045 MultiplyAlpha(alpha); | 1045 MultiplyAlpha(alpha); |
1046 } | 1046 } |
1047 break; | 1047 break; |
1048 } | 1048 } |
1049 return TRUE; | 1049 return TRUE; |
1050 } | 1050 } |
1051 FX_DWORD CFX_DIBitmap::GetPixel(int x, int y) const { | 1051 FX_DWORD CFX_DIBitmap::GetPixel(int x, int y) const { |
1052 if (m_pBuffer == NULL) { | 1052 if (!m_pBuffer) { |
1053 return 0; | 1053 return 0; |
1054 } | 1054 } |
1055 uint8_t* pos = m_pBuffer + y * m_Pitch + x * GetBPP() / 8; | 1055 uint8_t* pos = m_pBuffer + y * m_Pitch + x * GetBPP() / 8; |
1056 switch (GetFormat()) { | 1056 switch (GetFormat()) { |
1057 case FXDIB_1bppMask: { | 1057 case FXDIB_1bppMask: { |
1058 if ((*pos) & (1 << (7 - x % 8))) { | 1058 if ((*pos) & (1 << (7 - x % 8))) { |
1059 return 0xff000000; | 1059 return 0xff000000; |
1060 } | 1060 } |
1061 return 0; | 1061 return 0; |
1062 } | 1062 } |
(...skipping 12 matching lines...) Expand all Loading... |
1075 case FXDIB_Rgb32: | 1075 case FXDIB_Rgb32: |
1076 return FXARGB_GETDIB(pos) | 0xff000000; | 1076 return FXARGB_GETDIB(pos) | 0xff000000; |
1077 case FXDIB_Argb: | 1077 case FXDIB_Argb: |
1078 return FXARGB_GETDIB(pos); | 1078 return FXARGB_GETDIB(pos); |
1079 default: | 1079 default: |
1080 break; | 1080 break; |
1081 } | 1081 } |
1082 return 0; | 1082 return 0; |
1083 } | 1083 } |
1084 void CFX_DIBitmap::SetPixel(int x, int y, FX_DWORD color) { | 1084 void CFX_DIBitmap::SetPixel(int x, int y, FX_DWORD color) { |
1085 if (m_pBuffer == NULL) { | 1085 if (!m_pBuffer) { |
1086 return; | 1086 return; |
1087 } | 1087 } |
1088 if (x < 0 || x >= m_Width || y < 0 || y >= m_Height) { | 1088 if (x < 0 || x >= m_Width || y < 0 || y >= m_Height) { |
1089 return; | 1089 return; |
1090 } | 1090 } |
1091 uint8_t* pos = m_pBuffer + y * m_Pitch + x * GetBPP() / 8; | 1091 uint8_t* pos = m_pBuffer + y * m_Pitch + x * GetBPP() / 8; |
1092 switch (GetFormat()) { | 1092 switch (GetFormat()) { |
1093 case FXDIB_1bppMask: | 1093 case FXDIB_1bppMask: |
1094 if (color >> 24) { | 1094 if (color >> 24) { |
1095 *pos |= 1 << (7 - x % 8); | 1095 *pos |= 1 << (7 - x % 8); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 break; | 1150 break; |
1151 } | 1151 } |
1152 } | 1152 } |
1153 void CFX_DIBitmap::DownSampleScanline(int line, | 1153 void CFX_DIBitmap::DownSampleScanline(int line, |
1154 uint8_t* dest_scan, | 1154 uint8_t* dest_scan, |
1155 int dest_bpp, | 1155 int dest_bpp, |
1156 int dest_width, | 1156 int dest_width, |
1157 FX_BOOL bFlipX, | 1157 FX_BOOL bFlipX, |
1158 int clip_left, | 1158 int clip_left, |
1159 int clip_width) const { | 1159 int clip_width) const { |
1160 if (m_pBuffer == NULL) { | 1160 if (!m_pBuffer) { |
1161 return; | 1161 return; |
1162 } | 1162 } |
1163 int src_Bpp = m_bpp / 8; | 1163 int src_Bpp = m_bpp / 8; |
1164 uint8_t* scanline = m_pBuffer + line * m_Pitch; | 1164 uint8_t* scanline = m_pBuffer + line * m_Pitch; |
1165 if (src_Bpp == 0) { | 1165 if (src_Bpp == 0) { |
1166 for (int i = 0; i < clip_width; i++) { | 1166 for (int i = 0; i < clip_width; i++) { |
1167 FX_DWORD dest_x = clip_left + i; | 1167 FX_DWORD dest_x = clip_left + i; |
1168 FX_DWORD src_x = dest_x * m_Width / dest_width; | 1168 FX_DWORD src_x = dest_x * m_Width / dest_width; |
1169 if (bFlipX) { | 1169 if (bFlipX) { |
1170 src_x = m_Width - src_x - 1; | 1170 src_x = m_Width - src_x - 1; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1210 int dest_pos = i * src_Bpp; | 1210 int dest_pos = i * src_Bpp; |
1211 for (int b = 0; b < src_Bpp; b++) { | 1211 for (int b = 0; b < src_Bpp; b++) { |
1212 dest_scan[dest_pos + b] = scanline[src_x + b]; | 1212 dest_scan[dest_pos + b] = scanline[src_x + b]; |
1213 } | 1213 } |
1214 } | 1214 } |
1215 } | 1215 } |
1216 } | 1216 } |
1217 FX_BOOL CFX_DIBitmap::ConvertColorScale(FX_DWORD forecolor, | 1217 FX_BOOL CFX_DIBitmap::ConvertColorScale(FX_DWORD forecolor, |
1218 FX_DWORD backcolor) { | 1218 FX_DWORD backcolor) { |
1219 ASSERT(!IsAlphaMask()); | 1219 ASSERT(!IsAlphaMask()); |
1220 if (m_pBuffer == NULL || IsAlphaMask()) { | 1220 if (!m_pBuffer || IsAlphaMask()) { |
1221 return FALSE; | 1221 return FALSE; |
1222 } | 1222 } |
1223 int fc, fm, fy, fk, bc, bm, by, bk; | 1223 int fc, fm, fy, fk, bc, bm, by, bk; |
1224 int fr, fg, fb, br, bg, bb; | 1224 int fr, fg, fb, br, bg, bb; |
1225 FX_BOOL isCmykImage = IsCmykImage(); | 1225 FX_BOOL isCmykImage = IsCmykImage(); |
1226 if (isCmykImage) { | 1226 if (isCmykImage) { |
1227 fc = FXSYS_GetCValue(forecolor); | 1227 fc = FXSYS_GetCValue(forecolor); |
1228 fm = FXSYS_GetMValue(forecolor); | 1228 fm = FXSYS_GetMValue(forecolor); |
1229 fy = FXSYS_GetYValue(forecolor); | 1229 fy = FXSYS_GetYValue(forecolor); |
1230 fk = FXSYS_GetKValue(forecolor); | 1230 fk = FXSYS_GetKValue(forecolor); |
1231 bc = FXSYS_GetCValue(backcolor); | 1231 bc = FXSYS_GetCValue(backcolor); |
1232 bm = FXSYS_GetMValue(backcolor); | 1232 bm = FXSYS_GetMValue(backcolor); |
1233 by = FXSYS_GetYValue(backcolor); | 1233 by = FXSYS_GetYValue(backcolor); |
1234 bk = FXSYS_GetKValue(backcolor); | 1234 bk = FXSYS_GetKValue(backcolor); |
1235 } else { | 1235 } else { |
1236 fr = FXSYS_GetRValue(forecolor); | 1236 fr = FXSYS_GetRValue(forecolor); |
1237 fg = FXSYS_GetGValue(forecolor); | 1237 fg = FXSYS_GetGValue(forecolor); |
1238 fb = FXSYS_GetBValue(forecolor); | 1238 fb = FXSYS_GetBValue(forecolor); |
1239 br = FXSYS_GetRValue(backcolor); | 1239 br = FXSYS_GetRValue(backcolor); |
1240 bg = FXSYS_GetGValue(backcolor); | 1240 bg = FXSYS_GetGValue(backcolor); |
1241 bb = FXSYS_GetBValue(backcolor); | 1241 bb = FXSYS_GetBValue(backcolor); |
1242 } | 1242 } |
1243 if (m_bpp <= 8) { | 1243 if (m_bpp <= 8) { |
1244 if (isCmykImage) { | 1244 if (isCmykImage) { |
1245 if (forecolor == 0xff && backcolor == 0 && m_pPalette == NULL) { | 1245 if (forecolor == 0xff && backcolor == 0 && !m_pPalette) { |
1246 return TRUE; | 1246 return TRUE; |
1247 } | 1247 } |
1248 } else if (forecolor == 0 && backcolor == 0xffffff && m_pPalette == NULL) { | 1248 } else if (forecolor == 0 && backcolor == 0xffffff && !m_pPalette) { |
1249 return TRUE; | 1249 return TRUE; |
1250 } | 1250 } |
1251 if (m_pPalette == NULL) { | 1251 if (!m_pPalette) { |
1252 BuildPalette(); | 1252 BuildPalette(); |
1253 } | 1253 } |
1254 int size = 1 << m_bpp; | 1254 int size = 1 << m_bpp; |
1255 if (isCmykImage) { | 1255 if (isCmykImage) { |
1256 for (int i = 0; i < size; i++) { | 1256 for (int i = 0; i < size; i++) { |
1257 uint8_t b, g, r; | 1257 uint8_t b, g, r; |
1258 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(m_pPalette[i]), | 1258 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(m_pPalette[i]), |
1259 FXSYS_GetMValue(m_pPalette[i]), | 1259 FXSYS_GetMValue(m_pPalette[i]), |
1260 FXSYS_GetYValue(m_pPalette[i]), | 1260 FXSYS_GetYValue(m_pPalette[i]), |
1261 FXSYS_GetKValue(m_pPalette[i]), r, g, b); | 1261 FXSYS_GetKValue(m_pPalette[i]), r, g, b); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1329 *scanline = br + (fr - br) * gray / 255; | 1329 *scanline = br + (fr - br) * gray / 255; |
1330 scanline += gap; | 1330 scanline += gap; |
1331 } | 1331 } |
1332 } | 1332 } |
1333 } | 1333 } |
1334 return TRUE; | 1334 return TRUE; |
1335 } | 1335 } |
1336 FX_BOOL CFX_DIBitmap::DitherFS(const FX_DWORD* pPalette, | 1336 FX_BOOL CFX_DIBitmap::DitherFS(const FX_DWORD* pPalette, |
1337 int pal_size, | 1337 int pal_size, |
1338 const FX_RECT* pRect) { | 1338 const FX_RECT* pRect) { |
1339 if (m_pBuffer == NULL) { | 1339 if (!m_pBuffer) { |
1340 return FALSE; | 1340 return FALSE; |
1341 } | 1341 } |
1342 if (m_bpp != 8 && m_pPalette && m_AlphaFlag != 0) { | 1342 if (m_bpp != 8 && m_pPalette && m_AlphaFlag != 0) { |
1343 return FALSE; | 1343 return FALSE; |
1344 } | 1344 } |
1345 if (m_Width < 4 && m_Height < 4) { | 1345 if (m_Width < 4 && m_Height < 4) { |
1346 return FALSE; | 1346 return FALSE; |
1347 } | 1347 } |
1348 FX_RECT rect(0, 0, m_Width, m_Height); | 1348 FX_RECT rect(0, 0, m_Width, m_Height); |
1349 if (pRect) { | 1349 if (pRect) { |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1483 *dest_scan = *src_scan; | 1483 *dest_scan = *src_scan; |
1484 dest_scan--; | 1484 dest_scan--; |
1485 src_scan++; | 1485 src_scan++; |
1486 } | 1486 } |
1487 } | 1487 } |
1488 } | 1488 } |
1489 return pFlipped; | 1489 return pFlipped; |
1490 } | 1490 } |
1491 CFX_DIBExtractor::CFX_DIBExtractor(const CFX_DIBSource* pSrc) { | 1491 CFX_DIBExtractor::CFX_DIBExtractor(const CFX_DIBSource* pSrc) { |
1492 m_pBitmap = NULL; | 1492 m_pBitmap = NULL; |
1493 if (pSrc->GetBuffer() == NULL) { | 1493 if (pSrc->GetBuffer()) { |
1494 m_pBitmap = pSrc->Clone(); | |
1495 } else { | |
1496 m_pBitmap = new CFX_DIBitmap; | 1494 m_pBitmap = new CFX_DIBitmap; |
1497 if (!m_pBitmap->Create(pSrc->GetWidth(), pSrc->GetHeight(), | 1495 if (!m_pBitmap->Create(pSrc->GetWidth(), pSrc->GetHeight(), |
1498 pSrc->GetFormat(), pSrc->GetBuffer())) { | 1496 pSrc->GetFormat(), pSrc->GetBuffer())) { |
1499 delete m_pBitmap; | 1497 delete m_pBitmap; |
1500 m_pBitmap = NULL; | 1498 m_pBitmap = NULL; |
1501 return; | 1499 return; |
1502 } | 1500 } |
1503 m_pBitmap->CopyPalette(pSrc->GetPalette()); | 1501 m_pBitmap->CopyPalette(pSrc->GetPalette()); |
1504 m_pBitmap->CopyAlphaMask(pSrc->m_pAlphaMask); | 1502 m_pBitmap->CopyAlphaMask(pSrc->m_pAlphaMask); |
| 1503 } else { |
| 1504 m_pBitmap = pSrc->Clone(); |
1505 } | 1505 } |
1506 } | 1506 } |
1507 CFX_DIBExtractor::~CFX_DIBExtractor() { | 1507 CFX_DIBExtractor::~CFX_DIBExtractor() { |
1508 delete m_pBitmap; | 1508 delete m_pBitmap; |
1509 } | 1509 } |
1510 CFX_FilteredDIB::CFX_FilteredDIB() { | 1510 CFX_FilteredDIB::CFX_FilteredDIB() { |
1511 m_pScanline = NULL; | 1511 m_pScanline = NULL; |
1512 m_pSrc = NULL; | 1512 m_pSrc = NULL; |
1513 } | 1513 } |
1514 CFX_FilteredDIB::~CFX_FilteredDIB() { | 1514 CFX_FilteredDIB::~CFX_FilteredDIB() { |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1633 } | 1633 } |
1634 FX_BOOL CFX_ImageRenderer::Continue(IFX_Pause* pPause) { | 1634 FX_BOOL CFX_ImageRenderer::Continue(IFX_Pause* pPause) { |
1635 if (m_Status == 1) { | 1635 if (m_Status == 1) { |
1636 return m_Stretcher.Continue(pPause); | 1636 return m_Stretcher.Continue(pPause); |
1637 } | 1637 } |
1638 if (m_Status == 2) { | 1638 if (m_Status == 2) { |
1639 if (m_pTransformer->Continue(pPause)) { | 1639 if (m_pTransformer->Continue(pPause)) { |
1640 return TRUE; | 1640 return TRUE; |
1641 } | 1641 } |
1642 CFX_DIBitmap* pBitmap = m_pTransformer->m_Storer.Detach(); | 1642 CFX_DIBitmap* pBitmap = m_pTransformer->m_Storer.Detach(); |
1643 if (pBitmap == NULL) { | 1643 if (!pBitmap) { |
1644 return FALSE; | 1644 return FALSE; |
1645 } | 1645 } |
1646 if (pBitmap->GetBuffer() == NULL) { | 1646 if (!pBitmap->GetBuffer()) { |
1647 delete pBitmap; | 1647 delete pBitmap; |
1648 return FALSE; | 1648 return FALSE; |
1649 } | 1649 } |
1650 if (pBitmap->IsAlphaMask()) { | 1650 if (pBitmap->IsAlphaMask()) { |
1651 if (m_BitmapAlpha != 255) { | 1651 if (m_BitmapAlpha != 255) { |
1652 if (m_AlphaFlag >> 8) { | 1652 if (m_AlphaFlag >> 8) { |
1653 m_AlphaFlag = | 1653 m_AlphaFlag = |
1654 (((uint8_t)((m_AlphaFlag & 0xff) * m_BitmapAlpha / 255)) | | 1654 (((uint8_t)((m_AlphaFlag & 0xff) * m_BitmapAlpha / 255)) | |
1655 ((m_AlphaFlag >> 8) << 8)); | 1655 ((m_AlphaFlag >> 8) << 8)); |
1656 } else { | 1656 } else { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1715 if (!m_pBitmap->Create(width, height, src_format)) { | 1715 if (!m_pBitmap->Create(width, height, src_format)) { |
1716 delete m_pBitmap; | 1716 delete m_pBitmap; |
1717 m_pBitmap = NULL; | 1717 m_pBitmap = NULL; |
1718 return FALSE; | 1718 return FALSE; |
1719 } | 1719 } |
1720 if (pSrcPalette) { | 1720 if (pSrcPalette) { |
1721 m_pBitmap->CopyPalette(pSrcPalette); | 1721 m_pBitmap->CopyPalette(pSrcPalette); |
1722 } | 1722 } |
1723 return TRUE; | 1723 return TRUE; |
1724 } | 1724 } |
OLD | NEW |