(int dst, int src)
| 2579 | * O = DS |
| 2580 | */ |
| 2581 | private static int blend_multiply(int dst, int src) { |
| 2582 | int a = src >>> 24; |
| 2583 | |
| 2584 | int s_a = a + (a >= 0x7F ? 1 : 0); |
| 2585 | int d_a = 0x100 - s_a; |
| 2586 | |
| 2587 | int d_gn = dst & GN_MASK; |
| 2588 | |
| 2589 | int f_r = (dst & RED_MASK) >> 16; |
| 2590 | int f_b = (dst & BLUE_MASK); |
| 2591 | |
| 2592 | int rb = |
| 2593 | ((src & RED_MASK) * (f_r + 1) | |
| 2594 | (src & BLUE_MASK) * (f_b + 1)) |
| 2595 | >>> 8 & RB_MASK; |
| 2596 | int gn = |
| 2597 | (src & GREEN_MASK) * (d_gn + 0x100) |
| 2598 | >>> 16 & GN_MASK; |
| 2599 | |
| 2600 | return min((dst >>> 24) + a, 0xFF) << 24 | |
| 2601 | ((dst & RB_MASK) * d_a + rb * s_a) >>> 8 & RB_MASK | |
| 2602 | (d_gn * d_a + gn * s_a) >>> 8 & GN_MASK; |
| 2603 | } |
| 2604 | |
| 2605 | |
| 2606 | /** |
no test coverage detected