diff --git a/Test.java b/Test.java index ce07a51..64d8427 100644 --- a/Test.java +++ b/Test.java @@ -8,7 +8,8 @@ public class Test { var engine = new Engine(); var window = engine.openWindow(1280, 720, "Skunkworks"); var img = engine.loadImage("C:\\Users\\dani\\Videos\\Screenshot 2022-06-25 17-00-59.png"); - System.out.println(img.getPixel(new Vec2i(0, 0))); + //var img = engine.loadImage("C:\\art\\kyoko.png"); + System.out.println(img.getPixel(new Vec2i(60, 60))); while(!window.shouldClose()) { window.tick(); diff --git a/com/danitheskunk/skunkworks/Color.java b/com/danitheskunk/skunkworks/Color.java index f75a3bb..f6c0a99 100644 --- a/com/danitheskunk/skunkworks/Color.java +++ b/com/danitheskunk/skunkworks/Color.java @@ -32,4 +32,8 @@ public final class Color { public byte getA() { return a; } + + @Override public String toString() { + return String.format("#%02X%02X%02X%02X", r, g, b, a); + } } diff --git a/com/danitheskunk/skunkworks/Engine.java b/com/danitheskunk/skunkworks/Engine.java index d0f761e..89a29dc 100644 --- a/com/danitheskunk/skunkworks/Engine.java +++ b/com/danitheskunk/skunkworks/Engine.java @@ -1,5 +1,7 @@ package com.danitheskunk.skunkworks; +import org.lwjgl.BufferUtils; + import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; @@ -10,13 +12,17 @@ import static com.danitheskunk.skunkworks.GraphicsBackend.*; public class Engine { public Image loadImage(String path) { ByteBuffer buf; + byte[] bytes; try(FileInputStream fis = new FileInputStream(path)) { - buf = ByteBuffer.wrap(fis.readAllBytes()); + bytes = fis.readAllBytes(); } catch(FileNotFoundException e) { throw new RuntimeException(e); } catch(IOException e) { throw new RuntimeException(e); } + buf = BufferUtils.createByteBuffer(bytes.length); + buf.put(bytes); + buf.flip(); return new Image(buf); } diff --git a/com/danitheskunk/skunkworks/Image.java b/com/danitheskunk/skunkworks/Image.java index e5d7490..99fd5e8 100644 --- a/com/danitheskunk/skunkworks/Image.java +++ b/com/danitheskunk/skunkworks/Image.java @@ -10,9 +10,11 @@ public class Image { Image(ByteBuffer buffer) { //todo: resorce system int[] x = {0}, y = {0}, n = {0}; - data = STBImage.stbi_load(buffer, x, y, n, 4).array(); + var img = STBImage.stbi_load_from_memory(buffer, x, y, n, 4); width = x[0]; height = y[0]; + data = new byte[width * height * 4]; + img.get(data); } public byte[] getData() {