From 072c585177af2c062cc03f8aec217aa0ccf33229 Mon Sep 17 00:00:00 2001 From: TheRealNull Date: Sat, 26 Dec 2020 21:25:52 -0500 Subject: [PATCH] rl-client: add ColorUtil/OverlayUtil --- .../client/ui/overlay/OverlayUtil.java | 42 +++++++++++++++++++ .../com/openosrs/client/util/ColorUtil.java | 34 +++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 runelite-client/src/main/java/com/openosrs/client/ui/overlay/OverlayUtil.java create mode 100644 runelite-client/src/main/java/com/openosrs/client/util/ColorUtil.java diff --git a/runelite-client/src/main/java/com/openosrs/client/ui/overlay/OverlayUtil.java b/runelite-client/src/main/java/com/openosrs/client/ui/overlay/OverlayUtil.java new file mode 100644 index 0000000000..06fd875d6d --- /dev/null +++ b/runelite-client/src/main/java/com/openosrs/client/ui/overlay/OverlayUtil.java @@ -0,0 +1,42 @@ +package com.openosrs.client.ui.overlay; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Polygon; +import net.runelite.api.Client; +import net.runelite.api.Perspective; +import net.runelite.api.coords.LocalPoint; +import net.runelite.api.coords.WorldPoint; + +public class OverlayUtil extends net.runelite.client.ui.overlay.OverlayUtil +{ + public static void drawTiles(Graphics2D graphics, Client client, WorldPoint point, WorldPoint playerPoint, Color color, int strokeWidth, int outlineAlpha, int fillAlpha) + { + if (point.distanceTo(playerPoint) >= 32) + { + return; + } + LocalPoint lp = LocalPoint.fromWorld(client, point); + if (lp == null) + { + return; + } + + Polygon poly = Perspective.getCanvasTilePoly(client, lp); + if (poly == null) + { + return; + } + drawStrokeAndFillPoly(graphics, color, strokeWidth, outlineAlpha, fillAlpha, poly); + } + + public static void drawStrokeAndFillPoly(Graphics2D graphics, Color color, int strokeWidth, int outlineAlpha, int fillAlpha, Polygon poly) + { + graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), outlineAlpha)); + graphics.setStroke(new BasicStroke(strokeWidth)); + graphics.draw(poly); + graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), fillAlpha)); + graphics.fill(poly); + } +} diff --git a/runelite-client/src/main/java/com/openosrs/client/util/ColorUtil.java b/runelite-client/src/main/java/com/openosrs/client/util/ColorUtil.java new file mode 100644 index 0000000000..57f68c4703 --- /dev/null +++ b/runelite-client/src/main/java/com/openosrs/client/util/ColorUtil.java @@ -0,0 +1,34 @@ +package com.openosrs.client.util; + +import java.awt.Color; + +public class ColorUtil extends net.runelite.client.util.ColorUtil +{ + /** + * Modifies the alpha component on a Color + * + * @param color The color to set the alpha value on + * @param alpha The alpha value to set on the color + * @return color + */ + public static int setAlphaComponent(Color color, int alpha) + { + return setAlphaComponent(color.getRGB(), alpha); + } + + /** + * Modifies the alpha component on a Color + * + * @param color The color to set the alpha value on + * @param alpha The alpha value to set on the color + * @return color + */ + public static int setAlphaComponent(int color, int alpha) + { + if (alpha < 0 || alpha > 255) + { + throw new IllegalArgumentException("alpha must be between 0 and 255."); + } + return (color & 0x00ffffff) | (alpha << 24); + } +}