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

Method blend_overlay

core/src/processing/core/PImage.java:2643–2670  ·  view source on GitHub ↗

Overlay O = 2 MULTIPLY(D, S) = 2DS for D < 0.5 O = 2 SCREEN(D, S) - 1 = 2(S + D - DS) - 1 otherwise

(int dst, int src)

Source from the content-addressed store, hash-verified

2641 * O = 2 * SCREEN(D, S) - 1 = 2(S + D - DS) - 1 otherwise
2642 */
2643 private static int blend_overlay(int dst, int src) {
2644 int a = src >>> 24;
2645
2646 int s_a = a + (a >= 0x7F ? 1 : 0);
2647 int d_a = 0x100 - s_a;
2648
2649 int d_r = dst & RED_MASK;
2650 int d_g = dst & GREEN_MASK;
2651 int d_b = dst & BLUE_MASK;
2652
2653 int s_r = src & RED_MASK;
2654 int s_g = src & GREEN_MASK;
2655 int s_b = src & BLUE_MASK;
2656
2657 int r = (d_r < 0x800000) ?
2658 d_r * ((s_r >>> 16) + 1) >>> 7 :
2659 0xFF0000 - ((0x100 - (s_r >>> 16)) * (RED_MASK - d_r) >>> 7);
2660 int g = (d_g < 0x8000) ?
2661 d_g * (s_g + 0x100) >>> 15 :
2662 (0xFF00 - ((0x10000 - s_g) * (GREEN_MASK - d_g) >>> 15));
2663 int b = (d_b < 0x80) ?
2664 d_b * (s_b + 1) >>> 7 :
2665 (0xFF00 - ((0x100 - s_b) * (BLUE_MASK - d_b) << 1)) >>> 8;
2666
2667 return min((dst >>> 24) + a, 0xFF) << 24 |
2668 ((dst & RB_MASK) * d_a + ((r | b) & RB_MASK) * s_a) >>> 8 & RB_MASK |
2669 ((dst & GN_MASK) * d_a + (g & GN_MASK) * s_a) >>> 8 & GN_MASK;
2670 }
2671
2672
2673 /**

Callers 3

blendColorMethod · 0.95
blitResizeBilinearMethod · 0.95
blitResizeNearestMethod · 0.95

Calls 1

minMethod · 0.95

Tested by

no test coverage detected