From e9c1a13abd8d73267d4846dafb93964646684818 Mon Sep 17 00:00:00 2001
From: Juuxel <6596629+Juuxel@users.noreply.github.com>
Date: Sat, 27 Feb 2021 15:59:19 +0200
Subject: Move BackgroundPainters to use MatrixStacks

---
 .../cottonmc/cotton/gui/client/BackgroundPainter.java     | 15 ++++++++-------
 .../io/github/cottonmc/cotton/gui/client/NinePatch.java   |  3 ++-
 .../github/cottonmc/cotton/gui/widget/WClippedPanel.java  |  2 +-
 .../io/github/cottonmc/cotton/gui/widget/WItemSlot.java   |  2 +-
 .../java/io/github/cottonmc/cotton/gui/widget/WPanel.java |  2 +-
 .../io/github/cottonmc/cotton/gui/widget/WSlider.java     |  2 +-
 .../io/github/cottonmc/cotton/gui/widget/WTabPanel.java   |  4 ++--
 7 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/main/java/io/github/cottonmc/cotton/gui/client/BackgroundPainter.java b/src/main/java/io/github/cottonmc/cotton/gui/client/BackgroundPainter.java
index 8878a60..a847629 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/client/BackgroundPainter.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/client/BackgroundPainter.java
@@ -1,5 +1,6 @@
 package io.github.cottonmc.cotton.gui.client;
 
+import net.minecraft.client.util.math.MatrixStack;
 import net.minecraft.util.Identifier;
 
 import io.github.cottonmc.cotton.gui.widget.WItemSlot;
@@ -17,7 +18,7 @@ public interface BackgroundPainter {
 	 * @param top The absolute position of the top of the panel, in gui-screen coordinates
 	 * @param panel The panel being painted
 	 */
-	public void paintBackground(int left, int top, WWidget panel);
+	public void paintBackground(MatrixStack matrices, int left, int top, WWidget panel);
 
 	/**
 	 * The {@code VANILLA} background painter draws a vanilla-like gui panel using {@linkplain NinePatch nine-patch textures}.
@@ -40,7 +41,7 @@ public interface BackgroundPainter {
 	/**
 	 * The {@code SLOT} background painter draws item slots or slot-like widgets.
 	 */
-	public static BackgroundPainter SLOT = (left, top, panel) -> {
+	public static BackgroundPainter SLOT = (matrices, left, top, panel) -> {
 		if (!(panel instanceof WItemSlot)) {
 			ScreenDrawing.drawBeveledPanel(left-1, top-1, panel.getWidth()+2, panel.getHeight()+2, 0xB8000000, 0x4C000000, 0xB8FFFFFF);
 		} else {
@@ -88,7 +89,7 @@ public interface BackgroundPainter {
 	 * @see ScreenDrawing#drawGuiPanel(int, int, int, int, int)
 	 */
 	public static BackgroundPainter createColorful(int panelColor) {
-		return (left, top, panel) -> {
+		return (matrices, left, top, panel) -> {
 			ScreenDrawing.drawGuiPanel(left-8, top-8, panel.getWidth()+16, panel.getHeight()+16, panelColor);
 		};
 	}
@@ -101,7 +102,7 @@ public interface BackgroundPainter {
 	 * @return a colorful gui panel painter
 	 */
 	public static BackgroundPainter createColorful(int panelColor, float contrast) {
-		return (left, top, panel) -> {
+		return (matrices, left, top, panel) -> {
 			int shadowColor = ScreenDrawing.multiplyColor(panelColor, 1.0f - contrast);
 			int hilightColor = ScreenDrawing.multiplyColor(panelColor, 1.0f + contrast);
 			
@@ -146,9 +147,9 @@ public interface BackgroundPainter {
 	 * @since 1.5.0
 	 */
 	public static BackgroundPainter createLightDarkVariants(BackgroundPainter light, BackgroundPainter dark) {
-		return (left, top, panel) -> {
-			if (LibGui.isDarkMode()) dark.paintBackground(left, top, panel);
-			else light.paintBackground(left, top, panel);
+		return (matrices, left, top, panel) -> {
+			if (LibGui.isDarkMode()) dark.paintBackground(matrices, left, top, panel);
+			else light.paintBackground(matrices, left, top, panel);
 		};
 	}
 }
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/client/NinePatch.java b/src/main/java/io/github/cottonmc/cotton/gui/client/NinePatch.java
index 9057739..cdc657e 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/client/NinePatch.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/client/NinePatch.java
@@ -3,6 +3,7 @@ package io.github.cottonmc.cotton.gui.client;
 import net.fabricmc.api.EnvType;
 import net.fabricmc.api.Environment;
 import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
+import net.minecraft.client.util.math.MatrixStack;
 import net.minecraft.resource.Resource;
 import net.minecraft.resource.ResourceManager;
 import net.minecraft.resource.SinglePreparationResourceReloadListener;
@@ -167,7 +168,7 @@ public class NinePatch implements BackgroundPainter {
 	}
 
 	@Override
-	public void paintBackground(int left, int top, WWidget panel) {
+	public void paintBackground(MatrixStack matrices, int left, int top, WWidget panel) {
 		int width = panel.getWidth() + leftPadding + rightPadding;
 		int height = panel.getHeight() + topPadding + bottomPadding;
 		left = left - leftPadding;
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WClippedPanel.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WClippedPanel.java
index 6daf600..a594fc2 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WClippedPanel.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WClippedPanel.java
@@ -13,7 +13,7 @@ public class WClippedPanel extends WPanel {
 	@Environment(EnvType.CLIENT)
 	@Override
 	public void paint(MatrixStack matrices, int x, int y, int mouseX, int mouseY) {
-		if (getBackgroundPainter()!=null) getBackgroundPainter().paintBackground(x, y, this);
+		if (getBackgroundPainter()!=null) getBackgroundPainter().paintBackground(matrices, x, y, this);
 
 		Scissors.push(x, y, width, height);
 		for(WWidget child : children) {
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WItemSlot.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WItemSlot.java
index 45fc896..1667bee 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WItemSlot.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WItemSlot.java
@@ -328,7 +328,7 @@ public class WItemSlot extends WWidget {
 	@Override
 	public void paint(MatrixStack matrices, int x, int y, int mouseX, int mouseY) {
 		if (backgroundPainter != null) {
-			backgroundPainter.paintBackground(x, y, this);
+			backgroundPainter.paintBackground(matrices, x, y, this);
 		}
 	}
 
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WPanel.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WPanel.java
index 90ef5d6..09d4ace 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WPanel.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WPanel.java
@@ -194,7 +194,7 @@ public abstract class WPanel extends WWidget {
 	@Environment(EnvType.CLIENT)
 	@Override
 	public void paint(MatrixStack matrices, int x, int y, int mouseX, int mouseY) {
-		if (backgroundPainter!=null) backgroundPainter.paintBackground(x, y, this);
+		if (backgroundPainter!=null) backgroundPainter.paintBackground(matrices, x, y, this);
 
 		for(WWidget child : children) {
 			child.paint(matrices, x + child.getX(), y + child.getY(), mouseX-child.getX(), mouseY-child.getY());
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WSlider.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WSlider.java
index 6638fb7..96f5fa5 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WSlider.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WSlider.java
@@ -50,7 +50,7 @@ public class WSlider extends WAbstractSlider {
 	@Override
 	public void paint(MatrixStack matrices, int x, int y, int mouseX, int mouseY) {
 		if (backgroundPainter != null) {
-			backgroundPainter.paintBackground(x, y, this);
+			backgroundPainter.paintBackground(matrices, x, y, this);
 		} else {
 			float px = 1 / 32f;
 			// thumbX/Y: thumb position in widget-space
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WTabPanel.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WTabPanel.java
index bc3a742..09e4e1d 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WTabPanel.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WTabPanel.java
@@ -324,9 +324,9 @@ public class WTabPanel extends WPanel {
 				}
 			}
 
-			(selected ? Painters.SELECTED_TAB : Painters.UNSELECTED_TAB).paintBackground(x, y, this);
+			(selected ? Painters.SELECTED_TAB : Painters.UNSELECTED_TAB).paintBackground(matrices, x, y, this);
 			if (isFocused()) {
-				(selected ? Painters.SELECTED_TAB_FOCUS_BORDER : Painters.UNSELECTED_TAB_FOCUS_BORDER).paintBackground(x, y, this);
+				(selected ? Painters.SELECTED_TAB_FOCUS_BORDER : Painters.UNSELECTED_TAB_FOCUS_BORDER).paintBackground(matrices, x, y, this);
 			}
 
 			int iconX = 6;
-- 
cgit