Difference O = ABS(D - S)
(int dst, int src)
| 2523 | * O = ABS(D - S) |
| 2524 | */ |
| 2525 | private static int blend_difference(int dst, int src) { |
| 2526 | int a = src >>> 24; |
| 2527 | |
| 2528 | int s_a = a + (a >= 0x7F ? 1 : 0); |
| 2529 | int d_a = 0x100 - s_a; |
| 2530 | |
| 2531 | int r = (dst & RED_MASK) - (src & RED_MASK); |
| 2532 | int b = (dst & BLUE_MASK) - (src & BLUE_MASK); |
| 2533 | int g = (dst & GREEN_MASK) - (src & GREEN_MASK); |
| 2534 | |
| 2535 | int rb = (r < 0 ? -r : r) | |
| 2536 | (b < 0 ? -b : b); |
| 2537 | int gn = (g < 0 ? -g : g); |
| 2538 | |
| 2539 | return min((dst >>> 24) + a, 0xFF) << 24 | |
| 2540 | ((dst & RB_MASK) * d_a + rb * s_a) >>> 8 & RB_MASK | |
| 2541 | ((dst & GN_MASK) * d_a + gn * s_a) >>> 8 & GN_MASK; |
| 2542 | } |
| 2543 | |
| 2544 | |
| 2545 | /** |
no test coverage detected