From 25d19727c5be5548901c4b93db9afcba656c7ecf Mon Sep 17 00:00:00 2001 From: Natan Date: Tue, 23 May 2023 20:50:20 -0300 Subject: [PATCH 1/9] Remove thread call from loading script and fix pixmap typo. Add freetype test --- .../com/badlogic/gdx/graphics/PixmapEmu.java | 104 +++++------ .../gdx/backends/teavm/TeaApplication.java | 6 +- .../teavm/preloader/AssetDownloadImpl.java | 74 ++++---- examples/freetype/core/build.gradle | 9 + .../gdx/examples/tests/FreetypeDemo.java | 84 +++++++++ .../freetype/desktop/assets/data/lsans-15.fnt | 175 ++++++++++++++++++ .../desktop/assets/data/lsans-15_00.png | Bin 0 -> 9811 bytes .../freetype/desktop/assets/data/lsans.ttf | Bin 0 -> 410712 bytes examples/freetype/desktop/build.gradle | 36 ++++ .../xpenatan/gdx/examples/desktop/Main.java | 11 ++ examples/freetype/teavm/build.gradle | 45 +++++ .../gdx/examples/teavm/BuildFreetypeTest.java | 24 +++ .../teavm/launcher/FreetypeTestLauncher.java | 15 ++ settings.gradle | 3 + 14 files changed, 492 insertions(+), 94 deletions(-) create mode 100644 examples/freetype/core/build.gradle create mode 100644 examples/freetype/core/src/main/java/com/github/xpenatan/gdx/examples/tests/FreetypeDemo.java create mode 100644 examples/freetype/desktop/assets/data/lsans-15.fnt create mode 100644 examples/freetype/desktop/assets/data/lsans-15_00.png create mode 100644 examples/freetype/desktop/assets/data/lsans.ttf create mode 100644 examples/freetype/desktop/build.gradle create mode 100644 examples/freetype/desktop/src/main/java/com/github/xpenatan/gdx/examples/desktop/Main.java create mode 100644 examples/freetype/teavm/build.gradle create mode 100644 examples/freetype/teavm/src/main/java/com/github/xpenatan/gdx/examples/teavm/BuildFreetypeTest.java create mode 100644 examples/freetype/teavm/src/main/java/com/github/xpenatan/gdx/examples/teavm/launcher/FreetypeTestLauncher.java diff --git a/backends/backend-teavm/emu/com/badlogic/gdx/graphics/PixmapEmu.java b/backends/backend-teavm/emu/com/badlogic/gdx/graphics/PixmapEmu.java index 667a8c09..986a726c 100644 --- a/backends/backend-teavm/emu/com/badlogic/gdx/graphics/PixmapEmu.java +++ b/backends/backend-teavm/emu/com/badlogic/gdx/graphics/PixmapEmu.java @@ -95,7 +95,7 @@ public static int toGlType (FormatEmu format) { private HTMLVideoElementWrapper videoElement; private int color = 0; - private Gdx2DPixmapEmu pixmap; + private Gdx2DPixmapEmu nativePixmap; private boolean disposed; public static void downloadFromUrl(String url, final Pixmap.DownloadPixmapResponseListener responseListener) { @@ -126,7 +126,7 @@ public PixmapEmu(FileHandle file) { if(config.useNativePixmap) { Int8ArrayWrapper response = object.getData(); byte[] bytes = Gdx2DPixmapEmu.get(response); - pixmap = new Gdx2DPixmapEmu(bytes, 0, bytes.length, 0); + nativePixmap = new Gdx2DPixmapEmu(bytes, 0, bytes.length, 0); initPixmapEmu(-1, -1, null, null); } else { @@ -149,7 +149,7 @@ public PixmapEmu(byte[] encodedData, int offset, int len) { TeaApplication app = (TeaApplication)Gdx.app; TeaApplicationConfiguration config = app.getConfig(); if(config.useNativePixmap) { - pixmap = new Gdx2DPixmapEmu(encodedData, offset, len, 0); + nativePixmap = new Gdx2DPixmapEmu(encodedData, offset, len, 0); initPixmapEmu(-1, -1, null, null); } } @@ -234,11 +234,11 @@ private void ensureCanvasExists() { } public boolean canUsePixmapData() { - return canvas == null && pixmap != null; + return canvas == null && nativePixmap != null; } public Uint8ArrayWrapper getPixmapData() { - return pixmap.getPixels(); + return nativePixmap.getPixels(); } public boolean canUseImageElement() { @@ -263,7 +263,7 @@ public HTMLVideoElementWrapper getVideoElement() { * @param color the color, encoded as RGBA8888 */ public void setColor(int color) { - if(pixmap != null) { + if(nativePixmap != null) { this.color = color; } else { @@ -287,7 +287,7 @@ public void setColor(int color) { * @param a The alpha component. */ public void setColor(float r, float g, float b, float a) { - if(pixmap != null) { + if(nativePixmap != null) { this.color = Color.rgba8888(r, g, b, a); } else { @@ -315,8 +315,8 @@ public void setColor(Color color) { * Fills the complete bitmap with the currently set color. */ public void fill() { - if(pixmap != null) { - pixmap.clear(color); + if(nativePixmap != null) { + nativePixmap.clear(color); } else { ensureCanvasExists(); @@ -341,8 +341,8 @@ public void fill() { * @param y2 The y-coordinate of the first point */ public void drawLine(int x, int y, int x2, int y2) { - if(pixmap != null) { - pixmap.drawLine(x, y, x2, y2, color); + if(nativePixmap != null) { + nativePixmap.drawLine(x, y, x2, y2, color); } else { line(x, y, x2, y2, DrawType.STROKE); @@ -359,8 +359,8 @@ public void drawLine(int x, int y, int x2, int y2) { * @param height The height in pixels */ public void drawRectangle(int x, int y, int width, int height) { - if(pixmap != null) { - pixmap.drawRect(x, y, width, height, color); + if(nativePixmap != null) { + nativePixmap.drawRect(x, y, width, height, color); } else { rectangle(x, y, width, height, DrawType.STROKE); @@ -375,7 +375,7 @@ public void drawRectangle(int x, int y, int width, int height) { * @param y The target y-coordinate (top left corner) */ public void drawPixmap(PixmapEmu pixmap, int x, int y) { - if(pixmap != null) { + if(nativePixmap != null) { drawPixmap(pixmap, x, y, 0, 0, pixmap.getWidth(), pixmap.getHeight()); } else { @@ -385,8 +385,8 @@ public void drawPixmap(PixmapEmu pixmap, int x, int y) { } public void drawPixmap(PixmapEmu pixmap, int x, int y, int srcx, int srcy, int srcWidth, int srcHeight) { - if(pixmap != null) { - this.pixmap.drawPixmap(pixmap.pixmap, srcx, srcy, x, y, srcWidth, srcHeight); + if(nativePixmap != null) { + this.nativePixmap.drawPixmap(pixmap.nativePixmap, srcx, srcy, x, y, srcWidth, srcHeight); } else { HTMLCanvasElementWrapper image = pixmap.getCanvasElement(); @@ -395,8 +395,8 @@ public void drawPixmap(PixmapEmu pixmap, int x, int y, int srcx, int srcy, int s } public void drawPixmap(PixmapEmu pixmap, int srcx, int srcy, int srcWidth, int srcHeight, int dstx, int dsty, int dstWidth, int dstHeight) { - if(pixmap != null) { - this.pixmap.drawPixmap(pixmap.pixmap, srcx, srcy, srcWidth, srcHeight, dstx, dsty, dstWidth, dstHeight); + if(nativePixmap != null) { + this.nativePixmap.drawPixmap(pixmap.nativePixmap, srcx, srcy, srcWidth, srcHeight, dstx, dsty, dstWidth, dstHeight); } else { image(pixmap.getCanvasElement(), srcx, srcy, srcWidth, srcHeight, dstx, dsty, dstWidth, dstHeight); @@ -404,8 +404,8 @@ public void drawPixmap(PixmapEmu pixmap, int srcx, int srcy, int srcWidth, int s } public void fillRectangle(int x, int y, int width, int height) { - if(pixmap != null) { - pixmap.fillRect(x, y, width, height, color); + if(nativePixmap != null) { + nativePixmap.fillRect(x, y, width, height, color); } else { rectangle(x, y, width, height, DrawType.FILL); @@ -413,8 +413,8 @@ public void fillRectangle(int x, int y, int width, int height) { } public void drawCircle(int x, int y, int radius) { - if(pixmap != null) { - pixmap.drawCircle(x, y, radius, color); + if(nativePixmap != null) { + nativePixmap.drawCircle(x, y, radius, color); } else { circle(x, y, radius, DrawType.STROKE); @@ -422,8 +422,8 @@ public void drawCircle(int x, int y, int radius) { } public void fillCircle(int x, int y, int radius) { - if(pixmap != null) { - pixmap.fillCircle(x, y, radius, color); + if(nativePixmap != null) { + nativePixmap.fillCircle(x, y, radius, color); } else { circle(x, y, radius, DrawType.FILL); @@ -431,8 +431,8 @@ public void fillCircle(int x, int y, int radius) { } public void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3) { - if(pixmap != null) { - pixmap.fillTriangle(x1, y1, x2, y2, x3, y3, color); + if(nativePixmap != null) { + nativePixmap.fillTriangle(x1, y1, x2, y2, x3, y3, color); } else { triangle(x1, y1, x2, y2, x3, y3, DrawType.FILL); @@ -440,8 +440,8 @@ public void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3) { } public int getPixel(int x, int y) { - if(pixmap != null) { - return pixmap.getPixel(x, y); + if(nativePixmap != null) { + return nativePixmap.getPixel(x, y); } else { ensureCanvasExists(); @@ -456,8 +456,8 @@ public int getPixel(int x, int y) { } public int getWidth() { - if(pixmap != null) { - return pixmap.getWidth(); + if(nativePixmap != null) { + return nativePixmap.getWidth(); } else { return width; @@ -465,8 +465,8 @@ public int getWidth() { } public int getHeight() { - if(pixmap != null) { - return pixmap.getHeight(); + if(nativePixmap != null) { + return nativePixmap.getHeight(); } else { return height; @@ -477,8 +477,8 @@ public int getHeight() { public void dispose() { if (disposed) throw new GdxRuntimeException("Pixmap already disposed!"); pixmaps.remove(id); - if(pixmap != null) { - pixmap.dispose(); + if(nativePixmap != null) { + nativePixmap.dispose(); } disposed = true; } @@ -488,8 +488,8 @@ public boolean isDisposed () { } public void drawPixel(int x, int y) { - if(pixmap != null) { - pixmap.setPixel(x, y, color); + if(nativePixmap != null) { + nativePixmap.setPixel(x, y, color); } else { rectangle(x, y, 1, 1, DrawType.FILL); @@ -497,8 +497,8 @@ public void drawPixel(int x, int y) { } public void drawPixel(int x, int y, int color) { - if(pixmap != null) { - pixmap.setPixel(x, y, color); + if(nativePixmap != null) { + nativePixmap.setPixel(x, y, color); } else { setColor(color); @@ -507,22 +507,22 @@ public void drawPixel(int x, int y, int color) { } public int getGLFormat () { - if(pixmap != null) { - return pixmap.getGLFormat(); + if(nativePixmap != null) { + return nativePixmap.getGLFormat(); } return GL20.GL_RGBA; } public int getGLInternalFormat () { - if(pixmap != null) { - return pixmap.getGLInternalFormat(); + if(nativePixmap != null) { + return nativePixmap.getGLInternalFormat(); } return GL20.GL_RGBA; } public int getGLType () { - if(pixmap != null) { - return pixmap.getGLType(); + if(nativePixmap != null) { + return nativePixmap.getGLType(); } return GL20.GL_UNSIGNED_BYTE; } @@ -532,9 +532,9 @@ public ByteBuffer getPixels() { } public void setPixels(ByteBuffer pixels) { - if(pixmap != null) { + if(nativePixmap != null) { if (!pixels.isDirect()) throw new GdxRuntimeException("Couldn't setPixels from non-direct ByteBuffer"); - Uint8ArrayWrapper dst = pixmap.getPixels(); + Uint8ArrayWrapper dst = nativePixmap.getPixels(); //TODO find a way to use byteBuffer // BufferUtils.copy(pixels, dst, dst.limit()) } @@ -552,16 +552,16 @@ public void setPixels(ByteBuffer pixels) { } public Pixmap.Format getFormat () { - if(pixmap != null) { - return Pixmap.Format.fromGdx2DPixmapFormat(pixmap.getFormat()); + if(nativePixmap != null) { + return Pixmap.Format.fromGdx2DPixmapFormat(nativePixmap.getFormat()); } return Pixmap.Format.RGBA8888; } public void setFilter(Pixmap.Filter filter) { this.filter = filter; - if(pixmap != null) { - pixmap.setScale(filter == Pixmap.Filter.NearestNeighbour ? Gdx2DPixmapEmu.GDX2D_SCALE_NEAREST : Gdx2DPixmapEmu.GDX2D_SCALE_LINEAR); + if(nativePixmap != null) { + nativePixmap.setScale(filter == Pixmap.Filter.NearestNeighbour ? Gdx2DPixmapEmu.GDX2D_SCALE_NEAREST : Gdx2DPixmapEmu.GDX2D_SCALE_LINEAR); } } @@ -571,8 +571,8 @@ public Pixmap.Filter getFilter() { public void setBlending(Pixmap.Blending blending) { this.blending = blending; - if(pixmap != null) { - pixmap.setBlend(blending == Pixmap.Blending.None ? 0 : 1); + if(nativePixmap != null) { + nativePixmap.setBlend(blending == Pixmap.Blending.None ? 0 : 1); } else { this.ensureCanvasExists(); diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java index 6b19b1c7..ed4819c3 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java @@ -492,7 +492,7 @@ public void initImGui(TeaApplication application) { } private void initBulletPhysicsWasm(Preloader preloader) { - preloader.loadScript(false, "bullet.wasm.js", new AssetLoaderListener() { + preloader.loadScript(true, "bullet.wasm.js", new AssetLoaderListener() { @Override public boolean onSuccess(String url, Object result) { return true; @@ -505,7 +505,7 @@ public void onFailure(String url) { } private void initImGuiWasm(Preloader preloader) { - preloader.loadScript(false, "imgui.js", new AssetLoaderListener() { + preloader.loadScript(true, "imgui.js", new AssetLoaderListener() { @Override public boolean onSuccess(String url, Object result) { return true; @@ -520,7 +520,7 @@ public void onFailure(String url) { // Box2D private void initBox2DPhysicsWasm(Preloader preloader) { - preloader.loadScript(false, "box2D.wasm.js", new AssetLoaderListener() { + preloader.loadScript(true, "box2D.wasm.js", new AssetLoaderListener() { @Override public boolean onSuccess(String url, Object result) { return true; diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/preloader/AssetDownloadImpl.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/preloader/AssetDownloadImpl.java index 26a27267..38eaed0d 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/preloader/AssetDownloadImpl.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/preloader/AssetDownloadImpl.java @@ -137,50 +137,46 @@ public void loadScript(boolean async, String url, AssetLoaderListener li // don't load on main thread addQueue(); - new Thread() { - public void run() { - final XMLHttpRequestWrapper request = (XMLHttpRequestWrapper)XMLHttpRequest.create(); - request.setOnreadystatechange(new EventHandlerWrapper() { - @Override - public void handleEvent(EventWrapper evt) { - if(request.getReadyState() == XMLHttpRequestWrapper.DONE) { - if(request.getStatus() != 200) { - if ((request.getStatus() != 404) && - (request.getStatus() != 403)) { - // re-try: e.g. failure due to ERR_HTTP2_SERVER_REFUSED_STREAM (too many requests) - try { - Thread.sleep(100); - } - catch (Throwable e) { - // ignored - } - loadScript(async, url, listener); - } - else { - listener.onFailure(url); - } + final XMLHttpRequestWrapper request = (XMLHttpRequestWrapper)XMLHttpRequest.create(); + request.setOnreadystatechange(new EventHandlerWrapper() { + @Override + public void handleEvent(EventWrapper evt) { + if(request.getReadyState() == XMLHttpRequestWrapper.DONE) { + if(request.getStatus() != 200) { + if ((request.getStatus() != 404) && + (request.getStatus() != 403)) { + // re-try: e.g. failure due to ERR_HTTP2_SERVER_REFUSED_STREAM (too many requests) + try { + Thread.sleep(100); } - else { - if(showLogs) - System.out.println("Script loaded: " + url); - NodeWrapper response = request.getResponse(); - TeaWindow currentWindow = TeaWindow.get(); - DocumentWrapper document = currentWindow.getDocument(); - HTMLElementWrapper scriptElement = document.createElement("script"); - scriptElement.appendChild(document.createTextNode(response)); - document.getBody().appendChild(scriptElement); - listener.onSuccess(url, request.getResponseText()); + catch (Throwable e) { + // ignored } - subtractQueue(); + loadScript(async, url, listener); + } + else { + listener.onFailure(url); } } - }); - setOnProgress(request, listener); - request.open("GET", url, async); - request.setRequestHeader("Content-Type", "text/plain; charset=utf-8"); - request.send(); + else { + if(showLogs) + System.out.println("Script loaded: " + url); + NodeWrapper response = request.getResponse(); + TeaWindow currentWindow = TeaWindow.get(); + DocumentWrapper document = currentWindow.getDocument(); + HTMLElementWrapper scriptElement = document.createElement("script"); + scriptElement.appendChild(document.createTextNode(response)); + document.getBody().appendChild(scriptElement); + listener.onSuccess(url, request.getResponseText()); + } + subtractQueue(); + } } - }.start(); + }); + setOnProgress(request, listener); + request.open("GET", url, async); + request.setRequestHeader("Content-Type", "text/plain; charset=utf-8"); + request.send(); } public void loadAudio(boolean async, final String url, final AssetLoaderListener listener) { diff --git a/examples/freetype/core/build.gradle b/examples/freetype/core/build.gradle new file mode 100644 index 00000000..ab48f795 --- /dev/null +++ b/examples/freetype/core/build.gradle @@ -0,0 +1,9 @@ +dependencies { + implementation "com.badlogicgames.gdx:gdx:$project.gdxVersion" + implementation "com.badlogicgames.gdx:gdx-box2d:$project.gdxVersion" + implementation "com.badlogicgames.gdx:gdx-freetype:$project.gdxVersion" + implementation "com.badlogicgames.gdx:gdx-ai:$project.aiVersion" + + implementation "net.onedaybeard.artemis:artemis-odb:2.3.0" +} + diff --git a/examples/freetype/core/src/main/java/com/github/xpenatan/gdx/examples/tests/FreetypeDemo.java b/examples/freetype/core/src/main/java/com/github/xpenatan/gdx/examples/tests/FreetypeDemo.java new file mode 100644 index 00000000..22cb9445 --- /dev/null +++ b/examples/freetype/core/src/main/java/com/github/xpenatan/gdx/examples/tests/FreetypeDemo.java @@ -0,0 +1,84 @@ +package com.github.xpenatan.gdx.examples.tests; + +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; +import com.badlogic.gdx.utils.ScreenUtils; + +/** + * @author xpenatan + */ +public class FreetypeDemo implements ApplicationListener { + BitmapFont font; + SpriteBatch batch; + BitmapFont ftFont; + + @Override + public void create() { + boolean flip = false; + batch = new SpriteBatch(); + if(flip) { + OrthographicCamera cam = new OrthographicCamera(); + cam.setToOrtho(flip); + cam.update(); + batch.setProjectionMatrix(cam.combined); + } + font = new BitmapFont(Gdx.files.internal("data/lsans-15.fnt"), flip); + FileHandle fontFile = Gdx.files.internal("data/lsans.ttf"); + + FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile); + + FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter(); + parameter.size = 15; + parameter.flip = flip; + parameter.genMipMaps = true; + // parameter.shadowOffsetX = 1; + // parameter.shadowOffsetY = 1; + // parameter.shadowColor = Color.GREEN; + // parameter.borderWidth = 1f; + // parameter.borderColor = Color.PURPLE; + + FreeTypeFontGenerator.FreeTypeBitmapFontData fontData = generator.generateData(parameter); + ftFont = generator.generateFont(parameter); + generator.dispose(); + } + + @Override + public void resize(int width, int height) { + + } + + @Override + public void render() { + ScreenUtils.clear(0.2f, 0.2f, 0.2f, 1); + + batch.begin(); + font.setColor(Color.RED); + font.draw(batch, "This is a test\nAnd another line\n()����$%&/!12390#", 100, 112); + ftFont.draw(batch, "This is a test\nAnd another line\n()����$%&/!12390#", 100, 112); +// batch.disableBlending(); + batch.draw(ftFont.getRegion(), 300, 0); +// batch.enableBlending(); + batch.end(); + } + + @Override + public void pause() { + + } + + @Override + public void resume() { + + } + + @Override + public void dispose() { + + } +} diff --git a/examples/freetype/desktop/assets/data/lsans-15.fnt b/examples/freetype/desktop/assets/data/lsans-15.fnt new file mode 100644 index 00000000..958d06e3 --- /dev/null +++ b/examples/freetype/desktop/assets/data/lsans-15.fnt @@ -0,0 +1,175 @@ +info face="Liberation Sans" size=15 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=-2,-2 +common lineHeight=18 base=14 scaleW=1024 scaleH=32 pages=1 packed=0 +page id=0 file="lsans-15_00.png" +chars count=97 +char id=0 x=606 y=0 width=11 height=13 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=0 +char id=10 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=0 page=0 chnl=0 +char id=32 x=0 y=0 width=0 height=0 xoffset=-1 yoffset=0 xadvance=4 page=0 chnl=0 +char id=33 x=554 y=0 width=5 height=13 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=0 +char id=34 x=839 y=0 width=7 height=5 xoffset=-1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=35 x=596 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=36 x=77 y=0 width=10 height=15 xoffset=-1 yoffset=1 xadvance=8 page=0 chnl=0 +char id=37 x=581 y=0 width=15 height=13 xoffset=-1 yoffset=2 xadvance=13 page=0 chnl=0 +char id=38 x=627 y=0 width=12 height=12 xoffset=-1 yoffset=3 xadvance=10 page=0 chnl=0 +char id=39 x=846 y=0 width=5 height=5 xoffset=-1 yoffset=2 xadvance=3 page=0 chnl=0 +char id=40 x=20 y=0 width=7 height=16 xoffset=-1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=41 x=27 y=0 width=7 height=16 xoffset=-1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=42 x=827 y=0 width=8 height=7 xoffset=-1 yoffset=2 xadvance=6 page=0 chnl=0 +char id=43 x=639 y=0 width=11 height=11 xoffset=-1 yoffset=3 xadvance=9 page=0 chnl=0 +char id=44 x=835 y=0 width=4 height=6 xoffset=0 yoffset=11 xadvance=4 page=0 chnl=0 +char id=45 x=872 y=0 width=7 height=4 xoffset=-1 yoffset=8 xadvance=5 page=0 chnl=0 +char id=46 x=868 y=0 width=4 height=4 xoffset=0 yoffset=11 xadvance=4 page=0 chnl=0 +char id=47 x=569 y=0 width=6 height=13 xoffset=-1 yoffset=2 xadvance=4 page=0 chnl=0 +char id=48 x=544 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=49 x=455 y=0 width=9 height=13 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=0 +char id=50 x=464 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=51 x=474 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=52 x=484 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=53 x=494 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=54 x=504 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=55 x=514 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=56 x=524 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=57 x=534 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=58 x=782 y=0 width=4 height=10 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=0 +char id=59 x=623 y=0 width=4 height=12 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=0 +char id=60 x=786 y=0 width=11 height=9 xoffset=-1 yoffset=4 xadvance=9 page=0 chnl=0 +char id=61 x=816 y=0 width=11 height=7 xoffset=-1 yoffset=6 xadvance=9 page=0 chnl=0 +char id=62 x=797 y=0 width=11 height=9 xoffset=-1 yoffset=4 xadvance=9 page=0 chnl=0 +char id=63 x=559 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=64 x=62 y=0 width=15 height=15 xoffset=0 yoffset=2 xadvance=15 page=0 chnl=0 +char id=65 x=87 y=0 width=11 height=13 xoffset=-1 yoffset=2 xadvance=9 page=0 chnl=0 +char id=66 x=98 y=0 width=11 height=13 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=0 +char id=67 x=109 y=0 width=13 height=13 xoffset=-1 yoffset=2 xadvance=11 page=0 chnl=0 +char id=68 x=122 y=0 width=12 height=13 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=0 +char id=69 x=134 y=0 width=11 height=13 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=0 +char id=70 x=145 y=0 width=10 height=13 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=0 +char id=71 x=155 y=0 width=12 height=13 xoffset=-1 yoffset=2 xadvance=11 page=0 chnl=0 +char id=72 x=167 y=0 width=10 height=13 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=0 +char id=73 x=177 y=0 width=4 height=13 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=0 +char id=74 x=181 y=0 width=8 height=13 xoffset=-1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=75 x=189 y=0 width=11 height=13 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=0 +char id=76 x=200 y=0 width=9 height=13 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=0 +char id=77 x=209 y=0 width=11 height=13 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=0 +char id=78 x=220 y=0 width=10 height=13 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=0 +char id=79 x=230 y=0 width=14 height=13 xoffset=-1 yoffset=2 xadvance=12 page=0 chnl=0 +char id=80 x=244 y=0 width=11 height=13 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=0 +char id=81 x=0 y=0 width=14 height=16 xoffset=-1 yoffset=2 xadvance=12 page=0 chnl=0 +char id=82 x=255 y=0 width=12 height=13 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=0 +char id=83 x=267 y=0 width=12 height=13 xoffset=-1 yoffset=2 xadvance=10 page=0 chnl=0 +char id=84 x=279 y=0 width=11 height=13 xoffset=-1 yoffset=2 xadvance=9 page=0 chnl=0 +char id=85 x=290 y=0 width=10 height=13 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=0 +char id=86 x=300 y=0 width=11 height=13 xoffset=-1 yoffset=2 xadvance=9 page=0 chnl=0 +char id=87 x=311 y=0 width=17 height=13 xoffset=-1 yoffset=2 xadvance=15 page=0 chnl=0 +char id=88 x=328 y=0 width=11 height=13 xoffset=-1 yoffset=2 xadvance=9 page=0 chnl=0 +char id=89 x=339 y=0 width=11 height=13 xoffset=-1 yoffset=2 xadvance=9 page=0 chnl=0 +char id=90 x=350 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=91 x=34 y=0 width=5 height=16 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=0 +char id=92 x=575 y=0 width=6 height=13 xoffset=-1 yoffset=2 xadvance=4 page=0 chnl=0 +char id=93 x=39 y=0 width=5 height=16 xoffset=-1 yoffset=2 xadvance=4 page=0 chnl=0 +char id=94 x=808 y=0 width=8 height=7 xoffset=-1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=95 x=879 y=0 width=12 height=3 xoffset=-2 yoffset=15 xadvance=8 page=0 chnl=0 +char id=96 x=862 y=0 width=6 height=4 xoffset=-1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=97 x=650 y=0 width=10 height=10 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=98 x=360 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=99 x=660 y=0 width=10 height=10 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=100 x=370 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=101 x=670 y=0 width=10 height=10 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=102 x=380 y=0 width=7 height=13 xoffset=-1 yoffset=2 xadvance=4 page=0 chnl=0 +char id=103 x=387 y=0 width=10 height=13 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=104 x=397 y=0 width=9 height=13 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=0 +char id=105 x=406 y=0 width=5 height=13 xoffset=-1 yoffset=2 xadvance=3 page=0 chnl=0 +char id=106 x=14 y=0 width=6 height=16 xoffset=-2 yoffset=2 xadvance=3 page=0 chnl=0 +char id=107 x=411 y=0 width=10 height=13 xoffset=-1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=108 x=421 y=0 width=5 height=13 xoffset=-1 yoffset=2 xadvance=3 page=0 chnl=0 +char id=109 x=680 y=0 width=13 height=10 xoffset=0 yoffset=5 xadvance=13 page=0 chnl=0 +char id=110 x=693 y=0 width=10 height=10 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=111 x=703 y=0 width=10 height=10 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=112 x=426 y=0 width=10 height=13 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=113 x=436 y=0 width=10 height=13 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=114 x=713 y=0 width=6 height=10 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=0 +char id=115 x=719 y=0 width=10 height=10 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=116 x=617 y=0 width=6 height=12 xoffset=-1 yoffset=3 xadvance=4 page=0 chnl=0 +char id=117 x=729 y=0 width=10 height=10 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=118 x=739 y=0 width=9 height=10 xoffset=-1 yoffset=5 xadvance=7 page=0 chnl=0 +char id=119 x=748 y=0 width=15 height=10 xoffset=-2 yoffset=5 xadvance=11 page=0 chnl=0 +char id=120 x=763 y=0 width=9 height=10 xoffset=-1 yoffset=5 xadvance=7 page=0 chnl=0 +char id=121 x=446 y=0 width=9 height=13 xoffset=-1 yoffset=5 xadvance=7 page=0 chnl=0 +char id=122 x=772 y=0 width=10 height=10 xoffset=-1 yoffset=5 xadvance=8 page=0 chnl=0 +char id=123 x=44 y=0 width=7 height=16 xoffset=-1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=124 x=58 y=0 width=4 height=16 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=0 +char id=125 x=51 y=0 width=7 height=16 xoffset=-1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=126 x=851 y=0 width=11 height=5 xoffset=-1 yoffset=6 xadvance=9 page=0 chnl=0 +kernings count=73 +kerning first=70 second=46 amount=-2 +kerning first=84 second=121 amount=-1 +kerning first=121 second=44 amount=-1 +kerning first=86 second=58 amount=-1 +kerning first=89 second=101 amount=-1 +kerning first=89 second=46 amount=-2 +kerning first=84 second=45 amount=-1 +kerning first=119 second=44 amount=-1 +kerning first=89 second=59 amount=-1 +kerning first=84 second=58 amount=-2 +kerning first=87 second=46 amount=-1 +kerning first=65 second=84 amount=-1 +kerning first=84 second=105 amount=-1 +kerning first=86 second=97 amount=-1 +kerning first=84 second=97 amount=-2 +kerning first=76 second=87 amount=-1 +kerning first=65 second=89 amount=-1 +kerning first=76 second=32 amount=-1 +kerning first=76 second=121 amount=-1 +kerning first=89 second=111 amount=-1 +kerning first=121 second=46 amount=-1 +kerning first=119 second=46 amount=-1 +kerning first=84 second=115 amount=-2 +kerning first=76 second=84 amount=-1 +kerning first=65 second=86 amount=-1 +kerning first=86 second=65 amount=-1 +kerning first=86 second=44 amount=-1 +kerning first=84 second=65 amount=-1 +kerning first=84 second=99 amount=-2 +kerning first=89 second=45 amount=-1 +kerning first=84 second=44 amount=-2 +kerning first=76 second=89 amount=-1 +kerning first=89 second=113 amount=-1 +kerning first=89 second=58 amount=-1 +kerning first=86 second=117 amount=-1 +kerning first=80 second=65 amount=-1 +kerning first=89 second=105 amount=-1 +kerning first=80 second=44 amount=-2 +kerning first=89 second=118 amount=-1 +kerning first=84 second=117 amount=-1 +kerning first=89 second=97 amount=-1 +kerning first=76 second=86 amount=-1 +kerning first=118 second=44 amount=-1 +kerning first=86 second=101 amount=-1 +kerning first=87 second=97 amount=-1 +kerning first=86 second=46 amount=-1 +kerning first=86 second=114 amount=-1 +kerning first=86 second=59 amount=-1 +kerning first=84 second=101 amount=-2 +kerning first=84 second=46 amount=-2 +kerning first=32 second=65 amount=-1 +kerning first=84 second=114 amount=-1 +kerning first=114 second=44 amount=-1 +kerning first=84 second=59 amount=-2 +kerning first=70 second=65 amount=-1 +kerning first=80 second=46 amount=-2 +kerning first=70 second=44 amount=-2 +kerning first=84 second=119 amount=-1 +kerning first=89 second=65 amount=-1 +kerning first=86 second=111 amount=-1 +kerning first=89 second=44 amount=-2 +kerning first=89 second=112 amount=-1 +kerning first=87 second=65 amount=-1 +kerning first=118 second=46 amount=-1 +kerning first=84 second=111 amount=-2 +kerning first=87 second=44 amount=-1 +kerning first=49 second=49 amount=-1 +kerning first=89 second=117 amount=-1 +kerning first=114 second=46 amount=-1 +kerning first=86 second=121 amount=-1 +kerning first=65 second=87 amount=-1 +kerning first=65 second=32 amount=-1 +kerning first=86 second=45 amount=-1 diff --git a/examples/freetype/desktop/assets/data/lsans-15_00.png b/examples/freetype/desktop/assets/data/lsans-15_00.png new file mode 100644 index 0000000000000000000000000000000000000000..708d6f35d0248fb2a2e2853f0b065ed271f65c2b GIT binary patch literal 9811 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 literal 0 HcmV?d00001 diff --git a/examples/freetype/desktop/assets/data/lsans.ttf b/examples/freetype/desktop/assets/data/lsans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e6339859d0b24bee79ae3f64e0071900170224ba GIT binary patch literal 410712 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 U^4IX6nfTvc!IeM%9f$n?0IO~PegFUf literal 0 HcmV?d00001 diff --git a/examples/freetype/desktop/build.gradle b/examples/freetype/desktop/build.gradle new file mode 100644 index 00000000..aa57b7c7 --- /dev/null +++ b/examples/freetype/desktop/build.gradle @@ -0,0 +1,36 @@ +project.ext.mainClassName = "com.github.xpenatan.gdx.examples.desktop.Main" + +project.ext.assetsDir = new File("/assets"); + +dependencies { + implementation "com.badlogicgames.gdx:gdx-platform:$project.gdxVersion:natives-desktop" + implementation "com.badlogicgames.gdx:gdx-backend-lwjgl:$project.gdxVersion" + implementation "com.badlogicgames.gdx:gdx-box2d-platform:$project.gdxVersion:natives-desktop" + implementation "com.badlogicgames.gdx:gdx-freetype-platform:$project.gdxVersion:natives-desktop" + implementation project(":examples:freetype:core") +} + +tasks.register('runFreetypeDesktop', JavaExec) { + dependsOn classes + setGroup("examples-desktop") + setDescription("Run Freetype example") + mainClass.set(project.mainClassName) + setClasspath(sourceSets.main.runtimeClasspath) + workingDir = project.assetsDir + + if (org.gradle.internal.os.OperatingSystem.current() == org.gradle.internal.os.OperatingSystem.MAC_OS) { + // Required to run on macOS + jvmArgs += "-XstartOnFirstThread" + } +} + +tasks.register('dist', Jar) { + manifest { + attributes 'Main-Class': project.mainClassName + } + dependsOn configurations.runtimeClasspath + from { + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } + with jar +} \ No newline at end of file diff --git a/examples/freetype/desktop/src/main/java/com/github/xpenatan/gdx/examples/desktop/Main.java b/examples/freetype/desktop/src/main/java/com/github/xpenatan/gdx/examples/desktop/Main.java new file mode 100644 index 00000000..6572c617 --- /dev/null +++ b/examples/freetype/desktop/src/main/java/com/github/xpenatan/gdx/examples/desktop/Main.java @@ -0,0 +1,11 @@ +package com.github.xpenatan.gdx.examples.desktop; + +import com.badlogic.gdx.backends.lwjgl.LwjglApplication; +import com.github.xpenatan.gdx.examples.tests.FreetypeDemo; + +public class Main { + + public static void main(String[] args) { + new LwjglApplication(new FreetypeDemo()); + } +} diff --git a/examples/freetype/teavm/build.gradle b/examples/freetype/teavm/build.gradle new file mode 100644 index 00000000..b3031fe2 --- /dev/null +++ b/examples/freetype/teavm/build.gradle @@ -0,0 +1,45 @@ +plugins { + id "org.gretty" version '3.1.0' +} + +gretty { + contextPath = '/' + extraResourceBase 'build/dist/webapp' +} + +sourceSets.main.java.srcDirs = ["src/main/java/"] +project.ext.assetsDir = new File("../desktop/assets") + +dependencies { + implementation "com.badlogicgames.gdx:gdx:$project.gdxVersion" + implementation project(":examples:freetype:core") + + // Use snapshots +// implementation "com.github.xpenatan.gdx-teavm:backend-teavm:1.0.0-SNAPSHOT" +// implementation "com.github.xpenatan.gdx-teavm:gdx-freetype-teavm:1.0.0-SNAPSHOT" + + // Or source projects + implementation project(":backends:backend-teavm") + implementation project(":extensions:gdx-freetype-teavm") +} + +project.ext.freeTypeMainClassName = "com.github.xpenatan.gdx.examples.teavm.BuildFreetypeTest" + +tasks.register('buildExampleCoreFreeType', JavaExec) { + dependsOn classes + setGroup("teavm") + setDescription("Build teavm FreeType example") + mainClass.set(project.freeTypeMainClassName) + setClasspath(sourceSets.main.runtimeClasspath) +} +tasks.register('runCoreFreeTypeTest') { + dependsOn([ + ':examples:freetype:teavm:clean', + ':examples:freetype:teavm:buildExampleCoreFreeType', + ':examples:freetype:teavm:jettyRun' + ]) + setGroup("examples-teavm") + setDescription("Run FreeType Demo example") +} + +runCoreFreeTypeTest.shouldRunAfter ":examples:freetype:teavm:clean" diff --git a/examples/freetype/teavm/src/main/java/com/github/xpenatan/gdx/examples/teavm/BuildFreetypeTest.java b/examples/freetype/teavm/src/main/java/com/github/xpenatan/gdx/examples/teavm/BuildFreetypeTest.java new file mode 100644 index 00000000..3705c239 --- /dev/null +++ b/examples/freetype/teavm/src/main/java/com/github/xpenatan/gdx/examples/teavm/BuildFreetypeTest.java @@ -0,0 +1,24 @@ +package com.github.xpenatan.gdx.examples.teavm; + +import com.github.xpenatan.gdx.backends.teavm.TeaBuildConfiguration; +import com.github.xpenatan.gdx.backends.teavm.TeaBuilder; +import com.github.xpenatan.gdx.backends.teavm.gen.SkipClass; +import com.github.xpenatan.gdx.examples.teavm.launcher.FreetypeTestLauncher; +import java.io.File; +import java.io.IOException; +import org.teavm.tooling.TeaVMTool; + +@SkipClass +public class BuildFreetypeTest { + + public static void main(String[] args) throws IOException { + TeaBuildConfiguration teaBuildConfiguration = new TeaBuildConfiguration(); + teaBuildConfiguration.assetsPath.add(new File("../desktop/assets")); + teaBuildConfiguration.webappPath = new File("build/dist").getCanonicalPath(); + + TeaVMTool tool = TeaBuilder.config(teaBuildConfiguration); + tool.setMainClass(FreetypeTestLauncher.class.getName()); + tool.setObfuscated(false); + TeaBuilder.build(tool); + } +} diff --git a/examples/freetype/teavm/src/main/java/com/github/xpenatan/gdx/examples/teavm/launcher/FreetypeTestLauncher.java b/examples/freetype/teavm/src/main/java/com/github/xpenatan/gdx/examples/teavm/launcher/FreetypeTestLauncher.java new file mode 100644 index 00000000..a5c56b7a --- /dev/null +++ b/examples/freetype/teavm/src/main/java/com/github/xpenatan/gdx/examples/teavm/launcher/FreetypeTestLauncher.java @@ -0,0 +1,15 @@ +package com.github.xpenatan.gdx.examples.teavm.launcher; + +import com.github.xpenatan.gdx.backends.teavm.TeaApplication; +import com.github.xpenatan.gdx.backends.teavm.TeaApplicationConfiguration; +import com.github.xpenatan.gdx.examples.tests.FreetypeDemo; + +public class FreetypeTestLauncher { + + public static void main(String[] args) { + TeaApplicationConfiguration config = new TeaApplicationConfiguration("canvas"); + config.width = 0; + config.height = 0; + new TeaApplication(new FreetypeDemo(), config); + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 4e82799c..48e70797 100644 --- a/settings.gradle +++ b/settings.gradle @@ -23,6 +23,9 @@ include ":examples:bullet:teavm" include ":examples:box2d:core" include ":examples:box2d:desktop" include ":examples:box2d:teavm" +include ":examples:freetype:core" +include ":examples:freetype:desktop" +include ":examples:freetype:teavm" // ######### Add libgdx tests to project // ######### Need to have libgdx source code tag 1.11.0. Change to your libgdx source directory. From 6a93d1b1a504ffe96fb363a45601086b00724083 Mon Sep 17 00:00:00 2001 From: Natan Date: Sun, 2 Jul 2023 20:24:46 -0300 Subject: [PATCH 2/9] update idl package --- .../xpenatan/gdx/html5/box2d/Box2dParser.java | 2 +- .../github/xpenatan/gdx/html5/box2d/Main.java | 6 +++--- .../gdx/html5/bullet/BulletCodeParser.java | 6 +++--- .../gdx/html5/bullet/BulletCppParser.java | 2 +- .../xpenatan/gdx/html5/bullet/Main.java | 6 +++--- settings.gradle | 21 +++++++++++++------ 6 files changed, 26 insertions(+), 17 deletions(-) diff --git a/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Box2dParser.java b/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Box2dParser.java index e2e5fe5f..aa0167f9 100644 --- a/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Box2dParser.java +++ b/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Box2dParser.java @@ -1,6 +1,6 @@ package com.github.xpenatan.gdx.html5.box2d; -import com.github.xpenatan.jparser.core.idl.IDLFile; +import com.github.xpenatan.jparser.idl.IDLFile; import com.github.xpenatan.jparser.teavm.TeaVMCodeParser; public class Box2dParser extends TeaVMCodeParser { diff --git a/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Main.java b/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Main.java index ae4dffdc..7c4d952b 100644 --- a/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Main.java +++ b/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Main.java @@ -1,14 +1,14 @@ package com.github.xpenatan.gdx.html5.box2d; import com.github.xpenatan.jparser.core.JParser; -import com.github.xpenatan.jparser.core.idl.IDLFile; -import com.github.xpenatan.jparser.core.idl.IDLParser; +import com.github.xpenatan.jparser.idl.IDLFile; +import com.github.xpenatan.jparser.idl.IDLReader; import java.io.File; public class Main { public static void main(String[] args) throws Exception { String path = "..\\..\\gdx-box2d\\gdx-box2d-build\\jni\\box2D.idl"; - IDLFile idlFile = IDLParser.parseFile(path); + IDLFile idlFile = IDLReader.parseFile(path); String basePath = new File(".").getAbsolutePath(); JParser.generate(new Box2dParser(idlFile), basePath + "./gdx-box2d-base/src", "../gdx-box2d-teavm/src", null); diff --git a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCodeParser.java b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCodeParser.java index 01c7aae5..69c92765 100644 --- a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCodeParser.java +++ b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCodeParser.java @@ -15,9 +15,9 @@ import com.github.javaparser.ast.stmt.Statement; import com.github.javaparser.ast.type.Type; import com.github.xpenatan.jparser.core.JParserHelper; -import com.github.xpenatan.jparser.core.idl.IDLClass; -import com.github.xpenatan.jparser.core.idl.IDLFile; -import com.github.xpenatan.jparser.core.idl.IDLMethod; +import com.github.xpenatan.jparser.idl.IDLClass; +import com.github.xpenatan.jparser.idl.IDLFile; +import com.github.xpenatan.jparser.idl.IDLMethod; import com.github.xpenatan.jparser.teavm.TeaVMCodeParser; /** diff --git a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCppParser.java b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCppParser.java index c199a823..29cf7eb6 100644 --- a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCppParser.java +++ b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCppParser.java @@ -15,7 +15,7 @@ import com.github.javaparser.ast.stmt.Statement; import com.github.javaparser.ast.type.Type; import com.github.xpenatan.jparser.core.JParserHelper; -import com.github.xpenatan.jparser.core.idl.IDLFile; +import com.github.xpenatan.jparser.idl.IDLFile; import com.github.xpenatan.jparser.cpp.CppCodeParser; public class BulletCppParser extends CppCodeParser { diff --git a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/Main.java b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/Main.java index 510ce96f..c036e838 100644 --- a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/Main.java +++ b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/Main.java @@ -1,8 +1,8 @@ package com.github.xpenatan.gdx.html5.bullet; import com.github.xpenatan.jparser.core.JParser; -import com.github.xpenatan.jparser.core.idl.IDLFile; -import com.github.xpenatan.jparser.core.idl.IDLParser; +import com.github.xpenatan.jparser.idl.IDLFile; +import com.github.xpenatan.jparser.idl.IDLReader; import com.github.xpenatan.jparser.cpp.CPPBuildHelper; import com.github.xpenatan.jparser.cpp.CppCodeParser; import com.github.xpenatan.jparser.cpp.FileCopyHelper; @@ -11,7 +11,7 @@ public class Main { public static void main(String[] args) throws Exception { String path = "..\\..\\gdx-bullet\\gdx-bullet-build\\jni\\bullet.idl"; - IDLFile idlFile = IDLParser.parseFile(path); + IDLFile idlFile = IDLReader.parseFile(path); String basePath = new File(".").getAbsolutePath(); JParser.generate(new BulletCodeParser(idlFile), basePath + "./gdx-bullet-base/src", "../gdx-bullet-teavm/src", null); diff --git a/settings.gradle b/settings.gradle index 48e70797..1bea4d5b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -44,12 +44,21 @@ include ":examples:freetype:teavm" //includeBuild("D:\\Dev\\Projects\\java\\teavm") { // dependencySubstitution { -// substitute module('org.teavm:teavm-tooling') with project(':tools:core') -// substitute module('org.teavm:teavm-core') with project(':core') -// substitute module('org.teavm:teavm-classlib') with project(':classlib') -// substitute module('org.teavm:teavm-jso') with project(':jso:core') -// substitute module('org.teavm:teavm-jso-apis') with project(':jso:apis') -// substitute module('org.teavm:teavm-jso-impl') with project(':jso:impl') +// substitute module('org.teavm:teavm-tooling') using project(':tools:core') +// substitute module('org.teavm:teavm-core') using project(':core') +// substitute module('org.teavm:teavm-classlib') using project(':classlib') +// substitute module('org.teavm:teavm-jso') using project(':jso:core') +// substitute module('org.teavm:teavm-jso-apis') using project(':jso:apis') +// substitute module('org.teavm:teavm-jso-impl') using project(':jso:impl') +// } +//} + +//includeBuild("E:\\Dev\\Projects\\java\\jParser") { +// dependencySubstitution { +// substitute module('com.github.xpenatan.jParser:jParser-core') using project(':jParser:core') +// substitute module('com.github.xpenatan.jParser:jParser-teavm') using project(':jParser:teavm') +// substitute module('com.github.xpenatan.jParser:jParser-cpp') using project(':jParser:cpp') +// substitute module('com.github.xpenatan.jParser:jParser-loader') using project(':jParser:loader') // } //} From a55a376b9b95d7f139d6f4af38df0e11c51a062b Mon Sep 17 00:00:00 2001 From: Natan Date: Sun, 2 Jul 2023 22:14:27 -0300 Subject: [PATCH 3/9] update idl reader --- .../github/xpenatan/gdx/html5/box2d/Box2dParser.java | 6 +++--- .../java/com/github/xpenatan/gdx/html5/box2d/Main.java | 5 ++--- .../xpenatan/gdx/html5/bullet/BulletCodeParser.java | 6 +++--- .../xpenatan/gdx/html5/bullet/BulletCppParser.java | 6 +++--- .../com/github/xpenatan/gdx/html5/bullet/Main.java | 10 +++++----- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Box2dParser.java b/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Box2dParser.java index aa0167f9..2f8f39ca 100644 --- a/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Box2dParser.java +++ b/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Box2dParser.java @@ -1,10 +1,10 @@ package com.github.xpenatan.gdx.html5.box2d; -import com.github.xpenatan.jparser.idl.IDLFile; +import com.github.xpenatan.jparser.idl.IDLReader; import com.github.xpenatan.jparser.teavm.TeaVMCodeParser; public class Box2dParser extends TeaVMCodeParser { - public Box2dParser(IDLFile idlFile) { - super("Box2D", idlFile); + public Box2dParser(IDLReader idlReader) { + super("Box2D", idlReader); } } diff --git a/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Main.java b/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Main.java index 7c4d952b..0b1963b0 100644 --- a/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Main.java +++ b/extensions/gdx-box2d/gdx-box2d-build/src/main/java/com/github/xpenatan/gdx/html5/box2d/Main.java @@ -1,16 +1,15 @@ package com.github.xpenatan.gdx.html5.box2d; import com.github.xpenatan.jparser.core.JParser; -import com.github.xpenatan.jparser.idl.IDLFile; import com.github.xpenatan.jparser.idl.IDLReader; import java.io.File; public class Main { public static void main(String[] args) throws Exception { String path = "..\\..\\gdx-box2d\\gdx-box2d-build\\jni\\box2D.idl"; - IDLFile idlFile = IDLReader.parseFile(path); + IDLReader idlReader = IDLReader.readIDL(path); String basePath = new File(".").getAbsolutePath(); - JParser.generate(new Box2dParser(idlFile), basePath + "./gdx-box2d-base/src", "../gdx-box2d-teavm/src", null); + JParser.generate(new Box2dParser(idlReader), basePath + "./gdx-box2d-base/src", "../gdx-box2d-teavm/src", null); } } \ No newline at end of file diff --git a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCodeParser.java b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCodeParser.java index 69c92765..869b56fa 100644 --- a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCodeParser.java +++ b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCodeParser.java @@ -16,8 +16,8 @@ import com.github.javaparser.ast.type.Type; import com.github.xpenatan.jparser.core.JParserHelper; import com.github.xpenatan.jparser.idl.IDLClass; -import com.github.xpenatan.jparser.idl.IDLFile; import com.github.xpenatan.jparser.idl.IDLMethod; +import com.github.xpenatan.jparser.idl.IDLReader; import com.github.xpenatan.jparser.teavm.TeaVMCodeParser; /** @@ -29,8 +29,8 @@ */ public class BulletCodeParser extends TeaVMCodeParser { - public BulletCodeParser(IDLFile idlFile) { - super("Bullet", idlFile); + public BulletCodeParser(IDLReader idlReader) { + super("Bullet", idlReader); enableAttributeParsing = false; } diff --git a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCppParser.java b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCppParser.java index 29cf7eb6..7e2f07d5 100644 --- a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCppParser.java +++ b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/BulletCppParser.java @@ -15,8 +15,8 @@ import com.github.javaparser.ast.stmt.Statement; import com.github.javaparser.ast.type.Type; import com.github.xpenatan.jparser.core.JParserHelper; -import com.github.xpenatan.jparser.idl.IDLFile; import com.github.xpenatan.jparser.cpp.CppCodeParser; +import com.github.xpenatan.jparser.idl.IDLReader; public class BulletCppParser extends CppCodeParser { @@ -34,8 +34,8 @@ public BulletCppParser(String classpath, String jniDir) { this(null, classpath, jniDir); } - public BulletCppParser(IDLFile idlFile, String classpath, String jniDir) { - super(idlFile, classpath, jniDir); + public BulletCppParser(IDLReader idlReader, String classpath, String jniDir) { + super(idlReader, classpath, jniDir); } protected void generateGdxMethod(CompilationUnit unit, ClassOrInterfaceDeclaration classDeclaration, MethodDeclaration idlMethodDeclaration, MethodDeclaration nativeMethod, MethodCallExpr caller) { diff --git a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/Main.java b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/Main.java index c036e838..e5d4c51a 100644 --- a/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/Main.java +++ b/extensions/gdx-bullet/gdx-bullet-build/src/main/java/com/github/xpenatan/gdx/html5/bullet/Main.java @@ -11,15 +11,15 @@ public class Main { public static void main(String[] args) throws Exception { String path = "..\\..\\gdx-bullet\\gdx-bullet-build\\jni\\bullet.idl"; - IDLFile idlFile = IDLReader.parseFile(path); + IDLReader idlReader = IDLReader.readIDL(path); String basePath = new File(".").getAbsolutePath(); - JParser.generate(new BulletCodeParser(idlFile), basePath + "./gdx-bullet-base/src", "../gdx-bullet-teavm/src", null); + JParser.generate(new BulletCodeParser(idlReader), basePath + "./gdx-bullet-base/src", "../gdx-bullet-teavm/src", null); - buildBulletCPP(idlFile); + buildBulletCPP(idlReader); } - private static void buildBulletCPP(IDLFile idlFile) throws Exception { + private static void buildBulletCPP(IDLReader idlReader) throws Exception { String libName = "gdx-bullet"; String bulletPath = new File("../gdx-bullet/").getCanonicalPath(); String genDir = bulletPath + "/src/main/java"; @@ -29,7 +29,7 @@ private static void buildBulletCPP(IDLFile idlFile) throws Exception { String sourceDir = "../gdx-bullet-base/src/main/java/"; String classPath = CppCodeParser.getClassPath("bullet-base", "gdx-1", "gdx-jnigen-loader", "jParser-loader"); - BulletCppParser cppParser = new BulletCppParser(idlFile, classPath, buildPath); + BulletCppParser cppParser = new BulletCppParser(idlReader, classPath, buildPath); JParser.generate(cppParser, sourceDir, genDir); String [] flags = new String[1]; From 85997bbc27584a36c45afa486222e1aa40dcece2 Mon Sep 17 00:00:00 2001 From: Natan Date: Mon, 3 Jul 2023 19:05:51 -0300 Subject: [PATCH 4/9] update libgdx to 1.12.0 --- .../com/artemis/utils/reflect/FieldGen.java | 2 +- .../glutils/IndexBufferObjectEmu.java | 98 +++++++--------- .../glutils/VertexBufferObjectEmu.java | 87 ++++++++++----- .../glutils/VertexBufferObjectWithVAOEmu.java | 105 +++++++++++------- .../gdx/scenes/scene2d/utils/UIUtilsEmu.java | 72 ++++++++++++ .../badlogic/gdx/utils/reflect/FieldGen.java | 2 +- .../gdx/backends/teavm/TeaApplication.java | 15 +++ .../xpenatan/gdx/backends/teavm/TeaAudio.java | 12 ++ .../gdx/backends/teavm/TeaGraphics.java | 32 ++++++ .../xpenatan/gdx/backends/teavm/TeaInput.java | 9 +- .../{util => utils}/GenericTypeProvider.java | 2 +- .../backends/teavm/utils/TeaNavigator.java | 12 ++ dependencies.gradle | 2 +- .../gdx/examples/box2d/PyramidTest.java | 5 + .../gdx/examples/bullet/BulletMoveTest.java | 5 + .../gdx/examples/bullet/BulletTest.java | 5 + 16 files changed, 331 insertions(+), 134 deletions(-) create mode 100644 backends/backend-teavm/emu/com/badlogic/gdx/scenes/scene2d/utils/UIUtilsEmu.java rename backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/{util => utils}/GenericTypeProvider.java (98%) create mode 100644 backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/utils/TeaNavigator.java diff --git a/backends/backend-teavm/emu/com/artemis/utils/reflect/FieldGen.java b/backends/backend-teavm/emu/com/artemis/utils/reflect/FieldGen.java index b0816d0a..eed569a9 100644 --- a/backends/backend-teavm/emu/com/artemis/utils/reflect/FieldGen.java +++ b/backends/backend-teavm/emu/com/artemis/utils/reflect/FieldGen.java @@ -3,7 +3,7 @@ import com.badlogic.gdx.utils.reflect.ArrayReflection; import com.badlogic.gdx.utils.reflect.ReflectionException; import com.github.xpenatan.gdx.backends.teavm.plugins.TeaReflectionSupplier; -import com.github.xpenatan.gdx.backends.teavm.util.GenericTypeProvider; +import com.github.xpenatan.gdx.backends.teavm.utils.GenericTypeProvider; import java.lang.reflect.GenericArrayType; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; diff --git a/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/IndexBufferObjectEmu.java b/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/IndexBufferObjectEmu.java index a849ba44..6ed54648 100644 --- a/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/IndexBufferObjectEmu.java +++ b/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/IndexBufferObjectEmu.java @@ -43,8 +43,7 @@ * VertexBufferObjects must be disposed via the {@link #dispose()} method when no longer needed *

* - * @author mzechner - */ + * @author mzechner */ @Emulate(IndexBufferObject.class) public class IndexBufferObjectEmu implements IndexData { ShortBuffer buffer; @@ -54,13 +53,11 @@ public class IndexBufferObjectEmu implements IndexData { boolean isBound = false; final int usage; - /** - * Creates a new IndexBufferObject. + /** Creates a new IndexBufferObject. * - * @param isStatic whether the index buffer is static - * @param maxIndices the maximum number of indices this buffer can hold - */ - public IndexBufferObjectEmu(boolean isStatic, int maxIndices) { + * @param isStatic whether the index buffer is static + * @param maxIndices the maximum number of indices this buffer can hold */ + public IndexBufferObjectEmu (boolean isStatic, int maxIndices) { isDirect = true; buffer = BufferUtils.newShortBuffer(maxIndices); buffer.flip(); @@ -68,12 +65,10 @@ public IndexBufferObjectEmu(boolean isStatic, int maxIndices) { usage = isStatic ? GL20.GL_STATIC_DRAW : GL20.GL_DYNAMIC_DRAW; } - /** - * Creates a new IndexBufferObject to be used with vertex arrays. + /** Creates a new IndexBufferObject to be used with vertex arrays. * - * @param maxIndices the maximum number of indices this buffer can hold - */ - public IndexBufferObjectEmu(int maxIndices) { + * @param maxIndices the maximum number of indices this buffer can hold */ + public IndexBufferObjectEmu (int maxIndices) { this.isDirect = true; buffer = BufferUtils.newShortBuffer(maxIndices); buffer.flip(); @@ -81,17 +76,13 @@ public IndexBufferObjectEmu(int maxIndices) { usage = GL20.GL_STATIC_DRAW; } - /** - * @return the number of indices currently stored in this buffer - */ - public int getNumIndices() { + /** @return the number of indices currently stored in this buffer */ + public int getNumIndices () { return buffer.limit(); } - /** - * @return the maximum number of indices this IndexBufferObject can store. - */ - public int getNumMaxIndices() { + /** @return the maximum number of indices this IndexBufferObject can store. */ + public int getNumMaxIndices () { return buffer.capacity(); } @@ -106,93 +97,86 @@ public int getNumMaxIndices() { *

* * @param indices the vertex data - * @param offset the offset to start copying the data from - * @param count the number of shorts to copy - */ - public void setIndices(short[] indices, int offset, int count) { + * @param offset the offset to start copying the data from + * @param count the number of shorts to copy */ + public void setIndices (short[] indices, int offset, int count) { isDirty = true; buffer.clear(); buffer.put(indices, offset, count); buffer.flip(); - if(isBound) { + if (isBound) { Gdx.gl20.glBufferData(GL20.GL_ELEMENT_ARRAY_BUFFER, buffer.limit(), buffer, usage); isDirty = false; } } - public void setIndices(ShortBuffer indices) { + public void setIndices (ShortBuffer indices) { isDirty = true; buffer.clear(); buffer.put(indices); buffer.flip(); - if(isBound) { + if (isBound) { Gdx.gl20.glBufferData(GL20.GL_ELEMENT_ARRAY_BUFFER, buffer.limit(), buffer, usage); isDirty = false; } } - public void updateIndices(int targetOffset, short[] indices, int offset, int count) { + @Override + public void updateIndices (int targetOffset, short[] indices, int offset, int count) { isDirty = true; final int pos = buffer.position(); buffer.position(targetOffset); BufferUtils.copy(indices, offset, buffer, count); buffer.position(pos); - if(isBound) { + if (isBound) { Gdx.gl20.glBufferData(GL20.GL_ELEMENT_ARRAY_BUFFER, buffer.limit(), buffer, usage); isDirty = false; } } - /** - *

- * Returns the underlying ShortBuffer. If you modify the buffer contents they wil be uploaded on the call to {@link #bind()}. - * If you need immediate uploading use {@link #setIndices(short[], int, int)}. - *

- * - * @return the underlying short buffer. - */ - public ShortBuffer getBuffer() { + /** @deprecated use {@link #getBuffer(boolean)} instead */ + @Override + @Deprecated + public ShortBuffer getBuffer () { isDirty = true; return buffer; } - /** - * Binds this IndexBufferObject for rendering with glDrawElements. - */ - public void bind() { - if(bufferHandle == 0) throw new GdxRuntimeException("No buffer allocated!"); + @Override + public ShortBuffer getBuffer (boolean forWriting) { + isDirty |= forWriting; + return buffer; + } + + /** Binds this IndexBufferObject for rendering with glDrawElements. */ + public void bind () { + if (bufferHandle == 0) throw new GdxRuntimeException("No buffer allocated!"); Gdx.gl20.glBindBuffer(GL20.GL_ELEMENT_ARRAY_BUFFER, bufferHandle); - if(isDirty) { + if (isDirty) { Gdx.gl20.glBufferData(GL20.GL_ELEMENT_ARRAY_BUFFER, buffer.limit(), buffer, usage); isDirty = false; } isBound = true; } - /** - * Unbinds this IndexBufferObject. - */ - public void unbind() { + /** Unbinds this IndexBufferObject. */ + public void unbind () { Gdx.gl20.glBindBuffer(GL20.GL_ELEMENT_ARRAY_BUFFER, 0); isBound = false; } - /** - * Invalidates the IndexBufferObject so a new OpenGL buffer handle is created. Use this in case of a context loss. - */ - public void invalidate() { + /** Invalidates the IndexBufferObject so a new OpenGL buffer handle is created. Use this in case of a context loss. */ + public void invalidate () { bufferHandle = Gdx.gl20.glGenBuffer(); isDirty = true; } - /** - * Disposes this IndexBufferObject and all its associated OpenGL resources. - */ - public void dispose() { + /** Disposes this IndexBufferObject and all its associated OpenGL resources. */ + public void dispose () { GL20 gl = Gdx.gl20; gl.glBindBuffer(GL20.GL_ELEMENT_ARRAY_BUFFER, 0); gl.glDeleteBuffer(bufferHandle); diff --git a/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/VertexBufferObjectEmu.java b/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/VertexBufferObjectEmu.java index 98afce3f..324735cf 100644 --- a/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/VertexBufferObjectEmu.java +++ b/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/VertexBufferObjectEmu.java @@ -18,11 +18,21 @@ public class VertexBufferObjectEmu implements VertexData { boolean isDirty = false; boolean isBound = false; - public VertexBufferObjectEmu(boolean isStatic, int numVertices, VertexAttribute... attributes) { + /** Constructs a new interleaved VertexBufferObject. + * + * @param isStatic whether the vertex data is static. + * @param numVertices the maximum number of vertices + * @param attributes the {@link VertexAttribute}s. */ + public VertexBufferObjectEmu (boolean isStatic, int numVertices, VertexAttribute... attributes) { this(isStatic, numVertices, new VertexAttributes(attributes)); } - public VertexBufferObjectEmu(boolean isStatic, int numVertices, VertexAttributes attributes) { + /** Constructs a new interleaved VertexBufferObject. + * + * @param isStatic whether the vertex data is static. + * @param numVertices the maximum number of vertices + * @param attributes the {@link VertexAttributes}. */ + public VertexBufferObjectEmu (boolean isStatic, int numVertices, VertexAttributes attributes) { this.isStatic = isStatic; this.attributes = attributes; @@ -33,35 +43,43 @@ public VertexBufferObjectEmu(boolean isStatic, int numVertices, VertexAttributes } @Override - public VertexAttributes getAttributes() { + public VertexAttributes getAttributes () { return attributes; } @Override - public int getNumVertices() { + public int getNumVertices () { return buffer.limit() / (attributes.vertexSize / 4); } @Override - public int getNumMaxVertices() { + public int getNumMaxVertices () { return buffer.capacity() / (attributes.vertexSize / 4); } + /** @deprecated use {@link #getBuffer(boolean)} instead */ @Override - public FloatBuffer getBuffer() { + @Deprecated + public FloatBuffer getBuffer () { isDirty = true; return buffer; } - private void bufferChanged() { - if(isBound) { + @Override + public FloatBuffer getBuffer (boolean forWriting) { + isDirty |= forWriting; + return buffer; + } + + private void bufferChanged () { + if (isBound) { Gdx.gl20.glBufferData(GL20.GL_ARRAY_BUFFER, buffer.limit(), buffer, usage); isDirty = false; } } @Override - public void setVertices(float[] vertices, int offset, int count) { + public void setVertices (float[] vertices, int offset, int count) { isDirty = true; BufferUtils.copy(vertices, buffer, count, offset); buffer.position(0); @@ -70,7 +88,7 @@ public void setVertices(float[] vertices, int offset, int count) { } @Override - public void updateVertices(int targetOffset, float[] vertices, int sourceOffset, int count) { + public void updateVertices (int targetOffset, float[] vertices, int sourceOffset, int count) { isDirty = true; final int pos = buffer.position(); buffer.position(targetOffset); @@ -79,37 +97,42 @@ public void updateVertices(int targetOffset, float[] vertices, int sourceOffset, bufferChanged(); } + /** Binds this VertexBufferObject for rendering via glDrawArrays or glDrawElements + * + * @param shader the shader */ + /** Binds this VertexBufferObject for rendering via glDrawArrays or glDrawElements + * + * @param shader the shader */ @Override - public void bind(ShaderProgram shader) { + public void bind (ShaderProgram shader) { bind(shader, null); } @Override - public void bind(ShaderProgram shader, int[] locations) { + public void bind (ShaderProgram shader, int[] locations) { final GL20 gl = Gdx.gl20; gl.glBindBuffer(GL20.GL_ARRAY_BUFFER, bufferHandle); - if(isDirty) { + if (isDirty) { gl.glBufferData(GL20.GL_ARRAY_BUFFER, buffer.limit(), buffer, usage); isDirty = false; } final int numAttributes = attributes.size(); - if(locations == null) { - for(int i = 0; i < numAttributes; i++) { + if (locations == null) { + for (int i = 0; i < numAttributes; i++) { final VertexAttribute attribute = attributes.get(i); final int location = shader.getAttributeLocation(attribute.alias); - if(location < 0) continue; + if (location < 0) continue; shader.enableVertexAttribute(location); shader.setVertexAttribute(location, attribute.numComponents, attribute.type, attribute.normalized, attributes.vertexSize, attribute.offset); } - } - else { - for(int i = 0; i < numAttributes; i++) { + } else { + for (int i = 0; i < numAttributes; i++) { final VertexAttribute attribute = attributes.get(i); final int location = locations[i]; - if(location < 0) continue; + if (location < 0) continue; shader.enableVertexAttribute(location); shader.setVertexAttribute(location, attribute.numComponents, attribute.type, attribute.normalized, attributes.vertexSize, attribute.offset); @@ -118,37 +141,41 @@ public void bind(ShaderProgram shader, int[] locations) { isBound = true; } + /** Unbinds this VertexBufferObject. + * + * @param shader the shader */ @Override - public void unbind(final ShaderProgram shader) { + public void unbind (final ShaderProgram shader) { unbind(shader, null); } @Override - public void unbind(final ShaderProgram shader, final int[] locations) { + public void unbind (final ShaderProgram shader, final int[] locations) { final GL20 gl = Gdx.gl20; final int numAttributes = attributes.size(); - if(locations == null) { - for(int i = 0; i < numAttributes; i++) { + if (locations == null) { + for (int i = 0; i < numAttributes; i++) { shader.disableVertexAttribute(attributes.get(i).alias); } - } - else { - for(int i = 0; i < numAttributes; i++) { + } else { + for (int i = 0; i < numAttributes; i++) { final int location = locations[i]; - if(location >= 0) shader.disableVertexAttribute(location); + if (location >= 0) shader.disableVertexAttribute(location); } } gl.glBindBuffer(GL20.GL_ARRAY_BUFFER, 0); isBound = false; } - public void invalidate() { + /** Invalidates the VertexBufferObject so a new OpenGL buffer handle is created. Use this in case of a context loss. */ + public void invalidate () { bufferHandle = Gdx.gl20.glGenBuffer(); isDirty = true; } + /** Disposes of all resources this VertexBufferObject uses. */ @Override - public void dispose() { + public void dispose () { GL20 gl = Gdx.gl20; gl.glBindBuffer(GL20.GL_ARRAY_BUFFER, 0); gl.glDeleteBuffer(bufferHandle); diff --git a/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/VertexBufferObjectWithVAOEmu.java b/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/VertexBufferObjectWithVAOEmu.java index b764c132..0737e19f 100644 --- a/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/VertexBufferObjectWithVAOEmu.java +++ b/backends/backend-teavm/emu/com/badlogic/gdx/graphics/glutils/VertexBufferObjectWithVAOEmu.java @@ -25,11 +25,21 @@ public class VertexBufferObjectWithVAOEmu implements VertexData { int vaoHandle = -1; IntArray cachedLocations = new IntArray(); - public VertexBufferObjectWithVAOEmu(boolean isStatic, int numVertices, VertexAttribute... attributes) { + /** Constructs a new interleaved VertexBufferObjectWithVAO. + * + * @param isStatic whether the vertex data is static. + * @param numVertices the maximum number of vertices + * @param attributes the {@link com.badlogic.gdx.graphics.VertexAttribute}s. */ + public VertexBufferObjectWithVAOEmu (boolean isStatic, int numVertices, VertexAttribute... attributes) { this(isStatic, numVertices, new VertexAttributes(attributes)); } - public VertexBufferObjectWithVAOEmu(boolean isStatic, int numVertices, VertexAttributes attributes) { + /** Constructs a new interleaved VertexBufferObjectWithVAO. + * + * @param isStatic whether the vertex data is static. + * @param numVertices the maximum number of vertices + * @param attributes the {@link VertexAttributes}. */ + public VertexBufferObjectWithVAOEmu (boolean isStatic, int numVertices, VertexAttributes attributes) { this.isStatic = isStatic; this.attributes = attributes; @@ -41,35 +51,43 @@ public VertexBufferObjectWithVAOEmu(boolean isStatic, int numVertices, VertexAtt } @Override - public VertexAttributes getAttributes() { + public VertexAttributes getAttributes () { return attributes; } @Override - public int getNumVertices() { + public int getNumVertices () { return buffer.limit() * 4 / attributes.vertexSize; } @Override - public int getNumMaxVertices() { + public int getNumMaxVertices () { return buffer.capacity() * 4 / attributes.vertexSize; } + /** @deprecated use {@link #getBuffer(boolean)} instead */ @Override - public FloatBuffer getBuffer() { + @Deprecated + public FloatBuffer getBuffer () { isDirty = true; return buffer; } - private void bufferChanged() { - if(isBound) { + @Override + public FloatBuffer getBuffer (boolean forWriting) { + isDirty |= forWriting; + return buffer; + } + + private void bufferChanged () { + if (isBound) { Gdx.gl20.glBufferData(GL20.GL_ARRAY_BUFFER, buffer.limit(), buffer, usage); isDirty = false; } } @Override - public void setVertices(float[] vertices, int offset, int count) { + public void setVertices (float[] vertices, int offset, int count) { isDirty = true; BufferUtils.copy(vertices, buffer, count, offset); buffer.position(0); @@ -78,7 +96,7 @@ public void setVertices(float[] vertices, int offset, int count) { } @Override - public void updateVertices(int targetOffset, float[] vertices, int sourceOffset, int count) { + public void updateVertices (int targetOffset, float[] vertices, int sourceOffset, int count) { isDirty = true; final int pos = buffer.position(); buffer.position(targetOffset); @@ -87,86 +105,88 @@ public void updateVertices(int targetOffset, float[] vertices, int sourceOffset, bufferChanged(); } + /** Binds this VertexBufferObject for rendering via glDrawArrays or glDrawElements + * + * @param shader the shader */ @Override - public void bind(ShaderProgram shader) { + public void bind (ShaderProgram shader) { bind(shader, null); } @Override - public void bind(ShaderProgram shader, int[] locations) { + public void bind (ShaderProgram shader, int[] locations) { GL30 gl = Gdx.gl30; gl.glBindVertexArray(vaoHandle); bindAttributes(shader, locations); - //if our data has changed upload it: + // if our data has changed upload it: bindData(gl); isBound = true; } - private void bindAttributes(ShaderProgram shader, int[] locations) { + private void bindAttributes (ShaderProgram shader, int[] locations) { boolean stillValid = this.cachedLocations.size != 0; final int numAttributes = attributes.size(); - if(stillValid) { - if(locations == null) { - for(int i = 0; stillValid && i < numAttributes; i++) { + if (stillValid) { + if (locations == null) { + for (int i = 0; stillValid && i < numAttributes; i++) { VertexAttribute attribute = attributes.get(i); int location = shader.getAttributeLocation(attribute.alias); stillValid = location == this.cachedLocations.get(i); } - } - else { + } else { stillValid = locations.length == this.cachedLocations.size; - for(int i = 0; stillValid && i < numAttributes; i++) { + for (int i = 0; stillValid && i < numAttributes; i++) { stillValid = locations[i] == this.cachedLocations.get(i); } } } - if(!stillValid) { + if (!stillValid) { Gdx.gl.glBindBuffer(GL20.GL_ARRAY_BUFFER, bufferHandle); unbindAttributes(shader); this.cachedLocations.clear(); - for(int i = 0; i < numAttributes; i++) { + for (int i = 0; i < numAttributes; i++) { VertexAttribute attribute = attributes.get(i); - if(locations == null) { + if (locations == null) { this.cachedLocations.add(shader.getAttributeLocation(attribute.alias)); - } - else { + } else { this.cachedLocations.add(locations[i]); } int location = this.cachedLocations.get(i); - if(location < 0) { + if (location < 0) { continue; } shader.enableVertexAttribute(location); - shader.setVertexAttribute(location, attribute.numComponents, attribute.type, attribute.normalized, attributes.vertexSize, attribute.offset); + shader.setVertexAttribute(location, attribute.numComponents, attribute.type, attribute.normalized, + attributes.vertexSize, attribute.offset); } } } - private void unbindAttributes(ShaderProgram shaderProgram) { - if(cachedLocations == null) { + private void unbindAttributes (ShaderProgram shaderProgram) { + if (cachedLocations.size == 0) { return; } int numAttributes = attributes.size(); - for(int i = 0; i < numAttributes; i++) { + for (int i = 0; i < numAttributes; i++) { int location = cachedLocations.get(i); - if(location < 0) { + if (location < 0) { continue; } shaderProgram.disableVertexAttribute(location); } } - private void bindData(GL20 gl) { - if(isDirty) { + private void bindData (GL20 gl) { + if (isDirty) { gl.glBindBuffer(GL20.GL_ARRAY_BUFFER, bufferHandle); buffer.limit(buffer.limit()); gl.glBufferData(GL20.GL_ARRAY_BUFFER, buffer.limit(), buffer, usage); @@ -174,27 +194,32 @@ private void bindData(GL20 gl) { } } + /** Unbinds this VertexBufferObject. + * + * @param shader the shader */ @Override - public void unbind(final ShaderProgram shader) { + public void unbind (final ShaderProgram shader) { unbind(shader, null); } @Override - public void unbind(final ShaderProgram shader, final int[] locations) { + public void unbind (final ShaderProgram shader, final int[] locations) { GL30 gl = Gdx.gl30; gl.glBindVertexArray(0); isBound = false; } + /** Invalidates the VertexBufferObject so a new OpenGL buffer handle is created. Use this in case of a context loss. */ @Override - public void invalidate() { + public void invalidate () { bufferHandle = Gdx.gl20.glGenBuffer(); createVAO(); isDirty = true; } + /** Disposes of all resources this VertexBufferObject uses. */ @Override - public void dispose() { + public void dispose () { GL30 gl = Gdx.gl30; gl.glBindBuffer(GL20.GL_ARRAY_BUFFER, 0); @@ -203,14 +228,14 @@ public void dispose() { deleteVAO(); } - private void createVAO() { + private void createVAO () { tmpHandle.clear(); Gdx.gl30.glGenVertexArrays(1, tmpHandle); vaoHandle = tmpHandle.get(); } - private void deleteVAO() { - if(vaoHandle != -1) { + private void deleteVAO () { + if (vaoHandle != -1) { tmpHandle.clear(); tmpHandle.put(vaoHandle); tmpHandle.flip(); diff --git a/backends/backend-teavm/emu/com/badlogic/gdx/scenes/scene2d/utils/UIUtilsEmu.java b/backends/backend-teavm/emu/com/badlogic/gdx/scenes/scene2d/utils/UIUtilsEmu.java new file mode 100644 index 00000000..116f10da --- /dev/null +++ b/backends/backend-teavm/emu/com/badlogic/gdx/scenes/scene2d/utils/UIUtilsEmu.java @@ -0,0 +1,72 @@ + +package com.badlogic.gdx.scenes.scene2d.utils; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Input.Buttons; +import com.badlogic.gdx.Input.Keys; +import com.github.xpenatan.gdx.backends.teavm.gen.Emulate; +import com.github.xpenatan.gdx.backends.teavm.utils.TeaNavigator; + +@Emulate(UIUtils.class) +public class UIUtilsEmu { + static public boolean isAndroid = TeaNavigator.getPlatform().contains("Android"); + static public boolean isMac = TeaNavigator.getPlatform().contains("Mac"); + static public boolean isWindows = TeaNavigator.getPlatform().contains("Win"); + static public boolean isLinux = TeaNavigator.getPlatform().contains("Linux") || TeaNavigator.getPlatform().contains("FreeBSD"); + static public boolean isIos = TeaNavigator.getPlatform().contains("iPhone") || TeaNavigator.getPlatform().contains("iPod") + || TeaNavigator.getPlatform().contains("iPad"); + + static public boolean left() { + return Gdx.input.isButtonPressed(Buttons.LEFT); + } + + static public boolean left(int button) { + return button == Buttons.LEFT; + } + + static public boolean right() { + return Gdx.input.isButtonPressed(Buttons.RIGHT); + } + + static public boolean right(int button) { + return button == Buttons.RIGHT; + } + + static public boolean middle() { + return Gdx.input.isButtonPressed(Buttons.MIDDLE); + } + + static public boolean middle(int button) { + return button == Buttons.MIDDLE; + } + + static public boolean shift() { + return Gdx.input.isKeyPressed(Keys.SHIFT_LEFT) || Gdx.input.isKeyPressed(Keys.SHIFT_RIGHT); + } + + static public boolean shift(int keycode) { + return keycode == Keys.SHIFT_LEFT || keycode == Keys.SHIFT_RIGHT; + } + + static public boolean ctrl() { + if(isMac) + return Gdx.input.isKeyPressed(Keys.SYM); + else + return Gdx.input.isKeyPressed(Keys.CONTROL_LEFT) || Gdx.input.isKeyPressed(Keys.CONTROL_RIGHT); + } + + static public boolean ctrl(int keycode) { + if(isMac) + return keycode == Keys.SYM; + else + return keycode == Keys.CONTROL_LEFT || keycode == Keys.CONTROL_RIGHT; + } + + static public boolean alt() { + return Gdx.input.isKeyPressed(Keys.ALT_LEFT) || Gdx.input.isKeyPressed(Keys.ALT_RIGHT); + } + + static public boolean alt(int keycode) { + return keycode == Keys.ALT_LEFT || keycode == Keys.ALT_RIGHT; + } +} diff --git a/backends/backend-teavm/emu/com/badlogic/gdx/utils/reflect/FieldGen.java b/backends/backend-teavm/emu/com/badlogic/gdx/utils/reflect/FieldGen.java index ef97f7b9..96557d0f 100644 --- a/backends/backend-teavm/emu/com/badlogic/gdx/utils/reflect/FieldGen.java +++ b/backends/backend-teavm/emu/com/badlogic/gdx/utils/reflect/FieldGen.java @@ -1,7 +1,7 @@ package com.badlogic.gdx.utils.reflect; import com.github.xpenatan.gdx.backends.teavm.plugins.TeaReflectionSupplier; -import com.github.xpenatan.gdx.backends.teavm.util.GenericTypeProvider; +import com.github.xpenatan.gdx.backends.teavm.utils.GenericTypeProvider; import java.lang.reflect.GenericArrayType; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java index ed4819c3..23d4236b 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java @@ -25,6 +25,9 @@ import com.github.xpenatan.gdx.backends.teavm.preloader.Preloader; import com.github.xpenatan.gdx.backends.teavm.soundmanager.SoundManagerCallback; import com.github.xpenatan.gdx.backends.teavm.soundmanager.TeaSoundManager; +import com.github.xpenatan.gdx.backends.teavm.utils.TeaNavigator; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.teavm.jso.browser.Storage; import org.teavm.jso.browser.Window; import org.teavm.jso.dom.html.HTMLElement; @@ -437,6 +440,18 @@ public String getAssetUrl() { return preloader.getAssetUrl(); } + /** @return {@code true} if application runs on a mobile device */ + public static boolean isMobileDevice () { + // RegEx pattern from detectmobilebrowsers.com (public domain) + String pattern = "(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec" + + "|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)" + + "i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)" + + "|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk"; + Pattern p = Pattern.compile(pattern); + Matcher m = p.matcher(TeaNavigator.getUserAgent().toLowerCase()); + return m.matches(); + } + public enum AppState { LOAD_ASSETS, APP_CREATE, diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaAudio.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaAudio.java index 55a6409c..fa745fa3 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaAudio.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaAudio.java @@ -36,4 +36,16 @@ public Sound newSound(FileHandle fileHandle) { public Music newMusic(FileHandle file) { return new TeaMusic(soundManager, file); } + + @Override + public boolean switchOutputDevice(String deviceIdentifier) { + // TODO Auto-generated method stub + return false; + } + + @Override + public String[] getAvailableOutputDevices() { + // TODO Auto-generated method stub + return new String[0]; + } } diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaGraphics.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaGraphics.java index 0160ef65..e167172d 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaGraphics.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaGraphics.java @@ -7,6 +7,8 @@ import com.badlogic.gdx.graphics.Cursor.SystemCursor; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.GL30; +import com.badlogic.gdx.graphics.GL31; +import com.badlogic.gdx.graphics.GL32; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.glutils.GLVersion; import com.github.xpenatan.gdx.backends.teavm.dom.DocumentWrapper; @@ -92,6 +94,16 @@ public boolean isGL30Available() { return false; } + @Override + public boolean isGL31Available() { + return false; + } + + @Override + public boolean isGL32Available() { + return false; + } + @Override public GL20 getGL20() { return gl; @@ -103,6 +115,16 @@ public GL30 getGL30() { return null; } + @Override + public GL31 getGL31() { + return null; + } + + @Override + public GL32 getGL32() { + return null; + } + @Override public void setGL20(GL20 gl20) { this.gl = gl20; @@ -115,6 +137,16 @@ public void setGL30(GL30 gl30) { // TODO Auto-generated method stub } + @Override + public void setGL31(GL31 gl31) { + + } + + @Override + public void setGL32(GL32 gl32) { + + } + @Override public int getWidth() { return canvas.getWidth(); diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaInput.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaInput.java index d7689d9d..0a833767 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaInput.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaInput.java @@ -663,15 +663,18 @@ public void vibrate(int milliseconds) { } @Override - public void vibrate(long[] pattern, int repeat) { + public void vibrate(int milliseconds, boolean fallback) { // TODO Auto-generated method stub - } @Override - public void cancelVibrate() { + public void vibrate(int milliseconds, int amplitude, boolean fallback) { // TODO Auto-generated method stub + } + @Override + public void vibrate(VibrationType vibrationType) { + // TODO Auto-generated method stub } @Override diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/util/GenericTypeProvider.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/utils/GenericTypeProvider.java similarity index 98% rename from backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/util/GenericTypeProvider.java rename to backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/utils/GenericTypeProvider.java index 0718ebe4..82332c5c 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/util/GenericTypeProvider.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/utils/GenericTypeProvider.java @@ -1,4 +1,4 @@ -package com.github.xpenatan.gdx.backends.teavm.util; +package com.github.xpenatan.gdx.backends.teavm.utils; import java.lang.reflect.Array; import java.lang.reflect.Constructor; diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/utils/TeaNavigator.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/utils/TeaNavigator.java new file mode 100644 index 00000000..62483dd3 --- /dev/null +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/utils/TeaNavigator.java @@ -0,0 +1,12 @@ +package com.github.xpenatan.gdx.backends.teavm.utils; + +import org.teavm.jso.JSBody; + +public class TeaNavigator { + + @JSBody(script = "return navigator.platform;") + public static native String getPlatform(); + + @JSBody(script = "return navigator.userAgent;") + public static native String getUserAgent(); +} diff --git a/dependencies.gradle b/dependencies.gradle index 4bd07110..2600df6b 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -16,7 +16,7 @@ project.ext { teaVMVersion = "0.9.0-dev-4" - gdxVersion = "1.11.0" + gdxVersion = "1.12.0" jParserVersion = "1.0.0-SNAPSHOT" gdxImGuiVersion = '1.0.0-SNAPSHOT' diff --git a/examples/box2d/core/src/main/java/com/github/xpenatan/gdx/examples/box2d/PyramidTest.java b/examples/box2d/core/src/main/java/com/github/xpenatan/gdx/examples/box2d/PyramidTest.java index d73c7ed6..9ebcce7a 100644 --- a/examples/box2d/core/src/main/java/com/github/xpenatan/gdx/examples/box2d/PyramidTest.java +++ b/examples/box2d/core/src/main/java/com/github/xpenatan/gdx/examples/box2d/PyramidTest.java @@ -216,6 +216,11 @@ public boolean touchUp(int x, int y, int pointer, int button) { return false; } + @Override + public boolean touchCancelled(int screenX, int screenY, int pointer, int button) { + return false; + } + @Override public boolean mouseMoved(int x, int y) { return false; diff --git a/examples/bullet/core/src/main/java/com/github/xpenatan/gdx/examples/bullet/BulletMoveTest.java b/examples/bullet/core/src/main/java/com/github/xpenatan/gdx/examples/bullet/BulletMoveTest.java index 69be431b..6238db7e 100644 --- a/examples/bullet/core/src/main/java/com/github/xpenatan/gdx/examples/bullet/BulletMoveTest.java +++ b/examples/bullet/core/src/main/java/com/github/xpenatan/gdx/examples/bullet/BulletMoveTest.java @@ -338,6 +338,11 @@ public boolean touchUp(int screenX, int screenY, int pointer, int button) { return false; } + @Override + public boolean touchCancelled(int screenX, int screenY, int pointer, int button) { + return false; + } + @Override public boolean touchDragged(int screenX, int screenY, int pointer) { return false; diff --git a/examples/bullet/core/src/main/java/com/github/xpenatan/gdx/examples/bullet/BulletTest.java b/examples/bullet/core/src/main/java/com/github/xpenatan/gdx/examples/bullet/BulletTest.java index 74de4a43..bffa8dbd 100644 --- a/examples/bullet/core/src/main/java/com/github/xpenatan/gdx/examples/bullet/BulletTest.java +++ b/examples/bullet/core/src/main/java/com/github/xpenatan/gdx/examples/bullet/BulletTest.java @@ -344,6 +344,11 @@ public boolean touchUp(int screenX, int screenY, int pointer, int button) { return false; } + @Override + public boolean touchCancelled(int screenX, int screenY, int pointer, int button) { + return false; + } + @Override public boolean touchDragged(int screenX, int screenY, int pointer) { return false; From d6d594df22d110fcd3c87fb59f8735868f2ebe1d Mon Sep 17 00:00:00 2001 From: Natan Date: Sat, 8 Jul 2023 11:11:05 -0300 Subject: [PATCH 5/9] fix an issue with ssl certificate when downloading jar files from teavm --- build.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 87459de3..651261a6 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,10 @@ subprojects { maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://oss.sonatype.org/content/repositories/releases/" } maven { url "https://oss.sonatype.org/content/repositories/releases/" } - maven { url "https://teavm.org/maven/repository/" } + maven { + url "http://teavm.org/maven/repository/" + allowInsecureProtocol = true + } maven { url 'https://jitpack.io' } } From 59bd139315efca545a1b78e6fa5f61c4ffc4269e Mon Sep 17 00:00:00 2001 From: Natan Date: Sun, 16 Jul 2023 09:20:55 -0300 Subject: [PATCH 6/9] update teavm version to dev-7 --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 2600df6b..f5c65de2 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -14,7 +14,7 @@ project.ext { teaFreeTypeVersion = gdxTeaVMVersion toolCoreVersion = gdxTeaVMVersion - teaVMVersion = "0.9.0-dev-4" + teaVMVersion = "0.9.0-dev-7" gdxVersion = "1.12.0" jParserVersion = "1.0.0-SNAPSHOT" From 5899774de3587f4d18512c3a37dd796caa7805a1 Mon Sep 17 00:00:00 2001 From: Natan Date: Sun, 16 Jul 2023 09:21:21 -0300 Subject: [PATCH 7/9] add idl lib --- extensions/gdx-box2d/gdx-box2d-build/build.gradle | 1 + extensions/gdx-bullet/gdx-bullet-build/build.gradle | 1 + 2 files changed, 2 insertions(+) diff --git a/extensions/gdx-box2d/gdx-box2d-build/build.gradle b/extensions/gdx-box2d/gdx-box2d-build/build.gradle index 3883c19e..2639f1af 100644 --- a/extensions/gdx-box2d/gdx-box2d-build/build.gradle +++ b/extensions/gdx-box2d/gdx-box2d-build/build.gradle @@ -5,6 +5,7 @@ project.ext.mainClassName = "com.github.xpenatan.gdx.html5.box2d.Main" dependencies { implementation "com.github.xpenatan.jParser:jParser-core:$project.jParserVersion" implementation "com.github.xpenatan.jParser:jParser-teavm:$project.jParserVersion" + implementation "com.github.xpenatan.jParser:jParser-idl:$project.jParserVersion" } tasks.register('generateNativeProject', JavaExec) { diff --git a/extensions/gdx-bullet/gdx-bullet-build/build.gradle b/extensions/gdx-bullet/gdx-bullet-build/build.gradle index 7c73eb13..9b1f2eca 100644 --- a/extensions/gdx-bullet/gdx-bullet-build/build.gradle +++ b/extensions/gdx-bullet/gdx-bullet-build/build.gradle @@ -7,6 +7,7 @@ dependencies { implementation "com.github.xpenatan.jParser:jParser-core:$project.jParserVersion" implementation "com.github.xpenatan.jParser:jParser-teavm:$project.jParserVersion" implementation "com.github.xpenatan.jParser:jParser-cpp:$project.jParserVersion" + implementation "com.github.xpenatan.jParser:jParser-idl:$project.jParserVersion" } tasks.register('generateNativeProject', JavaExec) { From 97f7d0d3764bf7bbc439a66fd049bdbdf605eb99 Mon Sep 17 00:00:00 2001 From: Natan Date: Sun, 23 Jul 2023 14:17:35 -0300 Subject: [PATCH 8/9] update jparser to b3 --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index f5c65de2..278bd49a 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -17,7 +17,7 @@ project.ext { teaVMVersion = "0.9.0-dev-7" gdxVersion = "1.12.0" - jParserVersion = "1.0.0-SNAPSHOT" + jParserVersion = "1.0.0-b3" gdxImGuiVersion = '1.0.0-SNAPSHOT' gdxFrameViewportVersion = "1.0.0-SNAPSHOT" From 142fc7ad21c42364606fe7263482cb416c81d250 Mon Sep 17 00:00:00 2001 From: Natan Date: Sun, 23 Jul 2023 14:19:03 -0300 Subject: [PATCH 9/9] update changes and version to b6 --- CHANGES.md | 5 +++++ dependencies.gradle | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 13747451..657eeaf6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,11 @@ [1.0.0-SNAPSHOT] - +[1.0.0-b6] +- Update libgdx to version 1.12.0 +- Update jParser to version b3 +- Update teavm to version 0.9.0-dev-7 + [1.0.0-b5] - Option in App config to show download logs. Default is set to false. - Implement setApplicationLogger method. diff --git a/dependencies.gradle b/dependencies.gradle index 278bd49a..dc791056 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -2,7 +2,7 @@ project.ext { groupId = "com.github.xpenatan.gdx-teavm" var isRelease = System.getenv('RELEASE') if(isRelease != null && isRelease.toBoolean()) { - gdxTeaVMVersion = "1.0.0-b5" + gdxTeaVMVersion = "1.0.0-b6" } else { gdxTeaVMVersion = "1.0.0-SNAPSHOT"