diff --git a/gdxapp4d-app-calculator/pom.xml b/gdxapp4d-app-calculator/pom.xml index c13f54bf..b4ab03db 100644 --- a/gdxapp4d-app-calculator/pom.xml +++ b/gdxapp4d-app-calculator/pom.xml @@ -28,88 +28,7 @@ <_donotcopy>(.git) <_dsannotations>* <_metatypeannotations>* - - org.osgi.framework, - org.osgi.service.packageadmin, - org.osgi.service.url, - org.osgi.service.startlevel, - org.osgi.util.tracker, - love.distributedrebirth.gdxapp4d.tos4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp, - com.badlogic.gdx, - com.badlogic.gdx.assets, - com.badlogic.gdx.assets.loaders, - com.badlogic.gdx.assets.loaders.resolvers, - com.badlogic.gdx.audio, - com.badlogic.gdx.files, - com.badlogic.gdx.graphics, - com.badlogic.gdx.graphics.g2d, - com.badlogic.gdx.graphics.g2d.freetype, - com.badlogic.gdx.graphics.g3d, - com.badlogic.gdx.graphics.g3d.attributes, - com.badlogic.gdx.graphics.g3d.decals, - com.badlogic.gdx.graphics.g3d.environment, - com.badlogic.gdx.graphics.g3d.loader, - com.badlogic.gdx.graphics.g3d.model, - com.badlogic.gdx.graphics.g3d.model.data, - com.badlogic.gdx.graphics.g3d.particles, - com.badlogic.gdx.graphics.g3d.particles.bactches, - com.badlogic.gdx.graphics.g3d.particles.emitters, - com.badlogic.gdx.graphics.g3d.particles.influencers, - com.badlogic.gdx.graphics.g3d.particles.renderers, - com.badlogic.gdx.graphics.g3d.particles.values, - com.badlogic.gdx.graphics.g3d.shaders, - com.badlogic.gdx.graphics.g3d.utils, - com.badlogic.gdx.graphics.g3d.utils.shapebuilders, - com.badlogic.gdx.graphics.glutils, - com.badlogic.gdx.graphics.profiling, - com.badlogic.gdx.input, - com.badlogic.gdx.maps, - com.badlogic.gdx.maps.objects, - com.badlogic.gdx.maps.tiled, - com.badlogic.gdx.maps.tiled.objects, - com.badlogic.gdx.maps.tiled.renderers, - com.badlogic.gdx.maps.tiled.tiles, - com.badlogic.gdx.math, - com.badlogic.gdx.math.collision, - com.badlogic.gdx.net, - com.badlogic.gdx.scenes.scene2d, - com.badlogic.gdx.scenes.scene2d.actions, - com.badlogic.gdx.scenes.scene2d.ui, - com.badlogic.gdx.scenes.scene2d.utils, - com.badlogic.gdx.utils, - com.badlogic.gdx.utils.async, - com.badlogic.gdx.utils.compression, - com.badlogic.gdx.utils.compression.lz, - com.badlogic.gdx.utils.compression.lzma, - com.badlogic.gdx.utils.compression.rangecoder, - com.badlogic.gdx.utils.reflect, - com.badlogic.gdx.utils.viewport, - imgui, - imgui.flag, - imgui.glfw, - imgui.gl3, - imgui.type, - net.spookygames.gdx.nativefilechooser, - love.distributedrebirth.bassboonyd, - love.distributedrebirth.bassboonyd.jmx, - love.distributedrebirth.numberxd, - love.distributedrebirth.numberxd.base2t, - love.distributedrebirth.numberxd.base2t.part, - love.distributedrebirth.numberxd.base2t.part.warp, - love.distributedrebirth.numberxd.base2t.type, - love.distributedrebirth.numberxd.base2t.typexl, - love.distributedrebirth.numberxd.glyph, - love.distributedrebirth.numberxd.x4o, - love.distributedrebirth.warpme, - love.distributedrebirth.warpme.core, - love.distributedrebirth.warpme.hash, - love.distributedrebirth.warpme.sea, - love.distributedrebirth.warpme.ship, - love.distributedrebirth.unicode4d, - love.distributedrebirth.unicode4d.atlas - + ${vrgem4.packages} distributedrebirth.love diff --git a/gdxapp4d-app-glyphdemo/pom.xml b/gdxapp4d-app-glyphdemo/pom.xml index 006d981a..7940df13 100644 --- a/gdxapp4d-app-glyphdemo/pom.xml +++ b/gdxapp4d-app-glyphdemo/pom.xml @@ -28,88 +28,7 @@ <_donotcopy>(.git) <_dsannotations>* <_metatypeannotations>* - - org.osgi.framework, - org.osgi.service.packageadmin, - org.osgi.service.url, - org.osgi.service.startlevel, - org.osgi.util.tracker, - love.distributedrebirth.gdxapp4d.tos4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp, - com.badlogic.gdx, - com.badlogic.gdx.assets, - com.badlogic.gdx.assets.loaders, - com.badlogic.gdx.assets.loaders.resolvers, - com.badlogic.gdx.audio, - com.badlogic.gdx.files, - com.badlogic.gdx.graphics, - com.badlogic.gdx.graphics.g2d, - com.badlogic.gdx.graphics.g2d.freetype, - com.badlogic.gdx.graphics.g3d, - com.badlogic.gdx.graphics.g3d.attributes, - com.badlogic.gdx.graphics.g3d.decals, - com.badlogic.gdx.graphics.g3d.environment, - com.badlogic.gdx.graphics.g3d.loader, - com.badlogic.gdx.graphics.g3d.model, - com.badlogic.gdx.graphics.g3d.model.data, - com.badlogic.gdx.graphics.g3d.particles, - com.badlogic.gdx.graphics.g3d.particles.bactches, - com.badlogic.gdx.graphics.g3d.particles.emitters, - com.badlogic.gdx.graphics.g3d.particles.influencers, - com.badlogic.gdx.graphics.g3d.particles.renderers, - com.badlogic.gdx.graphics.g3d.particles.values, - com.badlogic.gdx.graphics.g3d.shaders, - com.badlogic.gdx.graphics.g3d.utils, - com.badlogic.gdx.graphics.g3d.utils.shapebuilders, - com.badlogic.gdx.graphics.glutils, - com.badlogic.gdx.graphics.profiling, - com.badlogic.gdx.input, - com.badlogic.gdx.maps, - com.badlogic.gdx.maps.objects, - com.badlogic.gdx.maps.tiled, - com.badlogic.gdx.maps.tiled.objects, - com.badlogic.gdx.maps.tiled.renderers, - com.badlogic.gdx.maps.tiled.tiles, - com.badlogic.gdx.math, - com.badlogic.gdx.math.collision, - com.badlogic.gdx.net, - com.badlogic.gdx.scenes.scene2d, - com.badlogic.gdx.scenes.scene2d.actions, - com.badlogic.gdx.scenes.scene2d.ui, - com.badlogic.gdx.scenes.scene2d.utils, - com.badlogic.gdx.utils, - com.badlogic.gdx.utils.async, - com.badlogic.gdx.utils.compression, - com.badlogic.gdx.utils.compression.lz, - com.badlogic.gdx.utils.compression.lzma, - com.badlogic.gdx.utils.compression.rangecoder, - com.badlogic.gdx.utils.reflect, - com.badlogic.gdx.utils.viewport, - imgui, - imgui.flag, - imgui.glfw, - imgui.gl3, - imgui.type, - net.spookygames.gdx.nativefilechooser, - love.distributedrebirth.bassboonyd, - love.distributedrebirth.bassboonyd.jmx, - love.distributedrebirth.numberxd, - love.distributedrebirth.numberxd.base2t, - love.distributedrebirth.numberxd.base2t.part, - love.distributedrebirth.numberxd.base2t.part.warp, - love.distributedrebirth.numberxd.base2t.type, - love.distributedrebirth.numberxd.base2t.typexl, - love.distributedrebirth.numberxd.glyph, - love.distributedrebirth.numberxd.x4o, - love.distributedrebirth.warpme, - love.distributedrebirth.warpme.core, - love.distributedrebirth.warpme.hash, - love.distributedrebirth.warpme.sea, - love.distributedrebirth.warpme.ship, - love.distributedrebirth.unicode4d, - love.distributedrebirth.unicode4d.atlas - + ${vrgem4.packages} distributedrebirth.love diff --git a/gdxapp4d-app-hewallet/pom.xml b/gdxapp4d-app-hewallet/pom.xml index 083871bb..4cea7bce 100644 --- a/gdxapp4d-app-hewallet/pom.xml +++ b/gdxapp4d-app-hewallet/pom.xml @@ -28,88 +28,7 @@ <_donotcopy>(.git) <_dsannotations>* <_metatypeannotations>* - - org.osgi.framework, - org.osgi.service.packageadmin, - org.osgi.service.url, - org.osgi.service.startlevel, - org.osgi.util.tracker, - love.distributedrebirth.gdxapp4d.tos4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp, - com.badlogic.gdx, - com.badlogic.gdx.assets, - com.badlogic.gdx.assets.loaders, - com.badlogic.gdx.assets.loaders.resolvers, - com.badlogic.gdx.audio, - com.badlogic.gdx.files, - com.badlogic.gdx.graphics, - com.badlogic.gdx.graphics.g2d, - com.badlogic.gdx.graphics.g2d.freetype, - com.badlogic.gdx.graphics.g3d, - com.badlogic.gdx.graphics.g3d.attributes, - com.badlogic.gdx.graphics.g3d.decals, - com.badlogic.gdx.graphics.g3d.environment, - com.badlogic.gdx.graphics.g3d.loader, - com.badlogic.gdx.graphics.g3d.model, - com.badlogic.gdx.graphics.g3d.model.data, - com.badlogic.gdx.graphics.g3d.particles, - com.badlogic.gdx.graphics.g3d.particles.bactches, - com.badlogic.gdx.graphics.g3d.particles.emitters, - com.badlogic.gdx.graphics.g3d.particles.influencers, - com.badlogic.gdx.graphics.g3d.particles.renderers, - com.badlogic.gdx.graphics.g3d.particles.values, - com.badlogic.gdx.graphics.g3d.shaders, - com.badlogic.gdx.graphics.g3d.utils, - com.badlogic.gdx.graphics.g3d.utils.shapebuilders, - com.badlogic.gdx.graphics.glutils, - com.badlogic.gdx.graphics.profiling, - com.badlogic.gdx.input, - com.badlogic.gdx.maps, - com.badlogic.gdx.maps.objects, - com.badlogic.gdx.maps.tiled, - com.badlogic.gdx.maps.tiled.objects, - com.badlogic.gdx.maps.tiled.renderers, - com.badlogic.gdx.maps.tiled.tiles, - com.badlogic.gdx.math, - com.badlogic.gdx.math.collision, - com.badlogic.gdx.net, - com.badlogic.gdx.scenes.scene2d, - com.badlogic.gdx.scenes.scene2d.actions, - com.badlogic.gdx.scenes.scene2d.ui, - com.badlogic.gdx.scenes.scene2d.utils, - com.badlogic.gdx.utils, - com.badlogic.gdx.utils.async, - com.badlogic.gdx.utils.compression, - com.badlogic.gdx.utils.compression.lz, - com.badlogic.gdx.utils.compression.lzma, - com.badlogic.gdx.utils.compression.rangecoder, - com.badlogic.gdx.utils.reflect, - com.badlogic.gdx.utils.viewport, - imgui, - imgui.flag, - imgui.glfw, - imgui.gl3, - imgui.type, - net.spookygames.gdx.nativefilechooser, - love.distributedrebirth.bassboonyd, - love.distributedrebirth.bassboonyd.jmx, - love.distributedrebirth.numberxd, - love.distributedrebirth.numberxd.base2t, - love.distributedrebirth.numberxd.base2t.part, - love.distributedrebirth.numberxd.base2t.part.warp, - love.distributedrebirth.numberxd.base2t.type, - love.distributedrebirth.numberxd.base2t.typexl, - love.distributedrebirth.numberxd.glyph, - love.distributedrebirth.numberxd.x4o, - love.distributedrebirth.warpme, - love.distributedrebirth.warpme.core, - love.distributedrebirth.warpme.hash, - love.distributedrebirth.warpme.sea, - love.distributedrebirth.warpme.ship, - love.distributedrebirth.unicode4d, - love.distributedrebirth.unicode4d.atlas - + ${vrgem4.packages} distributedrebirth.love diff --git a/gdxapp4d-app-notepad/pom.xml b/gdxapp4d-app-notepad/pom.xml index 4c762060..98fe4bdc 100644 --- a/gdxapp4d-app-notepad/pom.xml +++ b/gdxapp4d-app-notepad/pom.xml @@ -28,88 +28,7 @@ <_donotcopy>(.git) <_dsannotations>* <_metatypeannotations>* - - org.osgi.framework, - org.osgi.service.packageadmin, - org.osgi.service.url, - org.osgi.service.startlevel, - org.osgi.util.tracker, - love.distributedrebirth.gdxapp4d.tos4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp, - com.badlogic.gdx, - com.badlogic.gdx.assets, - com.badlogic.gdx.assets.loaders, - com.badlogic.gdx.assets.loaders.resolvers, - com.badlogic.gdx.audio, - com.badlogic.gdx.files, - com.badlogic.gdx.graphics, - com.badlogic.gdx.graphics.g2d, - com.badlogic.gdx.graphics.g2d.freetype, - com.badlogic.gdx.graphics.g3d, - com.badlogic.gdx.graphics.g3d.attributes, - com.badlogic.gdx.graphics.g3d.decals, - com.badlogic.gdx.graphics.g3d.environment, - com.badlogic.gdx.graphics.g3d.loader, - com.badlogic.gdx.graphics.g3d.model, - com.badlogic.gdx.graphics.g3d.model.data, - com.badlogic.gdx.graphics.g3d.particles, - com.badlogic.gdx.graphics.g3d.particles.bactches, - com.badlogic.gdx.graphics.g3d.particles.emitters, - com.badlogic.gdx.graphics.g3d.particles.influencers, - com.badlogic.gdx.graphics.g3d.particles.renderers, - com.badlogic.gdx.graphics.g3d.particles.values, - com.badlogic.gdx.graphics.g3d.shaders, - com.badlogic.gdx.graphics.g3d.utils, - com.badlogic.gdx.graphics.g3d.utils.shapebuilders, - com.badlogic.gdx.graphics.glutils, - com.badlogic.gdx.graphics.profiling, - com.badlogic.gdx.input, - com.badlogic.gdx.maps, - com.badlogic.gdx.maps.objects, - com.badlogic.gdx.maps.tiled, - com.badlogic.gdx.maps.tiled.objects, - com.badlogic.gdx.maps.tiled.renderers, - com.badlogic.gdx.maps.tiled.tiles, - com.badlogic.gdx.math, - com.badlogic.gdx.math.collision, - com.badlogic.gdx.net, - com.badlogic.gdx.scenes.scene2d, - com.badlogic.gdx.scenes.scene2d.actions, - com.badlogic.gdx.scenes.scene2d.ui, - com.badlogic.gdx.scenes.scene2d.utils, - com.badlogic.gdx.utils, - com.badlogic.gdx.utils.async, - com.badlogic.gdx.utils.compression, - com.badlogic.gdx.utils.compression.lz, - com.badlogic.gdx.utils.compression.lzma, - com.badlogic.gdx.utils.compression.rangecoder, - com.badlogic.gdx.utils.reflect, - com.badlogic.gdx.utils.viewport, - imgui, - imgui.flag, - imgui.glfw, - imgui.gl3, - imgui.type, - net.spookygames.gdx.nativefilechooser, - love.distributedrebirth.bassboonyd, - love.distributedrebirth.bassboonyd.jmx, - love.distributedrebirth.numberxd, - love.distributedrebirth.numberxd.base2t, - love.distributedrebirth.numberxd.base2t.part, - love.distributedrebirth.numberxd.base2t.part.warp, - love.distributedrebirth.numberxd.base2t.type, - love.distributedrebirth.numberxd.base2t.typexl, - love.distributedrebirth.numberxd.glyph, - love.distributedrebirth.numberxd.x4o, - love.distributedrebirth.warpme, - love.distributedrebirth.warpme.core, - love.distributedrebirth.warpme.hash, - love.distributedrebirth.warpme.sea, - love.distributedrebirth.warpme.ship, - love.distributedrebirth.unicode4d, - love.distributedrebirth.unicode4d.atlas - + ${vrgem4.packages} distributedrebirth.love diff --git a/gdxapp4d-app-notepad/src/main/java/love/distributedrebirth/gdxapp4d/app/notepad/NotepadComponent.java b/gdxapp4d-app-notepad/src/main/java/love/distributedrebirth/gdxapp4d/app/notepad/NotepadComponent.java index a46f1e73..2eb3fdb8 100644 --- a/gdxapp4d-app-notepad/src/main/java/love/distributedrebirth/gdxapp4d/app/notepad/NotepadComponent.java +++ b/gdxapp4d-app-notepad/src/main/java/love/distributedrebirth/gdxapp4d/app/notepad/NotepadComponent.java @@ -26,7 +26,7 @@ public class NotepadComponent { private final DeskAppLauncher launcher; public NotepadComponent() { - launcher = new DeskAppLauncher(DeskAppMenuSection.EDITORS, "Notepad", () -> new NotepadDeskApp()); + launcher = new DeskAppLauncher(DeskAppMenuSection.EDITORS, "Notepad", () -> new NotepadDeskApp(unicode4DService)); } @Activate diff --git a/gdxapp4d-app-notepad/src/main/java/love/distributedrebirth/gdxapp4d/app/notepad/NotepadDeskApp.java b/gdxapp4d-app-notepad/src/main/java/love/distributedrebirth/gdxapp4d/app/notepad/NotepadDeskApp.java index 9b453802..3c6660b7 100644 --- a/gdxapp4d-app-notepad/src/main/java/love/distributedrebirth/gdxapp4d/app/notepad/NotepadDeskApp.java +++ b/gdxapp4d-app-notepad/src/main/java/love/distributedrebirth/gdxapp4d/app/notepad/NotepadDeskApp.java @@ -5,16 +5,25 @@ import imgui.ImDrawList; import imgui.ImGui; import imgui.ImVec2; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4Unicode4DService; import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.AbstractDeskApp; import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppContourSection; import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppRenderer; -import love.distributedrebirth.unicode4d.atlas.FontAtlasStoreGlyph; +import love.distributedrebirth.unicode4d.draw.DrawCharacter; +import love.distributedrebirth.unicode4d.draw.DrawGlyphPath.ImGlyphLineTo; +import love.distributedrebirth.unicode4d.draw.DrawGlyphPath.ImGlyphPathCommand; +import love.distributedrebirth.unicode4d.draw.DrawGlyphPath.ImGlyphQuadCurveTo; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class NotepadDeskApp extends AbstractDeskApp implements DeskAppRenderer { + private final VrGem4Unicode4DService unicode4DService; private String value = ""; + public NotepadDeskApp(VrGem4Unicode4DService unicode4DService) { + this.unicode4DService = unicode4DService; + } + public void create() { getContours().setTitle("Notepad"); getContours().registrateContour(DeskAppContourSection.MAIN, this); @@ -25,49 +34,78 @@ public class NotepadDeskApp extends AbstractDeskApp implements DeskAppRenderer { ImGui.text("Value:"); ImGui.text(value); - //FontAtlasStore plane = GDXAppMain.INSTANCE.basePlane.getPlaneByName("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A"); - FontAtlasStoreGlyph glyph = null; //plane.getBaseGlyphByUnicode("27d6"); + //Integer.parseInt("27d6", 16) + //new Character('ﷲ').charValue() + //new ImCharacter(unicode4DService.getCharacterForUnicode(Integer.parseInt("27d6", 16))).render(); + new ImCharacter(unicode4DService.getCharacterForUnicode(new Character('ﷲ').charValue())).render(); + ImGui.sameLine(); + new ImCharacter(unicode4DService.getCharacterForUnicode(new Character('v').charValue())).render(); + ImGui.sameLine(); + new ImCharacter(unicode4DService.getCharacterForUnicode(new Character('r').charValue())).render(); + //ImGui.sameLine(); + new ImCharacter(unicode4DService.getCharacterForUnicode(new Character('G').charValue())).render(); + ImGui.sameLine(); + new ImCharacter(unicode4DService.getCharacterForUnicode(new Character('E').charValue())).render(); + ImGui.sameLine(); + new ImCharacter(unicode4DService.getCharacterForUnicode(new Character('M').charValue())).render(); + ImGui.sameLine(); + new ImCharacter(unicode4DService.getCharacterForUnicode(new Character('⁴').charValue())).render(); - ImCharacter c = new ImCharacter(glyph); - - c.render(); + new ImCharacter(unicode4DService.getCharacterForUnicode(Integer.parseInt("27d6", 16))).render(); + ImGui.sameLine(); + new ImCharacter(unicode4DService.getCharacterForUnicode(new Character('仙').charValue())).render(); } class ImCharacter { - private final FontAtlasStoreGlyph glyph; + private final DrawCharacter drawChar; - public ImCharacter(FontAtlasStoreGlyph glyph) { - this.glyph = glyph; - - //List tongs = glyph.getTongs(); + public ImCharacter(DrawCharacter drawChar) { + this.drawChar = drawChar; } public void render() { - ImVec2 size = new ImVec2(144f, 48f); + ImVec2 size = new ImVec2(50f, 70f); ImGui.invisibleButton("canvas", size.x, size.y); ImVec2 p0 = ImGui.getItemRectMin(); ImVec2 p1 = ImGui.getItemRectMax(); // p1 = p0 + size ImDrawList drawList = ImGui.getWindowDrawList(); drawList.pushClipRect(p0.x, p0.y, p1.x, p1.y); + // draw unicode4D + float xOff = p0.x; + float yOff = p0.y + 55f; + float yFlip = -1f; + float scale = 0.025f; + ImGlyphPathCommand first = null; + ImGlyphPathCommand prev = null; + int color = ImColor.intToColor(255, 127, 63, 255); + for (ImGlyphPathCommand cmd: drawChar.getGlyphPath().getPath()) { + if (cmd.isImGlyphMoveTo()) { + first = cmd; + prev = cmd; + continue; + } + if (cmd.isImGlyphLineTo()) { + ImGlyphLineTo lineTo = cmd.toImGlyphLineTo(); + drawList.addLine(xOff+prev.getX()*scale, yOff+prev.getY()*scale*yFlip, xOff+lineTo.getX()*scale, yOff+lineTo.getY()*scale*yFlip, color); + prev = cmd; + continue; + } + if (cmd.isImGlyphQuadCurveTo()) { + ImGlyphQuadCurveTo quadCurveTo = cmd.toImGlyphQuadCurveTo(); + drawList.addBezierQuadratic(xOff+prev.getX()*scale, yOff+prev.getY()*scale*yFlip, xOff+quadCurveTo.getX1()*scale, yOff+quadCurveTo.getY1()*scale*yFlip, xOff+quadCurveTo.getX()*scale, yOff+quadCurveTo.getY()*scale*yFlip, color, 1); + prev = cmd; + continue; + } + if (cmd.isImGlyphClosePath()) { + drawList.addLine(xOff+prev.getX()*scale, yOff+prev.getY()*scale*yFlip, xOff+first.getX()*scale, yOff+first.getY()*scale*yFlip, color); + } + } drawList.addQuad(p0.x, p0.y, p0.x+size.x, p0.y, p1.x, p1.y, p0.x, p0.y+size.y, - ImColor.intToColor(127, 127, 255, 255), 5f); - - drawList.addLine(p0.x+10, p0.y+40, p0.x+20, p0.y+10, ImColor.intToColor(255, 127, 63, 255)); - drawList.addLine(p0.x+30, p0.y+40, p0.x+20, p0.y+10, ImColor.intToColor(255, 127, 63, 255)); - drawList.addLine(p0.x+13, p0.y+30, p0.x+27, p0.y+30, ImColor.intToColor(255, 127, 63, 255)); - + ImColor.intToColor(127, 127, 255, 255), 1f); drawList.popClipRect(); - //System.out.println("p0.x="+p0.x+" p0.y="+p0.y); - //System.out.println("p1.x="+p1.x+" p1.y="+p1.y); - -// for (int n = 0; n < (1.0f + Math.sin(ImGui.getTime() * 5.7f)) * 40.0f; n++) { -// drawList.addCircle(p0.x + size.x * 0.5f, p0.y + size.y * 0.5f, size.y * (0.01f + n * 0.03f), -// ImColor.intToColor(255, 140 - n * 4, n * 3, 255) -// ); -// } } } } diff --git a/gdxapp4d-app-tosamp/pom.xml b/gdxapp4d-app-tosamp/pom.xml index c75c8cea..a17e8b7d 100644 --- a/gdxapp4d-app-tosamp/pom.xml +++ b/gdxapp4d-app-tosamp/pom.xml @@ -28,88 +28,7 @@ <_donotcopy>(.git) <_dsannotations>* <_metatypeannotations>* - - org.osgi.framework, - org.osgi.service.packageadmin, - org.osgi.service.url, - org.osgi.service.startlevel, - org.osgi.util.tracker, - love.distributedrebirth.gdxapp4d.tos4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp, - com.badlogic.gdx, - com.badlogic.gdx.assets, - com.badlogic.gdx.assets.loaders, - com.badlogic.gdx.assets.loaders.resolvers, - com.badlogic.gdx.audio, - com.badlogic.gdx.files, - com.badlogic.gdx.graphics, - com.badlogic.gdx.graphics.g2d, - com.badlogic.gdx.graphics.g2d.freetype, - com.badlogic.gdx.graphics.g3d, - com.badlogic.gdx.graphics.g3d.attributes, - com.badlogic.gdx.graphics.g3d.decals, - com.badlogic.gdx.graphics.g3d.environment, - com.badlogic.gdx.graphics.g3d.loader, - com.badlogic.gdx.graphics.g3d.model, - com.badlogic.gdx.graphics.g3d.model.data, - com.badlogic.gdx.graphics.g3d.particles, - com.badlogic.gdx.graphics.g3d.particles.bactches, - com.badlogic.gdx.graphics.g3d.particles.emitters, - com.badlogic.gdx.graphics.g3d.particles.influencers, - com.badlogic.gdx.graphics.g3d.particles.renderers, - com.badlogic.gdx.graphics.g3d.particles.values, - com.badlogic.gdx.graphics.g3d.shaders, - com.badlogic.gdx.graphics.g3d.utils, - com.badlogic.gdx.graphics.g3d.utils.shapebuilders, - com.badlogic.gdx.graphics.glutils, - com.badlogic.gdx.graphics.profiling, - com.badlogic.gdx.input, - com.badlogic.gdx.maps, - com.badlogic.gdx.maps.objects, - com.badlogic.gdx.maps.tiled, - com.badlogic.gdx.maps.tiled.objects, - com.badlogic.gdx.maps.tiled.renderers, - com.badlogic.gdx.maps.tiled.tiles, - com.badlogic.gdx.math, - com.badlogic.gdx.math.collision, - com.badlogic.gdx.net, - com.badlogic.gdx.scenes.scene2d, - com.badlogic.gdx.scenes.scene2d.actions, - com.badlogic.gdx.scenes.scene2d.ui, - com.badlogic.gdx.scenes.scene2d.utils, - com.badlogic.gdx.utils, - com.badlogic.gdx.utils.async, - com.badlogic.gdx.utils.compression, - com.badlogic.gdx.utils.compression.lz, - com.badlogic.gdx.utils.compression.lzma, - com.badlogic.gdx.utils.compression.rangecoder, - com.badlogic.gdx.utils.reflect, - com.badlogic.gdx.utils.viewport, - imgui, - imgui.flag, - imgui.glfw, - imgui.gl3, - imgui.type, - net.spookygames.gdx.nativefilechooser, - love.distributedrebirth.bassboonyd, - love.distributedrebirth.bassboonyd.jmx, - love.distributedrebirth.numberxd, - love.distributedrebirth.numberxd.base2t, - love.distributedrebirth.numberxd.base2t.part, - love.distributedrebirth.numberxd.base2t.part.warp, - love.distributedrebirth.numberxd.base2t.type, - love.distributedrebirth.numberxd.base2t.typexl, - love.distributedrebirth.numberxd.glyph, - love.distributedrebirth.numberxd.x4o, - love.distributedrebirth.warpme, - love.distributedrebirth.warpme.core, - love.distributedrebirth.warpme.hash, - love.distributedrebirth.warpme.sea, - love.distributedrebirth.warpme.ship, - love.distributedrebirth.unicode4d, - love.distributedrebirth.unicode4d.atlas - + ${vrgem4.packages} distributedrebirth.love diff --git a/gdxapp4d-chain-font-unicode4d/src/main/chain/warp-hash.xml b/gdxapp4d-chain-font-unicode4d/src/main/chain/warp-hash.xml index 1dc27c7f..90f95814 100644 --- a/gdxapp4d-chain-font-unicode4d/src/main/chain/warp-hash.xml +++ b/gdxapp4d-chain-font-unicode4d/src/main/chain/warp-hash.xml @@ -31,7 +31,6 @@ - diff --git a/gdxapp4d-chain-font-unicode4d/src/main/chain/warp-sea.xml b/gdxapp4d-chain-font-unicode4d/src/main/chain/warp-sea.xml index 1a564594..c6e60d7a 100644 --- a/gdxapp4d-chain-font-unicode4d/src/main/chain/warp-sea.xml +++ b/gdxapp4d-chain-font-unicode4d/src/main/chain/warp-sea.xml @@ -31,7 +31,6 @@ - diff --git a/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/CodePointCommandᶻᴰ.java b/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/CodePointCommandᶻᴰ.java index d538caa4..3713f165 100644 --- a/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/CodePointCommandᶻᴰ.java +++ b/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/CodePointCommandᶻᴰ.java @@ -19,5 +19,6 @@ public enum CodePointCommandᶻᴰ { XY_OFF_CURVE_START, XY_ON_CURVE, XY_OFF_CURVE, - XY_SPACE + XY_SPACE, + ; } diff --git a/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawCharacter.java b/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawCharacter.java new file mode 100644 index 00000000..e216d8da --- /dev/null +++ b/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawCharacter.java @@ -0,0 +1,198 @@ +package love.distributedrebirth.unicode4d.draw; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import love.distributedrebirth.numberxd.base2t.part.T02PartBinary; +import love.distributedrebirth.numberxd.base2t.type.V036Teger; +import love.distributedrebirth.numberxd.base2t.type.V072Tong; +import love.distributedrebirth.unicode4d.CodePointCommandᶻᴰ; +import love.distributedrebirth.unicode4d.CodePointᶻᴰ; +import love.distributedrebirth.unicode4d.atlas.FontAtlasStoreGlyph; +import love.distributedrebirth.unicode4d.draw.DrawGlyphContour.ImGlyphPoint; + +public class DrawCharacter { + + private final FontAtlasStoreGlyph glyph; + private final List contours = new ArrayList<>(); + private final DrawGlyphPath glyphPath; + private DrawGlyphContour currentContour; + private int unicode; + private int xMax; + private int yMax; + private int xMin; + private int yMin; + private int advanceWidth; + private int leftSideBearing; + private boolean leftToRight; + + public DrawCharacter(FontAtlasStoreGlyph glyph) { + this.glyph = glyph; + for (V072Tong tong: glyph.getTongs()) { + processCodePoint(tong.getValue(T02PartBinary.PART_1)); + processCodePoint(tong.getValue(T02PartBinary.PART_2)); + } + if (currentContour != null) { + contours.add(currentContour); + } + this.glyphPath = createGlyphPath(); + } + + private void processCodePoint(V036Teger codePoint) { + CodePointCommandᶻᴰ cmd = CodePointᶻᴰ.INSTANCE.getCommand(codePoint); + if (CodePointCommandᶻᴰ.NOP.equals(cmd)) { + return; + } + if (CodePointCommandᶻᴰ.START_LR.equals(cmd)) { + leftToRight = true; + return; + } + if (CodePointCommandᶻᴰ.START_RL.equals(cmd)) { + leftToRight = false; + return; + } + if (CodePointCommandᶻᴰ.UNICODE.equals(cmd)) { + unicode = CodePointᶻᴰ.INSTANCE.getArgumentUnicode(codePoint); + return; + } + if (CodePointCommandᶻᴰ.XY_MAX.equals(cmd)) { + xMax = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_1); + yMax = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_2); + return; + } + if (CodePointCommandᶻᴰ.XY_MIN.equals(cmd)) { + xMin = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_1); + yMin = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_2); + return; + } + if (CodePointCommandᶻᴰ.ADVANCE.equals(cmd)) { + advanceWidth = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_1); + leftSideBearing = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_2); + return; + } + if (CodePointCommandᶻᴰ.XY_ON_CURVE_START.equals(cmd)) { + if (currentContour != null) { + contours.add(currentContour); + } + int x = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_1); + int y = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_2); + currentContour = new DrawGlyphContour(); + currentContour.point(x, y, true); + return; + } + if (CodePointCommandᶻᴰ.XY_OFF_CURVE_START.equals(cmd)) { + if (currentContour != null) { + contours.add(currentContour); + } + int x = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_1); + int y = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_2); + currentContour = new DrawGlyphContour(); + currentContour.point(x, y, true); + return; + } + if (CodePointCommandᶻᴰ.XY_ON_CURVE.equals(cmd)) { + int x = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_1); + int y = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_2); + currentContour.point(x, y, true); + return; + } + if (CodePointCommandᶻᴰ.XY_OFF_CURVE.equals(cmd)) { + int x = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_1); + int y = CodePointᶻᴰ.INSTANCE.getArgument(codePoint, T02PartBinary.PART_2); + currentContour.point(x, y, false); + return; + } + } + + private DrawGlyphPath createGlyphPath() { + // source function getPath(points): opentype.js/src/tables/glyf.js + DrawGlyphPath p = new DrawGlyphPath(); + + for (DrawGlyphContour contour: contours) { + //ImGlyphPoint prev = null; + ImGlyphPoint curr = contour.getPoints().get(contour.getPoints().size() - 1); + ImGlyphPoint next = contour.getPoints().get(0); + + if (curr.onCurve) { + p.moveTo(curr.x, curr.y); + } else { + if (next.onCurve) { + p.moveTo(next.x, next.y); + } else { + int x = (curr.x + next.x) / 2; + int y = (curr.y + next.y) / 2; + p.moveTo(x, y); + } + } + + Iterator pointIt = contour.getPoints().iterator(); + pointIt.next(); // Remove first as that is 'next' + while (pointIt.hasNext()) { + //prev = curr; + curr = next; + next = pointIt.next(); + + if (curr.onCurve) { + p.lineTo(curr.x, curr.y); + } else { + int x = next.x; + int y = next.y; + if (next.onCurve) { + x = (curr.x + next.x) / 2; + y = (curr.y + next.y) / 2; + } + p.quadCurveTo(curr.x, curr.y, x, y); + } + } + + p.closePath(); + } + + return p; + } + + public FontAtlasStoreGlyph getGlyph() { + return glyph; + } + + public List getContours() { + return contours; + } + + public DrawGlyphPath getGlyphPath() { + return glyphPath; + } + + public int getUnicode() { + return unicode; + } + + public int getxMax() { + return xMax; + } + + public int getyMax() { + return yMax; + } + + public int getxMin() { + return xMin; + } + + public int getyMin() { + return yMin; + } + + public int getAdvanceWidth() { + return advanceWidth; + } + + public int getLeftSideBearing() { + return leftSideBearing; + } + + public boolean isLeftToRight() { + return leftToRight; + } +} diff --git a/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawGlyphContour.java b/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawGlyphContour.java new file mode 100644 index 00000000..216eb0df --- /dev/null +++ b/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawGlyphContour.java @@ -0,0 +1,28 @@ +package love.distributedrebirth.unicode4d.draw; + +import java.util.ArrayList; +import java.util.List; + +public class DrawGlyphContour { + private final List points = new ArrayList<>(); + + public class ImGlyphPoint { + int x; + int y; + boolean onCurve; + + public ImGlyphPoint(int x, int y, boolean onCurve) { + this.x = x; + this.y = y; + this.onCurve = onCurve; + } + } + + public void point(int x, int y, boolean onCurve) { + points.add(new ImGlyphPoint(x,y, onCurve)); + } + + public List getPoints() { + return points; + } +} diff --git a/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawGlyphPath.java b/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawGlyphPath.java new file mode 100644 index 00000000..f3a6deca --- /dev/null +++ b/gdxapp4d-lib-unicodezd/src/main/java/love/distributedrebirth/unicode4d/draw/DrawGlyphPath.java @@ -0,0 +1,196 @@ +package love.distributedrebirth.unicode4d.draw; + +import java.util.ArrayList; +import java.util.List; + +public class DrawGlyphPath { + private final List commands = new ArrayList<>(); + + public interface ImGlyphPathCommand { + int getX(); + int getY(); + default boolean isImGlyphMoveTo() { + return this instanceof ImGlyphMoveTo; + } + default boolean isImGlyphLineTo() { + return this instanceof ImGlyphLineTo; + } + default boolean isImGlyphCurveTo() { + return this instanceof ImGlyphCurveTo; + } + default boolean isImGlyphQuadCurveTo() { + return this instanceof ImGlyphQuadCurveTo; + } + default boolean isImGlyphClosePath() { + return this instanceof ImGlyphClosePath; + } + default ImGlyphMoveTo toImGlyphMoveTo() { + return ImGlyphMoveTo.class.cast(this); + } + default ImGlyphLineTo toImGlyphLineTo() { + return ImGlyphLineTo.class.cast(this); + } + default ImGlyphCurveTo toImGlyphCurveTo() { + return ImGlyphCurveTo.class.cast(this); + } + default ImGlyphQuadCurveTo toImGlyphQuadCurveTo() { + return ImGlyphQuadCurveTo.class.cast(this); + } + default ImGlyphClosePath toImGlyphClosePath() { + return ImGlyphClosePath.class.cast(this); + } + } + + public final class ImGlyphMoveTo implements ImGlyphPathCommand { + private final int x; + private final int y; + + public ImGlyphMoveTo(int x, int y) { + this.x = x; + this.y = y; + } + + @Override + public int getX() { + return x; + } + + @Override + public int getY() { + return y; + } + } + + public final class ImGlyphLineTo implements ImGlyphPathCommand { + private final int x; + private final int y; + + public ImGlyphLineTo(int x, int y) { + this.x = x; + this.y = y; + } + + @Override + public int getX() { + return x; + } + + @Override + public int getY() { + return y; + } + } + + public final class ImGlyphCurveTo implements ImGlyphPathCommand { + private final int x1; + private final int y1; + private final int x2; + private final int y2; + private final int x; + private final int y; + + public ImGlyphCurveTo(int x1, int y1,int x2, int y2,int x, int y) { + this.x1 = x1; + this.y1 = y1; + this.x2 = x2; + this.y2 = y2; + this.x = x; + this.y = y; + } + + @Override + public int getX() { + return x; + } + + @Override + public int getY() { + return y; + } + + public int getX1() { + return x1; + } + + public int getY1() { + return y1; + } + + public int getX2() { + return x2; + } + + public int getY2() { + return y2; + } + } + + public final class ImGlyphQuadCurveTo implements ImGlyphPathCommand { + private final int x1; + private final int y1; + private final int x; + private final int y; + + public ImGlyphQuadCurveTo(int x1, int y1,int x, int y) { + this.x1 = x1; + this.y1 = y1; + this.x = x; + this.y = y; + } + + @Override + public int getX() { + return x; + } + + @Override + public int getY() { + return y; + } + + public int getX1() { + return x1; + } + + public int getY1() { + return y1; + } + } + + public class ImGlyphClosePath implements ImGlyphPathCommand { + + @Override + public int getX() { + return -1; + } + + @Override + public int getY() { + return -1; + } + } + + public void moveTo(int x, int y) { + commands.add(new ImGlyphMoveTo(x,y)); + } + + public void lineTo(int x, int y) { + commands.add(new ImGlyphLineTo(x,y)); + } + + public void curveTo(int x1, int y1,int x2, int y2,int x, int y) { + commands.add(new ImGlyphCurveTo(x1,y1,x2,y2,x,y)); + } + + public void quadCurveTo(int x1, int y1,int x, int y) { + commands.add(new ImGlyphQuadCurveTo(x1,y1,x,y)); + } + + public void closePath() { + commands.add(new ImGlyphClosePath()); + } + + public List getPath() { + return commands; + } +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java index 46310a99..957e765e 100644 --- a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java @@ -134,7 +134,8 @@ public class GDXAppTos4BootFactory { "love.distributedrebirth.warpme.sea,"+ "love.distributedrebirth.warpme.ship,"+ "love.distributedrebirth.unicode4d,"+ - "love.distributedrebirth.unicode4d.atlas" + "love.distributedrebirth.unicode4d.atlas,"+ + "love.distributedrebirth.unicode4d.draw" ); // ; version=1.0.0 if (cachedir != null) { diff --git a/gdxapp4d-vrgem4/pom.xml b/gdxapp4d-vrgem4/pom.xml index 0393c5b8..87d4febb 100644 --- a/gdxapp4d-vrgem4/pom.xml +++ b/gdxapp4d-vrgem4/pom.xml @@ -28,104 +28,7 @@ <_dsannotations>* <_metatypeannotations>* - org.osgi.framework, - org.osgi.service.packageadmin, - org.osgi.service.url, - org.osgi.service.startlevel, - org.osgi.util.tracker, - love.distributedrebirth.gdxapp4d.tos4.service, - com.badlogic.gdx, - com.badlogic.gdx.assets, - com.badlogic.gdx.assets.loaders, - com.badlogic.gdx.assets.loaders.resolvers, - com.badlogic.gdx.audio, - com.badlogic.gdx.files, - com.badlogic.gdx.graphics, - com.badlogic.gdx.graphics.g2d, - com.badlogic.gdx.graphics.g2d.freetype, - com.badlogic.gdx.graphics.g3d, - com.badlogic.gdx.graphics.g3d.attributes, - com.badlogic.gdx.graphics.g3d.decals, - com.badlogic.gdx.graphics.g3d.environment, - com.badlogic.gdx.graphics.g3d.loader, - com.badlogic.gdx.graphics.g3d.model, - com.badlogic.gdx.graphics.g3d.model.data, - com.badlogic.gdx.graphics.g3d.particles, - com.badlogic.gdx.graphics.g3d.particles.bactches, - com.badlogic.gdx.graphics.g3d.particles.emitters, - com.badlogic.gdx.graphics.g3d.particles.influencers, - com.badlogic.gdx.graphics.g3d.particles.renderers, - com.badlogic.gdx.graphics.g3d.particles.values, - com.badlogic.gdx.graphics.g3d.shaders, - com.badlogic.gdx.graphics.g3d.utils, - com.badlogic.gdx.graphics.g3d.utils.shapebuilders, - com.badlogic.gdx.graphics.glutils, - com.badlogic.gdx.graphics.profiling, - com.badlogic.gdx.input, - com.badlogic.gdx.maps, - com.badlogic.gdx.maps.objects, - com.badlogic.gdx.maps.tiled, - com.badlogic.gdx.maps.tiled.objects, - com.badlogic.gdx.maps.tiled.renderers, - com.badlogic.gdx.maps.tiled.tiles, - com.badlogic.gdx.math, - com.badlogic.gdx.math.collision, - com.badlogic.gdx.net, - com.badlogic.gdx.scenes.scene2d, - com.badlogic.gdx.scenes.scene2d.actions, - com.badlogic.gdx.scenes.scene2d.ui, - com.badlogic.gdx.scenes.scene2d.utils, - com.badlogic.gdx.utils, - com.badlogic.gdx.utils.async, - com.badlogic.gdx.utils.compression, - com.badlogic.gdx.utils.compression.lz, - com.badlogic.gdx.utils.compression.lzma, - com.badlogic.gdx.utils.compression.rangecoder, - com.badlogic.gdx.utils.reflect, - com.badlogic.gdx.utils.viewport, - imgui, - imgui.flag, - imgui.glfw, - imgui.gl3, - imgui.type, - net.spookygames.gdx.nativefilechooser, - org.x4o.xml, - org.x4o.xml.conv, - org.x4o.xml.conv.text, - org.x4o.xml.el, - org.x4o.xml.eld, - org.x4o.xml.eld.lang, - org.x4o.xml.eld.xsd, - org.x4o.xml.element, - org.x4o.xml.io, - org.x4o.xml.io.sax, - org.x4o.xml.io.sax.ext, - org.x4o.xml.lang, - org.x4o.xml.lang.phase, - org.x4o.xml.lang.task, - org.x4o.xml.lang.task.run, - javax.el, - org.apache.el, - org.apache.el.lang, - org.apache.el.parser, - org.apache.el.util, - love.distributedrebirth.bassboonyd, - love.distributedrebirth.bassboonyd.jmx, - love.distributedrebirth.numberxd, - love.distributedrebirth.numberxd.base2t, - love.distributedrebirth.numberxd.base2t.part, - love.distributedrebirth.numberxd.base2t.part.warp, - love.distributedrebirth.numberxd.base2t.type, - love.distributedrebirth.numberxd.base2t.typexl, - love.distributedrebirth.numberxd.glyph, - love.distributedrebirth.numberxd.x4o, - love.distributedrebirth.warpme, - love.distributedrebirth.warpme.core, - love.distributedrebirth.warpme.hash, - love.distributedrebirth.warpme.sea, - love.distributedrebirth.warpme.ship, - love.distributedrebirth.unicode4d, - love.distributedrebirth.unicode4d.atlas + ${tos4.packages} love.distributedrebirth.gdxapp4d.vrgem4.service, diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/VrGem4Unicode4DServiceImpl.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/VrGem4Unicode4DServiceImpl.java index 7bad3698..b0e43762 100644 --- a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/VrGem4Unicode4DServiceImpl.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/VrGem4Unicode4DServiceImpl.java @@ -19,12 +19,14 @@ import love.distributedrebirth.unicode4d.atlas.FontAtlas; import love.distributedrebirth.unicode4d.atlas.FontAtlasDriver; import love.distributedrebirth.unicode4d.atlas.FontAtlasStore; import love.distributedrebirth.unicode4d.atlas.FontAtlasStoreGlyph; +import love.distributedrebirth.unicode4d.draw.DrawCharacter; @Component public class VrGem4Unicode4DServiceImpl implements VrGem4Unicode4DService { private final FontAtlas masterFontAtlas; private final Map unicodeMap; + private final Map unicodeCharMap; @Reference private SystemGdxLog log; @@ -36,6 +38,7 @@ public class VrGem4Unicode4DServiceImpl implements VrGem4Unicode4DService { public VrGem4Unicode4DServiceImpl() { masterFontAtlas = new FontAtlas(); unicodeMap = new HashMap<>(); + unicodeCharMap = new HashMap<>(); } @Activate @@ -53,16 +56,26 @@ public class VrGem4Unicode4DServiceImpl implements VrGem4Unicode4DService { } log.info(this, "Master font atlas size: {}", masterFontAtlas.getStores().size()); + int dup = 0; for (FontAtlasStore fontStore:masterFontAtlas.getStores()) { log.info(this,"Map unicode: {} size: {}", fontStore.getName(), fontStore.getGlyphs().size()); for (FontAtlasStoreGlyph glyph: fontStore.getGlyphs()) { int unicode = CodePointᶻᴰ.INSTANCE.searchUnicode(glyph.getTongs()); + if (unicodeMap.containsKey(unicode)) { + dup++; + continue; + } if (unicode > 0) { unicodeMap.put(unicode, glyph); + try { + unicodeCharMap.put(unicode, new DrawCharacter(glyph)); + } catch (Exception e) { + log.error(this, e.getMessage(), e); + } } } } - log.info(this, "unicode map size: {}", unicodeMap.size()); + log.info(this, "unicode map size: {} dups: {}", unicodeMap.size(), dup); } @Deactivate @@ -71,12 +84,17 @@ public class VrGem4Unicode4DServiceImpl implements VrGem4Unicode4DService { } @Override - public FontAtlas getMasterFontAtlas() { + public FontAtlas getFontAtlas() { return masterFontAtlas; } - + @Override public FontAtlasStoreGlyph getGlyphForUnicode(int unicode) { return unicodeMap.get(unicode); } + + @Override + public DrawCharacter getCharacterForUnicode(int unicode) { + return unicodeCharMap.get(unicode); + } } diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/service/VrGem4Unicode4DService.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/service/VrGem4Unicode4DService.java index 952c1328..a73b8e36 100644 --- a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/service/VrGem4Unicode4DService.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/service/VrGem4Unicode4DService.java @@ -2,10 +2,13 @@ package love.distributedrebirth.gdxapp4d.vrgem4.service; import love.distributedrebirth.unicode4d.atlas.FontAtlas; import love.distributedrebirth.unicode4d.atlas.FontAtlasStoreGlyph; +import love.distributedrebirth.unicode4d.draw.DrawCharacter; public interface VrGem4Unicode4DService { - FontAtlas getMasterFontAtlas(); + FontAtlas getFontAtlas(); FontAtlasStoreGlyph getGlyphForUnicode(int unicode); + + DrawCharacter getCharacterForUnicode(int unicode); } diff --git a/gdxapp4d-vrsys5/pom.xml b/gdxapp4d-vrsys5/pom.xml index 92127566..2b1e07b9 100644 --- a/gdxapp4d-vrsys5/pom.xml +++ b/gdxapp4d-vrsys5/pom.xml @@ -28,88 +28,7 @@ <_donotcopy>(.git) <_dsannotations>* <_metatypeannotations>* - - org.osgi.framework, - org.osgi.service.packageadmin, - org.osgi.service.url, - org.osgi.service.startlevel, - org.osgi.util.tracker, - love.distributedrebirth.gdxapp4d.tos4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service, - love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp, - com.badlogic.gdx, - com.badlogic.gdx.assets, - com.badlogic.gdx.assets.loaders, - com.badlogic.gdx.assets.loaders.resolvers, - com.badlogic.gdx.audio, - com.badlogic.gdx.files, - com.badlogic.gdx.graphics, - com.badlogic.gdx.graphics.g2d, - com.badlogic.gdx.graphics.g2d.freetype, - com.badlogic.gdx.graphics.g3d, - com.badlogic.gdx.graphics.g3d.attributes, - com.badlogic.gdx.graphics.g3d.decals, - com.badlogic.gdx.graphics.g3d.environment, - com.badlogic.gdx.graphics.g3d.loader, - com.badlogic.gdx.graphics.g3d.model, - com.badlogic.gdx.graphics.g3d.model.data, - com.badlogic.gdx.graphics.g3d.particles, - com.badlogic.gdx.graphics.g3d.particles.bactches, - com.badlogic.gdx.graphics.g3d.particles.emitters, - com.badlogic.gdx.graphics.g3d.particles.influencers, - com.badlogic.gdx.graphics.g3d.particles.renderers, - com.badlogic.gdx.graphics.g3d.particles.values, - com.badlogic.gdx.graphics.g3d.shaders, - com.badlogic.gdx.graphics.g3d.utils, - com.badlogic.gdx.graphics.g3d.utils.shapebuilders, - com.badlogic.gdx.graphics.glutils, - com.badlogic.gdx.graphics.profiling, - com.badlogic.gdx.input, - com.badlogic.gdx.maps, - com.badlogic.gdx.maps.objects, - com.badlogic.gdx.maps.tiled, - com.badlogic.gdx.maps.tiled.objects, - com.badlogic.gdx.maps.tiled.renderers, - com.badlogic.gdx.maps.tiled.tiles, - com.badlogic.gdx.math, - com.badlogic.gdx.math.collision, - com.badlogic.gdx.net, - com.badlogic.gdx.scenes.scene2d, - com.badlogic.gdx.scenes.scene2d.actions, - com.badlogic.gdx.scenes.scene2d.ui, - com.badlogic.gdx.scenes.scene2d.utils, - com.badlogic.gdx.utils, - com.badlogic.gdx.utils.async, - com.badlogic.gdx.utils.compression, - com.badlogic.gdx.utils.compression.lz, - com.badlogic.gdx.utils.compression.lzma, - com.badlogic.gdx.utils.compression.rangecoder, - com.badlogic.gdx.utils.reflect, - com.badlogic.gdx.utils.viewport, - imgui, - imgui.flag, - imgui.glfw, - imgui.gl3, - imgui.type, - net.spookygames.gdx.nativefilechooser, - love.distributedrebirth.bassboonyd, - love.distributedrebirth.bassboonyd.jmx, - love.distributedrebirth.numberxd, - love.distributedrebirth.numberxd.base2t, - love.distributedrebirth.numberxd.base2t.part, - love.distributedrebirth.numberxd.base2t.part.warp, - love.distributedrebirth.numberxd.base2t.type, - love.distributedrebirth.numberxd.base2t.typexl, - love.distributedrebirth.numberxd.glyph, - love.distributedrebirth.numberxd.x4o, - love.distributedrebirth.warpme, - love.distributedrebirth.warpme.core, - love.distributedrebirth.warpme.hash, - love.distributedrebirth.warpme.sea, - love.distributedrebirth.warpme.ship, - love.distributedrebirth.unicode4d, - love.distributedrebirth.unicode4d.atlas - + ${vrgem4.packages} distributedrebirth.love diff --git a/pom.xml b/pom.xml index ed53d069..535f9f69 100644 --- a/pom.xml +++ b/pom.xml @@ -38,6 +38,112 @@ 1.10.0 1.86.0 1.0.0 + + org.osgi.framework, + org.osgi.service.packageadmin, + org.osgi.service.url, + org.osgi.service.startlevel, + org.osgi.util.tracker, + love.distributedrebirth.gdxapp4d.tos4.service, + com.badlogic.gdx, + com.badlogic.gdx.assets, + com.badlogic.gdx.assets.loaders, + com.badlogic.gdx.assets.loaders.resolvers, + com.badlogic.gdx.audio, + com.badlogic.gdx.files, + com.badlogic.gdx.graphics, + com.badlogic.gdx.graphics.g2d, + com.badlogic.gdx.graphics.g2d.freetype, + com.badlogic.gdx.graphics.g3d, + com.badlogic.gdx.graphics.g3d.attributes, + com.badlogic.gdx.graphics.g3d.decals, + com.badlogic.gdx.graphics.g3d.environment, + com.badlogic.gdx.graphics.g3d.loader, + com.badlogic.gdx.graphics.g3d.model, + com.badlogic.gdx.graphics.g3d.model.data, + com.badlogic.gdx.graphics.g3d.particles, + com.badlogic.gdx.graphics.g3d.particles.bactches, + com.badlogic.gdx.graphics.g3d.particles.emitters, + com.badlogic.gdx.graphics.g3d.particles.influencers, + com.badlogic.gdx.graphics.g3d.particles.renderers, + com.badlogic.gdx.graphics.g3d.particles.values, + com.badlogic.gdx.graphics.g3d.shaders, + com.badlogic.gdx.graphics.g3d.utils, + com.badlogic.gdx.graphics.g3d.utils.shapebuilders, + com.badlogic.gdx.graphics.glutils, + com.badlogic.gdx.graphics.profiling, + com.badlogic.gdx.input, + com.badlogic.gdx.maps, + com.badlogic.gdx.maps.objects, + com.badlogic.gdx.maps.tiled, + com.badlogic.gdx.maps.tiled.objects, + com.badlogic.gdx.maps.tiled.renderers, + com.badlogic.gdx.maps.tiled.tiles, + com.badlogic.gdx.math, + com.badlogic.gdx.math.collision, + com.badlogic.gdx.net, + com.badlogic.gdx.scenes.scene2d, + com.badlogic.gdx.scenes.scene2d.actions, + com.badlogic.gdx.scenes.scene2d.ui, + com.badlogic.gdx.scenes.scene2d.utils, + com.badlogic.gdx.utils, + com.badlogic.gdx.utils.async, + com.badlogic.gdx.utils.compression, + com.badlogic.gdx.utils.compression.lz, + com.badlogic.gdx.utils.compression.lzma, + com.badlogic.gdx.utils.compression.rangecoder, + com.badlogic.gdx.utils.reflect, + com.badlogic.gdx.utils.viewport, + imgui, + imgui.flag, + imgui.glfw, + imgui.gl3, + imgui.type, + net.spookygames.gdx.nativefilechooser, + org.x4o.xml, + org.x4o.xml.conv, + org.x4o.xml.conv.text, + org.x4o.xml.el, + org.x4o.xml.eld, + org.x4o.xml.eld.lang, + org.x4o.xml.eld.xsd, + org.x4o.xml.element, + org.x4o.xml.io, + org.x4o.xml.io.sax, + org.x4o.xml.io.sax.ext, + org.x4o.xml.lang, + org.x4o.xml.lang.phase, + org.x4o.xml.lang.task, + org.x4o.xml.lang.task.run, + javax.el, + org.apache.el, + org.apache.el.lang, + org.apache.el.parser, + org.apache.el.util, + love.distributedrebirth.bassboonyd, + love.distributedrebirth.bassboonyd.jmx, + love.distributedrebirth.numberxd, + love.distributedrebirth.numberxd.base2t, + love.distributedrebirth.numberxd.base2t.part, + love.distributedrebirth.numberxd.base2t.part.warp, + love.distributedrebirth.numberxd.base2t.type, + love.distributedrebirth.numberxd.base2t.typexl, + love.distributedrebirth.numberxd.glyph, + love.distributedrebirth.numberxd.x4o, + love.distributedrebirth.warpme, + love.distributedrebirth.warpme.core, + love.distributedrebirth.warpme.hash, + love.distributedrebirth.warpme.sea, + love.distributedrebirth.warpme.ship, + love.distributedrebirth.unicode4d, + love.distributedrebirth.unicode4d.atlas, + love.distributedrebirth.unicode4d.draw + + + ${tos4.packages}, + love.distributedrebirth.gdxapp4d.vrgem4.service, + love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp +