aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/renderer
diff options
context:
space:
mode:
authorDeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>2022-09-07 22:20:00 +0200
committerGitHub <noreply@github.com>2022-09-07 16:20:00 -0400
commit7c077e278b7266950a968a7e7f2f28b9a140ed96 (patch)
tree56b351874c48126f70e4ef6cbcf914ea832bdcd9 /src/main/java/cc/polyfrost/oneconfig/renderer
parent17cfe96255f1ec3ab5609aa153d4abed2075c435 (diff)
downloadOneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.tar.gz
OneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.tar.bz2
OneConfig-7c077e278b7266950a968a7e7f2f28b9a140ed96.zip
new: option descriptions (#127)
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/renderer')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/renderer/AssetLoader.java46
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/renderer/NVGAsset.java25
2 files changed, 60 insertions, 11 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/renderer/AssetLoader.java b/src/main/java/cc/polyfrost/oneconfig/renderer/AssetLoader.java
index 4fe8c0b..3e70ce1 100644
--- a/src/main/java/cc/polyfrost/oneconfig/renderer/AssetLoader.java
+++ b/src/main/java/cc/polyfrost/oneconfig/renderer/AssetLoader.java
@@ -59,8 +59,8 @@ public final class AssetLoader {
}
public static final int DEFAULT_FLAGS = NanoVG.NVG_IMAGE_REPEATX | NanoVG.NVG_IMAGE_REPEATY | NanoVG.NVG_IMAGE_GENERATE_MIPMAPS;
- private final HashMap<String, Integer> imageHashMap = new HashMap<>();
- private final HashMap<String, Integer> svgHashMap = new HashMap<>();
+ private final HashMap<String, NVGAsset> imageHashMap = new HashMap<>();
+ private final HashMap<String, NVGAsset> svgHashMap = new HashMap<>();
public static AssetLoader INSTANCE = new AssetLoader();
/**
@@ -87,7 +87,7 @@ public final class AssetLoader {
return false;
}
- imageHashMap.put(fileName, NanoVG.nvgCreateImageRGBA(vg, width[0], height[0], flags, buffer));
+ imageHashMap.put(fileName, new NVGAsset(NanoVG.nvgCreateImageRGBA(vg, width[0], height[0], flags, buffer), width[0], height[0]));
return true;
}
return true;
@@ -155,7 +155,7 @@ public final class AssetLoader {
NanoSVG.nsvgDeleteRasterizer(rasterizer);
NanoSVG.nsvgDelete(svg);
- svgHashMap.put(name, NanoVG.nvgCreateImageRGBA(vg, w, h, flags, image));
+ svgHashMap.put(name, new NVGAsset(NanoVG.nvgCreateImageRGBA(vg, w, h, flags, image), w, h));
return true;
} catch (Exception e) {
System.err.println("Failed to parse SVG file");
@@ -201,6 +201,18 @@ public final class AssetLoader {
* @see AssetLoader#loadImage(long, String)
*/
public int getImage(String fileName) {
+ return imageHashMap.get(fileName).getImage();
+ }
+
+ /**
+ * Get a loaded assets from the cache.
+ * <p><b>Requires the assets to have been loaded first.</b></p>
+ *
+ * @param fileName The name of the file to load.
+ * @return The image and its data
+ * @see AssetLoader#loadImage(long, String)
+ */
+ public NVGAsset getNVGImage(String fileName) {
return imageHashMap.get(fileName);
}
@@ -213,7 +225,7 @@ public final class AssetLoader {
* @see AssetLoader#loadImage(long, String)
*/
public void removeImage(long vg, String fileName) {
- NanoVG.nvgDeleteImage(vg, imageHashMap.get(fileName));
+ NanoVG.nvgDeleteImage(vg, imageHashMap.get(fileName).getImage());
imageHashMap.remove(fileName);
}
@@ -224,9 +236,9 @@ public final class AssetLoader {
* @param vg The NanoVG context.
*/
public void clearImages(long vg) {
- HashMap<String, Integer> temp = new HashMap<>(imageHashMap);
+ HashMap<String, NVGAsset> temp = new HashMap<>(imageHashMap);
for (String image : temp.keySet()) {
- NanoVG.nvgDeleteImage(vg, imageHashMap.get(image));
+ NanoVG.nvgDeleteImage(vg, imageHashMap.get(image).getImage());
imageHashMap.remove(image);
}
}
@@ -241,7 +253,19 @@ public final class AssetLoader {
*/
public int getSVG(String fileName, float width, float height) {
String name = fileName + "-" + width + "-" + height;
- return svgHashMap.get(name);
+ return svgHashMap.get(name).getImage();
+ }
+
+ /**
+ * Get a loaded assets from the cache.
+ * <p><b>Requires the assets to have been loaded first.</b></p>
+ *
+ * @param fileName The name of the file to load.
+ * @return The SVG and its data
+ * @see AssetLoader#loadImage(long, String)
+ */
+ public NVGAsset getNVGSVG(String fileName) {
+ return svgHashMap.get(fileName);
}
/**
@@ -254,7 +278,7 @@ public final class AssetLoader {
*/
public void removeSVG(long vg, String fileName, float width, float height) {
String name = fileName + "-" + width + "-" + height;
- NanoVG.nvgDeleteImage(vg, imageHashMap.get(name));
+ NanoVG.nvgDeleteImage(vg, imageHashMap.get(name).getImage());
svgHashMap.remove(name);
}
@@ -265,9 +289,9 @@ public final class AssetLoader {
* @param vg The NanoVG context.
*/
public void clearSVGs(long vg) {
- HashMap<String, Integer> temp = new HashMap<>(svgHashMap);
+ HashMap<String, NVGAsset> temp = new HashMap<>(svgHashMap);
for (String image : temp.keySet()) {
- NanoVG.nvgDeleteImage(vg, svgHashMap.get(image));
+ NanoVG.nvgDeleteImage(vg, svgHashMap.get(image).getImage());
svgHashMap.remove(image);
}
}
diff --git a/src/main/java/cc/polyfrost/oneconfig/renderer/NVGAsset.java b/src/main/java/cc/polyfrost/oneconfig/renderer/NVGAsset.java
new file mode 100644
index 0000000..b5253e6
--- /dev/null
+++ b/src/main/java/cc/polyfrost/oneconfig/renderer/NVGAsset.java
@@ -0,0 +1,25 @@
+package cc.polyfrost.oneconfig.renderer;
+
+public class NVGAsset {
+ private final int image;
+ private final int width;
+ private final int height;
+
+ protected NVGAsset(int image, int width, int height) {
+ this.image = image;
+ this.width = width;
+ this.height = height;
+ }
+
+ public int getImage() {
+ return image;
+ }
+
+ public int getWidth() {
+ return width;
+ }
+
+ public int getHeight() {
+ return height;
+ }
+}