(int dst, int src)
| 2726 | * O = DS |
| 2727 | */ |
| 2728 | private static int blend_multiply(int dst, int src) { |
| 2729 | int a = src >>> 24; |
| 2730 | |
| 2731 | int s_a = a + (a >= 0x7F ? 1 : 0); |
| 2732 | int d_a = 0x100 - s_a; |
| 2733 | |
| 2734 | int d_gn = dst & GN_MASK; |
| 2735 | |
| 2736 | int f_r = (dst & RED_MASK) >> 16; |
| 2737 | int f_b = (dst & BLUE_MASK); |
| 2738 | |
| 2739 | int rb = |
| 2740 | ((src & RED_MASK) * (f_r + 1) | |
| 2741 | (src & BLUE_MASK) * (f_b + 1)) |
| 2742 | >>> 8 & RB_MASK; |
| 2743 | int gn = |
| 2744 | (src & GREEN_MASK) * (d_gn + 0x100) |
| 2745 | >>> 16 & GN_MASK; |
| 2746 | |
| 2747 | return min((dst >>> 24) + a, 0xFF) << 24 | |
| 2748 | ((dst & RB_MASK) * d_a + rb * s_a) >>> 8 & RB_MASK | |
| 2749 | (d_gn * d_a + gn * s_a) >>> 8 & GN_MASK; |
| 2750 | } |
| 2751 | |
| 2752 | |
| 2753 | /** |
no test coverage detected