aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/renderer
diff options
context:
space:
mode:
authorDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-09-11 21:08:52 +0200
committerGitHub <noreply@github.com>2022-09-11 15:08:52 -0400
commit158dfe128df8d95971b7d0db2bd5dfaf700818b3 (patch)
tree291992ea85b39f2cb94824c9aae1835a4d6fc17d /src/main/java/cc/polyfrost/oneconfig/renderer
parent865e1eb14c4f3df17c6da530b3cd2fefd5037f7d (diff)
downloadOneConfig-158dfe128df8d95971b7d0db2bd5dfaf700818b3.tar.gz
OneConfig-158dfe128df8d95971b7d0db2bd5dfaf700818b3.tar.bz2
OneConfig-158dfe128df8d95971b7d0db2bd5dfaf700818b3.zip
fix: fix description bugs
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/renderer')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/renderer/scissor/ScissorManager.java22
1 files changed, 20 insertions, 2 deletions
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<Scissor> scissors = new ArrayList<>();
+ private static final ArrayList<ArrayList<Scissor>> previousScissors = new ArrayList<>();
+ private static ArrayList<Scissor> 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);
}