Difference O = ABS(D - S)
(int dst, int src)
| 2670 | * O = ABS(D - S) |
| 2671 | */ |
| 2672 | private static int blend_difference(int dst, int src) { |
| 2673 | int a = src >>> 24; |
| 2674 | |
| 2675 | int s_a = a + (a >= 0x7F ? 1 : 0); |
| 2676 | int d_a = 0x100 - s_a; |
| 2677 | |
| 2678 | int r = (dst & RED_MASK) - (src & RED_MASK); |
| 2679 | int b = (dst & BLUE_MASK) - (src & BLUE_MASK); |
| 2680 | int g = (dst & GREEN_MASK) - (src & GREEN_MASK); |
| 2681 | |
| 2682 | int rb = (r < 0 ? -r : r) | |
| 2683 | (b < 0 ? -b : b); |
| 2684 | int gn = (g < 0 ? -g : g); |
| 2685 | |
| 2686 | return min((dst >>> 24) + a, 0xFF) << 24 | |
| 2687 | ((dst & RB_MASK) * d_a + rb * s_a) >>> 8 & RB_MASK | |
| 2688 | ((dst & GN_MASK) * d_a + gn * s_a) >>> 8 & GN_MASK; |
| 2689 | } |
| 2690 | |
| 2691 | |
| 2692 | /** |
no test coverage detected