TintUtil class
Пакет: com.hypixel.hytale.builtin.hytalegenerator
Файл: com/hypixel/hytale/builtin/hytalegenerator/TintUtil.java
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
double |
SRGB_GAMMA |
|
double |
var1 |
|
double |
var11 |
|
double |
var2 |
|
double |
var2 |
|
double |
var4 |
|
double |
var6 |
|
double |
var8 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
for for(int var10 = 0; var10 < var0.size() |
|
|
if if(var8 != 0.0) |
static |
byte |
linearToSrgbbyte linearToSrgb(double var0) |
static |
double |
srgbToLineardouble srgbToLinear(int var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.Color;
class="kw">import it.unimi.dsi.fastutil.doubles.DoubleList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">public class TintUtil {
class="kw">private class="kw">static class="kw">final double SRGB_GAMMA = 2.4;
class="kw">private class="kw">static class="kw">final double SRGB_ALPHA = 0.055;
class="kw">private class="kw">static class="kw">final double SRGB_LINEAR_SLOPE = 12.92;
class="kw">private class="kw">static class="kw">final double SRGB_DECODE_THRESHOLD = 0.04045;
class="kw">private class="kw">static class="kw">final double SRGB_ENCODE_THRESHOLD = 0.0031308;
class="kw">public TintUtil() {
}
@Nonnull
class="kw">public class="kw">static Color blend(@Nonnull List<Color> var0, @Nonnull DoubleList var1) {
assert var0.size() == var1.size();
double var2 = 0.0;
double var4 = 0.0;
double var6 = 0.0;
double var8 = 0.0;
for (int var10 = 0; var10 < var0.size(); var10++) {
double var11 = var1.getDouble(var10);
var2 += srgbToLinear(var0.get(var10).red & 255) * var11;
var4 += srgbToLinear(var0.get(var10).green & 255) * var11;
var6 += srgbToLinear(var0.get(var10).blue & 255) * var11;
var8 += var11;
}
if (var8 != 0.0) {
var2 /= var8;
var4 /= var8;
var6 /= var8;
}
class="kw">return new Color(linearToSrgb(var2), linearToSrgb(var4), linearToSrgb(var6));
}
class="kw">public class="kw">static double srgbToLinear(int var0) {
double var1 = var0 / 255.0;
class="kw">return var1 > 0.04045 ? Math.pow((var1 + 0.055) / 1.055, 2.4) : var1 / 12.92;
}
class="kw">public class="kw">static byte linearToSrgb(double var0) {
double var2 = var0 > 0.0031308 ? 1.055 * Math.pow(var0, 0.4166666666666667) - 0.055 : 12.92 * var0;
class="kw">return (byte)MathUtil.clamp((int)Math.round(var2 * 255.0), 0, 255);
}
}