MCPcopy Index your code
hub / github.com/processing/processing / blend_soft_light

Method blend_soft_light

core/src/processing/core/PImage.java:2863–2891  ·  view source on GitHub ↗

Soft Light (Pegtop) O = (1 - D) MULTIPLY(D, S) + D SCREEN(D, S) O = (1 - D) DS + D (1 - (1 - D)(1 - S)) O = 2DS + DD - 2DDS

(int dst, int src)

Source from the content-addressed store, hash-verified

2861 * O = 2DS + DD - 2DDS
2862 */
2863 private static int blend_soft_light(int dst, int src) {
2864 int a = src >>> 24;
2865
2866 int s_a = a + (a >= 0x7F ? 1 : 0);
2867 int d_a = 0x100 - s_a;
2868
2869 int d_r = dst & RED_MASK;
2870 int d_g = dst & GREEN_MASK;
2871 int d_b = dst & BLUE_MASK;
2872
2873 int s_r1 = src & RED_MASK >> 16;
2874 int s_g1 = src & GREEN_MASK >> 8;
2875 int s_b1 = src & BLUE_MASK;
2876
2877 int d_r1 = (d_r >> 16) + (s_r1 < 7F ? 1 : 0);
2878 int d_g1 = (d_g >> 8) + (s_g1 < 7F ? 1 : 0);
2879 int d_b1 = d_b + (s_b1 < 7F ? 1 : 0);
2880
2881 int r = (s_r1 * d_r >> 7) + 0xFF * d_r1 * (d_r1 + 1) -
2882 ((s_r1 * d_r1 * d_r1) << 1) & RED_MASK;
2883 int g = (s_g1 * d_g << 1) + 0xFF * d_g1 * (d_g1 + 1) -
2884 ((s_g1 * d_g1 * d_g1) << 1) >>> 8 & GREEN_MASK;
2885 int b = (s_b1 * d_b << 9) + 0xFF * d_b1 * (d_b1 + 1) -
2886 ((s_b1 * d_b1 * d_b1) << 1) >>> 16;
2887
2888 return min((dst >>> 24) + a, 0xFF) << 24 |
2889 ((dst & RB_MASK) * d_a + (r | b) * s_a) >>> 8 & RB_MASK |
2890 ((dst & GN_MASK) * d_a + g * s_a) >>> 8 & GN_MASK;
2891 }
2892
2893
2894 /**

Callers 2

blendColorMethod · 0.95
blit_resizeMethod · 0.95

Calls 1

minMethod · 0.95

Tested by

no test coverage detected