From f50760c8b2c91b0b100858287ba6c82f46513318 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 30 Mar 2018 12:28:13 -0400 Subject: [PATCH] cache: add and compute hsl in overlay --- .../cache/definitions/OverlayDefinition.java | 101 ++++++++++++++++++ .../definitions/loaders/OverlayLoader.java | 2 + 2 files changed, 103 insertions(+) diff --git a/cache/src/main/java/net/runelite/cache/definitions/OverlayDefinition.java b/cache/src/main/java/net/runelite/cache/definitions/OverlayDefinition.java index 02be73a73d..3846e99364 100644 --- a/cache/src/main/java/net/runelite/cache/definitions/OverlayDefinition.java +++ b/cache/src/main/java/net/runelite/cache/definitions/OverlayDefinition.java @@ -35,4 +35,105 @@ public class OverlayDefinition private int texture = -1; private int secondaryRgbColor = -1; private boolean hideUnderlay = true; + + private transient int hue; + private transient int saturation; + private transient int lightness; + + private transient int otherHue; + private transient int otherSaturation; + private transient int otherLightness; + + public void calculateHsl() + { + if (secondaryRgbColor != -1) + { + calculateHsl(secondaryRgbColor); + otherHue = hue; + otherSaturation = saturation; + otherLightness = lightness; + } + + calculateHsl(rgbColor); + } + + private void calculateHsl(int var1) + { + double var2 = (double) (var1 >> 16 & 255) / 256.0D; + double var4 = (double) (var1 >> 8 & 255) / 256.0D; + double var6 = (double) (var1 & 255) / 256.0D; + double var8 = var2; + if (var4 < var2) + { + var8 = var4; + } + + if (var6 < var8) + { + var8 = var6; + } + + double var10 = var2; + if (var4 > var2) + { + var10 = var4; + } + + if (var6 > var10) + { + var10 = var6; + } + + double var12 = 0.0D; + double var14 = 0.0D; + double var16 = (var8 + var10) / 2.0D; + if (var10 != var8) + { + if (var16 < 0.5D) + { + var14 = (var10 - var8) / (var10 + var8); + } + + if (var16 >= 0.5D) + { + var14 = (var10 - var8) / (2.0D - var10 - var8); + } + + if (var2 == var10) + { + var12 = (var4 - var6) / (var10 - var8); + } + else if (var4 == var10) + { + var12 = 2.0D + (var6 - var2) / (var10 - var8); + } + else if (var10 == var6) + { + var12 = 4.0D + (var2 - var4) / (var10 - var8); + } + } + + var12 /= 6.0D; + this.hue = (int) (256.0D * var12); + this.saturation = (int) (var14 * 256.0D); + this.lightness = (int) (var16 * 256.0D); + if (this.saturation < 0) + { + this.saturation = 0; + } + else if (this.saturation > 255) + { + this.saturation = 255; + } + + if (this.lightness < 0) + { + this.lightness = 0; + } + else if (this.lightness > 255) + { + this.lightness = 255; + } + + } } diff --git a/cache/src/main/java/net/runelite/cache/definitions/loaders/OverlayLoader.java b/cache/src/main/java/net/runelite/cache/definitions/loaders/OverlayLoader.java index d420c50616..1b01c07c87 100644 --- a/cache/src/main/java/net/runelite/cache/definitions/loaders/OverlayLoader.java +++ b/cache/src/main/java/net/runelite/cache/definitions/loaders/OverlayLoader.java @@ -69,6 +69,8 @@ public class OverlayLoader } } + def.calculateHsl(); + return def; } }