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

Side by Side Diff: core/src/fxge/agg/agg23/fx_agg_driver.cpp

Issue 1177483002: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 5 years, 6 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/src/fxcrt/xml_int.h ('k') | core/src/fxge/android/fpf_skiafont.h » ('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 "../../../../include/fxge/fx_ge.h" 7 #include "../../../../include/fxge/fx_ge.h"
8 #include "../../dib/dib_int.h" 8 #include "../../dib/dib_int.h"
9 #include "../../ge/text_int.h" 9 #include "../../ge/text_int.h"
10 #include "../../../../include/fxcodec/fx_codec.h" 10 #include "../../../../include/fxcodec/fx_codec.h"
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 } 395 }
396 if (m_bRgbByteOrder) { 396 if (m_bRgbByteOrder) {
397 if (Bpp == 4 && bDestAlpha) { 397 if (Bpp == 4 && bDestAlpha) {
398 for (int col = col_start; col < col_end; col ++) { 398 for (int col = col_start; col < col_end; col ++) {
399 int src_alpha; 399 int src_alpha;
400 if (clip_scan) { 400 if (clip_scan) {
401 src_alpha = m_Alpha * clip_scan[col] / 255; 401 src_alpha = m_Alpha * clip_scan[col] / 255;
402 } else { 402 } else {
403 src_alpha = m_Alpha; 403 src_alpha = m_Alpha;
404 } 404 }
405 FX_BYTE dest_alpha = ori_scan[3] + src_alpha - ori_scan[3] * src_alpha / 255; 405 uint8_t dest_alpha = ori_scan[3] + src_alpha - ori_scan[3] * src_alpha / 255;
406 dest_scan[3] = dest_alpha; 406 dest_scan[3] = dest_alpha;
407 int alpha_ratio = src_alpha * 255 / dest_alpha; 407 int alpha_ratio = src_alpha * 255 / dest_alpha;
408 if (m_bFullCover) { 408 if (m_bFullCover) {
409 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alp ha_ratio); 409 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alp ha_ratio);
410 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, a lpha_ratio); 410 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, a lpha_ratio);
411 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, al pha_ratio); 411 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, al pha_ratio);
412 dest_scan++; 412 dest_scan++;
413 ori_scan++; 413 ori_scan++;
414 } else { 414 } else {
415 int r = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alpha_rati o); 415 int r = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alpha_rati o);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 continue; 469 continue;
470 } else { 470 } else {
471 if (dest_scan[3] == 0) { 471 if (dest_scan[3] == 0) {
472 dest_scan[3] = src_alpha_covered; 472 dest_scan[3] = src_alpha_covered;
473 *dest_scan ++ = m_Blue; 473 *dest_scan ++ = m_Blue;
474 *dest_scan ++ = m_Green; 474 *dest_scan ++ = m_Green;
475 *dest_scan = m_Red; 475 *dest_scan = m_Red;
476 dest_scan += 2; 476 dest_scan += 2;
477 continue; 477 continue;
478 } 478 }
479 FX_BYTE cover = cover_scan[col]; 479 uint8_t cover = cover_scan[col];
480 dest_scan[3] = FXDIB_ALPHA_MERGE(dest_scan[3], src_alpha, co ver); 480 dest_scan[3] = FXDIB_ALPHA_MERGE(dest_scan[3], src_alpha, co ver);
481 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, cover); 481 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, cover);
482 dest_scan ++; 482 dest_scan ++;
483 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, cover); 483 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, cover);
484 dest_scan ++; 484 dest_scan ++;
485 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, cover); 485 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, cover);
486 dest_scan += 2; 486 dest_scan += 2;
487 } 487 }
488 } 488 }
489 return; 489 return;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 *dest_scan = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alph a); 528 *dest_scan = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alph a);
529 } else { 529 } else {
530 int gray = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alpha) ; 530 int gray = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alpha) ;
531 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, cover_scan[ col]); 531 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, cover_scan[ col]);
532 dest_scan++; 532 dest_scan++;
533 } 533 }
534 } 534 }
535 } else { 535 } else {
536 int index = 0; 536 int index = 0;
537 if (m_pDevice->GetPalette() == NULL) { 537 if (m_pDevice->GetPalette() == NULL) {
538 index = ((FX_BYTE)m_Color == 0xff) ? 1 : 0; 538 index = ((uint8_t)m_Color == 0xff) ? 1 : 0;
539 } else { 539 } else {
540 for (int i = 0; i < 2; i ++) 540 for (int i = 0; i < 2; i ++)
541 if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) { 541 if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) {
542 index = i; 542 index = i;
543 } 543 }
544 } 544 }
545 FX_LPBYTE dest_scan1 = dest_scan; 545 FX_LPBYTE dest_scan1 = dest_scan;
546 for (int col = col_start; col < col_end; col ++) { 546 for (int col = col_start; col < col_end; col ++) {
547 int src_alpha; 547 int src_alpha;
548 if (clip_scan) { 548 if (clip_scan) {
(...skipping 17 matching lines...) Expand all
566 int clip_left, int clip_right, FX_LPBYTE clip_scan, 566 int clip_left, int clip_right, FX_LPBYTE clip_scan,
567 FX_LPBYTE dest_extra_alpha_scan) 567 FX_LPBYTE dest_extra_alpha_scan)
568 { 568 {
569 ASSERT(!m_bRgbByteOrder); 569 ASSERT(!m_bRgbByteOrder);
570 ASSERT(!m_pDevice->IsCmykImage()); 570 ASSERT(!m_pDevice->IsCmykImage());
571 int col_start = span_left < clip_left ? clip_left - span_left : 0; 571 int col_start = span_left < clip_left ? clip_left - span_left : 0;
572 int col_end = (span_left + span_len) < clip_right ? span_len : (clip_rig ht - span_left); 572 int col_end = (span_left + span_len) < clip_right ? span_len : (clip_rig ht - span_left);
573 dest_scan += col_start / 8; 573 dest_scan += col_start / 8;
574 int index = 0; 574 int index = 0;
575 if (m_pDevice->GetPalette() == NULL) { 575 if (m_pDevice->GetPalette() == NULL) {
576 index = ((FX_BYTE)m_Color == 0xff) ? 1 : 0; 576 index = ((uint8_t)m_Color == 0xff) ? 1 : 0;
577 } else { 577 } else {
578 for (int i = 0; i < 2; i ++) 578 for (int i = 0; i < 2; i ++)
579 if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) { 579 if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) {
580 index = i; 580 index = i;
581 } 581 }
582 } 582 }
583 FX_LPBYTE dest_scan1 = dest_scan; 583 FX_LPBYTE dest_scan1 = dest_scan;
584 for (int col = col_start; col < col_end; col ++) { 584 for (int col = col_start; col < col_end; col ++) {
585 int src_alpha; 585 int src_alpha;
586 if (clip_scan) { 586 if (clip_scan) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; 621 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255;
622 } else { 622 } else {
623 src_alpha = m_Alpha * cover_scan[col] / 255; 623 src_alpha = m_Alpha * cover_scan[col] / 255;
624 } 624 }
625 } 625 }
626 if (src_alpha) { 626 if (src_alpha) {
627 if (src_alpha == 255) { 627 if (src_alpha == 255) {
628 *dest_scan = m_Gray; 628 *dest_scan = m_Gray;
629 *dest_extra_alpha_scan = m_Alpha; 629 *dest_extra_alpha_scan = m_Alpha;
630 } else { 630 } else {
631 FX_BYTE dest_alpha = (*dest_extra_alpha_scan) + src_alph a - 631 uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alph a -
632 (*dest_extra_alpha_scan) * src_alph a / 255; 632 (*dest_extra_alpha_scan) * src_alph a / 255;
633 *dest_extra_alpha_scan++ = dest_alpha; 633 *dest_extra_alpha_scan++ = dest_alpha;
634 int alpha_ratio = src_alpha * 255 / dest_alpha; 634 int alpha_ratio = src_alpha * 255 / dest_alpha;
635 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha _ratio); 635 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha _ratio);
636 dest_scan ++; 636 dest_scan ++;
637 continue; 637 continue;
638 } 638 }
639 } 639 }
640 dest_extra_alpha_scan ++; 640 dest_extra_alpha_scan ++;
641 dest_scan ++; 641 dest_scan ++;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 if (clip_scan) { 680 if (clip_scan) {
681 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; 681 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255;
682 } else { 682 } else {
683 src_alpha = m_Alpha * cover_scan[col] / 255; 683 src_alpha = m_Alpha * cover_scan[col] / 255;
684 } 684 }
685 } 685 }
686 if (src_alpha) { 686 if (src_alpha) {
687 if (src_alpha == 255) { 687 if (src_alpha == 255) {
688 *(FX_DWORD*)dest_scan = m_Color; 688 *(FX_DWORD*)dest_scan = m_Color;
689 } else { 689 } else {
690 FX_BYTE dest_alpha = dest_scan[3] + src_alpha - dest_sca n[3] * src_alpha / 255; 690 uint8_t dest_alpha = dest_scan[3] + src_alpha - dest_sca n[3] * src_alpha / 255;
691 dest_scan[3] = dest_alpha; 691 dest_scan[3] = dest_alpha;
692 int alpha_ratio = src_alpha * 255 / dest_alpha; 692 int alpha_ratio = src_alpha * 255 / dest_alpha;
693 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio); 693 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio);
694 dest_scan ++; 694 dest_scan ++;
695 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio); 695 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio);
696 dest_scan ++; 696 dest_scan ++;
697 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio); 697 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio);
698 dest_scan += 2; 698 dest_scan += 2;
699 continue; 699 continue;
700 } 700 }
(...skipping 22 matching lines...) Expand all
723 *(FX_DWORD*)dest_scan = m_Color; 723 *(FX_DWORD*)dest_scan = m_Color;
724 } else { 724 } else {
725 if (dest_scan[3] == 0) { 725 if (dest_scan[3] == 0) {
726 dest_scan[3] = src_alpha; 726 dest_scan[3] = src_alpha;
727 *dest_scan++ = m_Blue; 727 *dest_scan++ = m_Blue;
728 *dest_scan++ = m_Green; 728 *dest_scan++ = m_Green;
729 *dest_scan = m_Red; 729 *dest_scan = m_Red;
730 dest_scan += 2; 730 dest_scan += 2;
731 continue; 731 continue;
732 } 732 }
733 FX_BYTE dest_alpha = dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255; 733 uint8_t dest_alpha = dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255;
734 dest_scan[3] = dest_alpha; 734 dest_scan[3] = dest_alpha;
735 int alpha_ratio = src_alpha * 255 / dest_alpha; 735 int alpha_ratio = src_alpha * 255 / dest_alpha;
736 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_rat io); 736 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_rat io);
737 dest_scan ++; 737 dest_scan ++;
738 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ra tio); 738 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ra tio);
739 dest_scan ++; 739 dest_scan ++;
740 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_rati o); 740 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_rati o);
741 dest_scan += 2; 741 dest_scan += 2;
742 continue; 742 continue;
743 } 743 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
796 } 796 }
797 } else { 797 } else {
798 if (clip_scan) { 798 if (clip_scan) {
799 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; 799 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255;
800 } else { 800 } else {
801 src_alpha = m_Alpha * cover_scan[col] / 255; 801 src_alpha = m_Alpha * cover_scan[col] / 255;
802 } 802 }
803 } 803 }
804 if (src_alpha) { 804 if (src_alpha) {
805 if (src_alpha == 255) { 805 if (src_alpha == 255) {
806 *dest_scan++ = (FX_BYTE)m_Blue; 806 *dest_scan++ = (uint8_t)m_Blue;
807 *dest_scan++ = (FX_BYTE)m_Green; 807 *dest_scan++ = (uint8_t)m_Green;
808 *dest_scan++ = (FX_BYTE)m_Red; 808 *dest_scan++ = (uint8_t)m_Red;
809 *dest_extra_alpha_scan++ = (FX_BYTE)m_Alpha; 809 *dest_extra_alpha_scan++ = (uint8_t)m_Alpha;
810 continue; 810 continue;
811 } else { 811 } else {
812 FX_BYTE dest_alpha = (*dest_extra_alpha_scan) + src_alph a - 812 uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alph a -
813 (*dest_extra_alpha_scan) * src_alph a / 255; 813 (*dest_extra_alpha_scan) * src_alph a / 255;
814 *dest_extra_alpha_scan++ = dest_alpha; 814 *dest_extra_alpha_scan++ = dest_alpha;
815 int alpha_ratio = src_alpha * 255 / dest_alpha; 815 int alpha_ratio = src_alpha * 255 / dest_alpha;
816 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio); 816 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio);
817 dest_scan ++; 817 dest_scan ++;
818 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio); 818 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio);
819 dest_scan ++; 819 dest_scan ++;
820 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio); 820 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio);
821 dest_scan ++; 821 dest_scan ++;
822 continue; 822 continue;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 } else { 886 } else {
887 if (clip_scan) { 887 if (clip_scan) {
888 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; 888 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255;
889 } else { 889 } else {
890 src_alpha = m_Alpha * cover_scan[col] / 255; 890 src_alpha = m_Alpha * cover_scan[col] / 255;
891 } 891 }
892 } 892 }
893 if (src_alpha) { 893 if (src_alpha) {
894 if (src_alpha == 255) { 894 if (src_alpha == 255) {
895 *(FX_CMYK*)dest_scan = m_Color; 895 *(FX_CMYK*)dest_scan = m_Color;
896 *dest_extra_alpha_scan = (FX_BYTE)m_Alpha; 896 *dest_extra_alpha_scan = (uint8_t)m_Alpha;
897 } else { 897 } else {
898 FX_BYTE dest_alpha = (*dest_extra_alpha_scan) + src_alph a - 898 uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alph a -
899 (*dest_extra_alpha_scan) * src_alph a / 255; 899 (*dest_extra_alpha_scan) * src_alph a / 255;
900 *dest_extra_alpha_scan++ = dest_alpha; 900 *dest_extra_alpha_scan++ = dest_alpha;
901 int alpha_ratio = src_alpha * 255 / dest_alpha; 901 int alpha_ratio = src_alpha * 255 / dest_alpha;
902 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio); 902 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio);
903 dest_scan ++; 903 dest_scan ++;
904 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio); 904 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio);
905 dest_scan ++; 905 dest_scan ++;
906 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio); 906 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio);
907 dest_scan ++; 907 dest_scan ++;
908 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha _ratio); 908 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha _ratio);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1022 } else { 1022 } else {
1023 pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); 1023 pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule();
1024 } 1024 }
1025 if (m_pDevice->GetBPP() == 8) { 1025 if (m_pDevice->GetBPP() == 8) {
1026 ASSERT(!m_bRgbByteOrder); 1026 ASSERT(!m_bRgbByteOrder);
1027 composite_span = &CFX_Renderer::CompositeSpanGray; 1027 composite_span = &CFX_Renderer::CompositeSpanGray;
1028 if (m_pDevice->IsAlphaMask()) { 1028 if (m_pDevice->IsAlphaMask()) {
1029 m_Gray = 255; 1029 m_Gray = 255;
1030 } else { 1030 } else {
1031 if (pIccTransform) { 1031 if (pIccTransform) {
1032 FX_BYTE gray; 1032 uint8_t gray;
1033 color = bObjectCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(col or); 1033 color = bObjectCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(col or);
1034 pIccModule->TranslateScanline(pIccTransform, &gray, (FX_LPCB YTE)&color, 1); 1034 pIccModule->TranslateScanline(pIccTransform, &gray, (FX_LPCB YTE)&color, 1);
1035 m_Gray = gray; 1035 m_Gray = gray;
1036 } else { 1036 } else {
1037 if (bObjectCMYK) { 1037 if (bObjectCMYK) {
1038 FX_BYTE r, g, b; 1038 uint8_t r, g, b;
1039 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMVal ue(color), FXSYS_GetYValue(color), FXSYS_GetKValue(color), 1039 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMVal ue(color), FXSYS_GetYValue(color), FXSYS_GetKValue(color),
1040 r, g, b); 1040 r, g, b);
1041 m_Gray = FXRGB2GRAY(r, g, b); 1041 m_Gray = FXRGB2GRAY(r, g, b);
1042 } else { 1042 } else {
1043 m_Gray = FXRGB2GRAY(FXARGB_R(color), FXARGB_G(color), FX ARGB_B(color)); 1043 m_Gray = FXRGB2GRAY(FXARGB_R(color), FXARGB_G(color), FX ARGB_B(color));
1044 } 1044 }
1045 } 1045 }
1046 } 1046 }
1047 return TRUE; 1047 return TRUE;
1048 } 1048 }
(...skipping 24 matching lines...) Expand all
1073 ((FX_LPBYTE)&m_Color)[3] = m_Alpha; 1073 ((FX_LPBYTE)&m_Color)[3] = m_Alpha;
1074 m_Red = ((FX_LPBYTE)&m_Color)[2]; 1074 m_Red = ((FX_LPBYTE)&m_Color)[2];
1075 m_Green = ((FX_LPBYTE)&m_Color)[1]; 1075 m_Green = ((FX_LPBYTE)&m_Color)[1];
1076 m_Blue = ((FX_LPBYTE)&m_Color)[0]; 1076 m_Blue = ((FX_LPBYTE)&m_Color)[0];
1077 if (m_bRgbByteOrder) { 1077 if (m_bRgbByteOrder) {
1078 m_Color = FXARGB_TODIB(m_Color); 1078 m_Color = FXARGB_TODIB(m_Color);
1079 m_Color = FXARGB_TOBGRORDERDIB(m_Color); 1079 m_Color = FXARGB_TOBGRORDERDIB(m_Color);
1080 } 1080 }
1081 } else { 1081 } else {
1082 if (bObjectCMYK) { 1082 if (bObjectCMYK) {
1083 FX_BYTE r, g, b; 1083 uint8_t r, g, b;
1084 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(c olor), FXSYS_GetYValue(color), FXSYS_GetKValue(color), 1084 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(c olor), FXSYS_GetYValue(color), FXSYS_GetKValue(color),
1085 r, g, b); 1085 r, g, b);
1086 m_Color = FXARGB_MAKE(m_Alpha, r, g, b); 1086 m_Color = FXARGB_MAKE(m_Alpha, r, g, b);
1087 if (m_bRgbByteOrder) { 1087 if (m_bRgbByteOrder) {
1088 m_Color = FXARGB_TOBGRORDERDIB(m_Color); 1088 m_Color = FXARGB_TOBGRORDERDIB(m_Color);
1089 } else { 1089 } else {
1090 m_Color = FXARGB_TODIB(m_Color); 1090 m_Color = FXARGB_TODIB(m_Color);
1091 } 1091 }
1092 m_Red = r; 1092 m_Red = r;
1093 m_Green = g; 1093 m_Green = g;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 return FALSE; 1185 return FALSE;
1186 } 1186 }
1187 } 1187 }
1188 return TRUE; 1188 return TRUE;
1189 } 1189 }
1190 void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb) 1190 void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb)
1191 { 1191 {
1192 if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) { 1192 if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) {
1193 return; 1193 return;
1194 } 1194 }
1195 FX_LPBYTE pos = (FX_BYTE*)pBitmap->GetBuffer() + y * pBitmap->GetPitch() + x * pBitmap->GetBPP() / 8; 1195 FX_LPBYTE pos = (uint8_t*)pBitmap->GetBuffer() + y * pBitmap->GetPitch() + x * pBitmap->GetBPP() / 8;
1196 if (pBitmap->GetFormat() == FXDIB_Argb) { 1196 if (pBitmap->GetFormat() == FXDIB_Argb) {
1197 FXARGB_SETRGBORDERDIB(pos, ArgbGamma(argb)); 1197 FXARGB_SETRGBORDERDIB(pos, ArgbGamma(argb));
1198 } else { 1198 } else {
1199 int alpha = FXARGB_A(argb); 1199 int alpha = FXARGB_A(argb);
1200 pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255; 1200 pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255;
1201 pos[1] = (FXARGB_G(argb) * alpha + pos[1] * (255 - alpha)) / 255; 1201 pos[1] = (FXARGB_G(argb) * alpha + pos[1] * (255 - alpha)) / 255;
1202 pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255; 1202 pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255;
1203 } 1203 }
1204 } 1204 }
1205 void RgbByteOrderCompositeRect(CFX_DIBitmap* pBitmap, int left, int top, int wid th, int height, FX_ARGB argb) 1205 void RgbByteOrderCompositeRect(CFX_DIBitmap* pBitmap, int left, int top, int wid th, int height, FX_ARGB argb)
1206 { 1206 {
1207 int src_alpha = FXARGB_A(argb); 1207 int src_alpha = FXARGB_A(argb);
1208 if (src_alpha == 0) { 1208 if (src_alpha == 0) {
1209 return; 1209 return;
1210 } 1210 }
1211 FX_RECT rect(left, top, left + width, top + height); 1211 FX_RECT rect(left, top, left + width, top + height);
1212 rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); 1212 rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight());
1213 width = rect.Width(); 1213 width = rect.Width();
1214 int src_r = FXARGB_R(argb), src_g = FXARGB_G(argb), src_b = FXARGB_B(argb); 1214 int src_r = FXARGB_R(argb), src_g = FXARGB_G(argb), src_b = FXARGB_B(argb);
1215 int Bpp = pBitmap->GetBPP() / 8; 1215 int Bpp = pBitmap->GetBPP() / 8;
1216 FX_BOOL bAlpha = pBitmap->HasAlpha(); 1216 FX_BOOL bAlpha = pBitmap->HasAlpha();
1217 int dib_argb = FXARGB_TOBGRORDERDIB(argb); 1217 int dib_argb = FXARGB_TOBGRORDERDIB(argb);
1218 FX_BYTE* pBuffer = pBitmap->GetBuffer(); 1218 uint8_t* pBuffer = pBitmap->GetBuffer();
1219 if (src_alpha == 255) { 1219 if (src_alpha == 255) {
1220 for (int row = rect.top; row < rect.bottom; row ++) { 1220 for (int row = rect.top; row < rect.bottom; row ++) {
1221 FX_LPBYTE dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.lef t * Bpp; 1221 FX_LPBYTE dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.lef t * Bpp;
1222 if (Bpp == 4) { 1222 if (Bpp == 4) {
1223 FX_DWORD* scan = (FX_DWORD*)dest_scan; 1223 FX_DWORD* scan = (FX_DWORD*)dest_scan;
1224 for (int col = 0; col < width; col ++) { 1224 for (int col = 0; col < width; col ++) {
1225 *scan ++ = dib_argb; 1225 *scan ++ = dib_argb;
1226 } 1226 }
1227 } else { 1227 } else {
1228 for (int col = 0; col < width; col ++) { 1228 for (int col = 0; col < width; col ++) {
1229 *dest_scan ++ = src_r; 1229 *dest_scan ++ = src_r;
1230 *dest_scan ++ = src_g; 1230 *dest_scan ++ = src_g;
1231 *dest_scan ++ = src_b; 1231 *dest_scan ++ = src_b;
1232 } 1232 }
1233 } 1233 }
1234 } 1234 }
1235 return; 1235 return;
1236 } 1236 }
1237 src_r = FX_GAMMA(src_r); 1237 src_r = FX_GAMMA(src_r);
1238 src_g = FX_GAMMA(src_g); 1238 src_g = FX_GAMMA(src_g);
1239 src_b = FX_GAMMA(src_b); 1239 src_b = FX_GAMMA(src_b);
1240 for (int row = rect.top; row < rect.bottom; row ++) { 1240 for (int row = rect.top; row < rect.bottom; row ++) {
1241 FX_LPBYTE dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp; 1241 FX_LPBYTE dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp;
1242 if (bAlpha) { 1242 if (bAlpha) {
1243 for (int col = 0; col < width; col ++) { 1243 for (int col = 0; col < width; col ++) {
1244 FX_BYTE back_alpha = dest_scan[3]; 1244 uint8_t back_alpha = dest_scan[3];
1245 if (back_alpha == 0) { 1245 if (back_alpha == 0) {
1246 FXARGB_SETRGBORDERDIB(dest_scan, FXARGB_MAKE(src_alpha, src_ r, src_g, src_b)); 1246 FXARGB_SETRGBORDERDIB(dest_scan, FXARGB_MAKE(src_alpha, src_ r, src_g, src_b));
1247 dest_scan += 4; 1247 dest_scan += 4;
1248 continue; 1248 continue;
1249 } 1249 }
1250 FX_BYTE dest_alpha = back_alpha + src_alpha - back_alpha * src_a lpha / 255; 1250 uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_a lpha / 255;
1251 dest_scan[3] = dest_alpha; 1251 dest_scan[3] = dest_alpha;
1252 int alpha_ratio = src_alpha * 255 / dest_alpha; 1252 int alpha_ratio = src_alpha * 255 / dest_alpha;
1253 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); 1253 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio);
1254 dest_scan++; 1254 dest_scan++;
1255 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); 1255 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio);
1256 dest_scan++; 1256 dest_scan++;
1257 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); 1257 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio);
1258 dest_scan += 2; 1258 dest_scan += 2;
1259 } 1259 }
1260 } else { 1260 } else {
(...skipping 18 matching lines...) Expand all
1279 return; 1279 return;
1280 } 1280 }
1281 pBitmap->GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetW idth(), pSrcBitmap->GetHeight(), src_left, src_top, NULL); 1281 pBitmap->GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetW idth(), pSrcBitmap->GetHeight(), src_left, src_top, NULL);
1282 if (width == 0 || height == 0) { 1282 if (width == 0 || height == 0) {
1283 return; 1283 return;
1284 } 1284 }
1285 int Bpp = pBitmap->GetBPP() / 8; 1285 int Bpp = pBitmap->GetBPP() / 8;
1286 FXDIB_Format dest_format = pBitmap->GetFormat(); 1286 FXDIB_Format dest_format = pBitmap->GetFormat();
1287 FXDIB_Format src_format = pSrcBitmap->GetFormat(); 1287 FXDIB_Format src_format = pSrcBitmap->GetFormat();
1288 int pitch = pBitmap->GetPitch(); 1288 int pitch = pBitmap->GetPitch();
1289 FX_BYTE* buffer = pBitmap->GetBuffer(); 1289 uint8_t* buffer = pBitmap->GetBuffer();
1290 if (dest_format == src_format) { 1290 if (dest_format == src_format) {
1291 for (int row = 0; row < height; row ++) { 1291 for (int row = 0; row < height; row ++) {
1292 FX_LPBYTE dest_scan = buffer + (dest_top + row) * pitch + dest_left * Bpp; 1292 FX_LPBYTE dest_scan = buffer + (dest_top + row) * pitch + dest_left * Bpp;
1293 FX_LPBYTE src_scan = (FX_LPBYTE)pSrcBitmap->GetScanline(src_top + ro w) + src_left * Bpp; 1293 FX_LPBYTE src_scan = (FX_LPBYTE)pSrcBitmap->GetScanline(src_top + ro w) + src_left * Bpp;
1294 if (Bpp == 4) { 1294 if (Bpp == 4) {
1295 for (int col = 0; col < width; col ++) { 1295 for (int col = 0; col < width; col ++) {
1296 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_scan[3], src_scan[0 ], src_scan[1], src_scan[2])); 1296 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_scan[3], src_scan[0 ], src_scan[1], src_scan[2]));
1297 dest_scan += 4; 1297 dest_scan += 4;
1298 src_scan += 4; 1298 src_scan += 4;
1299 } 1299 }
1300 } else { 1300 } else {
1301 for (int col = 0; col < width; col ++) { 1301 for (int col = 0; col < width; col ++) {
1302 *dest_scan++ = src_scan[2]; 1302 *dest_scan++ = src_scan[2];
1303 *dest_scan++ = src_scan[1]; 1303 *dest_scan++ = src_scan[1];
1304 *dest_scan++ = src_scan[0]; 1304 *dest_scan++ = src_scan[0];
1305 src_scan += 3; 1305 src_scan += 3;
1306 } 1306 }
1307 } 1307 }
1308 } 1308 }
1309 return; 1309 return;
1310 } 1310 }
1311 FX_LPBYTE dest_buf = buffer + dest_top * pitch + dest_left * Bpp; 1311 FX_LPBYTE dest_buf = buffer + dest_top * pitch + dest_left * Bpp;
1312 if (dest_format == FXDIB_Rgb) { 1312 if (dest_format == FXDIB_Rgb) {
1313 if (src_format == FXDIB_Rgb32) { 1313 if (src_format == FXDIB_Rgb32) {
1314 for (int row = 0; row < height; row ++) { 1314 for (int row = 0; row < height; row ++) {
1315 FX_LPBYTE dest_scan = dest_buf + row * pitch; 1315 FX_LPBYTE dest_scan = dest_buf + row * pitch;
1316 FX_LPBYTE src_scan = (FX_BYTE*)pSrcBitmap->GetScanline(src_top + row) + src_left * 4; 1316 FX_LPBYTE src_scan = (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * 4;
1317 for (int col = 0; col < width; col ++) { 1317 for (int col = 0; col < width; col ++) {
1318 *dest_scan++ = src_scan[2]; 1318 *dest_scan++ = src_scan[2];
1319 *dest_scan++ = src_scan[1]; 1319 *dest_scan++ = src_scan[1];
1320 *dest_scan++ = src_scan[0]; 1320 *dest_scan++ = src_scan[0];
1321 src_scan += 4; 1321 src_scan += 4;
1322 } 1322 }
1323 } 1323 }
1324 } else { 1324 } else {
1325 ASSERT(FALSE); 1325 ASSERT(FALSE);
1326 } 1326 }
1327 } else if (dest_format == FXDIB_Argb || dest_format == FXDIB_Rgb32) { 1327 } else if (dest_format == FXDIB_Argb || dest_format == FXDIB_Rgb32) {
1328 if (src_format == FXDIB_Rgb) { 1328 if (src_format == FXDIB_Rgb) {
1329 for (int row = 0; row < height; row ++) { 1329 for (int row = 0; row < height; row ++) {
1330 FX_BYTE* dest_scan = (FX_BYTE*)(dest_buf + row * pitch); 1330 uint8_t* dest_scan = (uint8_t*)(dest_buf + row * pitch);
1331 FX_LPBYTE src_scan = (FX_BYTE*)pSrcBitmap->GetScanline(src_top + row) + src_left * 3; 1331 FX_LPBYTE src_scan = (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * 3;
1332 if (src_format == FXDIB_Argb) { 1332 if (src_format == FXDIB_Argb) {
1333 for (int col = 0; col < width; col ++) { 1333 for (int col = 0; col < width; col ++) {
1334 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, FX_GAMMA(src_ scan[0]), FX_GAMMA(src_scan[1]), FX_GAMMA(src_scan[2]))); 1334 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, FX_GAMMA(src_ scan[0]), FX_GAMMA(src_scan[1]), FX_GAMMA(src_scan[2])));
1335 dest_scan += 4; 1335 dest_scan += 4;
1336 src_scan += 3; 1336 src_scan += 3;
1337 } 1337 }
1338 } else { 1338 } else {
1339 for (int col = 0; col < width; col ++) { 1339 for (int col = 0; col < width; col ++) {
1340 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_scan[1], src_scan[2])); 1340 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_scan[1], src_scan[2]));
1341 dest_scan += 4; 1341 dest_scan += 4;
(...skipping 10 matching lines...) Expand all
1352 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_ scan[1], src_scan[2])); 1352 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_ scan[1], src_scan[2]));
1353 src_scan += 4; 1353 src_scan += 4;
1354 dest_scan += 4; 1354 dest_scan += 4;
1355 } 1355 }
1356 } 1356 }
1357 } 1357 }
1358 } else { 1358 } else {
1359 ASSERT(FALSE); 1359 ASSERT(FALSE);
1360 } 1360 }
1361 } 1361 }
1362 FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, FX_BYTE alpha) 1362 FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, uint8_t alpha)
1363 { 1363 {
1364 FX_BYTE r, g, b; 1364 uint8_t r, g, b;
1365 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), FXSYS_GetYV alue(cmyk), FXSYS_GetKValue(cmyk), 1365 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), FXSYS_GetYV alue(cmyk), FXSYS_GetKValue(cmyk),
1366 r, g, b); 1366 r, g, b);
1367 return ArgbEncode(alpha, r, g, b); 1367 return ArgbEncode(alpha, r, g, b);
1368 } 1368 }
1369 FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice, int x, int y, FX_DWORD color, int al pha_flag, void* pIccTransform) 1369 FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice, int x, int y, FX_DWORD color, int al pha_flag, void* pIccTransform)
1370 { 1370 {
1371 FX_BOOL bObjCMYK = FXGETFLAG_COLORTYPE(alpha_flag); 1371 FX_BOOL bObjCMYK = FXGETFLAG_COLORTYPE(alpha_flag);
1372 int alpha = bObjCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); 1372 int alpha = bObjCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color);
1373 if (pIccTransform) { 1373 if (pIccTransform) {
1374 ICodec_IccModule* pIccModule = CFX_GEModule::Get()->GetCodecModule()->Ge tIccModule(); 1374 ICodec_IccModule* pIccModule = CFX_GEModule::Get()->GetCodecModule()->Ge tIccModule();
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
1601 IFX_RenderDeviceDriver* pDriver = new CFX_AggDeviceDriver(pBitmap, dither_bi ts, FALSE, pOriDevice, FALSE); 1601 IFX_RenderDeviceDriver* pDriver = new CFX_AggDeviceDriver(pBitmap, dither_bi ts, FALSE, pOriDevice, FALSE);
1602 SetDeviceDriver(pDriver); 1602 SetDeviceDriver(pDriver);
1603 return TRUE; 1603 return TRUE;
1604 } 1604 }
1605 CFX_FxgeDevice::~CFX_FxgeDevice() 1605 CFX_FxgeDevice::~CFX_FxgeDevice()
1606 { 1606 {
1607 if (m_bOwnedBitmap && GetBitmap()) { 1607 if (m_bOwnedBitmap && GetBitmap()) {
1608 delete GetBitmap(); 1608 delete GetBitmap();
1609 } 1609 }
1610 } 1610 }
OLDNEW
« no previous file with comments | « core/src/fxcrt/xml_int.h ('k') | core/src/fxge/android/fpf_skiafont.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698