94 if (
data ==
null ||
data.isEmpty()) {
98 float totalWeight = 0f;
99 for (ShiftData2 sd :
data.values()) {
100 float progress = sd.fader.getBrightness();
102 totalWeight += progress;
106 if (totalWeight <= 0) {
110 float red = (float)diffBase.getRed();
111 float green = (float)diffBase.getGreen();
112 float blue = (float)diffBase.getBlue();
113 float alpha = (float)diffBase.getAlpha();
115 for (ShiftData2 sd :
data.values()) {
116 float progress = sd.fader.getBrightness();
118 float currWeight = totalWeight - progress + 1f;
119 red += ((float)sd.to.getRed() - (
float)diffBase.getRed()) * sd.shift * progress / currWeight;
120 green += ((float)sd.to.getGreen() - (
float)diffBase.getGreen()) * sd.shift * progress / currWeight;
121 blue += ((float)sd.to.getBlue() - (
float)diffBase.getBlue()) * sd.shift * progress / currWeight;
122 alpha += ((float)sd.to.getAlpha() - (
float)diffBase.getAlpha()) * sd.shift * progress / currWeight;
125 if (red > 255) red = 255;
126 if (green > 255) green = 255;
127 if (blue > 255) blue = 255;
128 if (alpha > 255) alpha = 255;
129 if (red < 0) red = 0;
130 if (green < 0) green = 0;
131 if (blue < 0) blue = 0;
132 if (alpha < 0) alpha = 0;
134 return new Color((
int)red, (
int)green, (
int)blue, (
int)alpha);