MCPcopy Create free account
hub / github.com/benfry/processing4 / blend_exclusion

Method blend_exclusion

core/src/processing/core/PImage.java:2550–2574  ·  view source on GitHub ↗

Exclusion O = (1 - S)D + S(1 - D) O = D + S - 2DS

(int dst, int src)

Source from the content-addressed store, hash-verified

2548 * O = D + S - 2DS
2549 */
2550 private static int blend_exclusion(int dst, int src) {
2551 int a = src >>> 24;
2552
2553 int s_a = a + (a >= 0x7F ? 1 : 0);
2554 int d_a = 0x100 - s_a;
2555
2556 int d_rb = dst & RB_MASK;
2557 int d_gn = dst & GN_MASK;
2558
2559 int s_gn = src & GN_MASK;
2560
2561 int f_r = (dst & RED_MASK) >> 16;
2562 int f_b = (dst & BLUE_MASK);
2563
2564 int rb_sub =
2565 ((src & RED_MASK) * (f_r + (f_r >= 0x7F ? 1 : 0)) |
2566 (src & BLUE_MASK) * (f_b + (f_b >= 0x7F ? 1 : 0)))
2567 >>> 7 & 0x01FF01FF;
2568 int gn_sub = s_gn * (d_gn + (d_gn >= 0x7F00 ? 0x100 : 0))
2569 >>> 15 & 0x0001FF00;
2570
2571 return min((dst >>> 24) + a, 0xFF) << 24 |
2572 (d_rb * d_a + (d_rb + (src & RB_MASK) - rb_sub) * s_a) >>> 8 & RB_MASK |
2573 (d_gn * d_a + (d_gn + s_gn - gn_sub) * s_a) >>> 8 & GN_MASK;
2574 }
2575
2576
2577 /*

Callers 3

blendColorMethod · 0.95
blitResizeBilinearMethod · 0.95
blitResizeNearestMethod · 0.95

Calls 1

minMethod · 0.95

Tested by

no test coverage detected