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

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

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
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 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 404 }
405 if (m_bRgbByteOrder) { 405 if (m_bRgbByteOrder) {
406 if (Bpp == 4 && bDestAlpha) { 406 if (Bpp == 4 && bDestAlpha) {
407 for (int col = col_start; col < col_end; col ++) { 407 for (int col = col_start; col < col_end; col ++) {
408 int src_alpha; 408 int src_alpha;
409 if (clip_scan) { 409 if (clip_scan) {
410 src_alpha = m_Alpha * clip_scan[col] / 255; 410 src_alpha = m_Alpha * clip_scan[col] / 255;
411 } else { 411 } else {
412 src_alpha = m_Alpha; 412 src_alpha = m_Alpha;
413 } 413 }
414 FX_BYTE dest_alpha = ori_scan[3] + src_alpha - ori_scan[3] * src_alpha / 255; 414 uint8_t dest_alpha = ori_scan[3] + src_alpha - ori_scan[3] * src_alpha / 255;
415 dest_scan[3] = dest_alpha; 415 dest_scan[3] = dest_alpha;
416 int alpha_ratio = src_alpha * 255 / dest_alpha; 416 int alpha_ratio = src_alpha * 255 / dest_alpha;
417 if (m_bFullCover) { 417 if (m_bFullCover) {
418 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alp ha_ratio); 418 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alp ha_ratio);
419 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, a lpha_ratio); 419 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, a lpha_ratio);
420 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, al pha_ratio); 420 *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, al pha_ratio);
421 dest_scan++; 421 dest_scan++;
422 ori_scan++; 422 ori_scan++;
423 } else { 423 } else {
424 int r = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alpha_rati o); 424 int r = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alpha_rati o);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 continue; 478 continue;
479 } else { 479 } else {
480 if (dest_scan[3] == 0) { 480 if (dest_scan[3] == 0) {
481 dest_scan[3] = src_alpha_covered; 481 dest_scan[3] = src_alpha_covered;
482 *dest_scan ++ = m_Blue; 482 *dest_scan ++ = m_Blue;
483 *dest_scan ++ = m_Green; 483 *dest_scan ++ = m_Green;
484 *dest_scan = m_Red; 484 *dest_scan = m_Red;
485 dest_scan += 2; 485 dest_scan += 2;
486 continue; 486 continue;
487 } 487 }
488 FX_BYTE cover = cover_scan[col]; 488 uint8_t cover = cover_scan[col];
489 dest_scan[3] = FXDIB_ALPHA_MERGE(dest_scan[3], src_alpha, co ver); 489 dest_scan[3] = FXDIB_ALPHA_MERGE(dest_scan[3], src_alpha, co ver);
490 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, cover); 490 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, cover);
491 dest_scan ++; 491 dest_scan ++;
492 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, cover); 492 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, cover);
493 dest_scan ++; 493 dest_scan ++;
494 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, cover); 494 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, cover);
495 dest_scan += 2; 495 dest_scan += 2;
496 } 496 }
497 } 497 }
498 return; 498 return;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 *dest_scan = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alph a); 537 *dest_scan = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alph a);
538 } else { 538 } else {
539 int gray = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alpha) ; 539 int gray = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alpha) ;
540 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, cover_scan[ col]); 540 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, cover_scan[ col]);
541 dest_scan++; 541 dest_scan++;
542 } 542 }
543 } 543 }
544 } else { 544 } else {
545 int index = 0; 545 int index = 0;
546 if (m_pDevice->GetPalette() == NULL) { 546 if (m_pDevice->GetPalette() == NULL) {
547 index = ((FX_BYTE)m_Color == 0xff) ? 1 : 0; 547 index = ((uint8_t)m_Color == 0xff) ? 1 : 0;
548 } else { 548 } else {
549 for (int i = 0; i < 2; i ++) 549 for (int i = 0; i < 2; i ++)
550 if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) { 550 if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) {
551 index = i; 551 index = i;
552 } 552 }
553 } 553 }
554 FX_LPBYTE dest_scan1 = dest_scan; 554 FX_LPBYTE dest_scan1 = dest_scan;
555 for (int col = col_start; col < col_end; col ++) { 555 for (int col = col_start; col < col_end; col ++) {
556 int src_alpha; 556 int src_alpha;
557 if (clip_scan) { 557 if (clip_scan) {
(...skipping 17 matching lines...) Expand all
575 int clip_left, int clip_right, FX_LPBYTE clip_scan, 575 int clip_left, int clip_right, FX_LPBYTE clip_scan,
576 FX_LPBYTE dest_extra_alpha_scan) 576 FX_LPBYTE dest_extra_alpha_scan)
577 { 577 {
578 ASSERT(!m_bRgbByteOrder); 578 ASSERT(!m_bRgbByteOrder);
579 ASSERT(!m_pDevice->IsCmykImage()); 579 ASSERT(!m_pDevice->IsCmykImage());
580 int col_start = span_left < clip_left ? clip_left - span_left : 0; 580 int col_start = span_left < clip_left ? clip_left - span_left : 0;
581 int col_end = (span_left + span_len) < clip_right ? span_len : (clip_rig ht - span_left); 581 int col_end = (span_left + span_len) < clip_right ? span_len : (clip_rig ht - span_left);
582 dest_scan += col_start / 8; 582 dest_scan += col_start / 8;
583 int index = 0; 583 int index = 0;
584 if (m_pDevice->GetPalette() == NULL) { 584 if (m_pDevice->GetPalette() == NULL) {
585 index = ((FX_BYTE)m_Color == 0xff) ? 1 : 0; 585 index = ((uint8_t)m_Color == 0xff) ? 1 : 0;
586 } else { 586 } else {
587 for (int i = 0; i < 2; i ++) 587 for (int i = 0; i < 2; i ++)
588 if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) { 588 if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) {
589 index = i; 589 index = i;
590 } 590 }
591 } 591 }
592 FX_LPBYTE dest_scan1 = dest_scan; 592 FX_LPBYTE dest_scan1 = dest_scan;
593 for (int col = col_start; col < col_end; col ++) { 593 for (int col = col_start; col < col_end; col ++) {
594 int src_alpha; 594 int src_alpha;
595 if (clip_scan) { 595 if (clip_scan) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; 630 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255;
631 } else { 631 } else {
632 src_alpha = m_Alpha * cover_scan[col] / 255; 632 src_alpha = m_Alpha * cover_scan[col] / 255;
633 } 633 }
634 } 634 }
635 if (src_alpha) { 635 if (src_alpha) {
636 if (src_alpha == 255) { 636 if (src_alpha == 255) {
637 *dest_scan = m_Gray; 637 *dest_scan = m_Gray;
638 *dest_extra_alpha_scan = m_Alpha; 638 *dest_extra_alpha_scan = m_Alpha;
639 } else { 639 } else {
640 FX_BYTE dest_alpha = (*dest_extra_alpha_scan) + src_alph a - 640 uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alph a -
641 (*dest_extra_alpha_scan) * src_alph a / 255; 641 (*dest_extra_alpha_scan) * src_alph a / 255;
642 *dest_extra_alpha_scan++ = dest_alpha; 642 *dest_extra_alpha_scan++ = dest_alpha;
643 int alpha_ratio = src_alpha * 255 / dest_alpha; 643 int alpha_ratio = src_alpha * 255 / dest_alpha;
644 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha _ratio); 644 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha _ratio);
645 dest_scan ++; 645 dest_scan ++;
646 continue; 646 continue;
647 } 647 }
648 } 648 }
649 dest_extra_alpha_scan ++; 649 dest_extra_alpha_scan ++;
650 dest_scan ++; 650 dest_scan ++;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 if (clip_scan) { 689 if (clip_scan) {
690 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; 690 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255;
691 } else { 691 } else {
692 src_alpha = m_Alpha * cover_scan[col] / 255; 692 src_alpha = m_Alpha * cover_scan[col] / 255;
693 } 693 }
694 } 694 }
695 if (src_alpha) { 695 if (src_alpha) {
696 if (src_alpha == 255) { 696 if (src_alpha == 255) {
697 *(FX_DWORD*)dest_scan = m_Color; 697 *(FX_DWORD*)dest_scan = m_Color;
698 } else { 698 } else {
699 FX_BYTE dest_alpha = dest_scan[3] + src_alpha - dest_sca n[3] * src_alpha / 255; 699 uint8_t dest_alpha = dest_scan[3] + src_alpha - dest_sca n[3] * src_alpha / 255;
700 dest_scan[3] = dest_alpha; 700 dest_scan[3] = dest_alpha;
701 int alpha_ratio = src_alpha * 255 / dest_alpha; 701 int alpha_ratio = src_alpha * 255 / dest_alpha;
702 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio); 702 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio);
703 dest_scan ++; 703 dest_scan ++;
704 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio); 704 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio);
705 dest_scan ++; 705 dest_scan ++;
706 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio); 706 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio);
707 dest_scan += 2; 707 dest_scan += 2;
708 continue; 708 continue;
709 } 709 }
(...skipping 22 matching lines...) Expand all
732 *(FX_DWORD*)dest_scan = m_Color; 732 *(FX_DWORD*)dest_scan = m_Color;
733 } else { 733 } else {
734 if (dest_scan[3] == 0) { 734 if (dest_scan[3] == 0) {
735 dest_scan[3] = src_alpha; 735 dest_scan[3] = src_alpha;
736 *dest_scan++ = m_Blue; 736 *dest_scan++ = m_Blue;
737 *dest_scan++ = m_Green; 737 *dest_scan++ = m_Green;
738 *dest_scan = m_Red; 738 *dest_scan = m_Red;
739 dest_scan += 2; 739 dest_scan += 2;
740 continue; 740 continue;
741 } 741 }
742 FX_BYTE dest_alpha = dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255; 742 uint8_t dest_alpha = dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255;
743 dest_scan[3] = dest_alpha; 743 dest_scan[3] = dest_alpha;
744 int alpha_ratio = src_alpha * 255 / dest_alpha; 744 int alpha_ratio = src_alpha * 255 / dest_alpha;
745 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_rat io); 745 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_rat io);
746 dest_scan ++; 746 dest_scan ++;
747 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ra tio); 747 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ra tio);
748 dest_scan ++; 748 dest_scan ++;
749 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_rati o); 749 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_rati o);
750 dest_scan += 2; 750 dest_scan += 2;
751 continue; 751 continue;
752 } 752 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 } 805 }
806 } else { 806 } else {
807 if (clip_scan) { 807 if (clip_scan) {
808 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; 808 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255;
809 } else { 809 } else {
810 src_alpha = m_Alpha * cover_scan[col] / 255; 810 src_alpha = m_Alpha * cover_scan[col] / 255;
811 } 811 }
812 } 812 }
813 if (src_alpha) { 813 if (src_alpha) {
814 if (src_alpha == 255) { 814 if (src_alpha == 255) {
815 *dest_scan++ = (FX_BYTE)m_Blue; 815 *dest_scan++ = (uint8_t)m_Blue;
816 *dest_scan++ = (FX_BYTE)m_Green; 816 *dest_scan++ = (uint8_t)m_Green;
817 *dest_scan++ = (FX_BYTE)m_Red; 817 *dest_scan++ = (uint8_t)m_Red;
818 *dest_extra_alpha_scan++ = (FX_BYTE)m_Alpha; 818 *dest_extra_alpha_scan++ = (uint8_t)m_Alpha;
819 continue; 819 continue;
820 } else { 820 } else {
821 FX_BYTE dest_alpha = (*dest_extra_alpha_scan) + src_alph a - 821 uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alph a -
822 (*dest_extra_alpha_scan) * src_alph a / 255; 822 (*dest_extra_alpha_scan) * src_alph a / 255;
823 *dest_extra_alpha_scan++ = dest_alpha; 823 *dest_extra_alpha_scan++ = dest_alpha;
824 int alpha_ratio = src_alpha * 255 / dest_alpha; 824 int alpha_ratio = src_alpha * 255 / dest_alpha;
825 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio); 825 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio);
826 dest_scan ++; 826 dest_scan ++;
827 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio); 827 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio);
828 dest_scan ++; 828 dest_scan ++;
829 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio); 829 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio);
830 dest_scan ++; 830 dest_scan ++;
831 continue; 831 continue;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 } else { 895 } else {
896 if (clip_scan) { 896 if (clip_scan) {
897 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; 897 src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255;
898 } else { 898 } else {
899 src_alpha = m_Alpha * cover_scan[col] / 255; 899 src_alpha = m_Alpha * cover_scan[col] / 255;
900 } 900 }
901 } 901 }
902 if (src_alpha) { 902 if (src_alpha) {
903 if (src_alpha == 255) { 903 if (src_alpha == 255) {
904 *(FX_CMYK*)dest_scan = m_Color; 904 *(FX_CMYK*)dest_scan = m_Color;
905 *dest_extra_alpha_scan = (FX_BYTE)m_Alpha; 905 *dest_extra_alpha_scan = (uint8_t)m_Alpha;
906 } else { 906 } else {
907 FX_BYTE dest_alpha = (*dest_extra_alpha_scan) + src_alph a - 907 uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alph a -
908 (*dest_extra_alpha_scan) * src_alph a / 255; 908 (*dest_extra_alpha_scan) * src_alph a / 255;
909 *dest_extra_alpha_scan++ = dest_alpha; 909 *dest_extra_alpha_scan++ = dest_alpha;
910 int alpha_ratio = src_alpha * 255 / dest_alpha; 910 int alpha_ratio = src_alpha * 255 / dest_alpha;
911 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio); 911 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ ratio);
912 dest_scan ++; 912 dest_scan ++;
913 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio); 913 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alph a_ratio);
914 dest_scan ++; 914 dest_scan ++;
915 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio); 915 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha _ratio);
916 dest_scan ++; 916 dest_scan ++;
917 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha _ratio); 917 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha _ratio);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 } else { 1031 } else {
1032 pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); 1032 pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule();
1033 } 1033 }
1034 if (m_pDevice->GetBPP() == 8) { 1034 if (m_pDevice->GetBPP() == 8) {
1035 ASSERT(!m_bRgbByteOrder); 1035 ASSERT(!m_bRgbByteOrder);
1036 composite_span = &CFX_Renderer::CompositeSpanGray; 1036 composite_span = &CFX_Renderer::CompositeSpanGray;
1037 if (m_pDevice->IsAlphaMask()) { 1037 if (m_pDevice->IsAlphaMask()) {
1038 m_Gray = 255; 1038 m_Gray = 255;
1039 } else { 1039 } else {
1040 if (pIccTransform) { 1040 if (pIccTransform) {
1041 FX_BYTE gray; 1041 uint8_t gray;
1042 color = bObjectCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(col or); 1042 color = bObjectCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(col or);
1043 pIccModule->TranslateScanline(pIccTransform, &gray, (FX_LPCB YTE)&color, 1); 1043 pIccModule->TranslateScanline(pIccTransform, &gray, (FX_LPCB YTE)&color, 1);
1044 m_Gray = gray; 1044 m_Gray = gray;
1045 } else { 1045 } else {
1046 if (bObjectCMYK) { 1046 if (bObjectCMYK) {
1047 FX_BYTE r, g, b; 1047 uint8_t r, g, b;
1048 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMVal ue(color), FXSYS_GetYValue(color), FXSYS_GetKValue(color), 1048 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMVal ue(color), FXSYS_GetYValue(color), FXSYS_GetKValue(color),
1049 r, g, b); 1049 r, g, b);
1050 m_Gray = FXRGB2GRAY(r, g, b); 1050 m_Gray = FXRGB2GRAY(r, g, b);
1051 } else { 1051 } else {
1052 m_Gray = FXRGB2GRAY(FXARGB_R(color), FXARGB_G(color), FX ARGB_B(color)); 1052 m_Gray = FXRGB2GRAY(FXARGB_R(color), FXARGB_G(color), FX ARGB_B(color));
1053 } 1053 }
1054 } 1054 }
1055 } 1055 }
1056 return TRUE; 1056 return TRUE;
1057 } 1057 }
(...skipping 24 matching lines...) Expand all
1082 ((FX_LPBYTE)&m_Color)[3] = m_Alpha; 1082 ((FX_LPBYTE)&m_Color)[3] = m_Alpha;
1083 m_Red = ((FX_LPBYTE)&m_Color)[2]; 1083 m_Red = ((FX_LPBYTE)&m_Color)[2];
1084 m_Green = ((FX_LPBYTE)&m_Color)[1]; 1084 m_Green = ((FX_LPBYTE)&m_Color)[1];
1085 m_Blue = ((FX_LPBYTE)&m_Color)[0]; 1085 m_Blue = ((FX_LPBYTE)&m_Color)[0];
1086 if (m_bRgbByteOrder) { 1086 if (m_bRgbByteOrder) {
1087 m_Color = FXARGB_TODIB(m_Color); 1087 m_Color = FXARGB_TODIB(m_Color);
1088 m_Color = FXARGB_TOBGRORDERDIB(m_Color); 1088 m_Color = FXARGB_TOBGRORDERDIB(m_Color);
1089 } 1089 }
1090 } else { 1090 } else {
1091 if (bObjectCMYK) { 1091 if (bObjectCMYK) {
1092 FX_BYTE r, g, b; 1092 uint8_t r, g, b;
1093 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(c olor), FXSYS_GetYValue(color), FXSYS_GetKValue(color), 1093 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(c olor), FXSYS_GetYValue(color), FXSYS_GetKValue(color),
1094 r, g, b); 1094 r, g, b);
1095 m_Color = FXARGB_MAKE(m_Alpha, r, g, b); 1095 m_Color = FXARGB_MAKE(m_Alpha, r, g, b);
1096 if (m_bRgbByteOrder) { 1096 if (m_bRgbByteOrder) {
1097 m_Color = FXARGB_TOBGRORDERDIB(m_Color); 1097 m_Color = FXARGB_TOBGRORDERDIB(m_Color);
1098 } else { 1098 } else {
1099 m_Color = FXARGB_TODIB(m_Color); 1099 m_Color = FXARGB_TODIB(m_Color);
1100 } 1100 }
1101 m_Red = r; 1101 m_Red = r;
1102 m_Green = g; 1102 m_Green = g;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 return FALSE; 1194 return FALSE;
1195 } 1195 }
1196 } 1196 }
1197 return TRUE; 1197 return TRUE;
1198 } 1198 }
1199 void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb) 1199 void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb)
1200 { 1200 {
1201 if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) { 1201 if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) {
1202 return; 1202 return;
1203 } 1203 }
1204 FX_LPBYTE pos = (FX_BYTE*)pBitmap->GetBuffer() + y * pBitmap->GetPitch() + x * pBitmap->GetBPP() / 8; 1204 FX_LPBYTE pos = (uint8_t*)pBitmap->GetBuffer() + y * pBitmap->GetPitch() + x * pBitmap->GetBPP() / 8;
1205 if (pBitmap->GetFormat() == FXDIB_Argb) { 1205 if (pBitmap->GetFormat() == FXDIB_Argb) {
1206 FXARGB_SETRGBORDERDIB(pos, ArgbGamma(argb)); 1206 FXARGB_SETRGBORDERDIB(pos, ArgbGamma(argb));
1207 } else { 1207 } else {
1208 int alpha = FXARGB_A(argb); 1208 int alpha = FXARGB_A(argb);
1209 pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255; 1209 pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255;
1210 pos[1] = (FXARGB_G(argb) * alpha + pos[1] * (255 - alpha)) / 255; 1210 pos[1] = (FXARGB_G(argb) * alpha + pos[1] * (255 - alpha)) / 255;
1211 pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255; 1211 pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255;
1212 } 1212 }
1213 } 1213 }
1214 void RgbByteOrderCompositeRect(CFX_DIBitmap* pBitmap, int left, int top, int wid th, int height, FX_ARGB argb) 1214 void RgbByteOrderCompositeRect(CFX_DIBitmap* pBitmap, int left, int top, int wid th, int height, FX_ARGB argb)
1215 { 1215 {
1216 int src_alpha = FXARGB_A(argb); 1216 int src_alpha = FXARGB_A(argb);
1217 if (src_alpha == 0) { 1217 if (src_alpha == 0) {
1218 return; 1218 return;
1219 } 1219 }
1220 FX_RECT rect(left, top, left + width, top + height); 1220 FX_RECT rect(left, top, left + width, top + height);
1221 rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); 1221 rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight());
1222 width = rect.Width(); 1222 width = rect.Width();
1223 int src_r = FXARGB_R(argb), src_g = FXARGB_G(argb), src_b = FXARGB_B(argb); 1223 int src_r = FXARGB_R(argb), src_g = FXARGB_G(argb), src_b = FXARGB_B(argb);
1224 int Bpp = pBitmap->GetBPP() / 8; 1224 int Bpp = pBitmap->GetBPP() / 8;
1225 FX_BOOL bAlpha = pBitmap->HasAlpha(); 1225 FX_BOOL bAlpha = pBitmap->HasAlpha();
1226 int dib_argb = FXARGB_TOBGRORDERDIB(argb); 1226 int dib_argb = FXARGB_TOBGRORDERDIB(argb);
1227 FX_BYTE* pBuffer = pBitmap->GetBuffer(); 1227 uint8_t* pBuffer = pBitmap->GetBuffer();
1228 if (src_alpha == 255) { 1228 if (src_alpha == 255) {
1229 for (int row = rect.top; row < rect.bottom; row ++) { 1229 for (int row = rect.top; row < rect.bottom; row ++) {
1230 FX_LPBYTE dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.lef t * Bpp; 1230 FX_LPBYTE dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.lef t * Bpp;
1231 if (Bpp == 4) { 1231 if (Bpp == 4) {
1232 FX_DWORD* scan = (FX_DWORD*)dest_scan; 1232 FX_DWORD* scan = (FX_DWORD*)dest_scan;
1233 for (int col = 0; col < width; col ++) { 1233 for (int col = 0; col < width; col ++) {
1234 *scan ++ = dib_argb; 1234 *scan ++ = dib_argb;
1235 } 1235 }
1236 } else { 1236 } else {
1237 for (int col = 0; col < width; col ++) { 1237 for (int col = 0; col < width; col ++) {
1238 *dest_scan ++ = src_r; 1238 *dest_scan ++ = src_r;
1239 *dest_scan ++ = src_g; 1239 *dest_scan ++ = src_g;
1240 *dest_scan ++ = src_b; 1240 *dest_scan ++ = src_b;
1241 } 1241 }
1242 } 1242 }
1243 } 1243 }
1244 return; 1244 return;
1245 } 1245 }
1246 src_r = FX_GAMMA(src_r); 1246 src_r = FX_GAMMA(src_r);
1247 src_g = FX_GAMMA(src_g); 1247 src_g = FX_GAMMA(src_g);
1248 src_b = FX_GAMMA(src_b); 1248 src_b = FX_GAMMA(src_b);
1249 for (int row = rect.top; row < rect.bottom; row ++) { 1249 for (int row = rect.top; row < rect.bottom; row ++) {
1250 FX_LPBYTE dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp; 1250 FX_LPBYTE dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp;
1251 if (bAlpha) { 1251 if (bAlpha) {
1252 for (int col = 0; col < width; col ++) { 1252 for (int col = 0; col < width; col ++) {
1253 FX_BYTE back_alpha = dest_scan[3]; 1253 uint8_t back_alpha = dest_scan[3];
1254 if (back_alpha == 0) { 1254 if (back_alpha == 0) {
1255 FXARGB_SETRGBORDERDIB(dest_scan, FXARGB_MAKE(src_alpha, src_ r, src_g, src_b)); 1255 FXARGB_SETRGBORDERDIB(dest_scan, FXARGB_MAKE(src_alpha, src_ r, src_g, src_b));
1256 dest_scan += 4; 1256 dest_scan += 4;
1257 continue; 1257 continue;
1258 } 1258 }
1259 FX_BYTE dest_alpha = back_alpha + src_alpha - back_alpha * src_a lpha / 255; 1259 uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_a lpha / 255;
1260 dest_scan[3] = dest_alpha; 1260 dest_scan[3] = dest_alpha;
1261 int alpha_ratio = src_alpha * 255 / dest_alpha; 1261 int alpha_ratio = src_alpha * 255 / dest_alpha;
1262 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); 1262 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio);
1263 dest_scan++; 1263 dest_scan++;
1264 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); 1264 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio);
1265 dest_scan++; 1265 dest_scan++;
1266 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); 1266 *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio);
1267 dest_scan += 2; 1267 dest_scan += 2;
1268 } 1268 }
1269 } else { 1269 } else {
(...skipping 18 matching lines...) Expand all
1288 return; 1288 return;
1289 } 1289 }
1290 pBitmap->GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetW idth(), pSrcBitmap->GetHeight(), src_left, src_top, NULL); 1290 pBitmap->GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetW idth(), pSrcBitmap->GetHeight(), src_left, src_top, NULL);
1291 if (width == 0 || height == 0) { 1291 if (width == 0 || height == 0) {
1292 return; 1292 return;
1293 } 1293 }
1294 int Bpp = pBitmap->GetBPP() / 8; 1294 int Bpp = pBitmap->GetBPP() / 8;
1295 FXDIB_Format dest_format = pBitmap->GetFormat(); 1295 FXDIB_Format dest_format = pBitmap->GetFormat();
1296 FXDIB_Format src_format = pSrcBitmap->GetFormat(); 1296 FXDIB_Format src_format = pSrcBitmap->GetFormat();
1297 int pitch = pBitmap->GetPitch(); 1297 int pitch = pBitmap->GetPitch();
1298 FX_BYTE* buffer = pBitmap->GetBuffer(); 1298 uint8_t* buffer = pBitmap->GetBuffer();
1299 if (dest_format == src_format) { 1299 if (dest_format == src_format) {
1300 for (int row = 0; row < height; row ++) { 1300 for (int row = 0; row < height; row ++) {
1301 FX_LPBYTE dest_scan = buffer + (dest_top + row) * pitch + dest_left * Bpp; 1301 FX_LPBYTE dest_scan = buffer + (dest_top + row) * pitch + dest_left * Bpp;
1302 FX_LPBYTE src_scan = (FX_LPBYTE)pSrcBitmap->GetScanline(src_top + ro w) + src_left * Bpp; 1302 FX_LPBYTE src_scan = (FX_LPBYTE)pSrcBitmap->GetScanline(src_top + ro w) + src_left * Bpp;
1303 if (Bpp == 4) { 1303 if (Bpp == 4) {
1304 for (int col = 0; col < width; col ++) { 1304 for (int col = 0; col < width; col ++) {
1305 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_scan[3], src_scan[0 ], src_scan[1], src_scan[2])); 1305 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_scan[3], src_scan[0 ], src_scan[1], src_scan[2]));
1306 dest_scan += 4; 1306 dest_scan += 4;
1307 src_scan += 4; 1307 src_scan += 4;
1308 } 1308 }
1309 } else { 1309 } else {
1310 for (int col = 0; col < width; col ++) { 1310 for (int col = 0; col < width; col ++) {
1311 *dest_scan++ = src_scan[2]; 1311 *dest_scan++ = src_scan[2];
1312 *dest_scan++ = src_scan[1]; 1312 *dest_scan++ = src_scan[1];
1313 *dest_scan++ = src_scan[0]; 1313 *dest_scan++ = src_scan[0];
1314 src_scan += 3; 1314 src_scan += 3;
1315 } 1315 }
1316 } 1316 }
1317 } 1317 }
1318 return; 1318 return;
1319 } 1319 }
1320 FX_LPBYTE dest_buf = buffer + dest_top * pitch + dest_left * Bpp; 1320 FX_LPBYTE dest_buf = buffer + dest_top * pitch + dest_left * Bpp;
1321 if (dest_format == FXDIB_Rgb) { 1321 if (dest_format == FXDIB_Rgb) {
1322 if (src_format == FXDIB_Rgb32) { 1322 if (src_format == FXDIB_Rgb32) {
1323 for (int row = 0; row < height; row ++) { 1323 for (int row = 0; row < height; row ++) {
1324 FX_LPBYTE dest_scan = dest_buf + row * pitch; 1324 FX_LPBYTE dest_scan = dest_buf + row * pitch;
1325 FX_LPBYTE src_scan = (FX_BYTE*)pSrcBitmap->GetScanline(src_top + row) + src_left * 4; 1325 FX_LPBYTE src_scan = (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * 4;
1326 for (int col = 0; col < width; col ++) { 1326 for (int col = 0; col < width; col ++) {
1327 *dest_scan++ = src_scan[2]; 1327 *dest_scan++ = src_scan[2];
1328 *dest_scan++ = src_scan[1]; 1328 *dest_scan++ = src_scan[1];
1329 *dest_scan++ = src_scan[0]; 1329 *dest_scan++ = src_scan[0];
1330 src_scan += 4; 1330 src_scan += 4;
1331 } 1331 }
1332 } 1332 }
1333 } else { 1333 } else {
1334 ASSERT(FALSE); 1334 ASSERT(FALSE);
1335 } 1335 }
1336 } else if (dest_format == FXDIB_Argb || dest_format == FXDIB_Rgb32) { 1336 } else if (dest_format == FXDIB_Argb || dest_format == FXDIB_Rgb32) {
1337 if (src_format == FXDIB_Rgb) { 1337 if (src_format == FXDIB_Rgb) {
1338 for (int row = 0; row < height; row ++) { 1338 for (int row = 0; row < height; row ++) {
1339 FX_BYTE* dest_scan = (FX_BYTE*)(dest_buf + row * pitch); 1339 uint8_t* dest_scan = (uint8_t*)(dest_buf + row * pitch);
1340 FX_LPBYTE src_scan = (FX_BYTE*)pSrcBitmap->GetScanline(src_top + row) + src_left * 3; 1340 FX_LPBYTE src_scan = (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * 3;
1341 if (src_format == FXDIB_Argb) { 1341 if (src_format == FXDIB_Argb) {
1342 for (int col = 0; col < width; col ++) { 1342 for (int col = 0; col < width; col ++) {
1343 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, FX_GAMMA(src_ scan[0]), FX_GAMMA(src_scan[1]), FX_GAMMA(src_scan[2]))); 1343 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, FX_GAMMA(src_ scan[0]), FX_GAMMA(src_scan[1]), FX_GAMMA(src_scan[2])));
1344 dest_scan += 4; 1344 dest_scan += 4;
1345 src_scan += 3; 1345 src_scan += 3;
1346 } 1346 }
1347 } else { 1347 } else {
1348 for (int col = 0; col < width; col ++) { 1348 for (int col = 0; col < width; col ++) {
1349 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_scan[1], src_scan[2])); 1349 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_scan[1], src_scan[2]));
1350 dest_scan += 4; 1350 dest_scan += 4;
(...skipping 10 matching lines...) Expand all
1361 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_ scan[1], src_scan[2])); 1361 FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_ scan[1], src_scan[2]));
1362 src_scan += 4; 1362 src_scan += 4;
1363 dest_scan += 4; 1363 dest_scan += 4;
1364 } 1364 }
1365 } 1365 }
1366 } 1366 }
1367 } else { 1367 } else {
1368 ASSERT(FALSE); 1368 ASSERT(FALSE);
1369 } 1369 }
1370 } 1370 }
1371 FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, FX_BYTE alpha) 1371 FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, uint8_t alpha)
1372 { 1372 {
1373 FX_BYTE r, g, b; 1373 uint8_t r, g, b;
1374 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), FXSYS_GetYV alue(cmyk), FXSYS_GetKValue(cmyk), 1374 AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), FXSYS_GetYV alue(cmyk), FXSYS_GetKValue(cmyk),
1375 r, g, b); 1375 r, g, b);
1376 return ArgbEncode(alpha, r, g, b); 1376 return ArgbEncode(alpha, r, g, b);
1377 } 1377 }
1378 FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice, int x, int y, FX_DWORD color, int al pha_flag, void* pIccTransform) 1378 FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice, int x, int y, FX_DWORD color, int al pha_flag, void* pIccTransform)
1379 { 1379 {
1380 FX_BOOL bObjCMYK = FXGETFLAG_COLORTYPE(alpha_flag); 1380 FX_BOOL bObjCMYK = FXGETFLAG_COLORTYPE(alpha_flag);
1381 int alpha = bObjCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); 1381 int alpha = bObjCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color);
1382 if (pIccTransform) { 1382 if (pIccTransform) {
1383 ICodec_IccModule* pIccModule = CFX_GEModule::Get()->GetCodecModule()->Ge tIccModule(); 1383 ICodec_IccModule* pIccModule = CFX_GEModule::Get()->GetCodecModule()->Ge tIccModule();
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
1622 } 1622 }
1623 SetDeviceDriver(pDriver); 1623 SetDeviceDriver(pDriver);
1624 return TRUE; 1624 return TRUE;
1625 } 1625 }
1626 CFX_FxgeDevice::~CFX_FxgeDevice() 1626 CFX_FxgeDevice::~CFX_FxgeDevice()
1627 { 1627 {
1628 if (m_bOwnedBitmap && GetBitmap()) { 1628 if (m_bOwnedBitmap && GetBitmap()) {
1629 delete GetBitmap(); 1629 delete GetBitmap();
1630 } 1630 }
1631 } 1631 }
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