From 158dfe128df8d95971b7d0db2bd5dfaf700818b3 Mon Sep 17 00:00:00 2001 From: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> Date: Sun, 11 Sep 2022 21:08:52 +0200 Subject: fix: fix description bugs --- .../oneconfig/renderer/scissor/ScissorManager.java | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/main/java/cc/polyfrost/oneconfig/renderer') diff --git a/src/main/java/cc/polyfrost/oneconfig/renderer/scissor/ScissorManager.java b/src/main/java/cc/polyfrost/oneconfig/renderer/scissor/ScissorManager.java index 6b5ea3f..56d3f45 100644 --- a/src/main/java/cc/polyfrost/oneconfig/renderer/scissor/ScissorManager.java +++ b/src/main/java/cc/polyfrost/oneconfig/renderer/scissor/ScissorManager.java @@ -34,7 +34,8 @@ import java.util.ArrayList; * Provides an easy way to manage and group scissor rectangles. */ public class ScissorManager { - private static final ArrayList scissors = new ArrayList<>(); + private static final ArrayList> previousScissors = new ArrayList<>(); + private static ArrayList scissors = new ArrayList<>(); /** * Adds and applies a scissor rectangle to the list of scissor rectangles. @@ -77,9 +78,26 @@ public class ScissorManager { NanoVG.nvgResetScissor(vg); } + /** + * Save the current scissors + */ + public static void save() { + previousScissors.add(new ArrayList<>(scissors)); + } + + /** + * Restore the scissors from the last save + * + * @param vg The NanoVG context. + */ + public static void restore(long vg) { + scissors = previousScissors.remove(0); + applyScissors(vg); + } + private static void applyScissors(long vg) { NanoVG.nvgResetScissor(vg); - if (scissors.size() <= 0) return; + if (scissors.size() == 0) return; Scissor finalScissor = getFinalScissor(scissors); NanoVG.nvgScissor(vg, finalScissor.x, finalScissor.y, finalScissor.width, finalScissor.height); } -- cgit