From 11dd9b589d1e36915410a678807a8cc835c80f3f Mon Sep 17 00:00:00 2001 From: Sebastiaan de Schaetzen Date: Tue, 16 Dec 2025 11:26:04 +0100 Subject: [PATCH] Add custom cursor support in DiceOS --- src/main/java/be/seeseemelk/diceos/DiceOS.java | 17 +++++++++++++++++ src/main/resources/cursor.png | Bin 0 -> 234 bytes 2 files changed, 17 insertions(+) create mode 100644 src/main/resources/cursor.png diff --git a/src/main/java/be/seeseemelk/diceos/DiceOS.java b/src/main/java/be/seeseemelk/diceos/DiceOS.java index 38ae60b..0b7c2e5 100644 --- a/src/main/java/be/seeseemelk/diceos/DiceOS.java +++ b/src/main/java/be/seeseemelk/diceos/DiceOS.java @@ -3,7 +3,9 @@ package be.seeseemelk.diceos; import be.seeseemelk.diceos.system.DisplayService; import be.seeseemelk.diceos.system.OnStartup; import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.NinePatch; import com.badlogic.gdx.graphics.g2d.TextureRegion; @@ -39,6 +41,7 @@ public class DiceOS extends ApplicationAdapter { clouds = new Texture("src/main/resources/clouds.png"); border = new Texture("src/main/resources/border.png"); loadMenubar(); + loadCursor(); screenViewport = new ScreenViewport(); vmViewport = new ScreenViewport(); @@ -57,6 +60,19 @@ public class DiceOS extends ApplicationAdapter { menubar = new NinePatch(texture, 9, 9, 15, 1); } + private void loadCursor() { + var pixmap = new Pixmap(Gdx.files.internal("cursor.png")); + + var scaled = new Pixmap(pixmap.getWidth() * scaling, pixmap.getHeight() * scaling, pixmap.getFormat()); + scaled.setFilter(Pixmap.Filter.NearestNeighbour); + scaled.drawPixmap(pixmap, 0, 0, pixmap.getWidth(), pixmap.getHeight(), + 0, 0, scaled.getWidth(), scaled.getHeight()); + + var cursor = Gdx.graphics.newCursor(scaled, 0, 0); + Gdx.graphics.setCursor(cursor); + pixmap.dispose(); + } + @Override public void resize(int width, int height) { screenViewport.update(width, height, true); @@ -70,6 +86,7 @@ public class DiceOS extends ApplicationAdapter { @Override public void render() { + loadCursor(); // Dispose the old cursor first ScreenUtils.clear(Color.BLACK); vmViewport.apply(); display.getScreenBuffer().begin(); diff --git a/src/main/resources/cursor.png b/src/main/resources/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc3491c27700724754b01fcb93eb45a205e2572 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jPK-BC>eK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a z5n0T@pr;JNj1^1m%YcIHC7!;n>@Rr)xP(PBFIU|L3ORVXIEF}EuI+c^V^H8YZ1w2> zejENQ7ZbgQOuoh}GyJ6*{-&w$D(Gh^$xrsoUL>XVOtc~|b487;MdS=~!i V>@m~YpFp!1JYD@<);T3K0RXTEKEwb3 literal 0 HcmV?d00001