java - Invert color result int of inverted division -


i working rgb, , having problems math. unless reading quote below wrong, need take result of value looks 0.01234 , invert it. bgc = bottom color , fgc = top color. having issues inverting result. way color dodge effect , not color burn effect. have tried multiplying, dividing, adding, subtracting, , nothing seems working. can invert result?

(255f - (float)bgc[0]) / (fgc[0] << 8) 

this full method:

public static int colorburn(int bg, int fg){     int[] bgc = colors.getrgba(bg);     int[] fgc = colors.getrgba(fg);     int r = (bgc[0] == 255 ? bgc[0] : (int)math.min(0, (255f - (float)bgc[0]) / (fgc[0] << 8)));     int g = (bgc[1] == 255 ? bgc[1] : (int)math.min(0, (255f - (float)bgc[1]) / (fgc[1] << 8)));     int b = (bgc[2] == 255 ? bgc[2] : (int)math.min(0, (255f - (float)bgc[2]) / (fgc[2] << 8)));     return colors.rgba(r, g, b); } 

here wikipedia says do:

the color burn mode divides inverted bottom layer top layer, , inverts result. darkens top layer increasing contrast reflect color of bottom layer. darker bottom layer, more color used. blending white produces no difference.

i got it:

public static int colorburn(int bg, int fg){     int[] bgc = colors.getrgba(bg);     int[] fgc = colors.getrgba(fg);     int r = (int)math.min(255, 255 * (1 - (1 - (bgc[0] / 255f)) / (fgc[0] / 255f)));     int g = (int)math.min(255, 255 * (1 - (1 - (bgc[1] / 255f)) / (fgc[1] / 255f)));     int b = (int)math.min(255, 255 * (1 - (1 - (bgc[2] / 255f)) / (fgc[2] / 255f)));     r = r < 0 ? 0 : r;     g = g < 0 ? 0 : g;     b = b < 0 ? 0 : b;     return colors.rgba(r, g, b); } 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -