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);
   }
}