Easter cleaning git

This commit is contained in:
Willem Cazander 2025-04-27 00:09:28 +02:00
commit d0529bfadf
500 changed files with 116670 additions and 0 deletions

52
.gitignore vendored Normal file
View file

@ -0,0 +1,52 @@
#
# Ignore files in the GDXApp⁴ᴰ project.
#
# Ignore project resources
gdxapp4d-boot-desktop/warpcore.xml
gdxapp4d-boot-desktop/etc
gdxapp4d-boot-desktop/Warpship/etc
# Ignore maven resources
target
# Ignore npm resources
node_modules
# Ignore binary files and formats
*.o
*.class
*.old
*.log
*.bak
*.backup
*.dat
*.data
*.gif
*.bmp
*.pdf
*.doc
*.zip
*.gz
*.db
*.ini
# Ignore ~ backup files.
*~
# Ignore some eclipse files
.settings
.classpath
.project
# Ignore netbeans directory
nbproject
# Ignore mac finder files
.DS_Store
# Ignore windows files.
# none (done by .db and .ini)
# Ignore kde dolphin files
.directory

74
README.md Normal file
View file

@ -0,0 +1,74 @@
# GDXApp⁴ᴰ
In Duytschen "Geloof Doom eXtensie APPlicatie 4D" which tranlates to: faith doom extension application 4D.
Is a demo or POC of TempleOS Next Generation coded in java with libGDX and ImGui.
Final version will be written in HolyC++ on TempleOS and runs on dedicated 144 bit hardware.
All code is junk, q&d play code, ideas, etc.
For masters and slaves only.
TODO:
- Move and merge unitXC+basic+step2 code to NX-01
- Move and rewrite unicode4D to NX-01
- Move fonts+apps to real hyper+nostr redsea filesystem of NX-01
## Project Features
* Single Endpoint Application model (user)
* Single Window Application model (touch)
* Single MenuBar Application model (tricorder)
* Applications are distributed as OSGI bundles
* Blockchain distribution and storage to boot apps and OS from
* Unicode4D 72 bit glyph sequence blocks and rendering
## Project Setup
Requirements;
* 8GB of free memory
* Setup a DAT Hyperdrive tool [drives](https://github.com/holepunchto/drives)
* Use an AdoptOpenJDK(11++) to run the demo
* install local copy of nx01 maven artifacts
### Project Launch IDE
Run "mvn package" after every git pull.
Run the main class from gdxapp4d-boot-desktop; love.distributedrebirth.gdxapp4d.boot.desktop.GDXAppDesktopLauncher
Append "use-local" to the main launcher to use the local chains. (as the real are fake)
## Duytschen Code
Is moved to the NX-01 code runtime for none-english enterprice ships;
buiten ℭheɱMolecǔūl ringZaad(ℭheɱMolecǔūl 大胸部, GroßGetậl 養花) {
GroßGetậl 征服天空 = חדמצילעול/םומלואו; //S4a: מי שמציל אדם א ©Δ∞ 仙上主天
tê̄ruʛγ ℭheɱ.orbitalSkeleŦŧgPÅd-₇ɛͣ₉(大胸部, 征服天空, M̋atƕ.π√θ33°, 養花);
}
### The BASIC Prayer
Lets review the answer given by the or-acle; [Thread.yield()](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Thread.html#yield())
Firstly its an method which requires no input and has no output.
Secondly its an hint without predefined usage pattern or functional outcome.
The other paragraphs try to explain its usage, but fail to add an example like;
Running multi-processor code on single cpu OR on an over-utilise cpus requires yielding to avoid async deadlocks in parallel work distributions trees.
Also in high performance parallel code, yielding control out of consent, may result in better performance than forced interruption or time slicing.
Especially when working with an live non-homogeneous workload.
Writing and simulating parallel code paths is not easy. So most developers use a library which comes with default configured options.
Then feed it small batches of work and hope for the best.
Now simulate with ~7833661741 threads using X different libraries and try to avoid deadlocks.
By replacing a few words, this changes the description to the faith-by-math yielding version;
A hint to the π-creator that the current human is willing to yield its current use of a itself.
The π-creator is free to ignore this hint.

View file

@ -0,0 +1,42 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-app-calculator</artifactId>
<name>GDXApp⁴ᴰ-App-計算器</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-vrgem4</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<exportScr>true</exportScr>
<niceManifest>true</niceManifest>
<instructions>
<_donotcopy>(.git)</_donotcopy>
<_dsannotations>*</_dsannotations>
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
${tos4.packages},
${vrgem4.packages}
</Import-Package>
<Bundle-Vendor>distributedrebirth.love</Bundle-Vendor>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,79 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.calculator;
import java.util.ResourceBundle;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4LocaleService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppMenuSection;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@Component
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class CalculatorComponent {
@Reference
private SystemGdxLog log;
@Reference
private VrGem4DeskAppService deskAppService;
@Reference
private VrGem4LocaleService localeService;
private final static String I18N_BUNDLE = "love.distributedrebirth.gdxapp4d.app.calculator.Messages";
private final DeskAppLauncher launcher;
public CalculatorComponent() {
launcher = new DeskAppLauncher(DeskAppMenuSection.SCIENCE, "Calculator", () -> new CalculatorDeskApp(createBundle()));
}
private ResourceBundle createBundle() {
return ResourceBundle.getBundle(I18N_BUNDLE, localeService.getTextLocale());
}
@Activate
void open() {
log.debug(this, SystemGdxLog.ACTIVATE);
deskAppService.installDeskApp(launcher);
}
@Deactivate
void close() {
log.debug(this, SystemGdxLog.DEACTIVATE);
deskAppService.removeDeskApp(launcher);
}
}

View file

@ -0,0 +1,232 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.calculator;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import imgui.ImGui;
import imgui.type.ImInt;
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 ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ.BaseGlyphSet;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class CalculatorDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private ResourceBundle bundle;
private int valueNum = 0;
private String value = "";
private String valueLoc = "";
private String valueArg = "";
private Operation operation = Operation.NONE;
private ImInt selectedNumberGlyph = new ImInt();
private float buttonSize = 64f;
public CalculatorDeskApp(ResourceBundle bundle) {
this.bundle = bundle;
}
private String getTxt(String key) {
return bundle.getString(CalculatorDeskApp.class.getSimpleName()+"."+key);
}
public void create() {
getContours().setTitle(getTxt("title"));
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
enum Operation {
NONE,
PLUS,
MINUS,
MULTIPLY,
DIVIDE
}
@Override
public void render() {
List<String> bases = new ArrayList<>();
for (BaseGlyphSet base:BaseGlyphSet.values()) {
bases.add(base.name());
}
String[] items = new String[bases.size()];
items = bases.toArray(items);
boolean changedLoc = ImGui.combo(getTxt("selectedNumberGlyph"), selectedNumberGlyph, items);
String selectedItem = items[selectedNumberGlyph.get()];
BaseGlyphSet baseNumber = BaseGlyphSet.valueOf(selectedItem);
if (changedLoc) {
valueLoc = baseNumber.BȍőnPrintNumber10(valueNum);
}
ImGui.text("Value:");
ImGui.sameLine();
ImGui.text(valueLoc);
ImGui.separator();
if (value.length() > 8) {
value = "0"; // dirty limit for parseInt
valueLoc = baseNumber.BȍőnPrintNumber10(Integer.parseInt(value));
}
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(7), buttonSize, buttonSize)) {
value+="7";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(7);
}
ImGui.sameLine();
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(8), buttonSize, buttonSize)) {
value+="8";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(8);
}
ImGui.sameLine();
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(9), buttonSize, buttonSize)) {
value+="9";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(9);
}
ImGui.sameLine();
if (ImGui.button("/", buttonSize, buttonSize)) {
valueArg=value;
value="";
valueLoc="";
operation = Operation.DIVIDE;
}
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(4), buttonSize, buttonSize)) {
value+="4";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(4);
}
ImGui.sameLine();
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(5), buttonSize, buttonSize)) {
value+="5";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(5);
}
ImGui.sameLine();
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(6), buttonSize, buttonSize)) {
value+="6";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(6);
}
ImGui.sameLine();
if (ImGui.button("*", buttonSize, buttonSize)) {
valueArg=value;
value="";
valueLoc="";
operation = Operation.MULTIPLY;
}
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(1), buttonSize, buttonSize)) {
value+="1";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(1);
}
ImGui.sameLine();
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(2), buttonSize, buttonSize)) {
value+="2";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(2);
}
ImGui.sameLine();
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(3), buttonSize, buttonSize)) {
value+="3";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(3);
}
ImGui.sameLine();
if (ImGui.button("-", buttonSize, buttonSize)) {
valueArg=value;
value="";
valueLoc="";
operation = Operation.MINUS;
}
if (ImGui.button(baseNumber.BȍőnNumber10().BȍőnCharFor(0), buttonSize, buttonSize)) {
value+="0";
valueNum = Integer.parseInt(value);
valueLoc+=baseNumber.BȍőnNumber10().BȍőnCharFor(0);
}
ImGui.sameLine();
if (ImGui.button("C", buttonSize, buttonSize)) {
valueNum = 0;
value="";
valueLoc="";
valueArg="";
operation = Operation.NONE;
}
ImGui.sameLine();
if (ImGui.button("+", buttonSize, buttonSize)) {
valueArg=value;
value="";
valueLoc="";
operation = Operation.PLUS;
}
ImGui.sameLine();
if (ImGui.button("=", buttonSize, buttonSize)) {
if (value.isEmpty()) {
return;
}
int v2 = Integer.parseInt(value);
if (valueArg.isEmpty()) {
valueLoc = baseNumber.BȍőnPrintNumber10(v2);
return;
}
int v1 = Integer.parseInt(valueArg);
int result = 0;
switch (operation) {
case PLUS:
result = v1+v2;
break;
case MINUS:
result = v1-v2;
break;
case MULTIPLY:
result = v1*v2;
break;
case DIVIDE:
if (v2 != 0) {
result = v1/v2;
}
break;
default:
break;
}
valueNum = result;
value = "" + valueNum;
valueLoc = baseNumber.BȍőnPrintNumber10(valueNum);
}
}
}

View file

@ -0,0 +1,2 @@
CalculatorDeskApp.title=Calculator
CalculatorDeskApp.selectedNumberGlyph=Language

View file

@ -0,0 +1,2 @@
CalculatorDeskApp.title=\u8BA1\u7B97\u5668
CalculatorDeskApp.selectedNumberGlyph=\u8BED\u8A00

View file

@ -0,0 +1,2 @@
CalculatorDeskApp.title=Calculator
CalculatorDeskApp.selectedNumberGlyph=Language

View file

@ -0,0 +1,2 @@
CalculatorDeskApp.title=Rekenmachine
CalculatorDeskApp.selectedNumberGlyph=Taal

View file

@ -0,0 +1,2 @@
CalculatorDeskApp.title=\u16B2\u16A8\u16DA\u16B2\u16A2\u16DA\u16A8\u16CF\u16DF\u16B1
CalculatorDeskApp.selectedNumberGlyph=\u16DA\u16A8\u16BE\u16B7\u16A2\u16A8\u16B7\u16D6

View file

@ -0,0 +1,50 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-app-glyphdemo</artifactId>
<name>GDXApp⁴ᴰ-App-𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡 𑀪𑀸𑀕</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-vrgem4</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-unitxc</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<exportScr>true</exportScr>
<niceManifest>true</niceManifest>
<instructions>
<_donotcopy>(.git)</_donotcopy>
<_dsannotations>*</_dsannotations>
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
${tos4.packages},
${vrgem4.packages},
${unitxc.packages},
${lang3.packages}
</Import-Package>
<Bundle-Vendor>distributedrebirth.love</Bundle-Vendor>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,108 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.glyphdemo;
import java.util.ResourceBundle;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import love.distributedrebirth.gdxapp4d.app.glyphdemo.apps.DemoUnicodePlaneDeskApp;
import love.distributedrebirth.gdxapp4d.app.glyphdemo.apps.DemoUnitConverterDeskApp;
import love.distributedrebirth.gdxapp4d.app.glyphdemo.apps.DemoGlyphSetDeskApp;
import love.distributedrebirth.gdxapp4d.app.glyphdemo.apps.DemoNumberMatrixDeskApp;
import love.distributedrebirth.gdxapp4d.app.glyphdemo.apps.DemoNumberPartDeskApp;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4LocaleService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4Unicode4DService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppMenuSection;
import net.forwardfire.unitxc.UnitXCManager;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@Component
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class GlyphDemoComponent {
@Reference
private SystemGdxLog log;
@Reference
private VrGem4DeskAppService deskAppService;
@Reference
private VrGem4LocaleService localeService;
@Reference
private VrGem4Unicode4DService unicode4DService;
@Reference
private UnitXCManager unitManager;
private final static String I18N_BUNDLE = "love.distributedrebirth.gdxapp4d.app.glyphdemo.Messages";
private final DeskAppLauncher unicodeLauncher;
private final DeskAppLauncher baseGlyphLauncher;
private final DeskAppLauncher basePartLauncher;
private final DeskAppLauncher numberMatrixLauncher;
private final DeskAppLauncher unitConverterLauncher;
public GlyphDemoComponent() {
unicodeLauncher = new DeskAppLauncher(DeskAppMenuSection.PROGRAMMING, "Unicode Plane", () -> new DemoUnicodePlaneDeskApp(createBundle(), unicode4DService));
baseGlyphLauncher = new DeskAppLauncher(DeskAppMenuSection.PROGRAMMING, "Glyph Set", () -> new DemoGlyphSetDeskApp(createBundle()));
basePartLauncher = new DeskAppLauncher(DeskAppMenuSection.EDUCATION, "Number Parts", () -> new DemoNumberPartDeskApp(createBundle()));
numberMatrixLauncher = new DeskAppLauncher(DeskAppMenuSection.EDUCATION, "Number Matrix", () -> new DemoNumberMatrixDeskApp(createBundle()));
unitConverterLauncher = new DeskAppLauncher(DeskAppMenuSection.SCIENCE, "Unitˣᶜ Converter", () -> new DemoUnitConverterDeskApp(unitManager));
}
private ResourceBundle createBundle() {
return ResourceBundle.getBundle(I18N_BUNDLE, localeService.getTextLocale());
}
@Activate
void open() {
log.debug(this, SystemGdxLog.ACTIVATE);
deskAppService.installDeskApp(unicodeLauncher);
deskAppService.installDeskApp(baseGlyphLauncher);
deskAppService.installDeskApp(basePartLauncher);
deskAppService.installDeskApp(numberMatrixLauncher);
deskAppService.installDeskApp(unitConverterLauncher);
}
@Deactivate
void close() {
log.debug(this, SystemGdxLog.DEACTIVATE);
deskAppService.removeDeskApp(unicodeLauncher);
deskAppService.removeDeskApp(baseGlyphLauncher);
deskAppService.removeDeskApp(basePartLauncher);
deskAppService.removeDeskApp(numberMatrixLauncher);
deskAppService.removeDeskApp(unitConverterLauncher);
}
}

View file

@ -0,0 +1,124 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.glyphdemo.apps;
import java.util.ResourceBundle;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImBoolean;
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 ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ.BaseGlyphSet;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class DemoGlyphSetDeskApp extends AbstractDeskApp {
private final ResourceBundle bundle;
private final ImBoolean showBase27 = new ImBoolean(false);
public DemoGlyphSetDeskApp(ResourceBundle bundle) {
this.bundle = bundle;
}
private String getTxt(String key) {
return bundle.getString(DemoGlyphSetDeskApp.class.getSimpleName()+"."+key);
}
public void create() {
getContours().setTitle(getTxt("title"));
getContours().registrateContour(DeskAppContourSection.MAIN, new DeskAppRenderer() {
@Override
public void render() {
ImGui.checkbox(getTxt("showBase27"), showBase27);
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV | ImGuiTableFlags.Resizable;
ImGui.beginTable("base-part", 3, flags);
ImGui.tableSetupColumn(getTxt("colScript"));
ImGui.tableSetupColumn(getTxt("col10Num"));
if (showBase27.get()) {
ImGui.tableSetupColumn(getTxt("col27Num"));
} else {
ImGui.tableSetupColumn(getTxt("col16Num"));
}
ImGui.tableHeadersRow();
for (BaseGlyphSet set:BaseGlyphSet.values()) {
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(set.name());
ImGui.tableNextColumn();
ImGui.text(print10Numbers(set));
ImGui.tableNextColumn();
if (showBase27.get()) {
ImGui.text(print27Numbers(set));
} else {
ImGui.text(print16Numbers(set));
}
}
ImGui.endTable();
}
});
}
private String print10Numbers(BaseGlyphSet set) {
StringBuilder buf = new StringBuilder();
for (int i=0;i<10;i++) {
buf.append(set.BȍőnPrintNumber10(i, 9));
buf.append(" ");
}
return buf.toString();
}
private String print16Numbers(BaseGlyphSet set) {
StringBuilder buf = new StringBuilder();
if (set.BȍőnNumber16() == null) {
return buf.toString();
}
int x=240;
for (int i=0;i<16;i++) {
buf.append(set.BȍőnPrintNumber16(i + x, 16)); // hex; +one
buf.append(" ");
x = x - 16;
}
return buf.toString();
}
private String print27Numbers(BaseGlyphSet set) {
StringBuilder buf = new StringBuilder();
if (set.BȍőnNumber27() == null) {
return buf.toString();
}
for (int i=0;i<27;i++) {
buf.append(set.BȍőnPrintNumber27(i, 26));
buf.append(" ");
}
return buf.toString();
}
}

View file

@ -0,0 +1,105 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.glyphdemo.apps;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImInt;
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 ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᔿᣔᐪᣗᑊᕁ.NumberMatrix𓄯;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᔿᣔᐪᣗᑊᕁ.NumberMatrixFactory;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᔿᣔᐪᣗᑊᕁ.NumberMatrixSet;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class DemoNumberMatrixDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final ResourceBundle bundle;
private ImInt selectedMatrixPart = new ImInt();
public DemoNumberMatrixDeskApp(ResourceBundle bundle) {
this.bundle = bundle;
}
// private String getTxt(String key) {
// return bundle.getString(DemoNumberMatrixDeskApp.class.getSimpleName()+"."+key);
// }
public void create() {
getContours().setTitle("NumberMatrix");
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
@Override
public void render() {
List<String> bases = new ArrayList<>();
for (int filmSequence:NumberMatrixFactory.INSTANCE.opgenomenFilmNummers()) {
bases.add(Integer.toString(filmSequence));
}
bases.add("7");
String[] items = new String[bases.size()];
items = bases.toArray(items);
String selectedItem = items[selectedMatrixPart.get()];
Integer baseNumber = Integer.valueOf(selectedItem);
NumberMatrixSet numberMatrix = NumberMatrixFactory.INSTANCE.geefFilmSet(baseNumber);
ImGui.combo("selectMatrix", selectedMatrixPart, items);
int columns = 2 + numberMatrix.geefDimensie();
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
ImGui.beginTable("base-part", columns, flags);
ImGui.tableSetupColumn("rȧñkNaam");
ImGui.tableSetupColumn("rȧñkRingToon");
for (int i=0;i<numberMatrix.geefDimensie();i++) {
ImGui.tableSetupColumn("col"+i);
}
ImGui.tableHeadersRow();
for (NumberMatrix𓄯<?> part:numberMatrix.waardes().iterableᴼᶠ()) {
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(part.rȧñkNaam());
ImGui.tableNextColumn();
ImGui.text(part.rȧñkRingToon());
for (int i=0;i<numberMatrix.geefDimensie();i++) {
ImGui.tableNextColumn();
ImGui.text(Integer.toString(part.rȧñkNummerBlokWaarde(i)));
}
}
ImGui.endTable();
}
}

View file

@ -0,0 +1,209 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.glyphdemo.apps;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImBoolean;
import imgui.type.ImInt;
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 ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᒻᑊᣕᕐᓑᣔ.嘴ᗮᙿᗮ;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ.BaseGlyphSet;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.TTꞱꞱᖟGateway;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᐦ.TerminatorGun;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᐦ.Terminator𓄯;
import ᒢᐩᐩ.ᒼᐤᒻᒻᓫᒼᐪᑊᐤᣕᔆ.Listᴿᵈ;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class DemoNumberPartDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final ResourceBundle bundle;
private ImInt selectedBasePart = new ImInt();
private final ImBoolean showBase10 = new ImBoolean(false);
private final ImBoolean showBase16 = new ImBoolean(false);
private final ImBoolean showBase27 = new ImBoolean(false);
public DemoNumberPartDeskApp(ResourceBundle bundle) {
this.bundle = bundle;
}
private String getTxt(String key) {
return bundle.getString(DemoNumberPartDeskApp.class.getSimpleName()+"."+key);
}
public void create() {
getContours().setTitle(getTxt("title"));
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
@Override
public void render() {
List<String> pieTypes = new ArrayList<>();
for (int pieType:TTꞱꞱᖟGateway..bakedPieSlices()) {
pieTypes.add(Integer.toString(pieType));
}
String[] items = new String[pieTypes.size()];
items = pieTypes.toArray(items);
String selectedItem = items[selectedBasePart.get()];
Integer pieNumber = Integer.valueOf(selectedItem);
Listᴿᵈ<? extends Terminator𓄯<?>> baseParts = TTꞱꞱᖟGateway..deliverPieSlices(pieNumber);
ImGui.combo(getTxt("selectBase"), selectedBasePart, items);
ImGui.text(getTxt("selectName"));
ImGui.sameLine();
ImGui.text(baseParts.getᴿᵈ(0).getClass().getName());
ImGui.text(getTxt("selectPurpose"));
ImGui.sameLine();
String text = baseParts.getᴿᵈ(0).ráàmDuytsNaam(嘴ᗮᙿᗮ.English.class);
text += ": The distribution by " + baseParts.getᴿᵈ(0).teŀráàmGroote();
text += " - " + baseParts.getᴿᵈ(0).ráàmDuytsChina(嘴ᗮᙿᗮ.English.class);
ImGui.text(text);
ImGui.checkbox(getTxt("showBase10"), showBase10);
ImGui.checkbox(getTxt("showBase16"), showBase16);
ImGui.checkbox(getTxt("showBase27"), showBase27);
int columns = 12;
if (showBase10.get()) {
columns += 4;
}
if (showBase16.get()) {
columns += 4;
}
if (showBase27.get()) {
columns += 5;
}
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
ImGui.beginTable("base-part", columns, flags);
ImGui.tableSetupColumn("BȍőnNaam");
ImGui.tableSetupColumn("TelNul");
ImGui.tableSetupColumn("TelEen");
ImGui.tableSetupColumn("Tone");
if (showBase10.get()) {
ImGui.tableSetupColumn("10Tone");
ImGui.tableSetupColumn("10Kor");
ImGui.tableSetupColumn("10Beng");
ImGui.tableSetupColumn("10Arab");
}
if (showBase16.get()) {
ImGui.tableSetupColumn("16Tone");
ImGui.tableSetupColumn("16Hie");
ImGui.tableSetupColumn("16Runi");
ImGui.tableSetupColumn("16LatB");
}
if (showBase27.get()) {
ImGui.tableSetupColumn("27Tone");
ImGui.tableSetupColumn("27Kor");
ImGui.tableSetupColumn("27LatB");
ImGui.tableSetupColumn("27Gre");
ImGui.tableSetupColumn("27Mala");
}
ImGui.tableSetupColumn("prcK");
ImGui.tableSetupColumn("prcV");
ImGui.tableSetupColumn("Alt1");
ImGui.tableSetupColumn("Alt2");
ImGui.tableSetupColumn("Alt3");
ImGui.tableSetupColumn("Alt4");
ImGui.tableSetupColumn("Alt5");
ImGui.tableSetupColumn("Alt6");
ImGui.tableHeadersRow();
for (Terminator𓄯<?> part : baseParts.iterableᴼᶠ()) {
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(part.rȧñkNaam());
ImGui.tableNextColumn();
ImGui.text(Integer.toString(part.rȧñkTelNul()));
ImGui.tableNextColumn();
ImGui.text(Integer.toString(part.rȧñkTelEen()));
ImGui.tableNextColumn();
ImGui.text(part.rȧñkRingToon());
if (showBase10.get()) {
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.TONE_SCRIPT.BȍőnPrintNumber10(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.KOREAN.BȍőnPrintNumber10(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.BENGALI.BȍőnPrintNumber10(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.ARABIC.BȍőnPrintNumber10(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
}
if (showBase16.get()) {
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.TONE_SCRIPT.BȍőnPrintNumber16(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.HIERO.BȍőnPrintNumber16(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.RUNIC.BȍőnPrintNumber16(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.LATIN_BASIC.BȍőnPrintNumber16(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
}
if (showBase27.get()) {
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.TONE_SCRIPT.BȍőnPrintNumber27(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.KOREAN.BȍőnPrintNumber27(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.LATIN_BASIC.BȍőnPrintNumber27(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.GREEK.BȍőnPrintNumber27(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
ImGui.tableNextColumn();
ImGui.text(BaseGlyphSet.MALAYALAM.BȍőnPrintNumber27(part.rȧñkTelNul(), part.teŀráàmGroote() - 1));
}
ImGui.tableNextColumn();
ImGui.text(part.rȧñkChinaSleutel());
ImGui.tableNextColumn();
ImGui.text(part.rȧñkChinaWaarde());
List<Class<? extends TerminatorGun>> guns = part.ráàmGunTypes();
for (int i=0;i<6;i++) {
if (guns.size() > i) {
Class<? extends TerminatorGun> gunType = guns.get(i);
String gunFire = part.rȧñkGunFire(gunType);
ImGui.tableNextColumn();
ImGui.text(gunFire);
} else {
ImGui.tableNextColumn();
ImGui.text("");
}
}
}
ImGui.endTable();
}
}

View file

@ -0,0 +1,97 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.glyphdemo.apps;
import java.util.ResourceBundle;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImBoolean;
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.draw.ImCharacter;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ.UnicodePlane;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class DemoUnicodePlaneDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final VrGem4Unicode4DService unicode4DService;
private final ResourceBundle bundle;
private final ImBoolean render4DPlane0 = new ImBoolean(false);
public DemoUnicodePlaneDeskApp(ResourceBundle bundle, VrGem4Unicode4DService unicode4DService) {
this.unicode4DService = unicode4DService;
this.bundle = bundle;
}
private String getTxt(String key) {
return bundle.getString(DemoUnicodePlaneDeskApp.class.getSimpleName()+"."+key);
}
public void create() {
getContours().setTitle(getTxt("title"));
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
@Override
public void render() {
ImGui.checkbox(getTxt("render4DPlane0"), render4DPlane0);
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV | ImGuiTableFlags.Resizable;
ImGui.beginTable("base-part", 2, flags);
ImGui.tableSetupColumn(getTxt("colPlane"));
ImGui.tableSetupColumn(getTxt("colText"));
ImGui.tableHeadersRow();
for (UnicodePlane plane:UnicodePlane.values()) {
if (!plane.isPlaneValid()) {
continue;
}
StringBuilder buf = new StringBuilder();
int offset = 33;
for (int i=plane.getStart()+offset;i<plane.getStart()+33+offset;i++) {
buf.appendCodePoint(i);
if (plane.isPlane0() && render4DPlane0.get() == false) {
buf.append(" ");
}
}
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(plane.name());
ImGui.tableNextColumn();
if (plane.isPlane0() && render4DPlane0.get() == false) {
ImGui.text(buf.toString());
} else {
ImCharacter.render("row"+plane.name(), buf.toString(), '?', v -> unicode4DService.getCharacterForUnicode(v));
}
}
ImGui.endTable();
}
}

View file

@ -0,0 +1,208 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.glyphdemo.apps;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImDouble;
import imgui.type.ImInt;
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 net.forwardfire.unitxc.UnitXCManager;
import net.forwardfire.unitxc.model.UnitXCGroup;
import net.forwardfire.unitxc.model.UnitXCType;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ.BaseGlyphSet;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class DemoUnitConverterDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final UnitXCManager unitManager;
private final List<UnitXCType> unitTypes;
private final List<UnitXCGroup> unitGroups;
private final Map<String, String> unitTypesFlags;
private final Map<String, String> unitTypesValues;
private final String[] unitGroupNames;
private final ImDouble convertValue = new ImDouble(1234);
private final ImInt convertFromGroup = new ImInt();
private final ImInt convertFromType = new ImInt();
private final ImInt unitTypeLimit = new ImInt(5432);
private final List<UnitXCType> convertFromTypes;
private final BigInteger totalUnits;
private final ImInt selectedNumberGlyph = new ImInt();
private String[] convertFromTypeNames;
public DemoUnitConverterDeskApp(UnitXCManager unitManager) {
this.unitManager = unitManager;
this.unitTypes = new ArrayList<>();
this.unitGroups = unitManager.getConfig().getUnitGroups();
this.unitTypesFlags = new HashMap<>();
this.unitTypesValues = new HashMap<>();
this.convertFromTypes = new ArrayList<>();
List<String> names = new ArrayList<>();
for (UnitXCGroup typeGroup:unitGroups) {
names.add(typeGroup.getName().getValue("und"));
}
unitGroupNames = names.toArray(new String[names.size()]);
long ts = 0l;
for (UnitXCGroup typeGroup:unitManager.getConfig().getUnitGroups()) {
UnitXCType type = unitManager.getUnitType(typeGroup.getBaseTypeId());
if (type == null) {
throw new IllegalStateException("No base type for: "+typeGroup.getId()+" needs: "+typeGroup.getBaseTypeId());
}
long tc = typeGroup.getUnitTypeSize();
ts += tc;
}
this.totalUnits = BigInteger.valueOf(ts); // TODO: goto DEC144 for counting unit types
updateConvertFromType();
updateUnitType();
}
public void create() {
getContours().setTitle("Unitˣᶜ Converter");
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
@Override
public void render() {
List<String> bases = new ArrayList<>();
for (BaseGlyphSet base:BaseGlyphSet.values()) {
bases.add(base.name());
}
String[] items = new String[bases.size()];
items = bases.toArray(items);
ImGui.combo("HexType", selectedNumberGlyph, items);
String selectedItem = items[selectedNumberGlyph.get()];
BaseGlyphSet hexNumber = BaseGlyphSet.valueOf(selectedItem);
//String amount10 = totalUnits.toString(T10PartDecimal.STATIC.BãßĦǿɇṽḝę̃ɬḪễïđ());
String amount10 = BaseGlyphSet.LATIN_BASIC.BȍőnPrintNumber10(totalUnits);
String amount16 = hexNumber.BȍőnPrintNumber16(totalUnits);
ImGui.text("Total units loaded: "+amount10+" (0x"+amount16+")");
// TODO: don't do update on render thread
if (ImGui.inputDouble("ConvertValue", convertValue)) {
updateUnitType();
}
if (ImGui.combo("ConvertFromGroup", convertFromGroup, unitGroupNames)) {
updateConvertFromType();
updateUnitType();
}
if (ImGui.combo("ConvertFromType", convertFromType, convertFromTypeNames)) {
updateUnitType();
}
UnitXCGroup typeGroup = unitGroups.get(convertFromGroup.get());
if (ImGui.sliderInt("Limit of: "+typeGroup.getUnitTypeSize(), unitTypeLimit.getData(), 1000, 100000)) {
updateUnitType();
}
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV | ImGuiTableFlags.Resizable;
ImGui.beginTable("unit-types", 4, flags);
ImGui.tableSetupColumn("value");
ImGui.tableSetupColumn("id");
ImGui.tableSetupColumn("name");
ImGui.tableSetupColumn("flags");
ImGui.tableHeadersRow();
for (UnitXCType unitType:unitTypes) {
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(unitTypesValues.get(unitType.getId()));
ImGui.tableNextColumn();
ImGui.text(unitType.getId());
ImGui.tableNextColumn();
ImGui.text(unitType.getName());
ImGui.tableNextColumn();
ImGui.text(unitTypesFlags.get(unitType.getId()));
ImGui.tableNextColumn();
}
ImGui.endTable();
}
private void updateConvertFromType() {
convertFromTypes.clear();
convertFromType.set(0);
int i = 0;
UnitXCGroup typeGroup = unitGroups.get(convertFromGroup.get());
Iterator<String> types = typeGroup.getUnitTypeIds();
List<String> names = new ArrayList<>();
while (types.hasNext()) {
i++;
if (i>1000) {
break;
}
UnitXCType unitType = typeGroup.getUnitType(types.next());
names.add(unitType.getName());
convertFromTypes.add(unitType);
}
convertFromTypeNames = names.toArray(new String[names.size()]);
}
private void updateUnitType() {
unitTypes.clear();
unitTypesFlags.clear();
unitTypesValues.clear();
int limitCounter = 0;
UnitXCType fromType = convertFromTypes.get(convertFromType.get());
UnitXCGroup typeGroup = unitGroups.get(convertFromGroup.get());
Iterator<String> types = typeGroup.getUnitTypeIds();
while (types.hasNext()) {
limitCounter++;
if (limitCounter>unitTypeLimit.get()) {
break;
}
UnitXCType unitType = typeGroup.getUnitType(types.next());
unitTypes.add(unitType);
unitTypesFlags.put(unitType.getId(), StringUtils.join(unitType.getTypeFlags(), ","));
try {
double convertRaw = convertValue.get();
double convertOut = unitManager.getConverter().convert(convertRaw, fromType.getId(), unitType.getId());
unitTypesValues.put(unitType.getId(), String.valueOf(convertOut));
} catch (IllegalArgumentException ignore) {
//java.lang.IllegalArgumentException: from and to groups are not equals: second != metre
break; // cross group jump is ~supported, but in here its is a bug somewhere and i also get;
// [libjvm.so] AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<0ul, G1BarrierSet>, (AccessInternal::BarrierType)2, 0ul>::oop_access_barrier(void*)+0x1
}
}
}
}

View file

@ -0,0 +1,19 @@
DemoGlyphSetDeskApp.title=Demo Glyph Set
DemoGlyphSetDeskApp.showBase27=Show base27
DemoGlyphSetDeskApp.colScript=Script
DemoGlyphSetDeskApp.col10Num=10Numbers
DemoGlyphSetDeskApp.col16Num=16Numbers
DemoGlyphSetDeskApp.col27Num=27Numbers
DemoNumberPartDeskApp.title=Demo Number Parts
DemoNumberPartDeskApp.selectBase=Base
DemoNumberPartDeskApp.selectName=Name:
DemoNumberPartDeskApp.selectPurpose=Purpose:
DemoNumberPartDeskApp.showBase10=Show base10
DemoNumberPartDeskApp.showBase16=Show base16
DemoNumberPartDeskApp.showBase27=Show base27
DemoUnicodePlaneDeskApp.title=Demo Unicode Plane
DemoUnicodePlaneDeskApp.colPlane=Unicode Plane
DemoUnicodePlaneDeskApp.colText=Example
DemoUnicodePlaneDeskApp.render4DPlane0=Show all in unicode4D

View file

@ -0,0 +1,19 @@
DemoGlyphSetDeskApp.title=\u6F14\u793A\u5B57\u5F62\u96C6
DemoGlyphSetDeskApp.showBase27=\u663E\u793A \u5927\u558A\u5927\u53EB
DemoGlyphSetDeskApp.colScript=\u811A\u672C
DemoGlyphSetDeskApp.col10Num=10 \u4E2A\u6570\u5B57
DemoGlyphSetDeskApp.col16Num=16 \u4E2A\u6570\u5B57
DemoGlyphSetDeskApp.col27Num=27 \u4E2A\u6570\u5B57
DemoNumberPartDeskApp.title=\u6F14\u793A\u7F16\u53F7\u96F6\u4EF6
DemoNumberPartDeskApp.selectBase=\u6839\u636E
DemoNumberPartDeskApp.selectName=\u59D3\u540D:
DemoNumberPartDeskApp.selectPurpose=\u76EE\u7684:
DemoNumberPartDeskApp.showBase10=\u663E\u793A \u57FA\u657010
DemoNumberPartDeskApp.showBase16=\u663E\u793A \u57FA\u657016
DemoNumberPartDeskApp.showBase27=\u663E\u793A \u57FA\u657027
DemoUnicodePlaneDeskApp.title=\u6F14\u793A \u7EDF\u4E00\u7801 \u98DE\u673A
DemoUnicodePlaneDeskApp.colPlane=\u7EDF\u4E00\u7801\u5E73\u9762
DemoUnicodePlaneDeskApp.colText=\u4F8B\u5B50
DemoUnicodePlaneDeskApp.render4DPlane0=\u5168\u90E8\u663E\u793A \u7EDF\u4E00\u78014D

View file

@ -0,0 +1,19 @@
DemoGlyphSetDeskApp.title=Glyph Set
DemoGlyphSetDeskApp.showBase27=\uE219\u2005\uE362\u2005\uE0C0\u2005\uE13F\u2005\uE2F4\u2005\uE387\u2005\uE400
DemoGlyphSetDeskApp.colScript=\uE2F4\u2005\uE3A1\u2005\uE08B\u2005\uE1CB\u2005\uE2AA\u2005\uE20F
DemoGlyphSetDeskApp.col10Num=\uE386\u2005\uE216\u2005\uE171\u2005\uE153\u2005\uE0C0\u2005\uE08C\u2005\uE2F4
DemoGlyphSetDeskApp.col16Num=\uE386\u2005\uE3FF\u2005\uE216\u2005\uE171\u2005\uE153\u2005\uE0C0\u2005\uE08C\u2005\uE2F4
DemoGlyphSetDeskApp.col27Num=\uE387\u2005\uE400\u2005\uE216\u2005\uE171\u2005\uE153\u2005\uE0C0\u2005\uE08C\u2005\uE2F4
DemoNumberPartDeskApp.title=Number Parts
DemoNumberPartDeskApp.selectBase=\uE0C0\u2005\uE13F\u2005\uE2F4
DemoNumberPartDeskApp.selectName=\uE216\u2005\uE13F\u2005\uE153\u2005\uE3EC
DemoNumberPartDeskApp.selectPurpose=\uE203\u2005\uE171\u2005\uE08C\u2005\uE203\u2005\uE2F4\u2005\uE3EC
DemoNumberPartDeskApp.showBase10=\uE219\u2005\uE362\u2005\uE0C0\u2005\uE13F\u2005\uE2F4\u2005\uE386
DemoNumberPartDeskApp.showBase16=\uE219\u2005\uE362\u2005\uE0C0\u2005\uE13F\u2005\uE2F4\u2005\uE386\u2005\uE3FF
DemoNumberPartDeskApp.showBase27=\uE219\u2005\uE362\u2005\uE0C0\u2005\uE13F\u2005\uE2F4\u2005\uE387\u2005\uE400
DemoUnicodePlaneDeskApp.title=Unicode Plane
DemoUnicodePlaneDeskApp.colPlane=Unicode Plane
DemoUnicodePlaneDeskApp.colText=Example
DemoUnicodePlaneDeskApp.render4DPlane0=Show all in unicode4D

View file

@ -0,0 +1,19 @@
DemoGlyphSetDeskApp.title=Glyph Set
DemoGlyphSetDeskApp.showBase27=Toon basis27
DemoGlyphSetDeskApp.colScript=Script
DemoGlyphSetDeskApp.col10Num=10Nummer
DemoGlyphSetDeskApp.col16Num=16Nummer
DemoGlyphSetDeskApp.col27Num=27Nummer
DemoNumberPartDeskApp.title=Nummer Onderdeel
DemoNumberPartDeskApp.selectBase=Basis
DemoNumberPartDeskApp.selectName=Naam:
DemoNumberPartDeskApp.selectPurpose=Doel:
DemoNumberPartDeskApp.showBase10=Toon basis10
DemoNumberPartDeskApp.showBase16=Toon basis16
DemoNumberPartDeskApp.showBase27=Toon basis27
DemoUnicodePlaneDeskApp.title=Unicode Vlak
DemoUnicodePlaneDeskApp.colPlane=Unicode Vlak
DemoUnicodePlaneDeskApp.colText=Voorbeeld
DemoUnicodePlaneDeskApp.render4DPlane0=Toon alles in unicode4D

View file

@ -0,0 +1,19 @@
DemoGlyphSetDeskApp.title=\u16DE\u16D6\u16D7\u16DF \u16B7\u16DA\u16A4\u16C8\u16BA \u16CB\u16D6\u16CF
DemoGlyphSetDeskApp.showBase27=\u16CB\u16BA\u16DF\u16B9 \u16D2\u16A8\u16CB\u16D627
DemoGlyphSetDeskApp.colScript=\u16CB\u16B2\u16B1\u16C1\u16C8\u16CF
DemoGlyphSetDeskApp.col10Num=10\u16BE\u16A2\u16D7\u16D2\u16D6\u16B1\u16CB
DemoGlyphSetDeskApp.col16Num=16\u16BE\u16A2\u16D7\u16D2\u16D6\u16B1\u16CB
DemoGlyphSetDeskApp.col27Num=27\u16BE\u16A2\u16D7\u16D2\u16D6\u16B1\u16CB
DemoNumberPartDeskApp.title=\u16DE\u16D6\u16D7\u16DF \u16BE\u16A2\u16D7\u16D2\u16D6\u16B1 \u16C8\u16A8\u16B1\u16CF\u16CB
DemoNumberPartDeskApp.selectBase=\u16D2\u16A8\u16CB\u16D6
DemoNumberPartDeskApp.selectName=\u16BE\u16A8\u16D7\u16D6:
DemoNumberPartDeskApp.selectPurpose=\u16C8\u16A2\u16B1\u16C8\u16DF\u16CB\u16D6:
DemoNumberPartDeskApp.showBase10=\u16CB\u16BA\u16DF\u16B9 \u16D2\u16A8\u16CB\u16D610
DemoNumberPartDeskApp.showBase16=\u16CB\u16BA\u16DF\u16B9 \u16D2\u16A8\u16CB\u16D616
DemoNumberPartDeskApp.showBase27=\u16CB\u16BA\u16DF\u16B9 \u16D2\u16A8\u16CB\u16D627
DemoUnicodePlaneDeskApp.title=\u16DE\u16D6\u16D7\u16DF \u16A2\u16BE\u16C1\u16B2\u16DF\u16DE\u16D6 \u16C8\u16DA\u16A8\u16BE\u16D6
DemoUnicodePlaneDeskApp.colPlane=\u16A2\u16BE\u16C1\u16B2\u16DF\u16DE\u16D6 \u16C8\u16DA\u16A8\u16BE\u16D6
DemoUnicodePlaneDeskApp.colText=\u16D6\u16EA\u16A8\u16D7\u16C8\u16DA\u16D6
DemoUnicodePlaneDeskApp.render4DPlane0=\u16CB\u16BA\u16DF\u16B9 \u16A8\u16DA\u16DA \u16C1\u16BE \u16A2\u16BE\u16C1\u16B2\u16DF\u16DE\u16D64\u16DE

View file

@ -0,0 +1,42 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-app-hewallet</artifactId>
<name>GDXApp⁴ᴰ-App-ארנק עברי</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-vrgem4</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<exportScr>true</exportScr>
<niceManifest>true</niceManifest>
<instructions>
<_donotcopy>(.git)</_donotcopy>
<_dsannotations>*</_dsannotations>
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
${tos4.packages},
${vrgem4.packages}
</Import-Package>
<Bundle-Vendor>distributedrebirth.love</Bundle-Vendor>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,68 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.hewallet;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppMenuSection;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@Component
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class HeWalletComponent {
@Reference
private SystemGdxLog log;
@Reference
private VrGem4DeskAppService deskAppService;
private final DeskAppLauncher launcher;
public HeWalletComponent() {
launcher = new DeskAppLauncher(DeskAppMenuSection.INTERNET, "Hebrew Wallet", () -> new HeWalletDeskApp());
}
@Activate
void open() {
log.debug(this, SystemGdxLog.ACTIVATE);
deskAppService.installDeskApp(launcher);
}
@Deactivate
void close() {
log.debug(this, SystemGdxLog.DEACTIVATE);
deskAppService.removeDeskApp(launcher);
}
}

View file

@ -0,0 +1,133 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.hewallet;
import java.util.ArrayList;
import java.util.List;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImInt;
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 ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ.BaseGlyphSet;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ.SourceGlyphCharSet;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒃᐤᣗᕐᒼᓑᒃᓫ.Gê̄ldGetậl;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class HeWalletDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final List<String> walletData = new ArrayList<String>();
private final List<String> paymentData = new ArrayList<String>();
private final ImInt selectedNumberGlyph = new ImInt();
private final ImInt selectedSourceGlyph = new ImInt();
public void create() {
getContours().setTitle("Hebrew Wallet");
getContours().registrateContour(DeskAppContourSection.MAIN, this);
String[] walletDataExample = {
"יהוה","יְסוֺד","שְׁלֹמֹה","ה","מ","מָ","ח","חֱ","חֱ‎מָא",
"א","בד","ב","ד","ץףן",
"הזפץ","מספר","צצצצ","ץאאא","ץאא","דואר"
};
String[] paymentDataExample = {
"מִזְ","מ֗וֹר","לְאָ֫","סָ֥ף","אֱלֹ","הִ֗ים","נִצָּ֥ב","בַּֽעֲדַ","ת־","אֵ֑ל","בְּקֶ֖","רֶב","אֱלֹ","הִ֣ים","יִשְׁ","פֹּֽט",
"עַד־","מָתַ֣י","תִּ","שְׁפְּ","טוּ־","עָ֑וֶל","וּפְנֵ֥י","רְ֜שָׁ","עִ֗ים","תִּשְׂ","אוּ־סֶֽ","לָה",
"שִׁפְט","וּ־דָ֥ל","וְיָת֑","וֹם","עָנִ֖י","וָרָ֣שׁ","הַצְדִּֽ","יקוּ",
"פַּלְּט","וּ־דַ֣ל","וְאֶבְ","י֑וֹן","מִיַּ֖ד","רְשָׁ","עִ֣ים","הַצִּֽ","ילוּ",
"לֹ֚יָֽ","דְע֨וּ","וְלֹ֬א","יָבִ֗","ינוּ","בַּֽחֲ","שֵׁכָ֥ה","יִתְהַ","לָּ֑כוּ","יִ֜מּ֗","וֹטוּ","כָּל־מ֥","וֹסְדֵי","אָֽרֶץ",
"אֲֽנִ֣י","אָ֖מַ","רְתִּי","אֱלֹ","הִ֣ים","אַתֶּ֑ם","וּבְנֵ֖י","עֶלְ","י֣וֹן","כֻּלְּ","כֶֽם",
"אָכֵ֥ן","כְּאָ","דָ֣ם","תְּמוּ","ת֑וּן","וּכְאַ","חַ֖ד","הַשָּׂ","רִ֣ים","תִּפֹּֽ","לוּ",
"קוּ","מָ֣ה","אֱ֖לֹ","הִים","שָׁפְ","טָ֣ה","הָאָ֑","רֶץ","כִּֽי־","אַתָּ֥ה","תִ֜נְ",
"חַ֗ל","בְּכָל","־הַגּ","וֹיִֽם",
};
for (String data:walletDataExample) {
walletData.add(data);
}
for (String data:paymentDataExample) {
paymentData.add(data);
}
}
@Override
public void render() {
ImGui.text("Current amount:");
ImGui.sameLine();
ImGui.text("0000");
ImGui.separator();
List<String> bases = new ArrayList<>();
for (BaseGlyphSet base:BaseGlyphSet.values()) {
bases.add(base.name());
}
String[] items = new String[bases.size()];
items = bases.toArray(items);
ImGui.combo("GlyphType", selectedNumberGlyph, items);
String selectedItem = items[selectedNumberGlyph.get()];
BaseGlyphSet baseNumber = BaseGlyphSet.valueOf(selectedItem);
List<String> bases2 = new ArrayList<>();
for (SourceGlyphCharSet base2:SourceGlyphCharSet.values()) {
bases2.add(base2.name());
}
String[] items2 = new String[bases2.size()];
items2 = bases2.toArray(items2);
ImGui.combo("SourceType", selectedSourceGlyph, items2);
String selectedItem2 = items2[selectedSourceGlyph.get()];
SourceGlyphCharSet sourceCharset = SourceGlyphCharSet.valueOf(selectedItem2);
if (!paymentData.isEmpty() && ImGui.button("Pay" )) {
walletData.add(paymentData.remove(0));
}
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV | ImGuiTableFlags.Resizable;
ImGui.beginTable("wallet", 4, flags);
ImGui.tableSetupColumn("In/Out");
ImGui.tableSetupColumn("Amount");
ImGui.tableSetupColumn("Fraction");
ImGui.tableSetupColumn("Decimal");
ImGui.tableHeadersRow();
for (String data:walletData) {
Gê̄ldGetậl geld = new Gê̄ldGetậl(data);
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(data.length()==2||data.length()==3?"OUT":"IN");
ImGui.tableNextColumn();
ImGui.text(geld.toHebrewString(true)); // true=reverse for ImGui
ImGui.tableNextColumn();
ImGui.text(geld.toFractionNotation(baseNumber, sourceCharset));
ImGui.tableNextColumn();
ImGui.text(Double.toString(geld.toDecimalValue()));
}
ImGui.endTable();
}
}

View file

@ -0,0 +1,54 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-app-mmdoc</artifactId>
<name>GDXApp⁴ᴰ-App-﷽</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-vrgem4</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<exportScr>true</exportScr>
<niceManifest>true</niceManifest>
<instructions>
<_donotcopy>(.git)</_donotcopy>
<_dsannotations>*</_dsannotations>
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
${tos4.packages},
${vrgem4.packages},
${mmdoc.packages},
${mariadb.packages}
</Import-Package>
<Bundle-Vendor>distributedrebirth.love</Bundle-Vendor>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,72 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.mmdoc;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxBootArgs;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppMenuSection;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@Component
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class MMDocComponent {
@Reference
private SystemGdxLog log;
@Reference
private VrGem4DeskAppService deskAppService;
@Reference
private SystemGdxBootArgs bootArgs;
private final DeskAppLauncher launcher;
public MMDocComponent() {
launcher = new DeskAppLauncher(DeskAppMenuSection.PROGRAMMING, "MMDoc", () -> new MMDocDeskApp(bootArgs.getFileChooser()));
}
@Activate
void open() {
log.debug(this, SystemGdxLog.ACTIVATE);
deskAppService.installDeskApp(launcher);
}
@Deactivate
void close() {
log.debug(this, SystemGdxLog.DEACTIVATE);
deskAppService.removeDeskApp(launcher);
}
}

View file

@ -0,0 +1,191 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.mmdoc;
import java.io.File;
import java.util.Map.Entry;
import java.util.function.Consumer;
import org.apache.metamodel.DataContext;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImString;
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 net.spookygames.gdx.nativefilechooser.NativeFileChooser;
import net.spookygames.gdx.nativefilechooser.NativeFileChooserCallback;
import net.spookygames.gdx.nativefilechooser.NativeFileChooserConfiguration;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class MMDocDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final NativeFileChooser fileChooser;
private final NativeFileChooserConfiguration fileChooserConfig;
private final MMDocManager docManager;
private final ImString dbHost = new ImString();
private final ImString dbName = new ImString();
private final ImString dbUser = new ImString();
private final ImString dbPass = new ImString();
private final ImString docTarget = new ImString();
private String result = "";
public MMDocDeskApp(NativeFileChooser fileChooser) {
this.fileChooser = fileChooser;
fileChooserConfig = new NativeFileChooserConfiguration();
fileChooserConfig.directory = Gdx.files.absolute(System.getProperty("user.home"));
fileChooserConfig.title = "Choose file";
docManager = new MMDocManager();
docManager.loadDrivers();
}
@Override
public void exit() {
docManager.getDataStore().clearAndCloseAllSafe();
}
@Override
public void create() {
getContours().setTitle("MMDoc");
getContours().registrateContour(DeskAppContourSection.MAIN, this);
dbHost.set("localhost");
dbName.set("test");
dbUser.set("user");
dbPass.set("pass");
docTarget.set("target/mm-doc");
}
@Override
public void render() {
ImGui.inputText("docTarget", docTarget);
ImGui.separator();
ImGui.inputText("dbHost", dbHost);
ImGui.inputText("dbName", dbName);
ImGui.inputText("dbUser", dbUser);
ImGui.inputText("dbPass", dbPass);
ImGui.separator();
if (ImGui.button("Add XML")) {
fileChooser.chooseFile(fileChooserConfig, NativeFileChooserCallbackAdapter.onFileChosen(v -> {
docManager.addDocModelXml(v.file());
result = "Added XML file";
}));
}
ImGui.sameLine();
if (ImGui.button("Add CSV")) {
fileChooser.chooseFile(fileChooserConfig, NativeFileChooserCallbackAdapter.onFileChosen(v -> {
docManager.addDocModelCsv(v.file());
result = "Added CSV file";
}));
}
try {
ImGui.sameLine();
if (ImGui.button("Add Mariadb")) {
docManager.addDocModelJdbcMy(dbHost.get(), dbName.get(), dbUser.get(), dbPass.get());
result = "Added MariaDB";
}
ImGui.sameLine();
if (ImGui.button("Add Postgresql")) {
docManager.addDocModelJdbcPg(dbHost.get(), dbName.get(), dbUser.get(), dbPass.get());
result = "Added Postgresqk DB";
}
if (ImGui.button("Generate")) {
docManager.generate(new File(docTarget.get()));
result = "done";
}
} catch (Exception e) {
e.printStackTrace();
result = e.getMessage();
}
ImGui.sameLine();
ImGui.text("Result: "+result);
ImGui.text("DataSources:");
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV | ImGuiTableFlags.Resizable;
ImGui.beginTable("DataSources", 4, flags);
ImGui.tableSetupColumn("Id");
ImGui.tableSetupColumn("Type");
ImGui.tableSetupColumn("TableCount");
ImGui.tableSetupColumn("Remove");
ImGui.tableHeadersRow();
int i=1;
String removeId = null;
for (Entry<String,DataContext> data:docManager.getDataStore().entrySet()) {
ImGui.pushID(i);
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.text(data.getKey());
ImGui.tableNextColumn();
ImGui.text(data.getValue().getClass().getSimpleName());
ImGui.tableNextColumn();
ImGui.text(Integer.toString(data.getValue().getDefaultSchema().getTableCount()));
ImGui.tableNextColumn();
if (ImGui.smallButton("Remove")) {
removeId = data.getKey();
}
ImGui.popID();
i++;
}
ImGui.endTable();
if (removeId != null) {
docManager.getDataStore().removeDataContext(removeId);
}
}
static class NativeFileChooserCallbackAdapter implements NativeFileChooserCallback {
@Override
public void onFileChosen(FileHandle file) {
}
@Override
public void onCancellation() {
}
@Override
public void onError(Exception exception) {
}
static NativeFileChooserCallbackAdapter onFileChosen(Consumer<FileHandle> eater) {
return new NativeFileChooserCallbackAdapter() {
@Override
public void onFileChosen(FileHandle file) {
eater.accept(file);
}
};
}
}
}

View file

@ -0,0 +1,93 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.mmdoc;
import java.io.File;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.metamodel.csv.CsvDataContext;
import org.eobjects.metamodel.doc.DocModelDataStore;
import org.eobjects.metamodel.doc.DocModelWriter;
import org.apache.metamodel.jdbc.JdbcDataContext;
import org.apache.metamodel.xml.XmlDomDataContext;
public class MMDocManager {
private final DocModelDataStore dms = new DocModelDataStore();
public void loadDrivers() { // mariadb has to be forced to load in ogsi bundle, pg works fine(no osgi info)
try {
Class.forName(org.postgresql.Driver.class.getName());
//Class.forName(org.h2.Driver.class.getName());
//Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver.class.getName());
Class.forName(org.mariadb.jdbc.Driver.class.getName());
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
public DocModelDataStore getDataStore() {
return dms;
}
public void generate(File targetPath) throws Exception {
try {
DocModelWriter writer = new DocModelWriter(dms);
writer.writeModelDoc(targetPath);
} finally {
//dms.clearAndCloseAllSafe();
}
}
public void addDocModelXml(File file) {
dms.addDataContext("xml-"+file.getName(),new XmlDomDataContext(file,false));
}
public void addDocModelCsv(File file) {
dms.addDataContext("csv-"+file.getName(),new CsvDataContext(file));
}
public void addDocModelJdbcMy(String host, String dbName, String user, String pass) throws SQLException {
dms.addDataContext("my-"+dbName,new JdbcDataContext(DriverManager.getConnection("jdbc:mariadb://"+host+"/"+dbName,user,pass)));
}
public void addDocModelJdbcPg(String host, String dbName, String user, String pass) throws SQLException {
dms.addDataContext("pg-"+dbName,new JdbcDataContext(DriverManager.getConnection("jdbc:postgresql://"+host+"/"+dbName,user,pass)));
}
public void addDocModelJdbcMs(String host, String dbName, String user, String pass) throws SQLException {
dms.addDataContext("ms-"+dbName,new JdbcDataContext(DriverManager.getConnection("jdbc:sqlserver://"+host+";databaseName="+dbName,user,pass)));
}
// @SuppressWarnings("deprecation")
// public void addDocModelMongoDB(String host, String dbName, String user, String pass) {
// Mongo mongo = new Mongo(new ServerAddress(host),new MongoOptions());
// dms.addDataContext("mongo-"+dbName,new MongoDbDataContext(mongo.getDB(dbName)));
// }
}

View file

@ -0,0 +1,42 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-app-notepad</artifactId>
<name>GDXApp⁴ᴰ-App-සටහන් පොත</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-vrgem4</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<exportScr>true</exportScr>
<niceManifest>true</niceManifest>
<instructions>
<_donotcopy>(.git)</_donotcopy>
<_dsannotations>*</_dsannotations>
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
${tos4.packages},
${vrgem4.packages}
</Import-Package>
<Bundle-Vendor>distributedrebirth.love</Bundle-Vendor>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,77 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.notepad;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4Unicode4DService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppMenuSection;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@Component
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class NotepadComponent {
@Reference
private SystemGdxLog log;
@Reference
private VrGem4DeskAppService deskAppService;
@Reference
private VrGem4Unicode4DService unicode4DService;
private final DeskAppLauncher launcher;
public NotepadComponent() {
Bundle bundle = FrameworkUtil.getBundle(NotepadComponent.class);
BundleContext context = bundle.getBundleContext();
launcher = new DeskAppLauncher(DeskAppMenuSection.EDITORS, "Notepad", () -> new NotepadDeskApp(context, unicode4DService));
}
@Activate
void open() {
log.debug(this, SystemGdxLog.ACTIVATE);
deskAppService.installDeskApp(launcher);
}
@Deactivate
void close() {
log.debug(this, SystemGdxLog.DEACTIVATE);
deskAppService.removeDeskApp(launcher);
}
}

View file

@ -0,0 +1,238 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.notepad;
import java.util.Random;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import imgui.ImColor;
import imgui.ImDrawList;
import imgui.ImGui;
import imgui.ImVec2;
import imgui.type.ImBoolean;
import imgui.type.ImInt;
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.draw.DrawCharacter;
import love.distributedrebirth.unicode4d.draw.ImCharacter;
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒃᐤᣔᐪ.BãßBȍőnBőatꞱᴿᴳᴮ;
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.BãßBȍőnCoffinGhostCharm;
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.BãßBȍőnSpiderEgg注;
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.BãßBȍőnSpiderWire注;
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒼᒻᣔᙆᙆ.ᣖᑊᣗᣔᐪᓫ.BãßBȍőnꝐḯŕḕʸᴰ;
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᔿᓑᔿᔿᔋᐝᣚ.BãßᛗᚢᛗᛗᛉBoneBabe𓄯;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᒢℭỗᶇṧⱦᶏꬼȶʂ;
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᓑᣕᣳᒼᐤᒄᓫ.UnicodePlane;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class NotepadDeskApp extends AbstractDeskApp implements DeskAppRenderer, BãßᛗᚢᛗᛗᛉBoneBabe𓄯<NotepadDeskApp> {
//private final VrGem4Unicode4DService unicode4DService;
private final int gridWidth = 120;
private final int gridHeight = 40;
private final int[][] gridBuffer;
private final int[] gridRank;
private final Random random;
private int runCounter;
private final ImInt runSpeed = new ImInt(ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟTEN);
private final ImBoolean runChina = new ImBoolean(false);
private final static char DEFAULT_CHAR = '亞';
private final static UnicodePlane[] GRID_PLANES = {
UnicodePlane.BRAHMI,
UnicodePlane.UGARITIC,
UnicodePlane.BAMUM_SUPPLEMENT,
UnicodePlane.TAI_XUAN_JING_SYMBOLS
};
private final static UnicodePlane[] GRID_PLANES_CHINA = {
UnicodePlane.CJK_UNIFIED_IDEOGRAPHS,
UnicodePlane.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,
UnicodePlane.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,
UnicodePlane.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C,
UnicodePlane.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D,
UnicodePlane.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_E,
UnicodePlane.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F
};
private final static int Y_LINE_COLOR = ImColor.intToColor(200, 10, 10);
private String gridChars;
private int[] yLine;
private float[] yScale;
enum ꝐŕḯṿªḕꝐḯŕḕʸᴰ implements BãßBȍőnꝐḯŕḕʸᴰ {
𑀳𑁂𑀮𑀺,𑀉𑁄,𑀤𑁄,𑀭𑁂,𑀡,𑀪𑀸,𑀕;
private static final BãßBȍőnCoffinGhostCharm GHOST_BUNDLE = BãßBȍőnCoffinGhostCharm.hocusᴾᵒᶜᵘˢ();
@BãßBȍőnSpiderWire注(paint = BãßBȍőnBőatꞱᴿᴳᴮ.ẞassPaint.ꞱTBoneWire.class)
private NotepadDeskApp boon;
@BãßBȍőnSpiderEgg注
public VrGem4Unicode4DService locateVrGem4Unicode4DService() {
Class<?> eggType = VrGem4Unicode4DService.class;
BundleContext context = boon.thisᵀᴮᵒⁿᵉᴳʳᵃᵛᵉ().onheɨlḮg(ꝐŕḯṿªḕꝐḯŕḕʸᴰ.class).gềễstDɨng(GHOST_BUNDLE, BundleContext.class);
ServiceReference<?> serviceRef = context.getServiceReference(eggType);
Object service = context.getService(serviceRef);
return (VrGem4Unicode4DService)service;
}
}
@BãßBȍőnSpiderWire注()
private VrGem4Unicode4DService unicode4DService;
public NotepadDeskApp(BundleContext context, VrGem4Unicode4DService unicode4DService3) {
thisᵀᴮᵒⁿᵉᴳʳᵃᵛᵉ().onheɨlḮgSpreǜk(ꝐŕḯṿªḕꝐḯŕḕʸᴰ.class).bewaarGềễst(ꝐŕḯṿªḕꝐḯŕḕʸᴰ.GHOST_BUNDLE, context); // tmp test
亞ᶦᶦᶦ.thisʸᴰᐧᐧᶜᵒⁿˢᵗʳᵘᶜᵗᵒʳ(thisᵀᴮᵒⁿᵉ());
//this.unicode4DService = unicode4DService;
this.gridBuffer = new int[gridHeight][gridWidth];
this.gridRank = new int[gridWidth];
this.random = new Random();
for (int y=ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO; y<gridWidth; y++) {
gridRank[y] = ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO;
for (int x=ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO; x<gridHeight; x++) {
gridBuffer[x][y] = ᒢℭỗᶇṧⱦᶏꬼȶʂ.CHARᣟᐧᣟSPACE;
}
}
gridChars = createGridChars();
yLine = new int[4];
yScale = new float[4];
}
public void create() {
getContours().setTitle("Notepad");
getContours().registrateContour(DeskAppContourSection.MAIN, this);
}
@Override
public void render() {
ImGui.sliderInt(ᒢℭỗᶇṧⱦᶏꬼȶʂ.STRᣟᐧᣟSPACE, runSpeed.getData(), 0, 60); // empty ID not allowed in ImGui, but whitespace is an ID :)
ImGui.sameLine();
if (ImGui.checkbox("Chinees", runChina)) {
gridChars = createGridChars();
}
ImGui.sameLine();
ImCharacter.render("speedId", "Speed", DEFAULT_CHAR, v -> unicode4DService.getCharacterForUnicode(v));
ImGui.invisibleButton("matrix", ImGui.getWindowWidth(), ImGui.getWindowHeight()-(2*ImGui.getFontSize()));
ImVec2 p0 = ImGui.getItemRectMin();
ImVec2 p1 = ImGui.getItemRectMax();
ImDrawList drawList = ImGui.getWindowDrawList();
drawList.pushClipRect(p0.x, p0.y, p1.x, p1.y);
for(int y=ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO; y<gridHeight; y++) {
for(int x=ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO; x<gridWidth; x++) {
int unicodeChar = gridBuffer[y][x];
DrawCharacter drawChar = unicode4DService.getCharacterForUnicode(unicodeChar);
if (drawChar == null) {
drawChar = unicode4DService.getCharacterForUnicode(DEFAULT_CHAR);
if (drawChar == null) {
continue;
}
}
float scale = 1f;
int color = 0x3c68bb5b;
for (int i=0;i<4;i++) {
if (yLine[i] == 0) {
continue;
}
if (y == yLine[i] && (x == 10 || x == 15 || x== 20 || x == 25 || x == 30 || x == 35 || x == 40 || x == 45 || x == 50 || x == 55)) {
yScale[i] = yScale[i] + .11f;
scale = yScale[i];
color = Y_LINE_COLOR;
if (yScale[i] > 50f) {
yLine[i] = 0;
}
}
}
ImCharacter.drawUnicode4D(drawChar, x*ImCharacter.WIDTH, y*ImCharacter.HEIGHT, color, drawList, scale);
}
}
drawList.popClipRect();
updateGrid();
}
private String createGridChars() {
StringBuilder buf = new StringBuilder();
UnicodePlane[] planes = GRID_PLANES;
if (runChina.get()) {
planes = GRID_PLANES_CHINA;
}
for (UnicodePlane plane:planes) {
for (int i=plane.getStart();i<plane.getStop();i++) {
buf.appendCodePoint(i);
}
}
return buf.toString();
}
private void updateGrid() {
runCounter++;
if (runCounter < runSpeed.get()) {
return;
}
runCounter = ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO;
for (int i=0;i<4;i++) {
if (yLine[i] == 0) {
yLine[i] = random.nextInt(gridHeight);
yScale[i] = ᒢℭỗᶇṧⱦᶏꬼȶʂ.FLOATᣟᐧᣟONE;
}
}
for (int x=gridHeight-1; x>ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO; x--) {
for (int y=ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO; y<gridWidth; y++) {
gridBuffer[x][y] = gridBuffer[x-1][y];
}
}
for (int y=0; y<gridWidth; y++) {
int charSelect = ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO;
for (int i=ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO;i<4;i++) {
charSelect = gridChars.codePointAt(random.nextInt(gridChars.length()));
DrawCharacter drawChar = unicode4DService.getCharacterForUnicode(charSelect);
if (drawChar != null) {
break;
}
}
if (gridRank[y] > ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO) {
gridBuffer[ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO][y] = random.nextInt(100)<70? charSelect:ᒢℭỗᶇṧⱦᶏꬼȶʂ.CHARᣟᐧᣟSPACE;
} else {
gridBuffer[ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO][y] = random.nextInt(100)<ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟONE? charSelect:ᒢℭỗᶇṧⱦᶏꬼȶʂ.CHARᣟᐧᣟSPACE;
}
if (gridBuffer[0][y]==ᒢℭỗᶇṧⱦᶏꬼȶʂ.CHARᣟᐧᣟSPACE) {
gridRank[y] = ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO;
} else {
gridRank[y]++;
}
}
}
}

View file

@ -0,0 +1,42 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-app-tosamp</artifactId>
<name>GDXApp⁴ᴰ-App-ടോസാമ്പ്</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-vrgem4</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<exportScr>true</exportScr>
<niceManifest>true</niceManifest>
<instructions>
<_donotcopy>(.git)</_donotcopy>
<_dsannotations>*</_dsannotations>
<_metatypeannotations>*</_metatypeannotations>
<Import-Package>
${tos4.packages},
${vrgem4.packages}
</Import-Package>
<Bundle-Vendor>distributedrebirth.love</Bundle-Vendor>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,88 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.tosamp;
import java.util.ResourceBundle;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxBootArgs;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemGdxLog;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpShip;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4DeskAppService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.VrGem4LocaleService;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppLauncher;
import love.distributedrebirth.gdxapp4d.vrgem4.service.deskapp.DeskAppMenuSection;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@Component
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class TosAmpComponent {
@Reference
private SystemGdxLog log;
@Reference
private VrGem4DeskAppService deskAppService;
@Reference
private SystemGdxBootArgs bootArgs;
@Reference
private SystemWarpShip warpShip;
@Reference
private VrGem4LocaleService localeService;
private final static String I18N_BUNDLE = "love.distributedrebirth.gdxapp4d.app.tosamp.Messages";
private DeskAppLauncher launcher;
public TosAmpComponent() {
}
private ResourceBundle createBundle() {
return ResourceBundle.getBundle(I18N_BUNDLE, localeService.getTextLocale());
}
@Activate
void open(final BundleContext context) {
log.debug(this, SystemGdxLog.ACTIVATE);
launcher = new DeskAppLauncher(DeskAppMenuSection.MULTIMEDIA, "TosAmp", () -> new TosAmpDeskApp(createBundle(), bootArgs.getFileChooser(), context, warpShip));
deskAppService.installDeskApp(launcher);
}
@Deactivate
void close() {
log.debug(this, SystemGdxLog.DEACTIVATE);
deskAppService.removeDeskApp(launcher);
}
}

View file

@ -0,0 +1,173 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.tosamp;
import java.util.ResourceBundle;
import java.util.function.Consumer;
import org.osgi.framework.BundleContext;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import imgui.ImGui;
import imgui.flag.ImGuiSelectableFlags;
import imgui.flag.ImGuiTableColumnFlags;
import imgui.flag.ImGuiTableFlags;
import love.distributedrebirth.gdxapp4d.app.tosamp.music.MusicManager;
import love.distributedrebirth.gdxapp4d.app.tosamp.music.MusicSong;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpShip;
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 net.spookygames.gdx.nativefilechooser.NativeFileChooser;
import net.spookygames.gdx.nativefilechooser.NativeFileChooserCallback;
import net.spookygames.gdx.nativefilechooser.NativeFileChooserConfiguration;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class TosAmpDeskApp extends AbstractDeskApp implements DeskAppRenderer {
private final ResourceBundle bundle;
private final MusicManager music;
private final NativeFileChooser fileChooser;
private NativeFileChooserConfiguration fileChooserConfig;
public TosAmpDeskApp(ResourceBundle bundle, NativeFileChooser fileChooser, BundleContext context, SystemWarpShip warpShip) {
this.bundle = bundle;
this.fileChooser = fileChooser;
this.music = new MusicManager();
this.music.init(context, warpShip);
}
private String getTxt(String key) {
return bundle.getString(TosAmpDeskApp.class.getSimpleName()+"."+key);
}
@Override
public void exit() {
music.stop();
}
public void create() {
getContours().setTitle(getTxt("title"));
getContours().registrateContour(DeskAppContourSection.MAIN, this);
getContours().registrateContour(DeskAppContourSection.FILE_NEW, new DeskAppRenderer() {
@Override
public void render() {
if (ImGui.menuItem(getTxt("menuAdd"))) {
fileChooser.chooseFile(fileChooserConfig,
NativeFileChooserCallbackAdapter.onFileChosen(v -> music.addBackgroundMusic(v)));
}
}
});
fileChooserConfig = new NativeFileChooserConfiguration();
fileChooserConfig.directory = Gdx.files.absolute(System.getProperty("user.home"));
fileChooserConfig.mimeFilter = "audio/*";
fileChooserConfig.title = "Choose audio file";
}
@Override
public void render() {
ImGui.text(getTxt("currentSong"));
MusicSong currentSong = music.getCurrentSong();
if (currentSong != null) {
ImGui.sameLine();
ImGui.text(currentSong.getName());
}
ImGui.separator();
if (currentSong != null) {
if (ImGui.button(getTxt("actionPlay"))) {
music.play(currentSong);
}
} else {
ImGui.text(getTxt("actionPlay"));
}
ImGui.sameLine();
if (ImGui.button("<")) {
music.prev();
}
ImGui.sameLine();
if (ImGui.button(">")) {
music.next();
}
ImGui.sameLine();
if (ImGui.button(getTxt("actionStop"))) {
music.stop();
}
int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV;
ImGui.beginTable("playlist", 4, flags);
ImGui.tableSetupColumn("#", ImGuiTableColumnFlags.NoHide);
ImGui.tableSetupColumn(getTxt("listPlay"));
ImGui.tableSetupColumn(getTxt("listName"));
ImGui.tableSetupColumn(getTxt("listSong"));
ImGui.tableHeadersRow();
int i=1;
for (MusicSong song:music.getMusicSongs()) {
ImGui.pushID(i);
ImGui.tableNextRow();
ImGui.tableNextColumn();
ImGui.selectable(""+i, music.isPlaying(song), ImGuiSelectableFlags.None);
ImGui.tableNextColumn();
if (ImGui.smallButton(">")) {
music.play(song);
}
ImGui.tableNextColumn();
ImGui.selectable(song.getPlaylist(), music.isPlaying(song), ImGuiSelectableFlags.None);
ImGui.tableNextColumn();
ImGui.selectable(song.getName(), music.isPlaying(song), ImGuiSelectableFlags.None);
ImGui.popID();
i++;
}
ImGui.endTable();
}
static class NativeFileChooserCallbackAdapter implements NativeFileChooserCallback {
@Override
public void onFileChosen(FileHandle file) {
}
@Override
public void onCancellation() {
}
@Override
public void onError(Exception exception) {
}
static NativeFileChooserCallbackAdapter onFileChosen(Consumer<FileHandle> eater) {
return new NativeFileChooserCallbackAdapter() {
@Override
public void onFileChosen(FileHandle file) {
eater.accept(file);
}
};
}
}
}

View file

@ -0,0 +1,171 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.tosamp.music;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class M3UParser {
private static final String M3U_HEADER = "#EXTM3U";
private static final String M3U_EXTINF = "#EXTINF:";
private static final String M3U_PLAYLIST = "#PLAYLIST:";
private static final String M3U_EXTALB = "#EXTALB:";
private static final String M3U_EXTART = "#EXTART:";
private static final String M3U_EXTGENRE = "#EXTGENRE:";
private static final String M3U_EXTIMG = "#EXTIMG:";
public static class M3UPlaylist {
private String name;
private String albumTitle;
private String albumArtist;
private String albumGenre;
private List<M3UTrack> tracks = new ArrayList<>();
private Map<String, String> images = new HashMap<>();
public M3UPlaylist() {
}
public String getName() {
return name;
}
public String getAlbumTitle() {
return albumTitle;
}
public String getAlbumArtist() {
return albumArtist;
}
public String getAlbumGenre() {
return albumGenre;
}
public List<M3UTrack> getTracks() {
return tracks;
}
public Map<String, String> getImages() {
return images;
}
}
public static class M3UTrack {
private int time;
private String name;
private String file;
public M3UTrack() {
}
public int getTime() {
return time;
}
public String getName() {
return name;
}
public String getFile() {
return file;
}
}
enum M3UExtLine {
NONE,
EXTINF,
EXTIMG,
}
public static M3UPlaylist parse(InputStream stream) throws IOException {
M3UPlaylist result = new M3UPlaylist();
M3UExtLine extLine = M3UExtLine.NONE;
M3UTrack track = null;
String imageType = null;
BufferedReader buffer = new BufferedReader(new InputStreamReader(stream));
String line = buffer.readLine();
if (!line.startsWith(M3U_HEADER)) {
throw new IOException("Missing header");
}
while ((line = buffer.readLine()) != null) {
if (line.isEmpty()) {
continue;
}
if (extLine == M3UExtLine.EXTINF) {
extLine = M3UExtLine.NONE;
track.file = line;
result.tracks.add(track);
continue;
}
if (extLine == M3UExtLine.EXTIMG) {
extLine = M3UExtLine.NONE;
result.images.put(imageType, line);
continue;
}
int arguIndex = line.indexOf(":");
if (arguIndex == -1) {
continue;
}
String lineArgu = line.substring(arguIndex + 1);
if (line.startsWith(M3U_PLAYLIST)) {
result.name = lineArgu;
} else if (line.startsWith(M3U_EXTALB)) {
result.albumTitle = lineArgu;
} else if (line.startsWith(M3U_EXTART)) {
result.albumArtist = lineArgu;
} else if (line.startsWith(M3U_EXTGENRE)) {
result.albumGenre = lineArgu;
} else if (line.startsWith(M3U_EXTIMG)) {
imageType = lineArgu;
extLine = M3UExtLine.EXTIMG;
} else if (line.startsWith(M3U_EXTINF)) {
track = new M3UTrack();
extLine = M3UExtLine.EXTINF;
int commaIndex = lineArgu.indexOf(",");
String timeStr = lineArgu.substring(0, commaIndex);
String trackName = lineArgu.substring(commaIndex + 1);
track.time = Integer.parseInt(timeStr);
track.name = trackName;
}
}
return result;
}
}

View file

@ -0,0 +1,180 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.tosamp.music;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.osgi.framework.BundleContext;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Music.OnCompletionListener;
import com.badlogic.gdx.files.FileHandle;
import love.distributedrebirth.gdxapp4d.app.tosamp.music.M3UParser.M3UPlaylist;
import love.distributedrebirth.gdxapp4d.app.tosamp.music.M3UParser.M3UTrack;
import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpShip;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
/**
* Manages the background and others songs.
*/
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class MusicManager {
private final List<MusicSong> musicSongs;
private final NextSongListener nextSongListener;
private MusicSong currentSong = null;
private Music currentMusic = null;
public MusicManager() {
musicSongs = new ArrayList<>();
nextSongListener = new NextSongListener();
}
public void addBackgroundMusic(FileHandle file) {
musicSongs.add(new MusicSong(file, file.name(), ""));
}
public void init(BundleContext context, SystemWarpShip warpShip) {
List<File> playlists = warpShip.searchMagic(context, "audio/mpegurl");
for (File playlist:playlists) {
try {
M3UPlaylist play = M3UParser.parse(new FileInputStream(playlist));
for (M3UTrack track:play.getTracks()) {
FileHandle fileHandle = Gdx.files.absolute(playlist.getParent() + "/" + track.getFile());
musicSongs.add(new MusicSong(fileHandle, track.getName(), play.getName()));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void dispose() {
if (currentMusic != null) {
currentMusic.dispose();
}
}
public List<MusicSong> getMusicSongs() {
return musicSongs;
}
public MusicSong getCurrentSong() {
return currentSong;
}
public void stop() {
if (currentMusic != null) {
currentMusic.stop();
}
}
public void play() {
MusicSong nextSong = null;
int currentBackground = musicSongs.indexOf(currentSong);
if (currentBackground == -1 && !musicSongs.isEmpty()) {
nextSong = musicSongs.get(0);
} else {
nextSong = currentSong;
}
if (nextSong!=null) {
play(nextSong);
}
}
public void play(MusicSong song) {
if (song == null) {
return;
}
stop();
currentSong = song;
if (currentMusic != null) {
currentMusic.dispose();
}
currentMusic = Gdx.audio.newMusic(currentSong.getFileHandle());
currentMusic.setOnCompletionListener(nextSongListener);
currentMusic.play();
}
class NextSongListener implements OnCompletionListener {
@Override
public void onCompletion(Music music) {
next();
play(currentSong);
}
}
public void next() {
int currentBackground = musicSongs.indexOf(currentSong);
if (currentBackground == -1) {
return; // some other
}
if (currentBackground == musicSongs.size()-1) {
currentBackground = -1; // loop to start
}
boolean play = currentMusic!=null && currentMusic.isPlaying();
stop();
currentSong = musicSongs.get(currentBackground+1);
if (play) {
play(currentSong);
}
}
public void prev() {
int currentBackground = musicSongs.indexOf(currentSong);
if (currentBackground == -1) {
return; // some other
}
if (currentBackground == 0) {
currentBackground = musicSongs.size(); // loop to end
}
boolean play = currentMusic!=null && currentMusic.isPlaying();
stop();
currentSong = musicSongs.get(currentBackground-1);
if (play) {
play(currentSong);
}
}
public boolean isPlaying(MusicSong song) {
if (currentSong != null && currentSong.equals(song)) {
return currentMusic.isPlaying();
}
return false;
}
}

View file

@ -0,0 +1,60 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.app.tosamp.music;
import com.badlogic.gdx.files.FileHandle;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
/**
* The music with the (file) name.
*/
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class MusicSong {
private final FileHandle fileHandle;
private final String name;
private final String playlist;
public MusicSong(FileHandle fileHandle, String name, String playlist) {
this.fileHandle = fileHandle;
this.name = name;
this.playlist = playlist;
}
public FileHandle getFileHandle() {
return fileHandle;
}
public String getName() {
return name;
}
public String getPlaylist() {
return playlist;
}
}

View file

@ -0,0 +1,8 @@
TosAmpDeskApp.title=\uf001 TosAmp
TosAmpDeskApp.menuAdd=\uf067 Add
TosAmpDeskApp.currentSong=Current Song:
TosAmpDeskApp.actionPlay=Play
TosAmpDeskApp.actionStop=Stop
TosAmpDeskApp.listPlay=Do
TosAmpDeskApp.listName=Playlist
TosAmpDeskApp.listSong=Song

View file

@ -0,0 +1,8 @@
TosAmpDeskApp.title=\uf001 TosAmp
TosAmpDeskApp.menuAdd=\uf067 \u6DFB\u52A0
TosAmpDeskApp.currentSong=\u5F53\u524D\u6B4C\u66F2:
TosAmpDeskApp.actionPlay=\u73A9
TosAmpDeskApp.actionStop=\u505C\u6B62
TosAmpDeskApp.listPlay=\u505A
TosAmpDeskApp.listName=\u64AD\u653E\u5217\u8868
TosAmpDeskApp.listSong=\u6B4C\u66F2

View file

@ -0,0 +1,8 @@
TosAmpDeskApp.title=\uf001 TosAmp
TosAmpDeskApp.menuAdd=\uf067 Add
TosAmpDeskApp.currentSong=Current Song:
TosAmpDeskApp.actionPlay=Play
TosAmpDeskApp.actionStop=Stop
TosAmpDeskApp.listPlay=Do
TosAmpDeskApp.listName=Playlist
TosAmpDeskApp.listSong=Song

View file

@ -0,0 +1,8 @@
TosAmpDeskApp.title=\uf001 TosAmp
TosAmpDeskApp.menuAdd=\uf067 Toevoegen
TosAmpDeskApp.currentSong=Huidig lied:
TosAmpDeskApp.actionPlay=Afspeel
TosAmpDeskApp.actionStop=Stop
TosAmpDeskApp.listPlay=Doe
TosAmpDeskApp.listName=Speellijst
TosAmpDeskApp.listSong=Lied

View file

@ -0,0 +1,8 @@
TosAmpDeskApp.title=\uf001 \u16CF\u16DF\u16CB\u16A8\u16D7\u16C8
TosAmpDeskApp.menuAdd=\uf067 \u16A8\u16DE\u16DE
TosAmpDeskApp.currentSong=\u16B2\u16A2\u16B1\u16B1\u16D6\u16BE\u16CF \u16CB\u16DF\u16BE\u16B7:
TosAmpDeskApp.actionPlay=\u16C8\u16DA\u16A8\u16A4
TosAmpDeskApp.actionStop=\u16CB\u16CF\u16DF\u16C8
TosAmpDeskApp.listPlay=\u16DE\u16DF
TosAmpDeskApp.listName=\u16C8\u16DA\u16A8\u16A4\u16DA\u16C1\u16CB\u16CF
TosAmpDeskApp.listSong=\u16CB\u16DF\u16BE\u16B7

View file

@ -0,0 +1 @@
# Temp file to have Hyperdrive mount home folder

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="90 seconds" debug="false">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<jmxConfigurator/>
<!--
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/gdxapp4d-demo.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} %msg%n</pattern>
</encoder>
</appender>
-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date %level [%thread] %logger{10} %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
<!-- Package opens. -->
<logger level="DEBUG" name="ᒢᐩᐩ"/>
<!-- Package limits. -->
<logger level="INFO" name="com.badlogic"/>
<logger level="INFO" name="org.x4o"/>
</configuration>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:device
xmlns:root="http://wrap-ship.x4o.distributedrebirth.love/xml/ns/warp-ship-root"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:boot="http://warp-ship.x4o.distributedrebirth.love/xml/ns/warp-ship-boot"
xsi:schemaLocation="http://wrap-ship.x4o.distributedrebirth.love/xml/ns/warp-ship-root http://warp-ship.x4o.distributedrebirth.love/xml/ns/warp-ship-root-1.0.xsd">
<boot:ship name="tos4-mark1-phoenix-poc"
engine="1c2d010066a39d96ace8af0ecc37c72d6f79109f30939e2959befcd9ce25fc8d">
<boot:warp sea="f8be3b29da5b6b2cb464f781469ceede6ccfd848d158293a4cdffbc2c41a410b" />
</boot:ship>
</root:device>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="1c2d010066a39d96ace8af0ecc37c72d6f79109f30939e2959befcd9ce25fc8d">../gdxapp4d-chain-boot-ship-engine/target/chain</entry>
<entry key="f8be3b29da5b6b2cb464f781469ceede6ccfd848d158293a4cdffbc2c41a410b">../gdxapp4d-chain-boot-warp-sea/target/chain</entry>
<entry key="7777aa29da5b6b2cb464f781469ceede6ccfd848d158293a4cdffbc2c41b58de">../gdxapp4d-chain-dep-osgi-lib/target/chain</entry>
<entry key="8833aa29da5b6b2cb464f781469ceede6ccfd848d158293a4cdffbc2c41b58de">../gdxapp4d-chain-dep-osgi-scr/target/chain</entry>
<entry key="9944bb29da5b6b2cb464f781469ceede6ccfd848d158293a4cdffbc2c41b62ed">../gdxapp4d-chain-font-unicode4d/target/chain</entry>
<entry key="ffee3329da5b6b2cb4befcc14aac55de6777d848d158293a4cdffbc2c41b12ad">../gdxapp4d-chain-default-music/target/chain</entry>
<entry key="7744aa29da5b6b2cb4b8f781469c33de688fd848d158293a4cdddbc2c41b12aa">../gdxapp4d-chain-default-apps/target/chain</entry>
<entry key="7744aa29da5b6b2cb4b8f781469c33de688fd848d158293a4cdddbc2c41b12aa.bundle/gdxapp4d-app-calculator.jar">../gdxapp4d-app-calculator/target/classes</entry>
<entry key="7744aa29da5b6b2cb4b8f781469c33de688fd848d158293a4cdddbc2c41b12aa.bundle/gdxapp4d-app-hewallet.jar">../gdxapp4d-app-hewallet/target/classes</entry>
<entry key="7744aa29da5b6b2cb4b8f781469c33de688fd848d158293a4cdddbc2c41b12aa.bundle/gdxapp4d-app-tosamp.jar">../gdxapp4d-app-tosamp/target/classes</entry>
<entry key="7744aa29da5b6b2cb4b8f781469c33de688fd848d158293a4cdddbc2c41b12aa.bundle/gdxapp4d-app-notepad.jar">../gdxapp4d-app-notepad/target/classes</entry>
<entry key="7744aa29da5b6b2cb4b8f781469c33de688fd848d158293a4cdddbc2c41b12aa.bundle/gdxapp4d-app-glyphdemo.jar">../gdxapp4d-app-glyphdemo/target/classes</entry>
<entry key="7744aa29da5b6b2cb4b8f781469c33de688fd848d158293a4cdddbc2c41b12aa.bundle/gdxapp4d-app-mmdoc.jar">../gdxapp4d-app-mmdoc/target/classes</entry>
<entry key="2222010099a37897688af0ecc37c72d6faabb7709ee39e2959befcd9ce253333">../gdxapp4d-chain-mod-vrgem4/target/chain</entry>
<entry key="2222010099a37897688af0ecc37c72d6faabb7709ee39e2959befcd9ce253333.bundle/gdxapp4d-vrgem4.jar">../gdxapp4d-vrgem4/target/classes</entry>
<entry key="ccba3b29da8b1b1cb444f381449beede3cbfd442d158293a4cdffbc3c41a31cc">../gdxapp4d-chain-mod-vrsys5/target/chain</entry>
<entry key="ccba3b29da8b1b1cb444f381449beede3cbfd442d158293a4cdffbc3c41a31cc.bundle/gdxapp4d-vrsys5.jar">../gdxapp4d-vrsys5/target/classes</entry>
<entry key="12343b29da8b1b1cb444f381449beede3cbfd442d158293a4cdffbc3c41a7890">../gdxapp4d-chain-mod-unitxc/target/chain</entry>
<entry key="12343b29da8b1b1cb444f381449beede3cbfd442d158293a4cdffbc3c41a7890.bundle/gdxapp4d-unitxc.jar">../gdxapp4d-unitxc/target/classes</entry>
</properties>

View file

@ -0,0 +1,29 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-boot-desktop</artifactId>
<name>GDXApp⁴ᴰ-Boot-𐦠𐦴𐦫𐦢</name>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-tos4</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.badlogicgames.gdx</groupId>
<artifactId>gdx-backend-lwjgl3</artifactId>
</dependency>
<dependency>
<groupId>games.spooky.gdx</groupId>
<artifactId>gdx-nativefilechooser-desktop</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
</dependency>
</dependencies>
</project>

View file

@ -0,0 +1,58 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.boot.desktop;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
/**
* Desktop GDXApp static config.
*/
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public final class GDXAppDesktopConfig {
protected static final Logger LOG = LoggerFactory.getLogger(GDXAppDesktopConfig.class);
public static int WINDOW_WIDTH = 1024;
public static int WINDOW_HEIGHT = 768;
public static String WINDOW_TITLE = "GDXApp⁴ᴰ";
public static String[] WINDOW_ICONS = {
"icon/window-128.png",
"icon/window-32.png",
"icon/window-16.png"
};
public static void printBootMessage() {
LOG.info("==========================");
LOG.info(" @Ω仙⁴ ˧꜏⋇꜊꜔ ⁴ﷲΩ@ ");
LOG.info(" ©Δ∞ 仙上主天 ");
LOG.info("בְּרֵאשִׁית :o: יְסוֺד :o: יִשְׂרָאֵל");
LOG.info("==========================");
}
}

View file

@ -0,0 +1,82 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.gdxapp4d.boot.desktop;
import java.util.Arrays;
import java.util.List;
import org.slf4j.bridge.SLF4JBridgeHandler;
import com.badlogic.gdx.Files.FileType;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import ch.qos.logback.core.status.NopStatusListener;
import love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4;
import net.spookygames.gdx.nativefilechooser.desktop.DesktopFileChooser;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ꕢꕌꔳꕺꖃꕯꕮꕊ;
/**
* Desktop GDXApp launcher.
*/
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
public class GDXAppDesktopLauncher {
public static void main(String[] args) {
GDXAppDesktopLauncher launcher = new GDXAppDesktopLauncher();
ꕢꕌꔳꕺꖃꕯꕮꕊ beanPrayer = new ꕢꕌꔳꕺꖃꕯꕮꕊ(() -> launcher.bootstrap(args));
beanPrayer.أَكْبَرײꣻײالله();
}
private void bootstrap(String[] arguments) {
if (System.getProperty("logback.configurationFile") == null) {
System.setProperty("logback.configurationFile", "Warpship/logback.xml");
}
if (System.getProperty("logback.statusListenerClass") == null) {
System.setProperty("logback.statusListenerClass",NopStatusListener.class.getName());
}
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
GDXAppDesktopConfig.printBootMessage();
List<String> args = Arrays.asList(arguments);
int width = GDXAppDesktopConfig.WINDOW_WIDTH;
int height = GDXAppDesktopConfig.WINDOW_HEIGHT;
GDXAppTos4.INSTANCE.BãßInit(args, width, height, new DesktopFileChooser());
Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration();
config.setMaxNetThreads(Runtime.getRuntime().availableProcessors());
config.setTitle(GDXAppDesktopConfig.WINDOW_TITLE);
config.setWindowIcon(FileType.Internal, GDXAppDesktopConfig.WINDOW_ICONS);
config.setWindowedMode(width, height);
Lwjgl3Application launcher = new Lwjgl3Application(GDXAppTos4.INSTANCE, config);
launcher.exit();
}
}

View file

@ -0,0 +1 @@
ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒻᐤᕐᕐᓫᣗ.SoepPanKeukenJul

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,43 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-chain-boot-ship-engine</artifactId>
<name>GDXApp⁴ᴰ-Chain-Boot-Ship-محرك</name>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy todir="target/chain">
<fileset dir="src/main/chain" />
</copy>
<java failonerror="true" fork="true" classname="love.distributedrebirth.warpme.hash.WaterShotAddict">
<arg value="target/chain" />
<classpath>
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
</classpath>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:shot xmlns:root="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soft="http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-soft"
xsi:schemaLocation="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-root-1.0.xsd">
<soft:hash file="warp-sea.xml" hex="0"/>
</root:shot>

View file

@ -0,0 +1,20 @@
<?xml version="1.1" encoding="UTF-8"?>
<root:ocean xmlns:root="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root"
xmlns:link="http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-link"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root-1.0.xsd">
<link:sea name="Boot Ship Engine" provider="gdxapp4d.system" author="للَّٰهِilLצسُو">
<!-- Link font-unicode4d -->
<link:chain key="9944bb29da5b6b2cb464f781469ceede6ccfd848d158293a4cdffbc2c41b62ed"/>
<!-- Link dep-osgi-scr -->
<link:chain key="8833aa29da5b6b2cb464f781469ceede6ccfd848d158293a4cdffbc2c41b58de"/>
<!-- Link mod-vrgem4 -->
<link:chain key="2222010099a37897688af0ecc37c72d6faabb7709ee39e2959befcd9ce253333"/>
<!-- Todo redo chain for larger drivers
<link:magic dat="1234..." file="bundle/org.apache.felix.scr-2.2.0.jar" mime="application/vnd.osgi.bundle"/>
<link:仙上主天 datᐊ="˥˧˧˨˨˥˥˧˥˥˧˧˥˥˧˦˦˩˩˧˥˦˧˥˩˧˥˩˧˧˩˨˨˨˧˧˩˥˧˥˩˧˩˩˥˥˧˩˩˧˩˥˧˥˥˧˧˨˨˧˨˨˥˩˧˧˦˦˧˩˩˧˥˦˥˧˥˥˧˩˨˧˥˥˨˥˦˧˧˧˥˦˨˨˧˧˥˥˥˥˧˧˩˩˧˩˩˧˩˩˧˩˨˧˩˩˧˩˨˧˩˨˥˦˧˧˥˦˩˩˧˧˥˦˩˩˧˧˥˦˨˨˧˧˩˨˧˩˥˧˩˩˥˩˧˧˩˨˧˩˩˧˩˨˧˦˦˧˥˥˧˨˨˧˥˦˥˥˧˧˩˩˧˦˦˧˥˥˦˦˧˧˥˥" 1ᔭᒋᐊᖅᓯᒪᖅᓯᒪ="יֽ֕זְ֔/זֲ֟דֲ֩יֳ֟ײֳ֔יֳ֞וֶ֕זֵ֟ױֳ֩רְ֠װֶ֔רְ֠װֶ֔װֽ֕רֶ֔יֽ֔יֽ֔װֶ֕וְ֕ײֵ֔וֲ֩" ᒋᐊᖅᓯ="application/vnd.osgi.bundle"/>
-->
</link:sea>
</root:ocean>

View file

@ -0,0 +1,43 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-chain-boot-warp-sea</artifactId>
<name>GDXApp⁴ᴰ-Chain-Boot-Warp-ค่าเริ่มต้น</name>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy todir="target/chain">
<fileset dir="src/main/chain" />
</copy>
<java failonerror="true" fork="true" classname="love.distributedrebirth.warpme.hash.WaterShotAddict">
<arg value="target/chain" />
<classpath>
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
</classpath>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:shot xmlns:root="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soft="http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-soft"
xsi:schemaLocation="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-root-1.0.xsd">
<soft:hash file="warp-sea.xml" hex="0"/>
</root:shot>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:ocean xmlns:root="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root"
xmlns:link="http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-link"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root-1.0.xsd">
<link:sea name="Boot Warp Sea" provider="gdxapp4d.system" author="للَّٰهِilLצسُو">
<!-- Link dep-osgi-lib -->
<link:chain key="7777aa29da5b6b2cb464f781469ceede6ccfd848d158293a4cdffbc2c41b58de"/>
<!-- Link mod-unitxc -->
<link:chain key="12343b29da8b1b1cb444f381449beede3cbfd442d158293a4cdffbc3c41a7890"/>
<!-- Link mod-vrsys5 -->
<link:chain key="ccba3b29da8b1b1cb444f381449beede3cbfd442d158293a4cdffbc3c41a31cc"/>
<!-- Link default-apps -->
<link:chain key="7744aa29da5b6b2cb4b8f781469c33de688fd848d158293a4cdddbc2c41b12aa"/>
<!-- Link default-music -->
<link:chain key="ffee3329da5b6b2cb4befcc14aac55de6777d848d158293a4cdffbc2c41b12ad"/>
</link:sea>
</root:ocean>

View file

@ -0,0 +1,89 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-chain-default-apps</artifactId>
<name>GDXApp⁴ᴰ-Chain-Default-Apps</name>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-app-calculator</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-app-glyphdemo</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-app-hewallet</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-app-notepad</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-app-tosamp</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d-app-mmdoc</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy todir="target/chain">
<fileset dir="src/main/chain" />
</copy>
<copy todir="target/chain/bundle">
<file file="../gdxapp4d-app-calculator/target/gdxapp4d-app-calculator.jar" />
<file file="../gdxapp4d-app-glyphdemo/target/gdxapp4d-app-glyphdemo.jar" />
<file file="../gdxapp4d-app-hewallet/target/gdxapp4d-app-hewallet.jar" />
<file file="../gdxapp4d-app-notepad/target/gdxapp4d-app-notepad.jar" />
<file file="../gdxapp4d-app-tosamp/target/gdxapp4d-app-tosamp.jar" />
<file file="../gdxapp4d-app-mmdoc/target/gdxapp4d-app-mmdoc.jar" />
</copy>
<java failonerror="true" fork="true" classname="love.distributedrebirth.warpme.hash.WaterShotAddict">
<arg value="target/chain" />
<classpath>
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
</classpath>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:shot xmlns:root="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soft="http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-soft"
xsi:schemaLocation="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-root-1.0.xsd">
<soft:hash file="warp-sea.xml" hex="0"/>
<soft:hash file="bundle/gdxapp4d-app-calculator.jar" hex="0"/>
<soft:hash file="bundle/gdxapp4d-app-hewallet.jar" hex="0"/>
<soft:hash file="bundle/gdxapp4d-app-notepad.jar" hex="0"/>
<soft:hash file="bundle/gdxapp4d-app-tosamp.jar" hex="0"/>
<soft:hash file="bundle/gdxapp4d-app-glyphdemo.jar" hex="0"/>
<soft:hash file="bundle/gdxapp4d-app-mmdoc.jar" hex="0"/>
</root:shot>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:ocean xmlns:root="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root"
xmlns:link="http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-link"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root-1.0.xsd">
<link:sea name="Default Apps" provider="gdxapp4d.apps" author="للَّٰهِilLצسُو">
<link:magic file="bundle/gdxapp4d-app-calculator.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/gdxapp4d-app-hewallet.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/gdxapp4d-app-notepad.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/gdxapp4d-app-tosamp.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/gdxapp4d-app-glyphdemo.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/gdxapp4d-app-mmdoc.jar" mime="application/vnd.osgi.bundle"/>
</link:sea>
</root:ocean>

View file

@ -0,0 +1,43 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-chain-default-music</artifactId>
<name>GDXApp⁴ᴰ-Chain-Default-Music</name>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy todir="target/chain">
<fileset dir="src/main/chain" />
</copy>
<java failonerror="true" fork="true" classname="love.distributedrebirth.warpme.hash.WaterShotAddict">
<arg value="target/chain" />s
<classpath>
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
</classpath>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,14 @@
#EXTM3U
#PLAYLIST:Power of Love
#EXTALB:Dickspeak
#EXTART:Various
#EXTGENRE:Pussypump
#EXTINF:292,Cydel Gabutero - Dickspeak Broken
Cydel Gabutero - The Power of love (Cover)-fake-192k.mp3
#EXTINF:301,Cydel Gabutero - Dickspeak Working
Cydel Gabutero - The Power of love (Cover)-true-192k.mp3
#EXTINF:301,Cydel Gabutero - Dickspeak Filtered 16kHz-8bit
Cydel Gabutero - The Power of love (Cover)-safe-16k-8b-pcm.mp3

View file

@ -0,0 +1,32 @@
#EXTM3U
#PLAYLIST:Music MSX
#EXTALB:Best of msx.org (2022)
#EXTART:Various
#EXTGENRE:Electropump
#EXTINF:209,Hybris - PSG version
Hybris_0.mp3
#EXTINF:268,Copy is Profile - Jorito
Jorito-copyisprofile.mp3
#EXTINF:78,Magical Tree - Jorito
magical_tree_jorito.mp3
#EXTINF:127,Under the Cloud of Darkness - J-War
25_-_under_the_cloud_of_darkness_night_bgm.mp3
#EXTINF:150,Shop Neutral - Robert Vroemisse
DEVA-Shop Neutral.mp3
#EXTINF:248,The one who rules the Heaven - Meits
meits_illusion_city_-_the_one_who_rules_the_heaven.mp3
#EXTINF:528,Golvellius - Bart Roijmans
golvellius_medley_bart_roijmans_2014_192kbps.mp3
#EXTINF:207,Coda - Arranger Gold
08SD-SNATCHER-CODA.MP3
#EXTINF:136,First Floor - Bart Roijmans
Bart-XakTheTowerofGazzel-FirstFloor.mp3

View file

@ -0,0 +1,26 @@
#EXTM3U
#PLAYLIST:Music TempleOS
#EXTALB:Best of Youtube (2022)
#EXTART:Various
#EXTGENRE:Electropump
#EXTINF:139,Panoramacircle - Waterfowl
panoramacircle-waterfowl.mp3
#EXTINF:260,Sanctumwave - Devine Intellect
sanctumwave-devine-intellect.mp3
#EXTINF:281,Sanctumwave - nightwalk
sanctumwave-nightwalk.mp3
#EXTINF:193,The Self Help Group - TempleOS
theselfhelpgroup-temple-os.mp3
#EXTINF:270,Sanctumwave - Risen
sanctumwave-risen.mp3
#EXTINF:164,Beeble - I used TempleOS to write a song
beeble-i-used-temple-os-to-write.mp3
#EXTINF:264,Ryanfarran - Risen TempleOS
ryanfarran-risen-temple-os.mp3

View file

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:shot xmlns:root="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soft="http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-soft"
xsi:schemaLocation="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-root-1.0.xsd">
<soft:hash file="warp-sea.xml" hex="0"/>
<soft:hash file="music-msx/000-playlist.m3u" hex="0"/>
<soft:hash file="music-msx/Hybris_0.mp3" hex="0"/>
<soft:hash file="music-msx/Jorito-copyisprofile.mp3" hex="0"/>
<soft:hash file="music-msx/magical_tree_jorito.mp3" hex="0"/>
<soft:hash file="music-msx/25_-_under_the_cloud_of_darkness_night_bgm.mp3" hex="0"/>
<soft:hash file="music-msx/DEVA-Shop Neutral.mp3" hex="0"/>
<soft:hash file="music-msx/meits_illusion_city_-_the_one_who_rules_the_heaven.mp3" hex="0"/>
<soft:hash file="music-msx/golvellius_medley_bart_roijmans_2014_192kbps.mp3" hex="0"/>
<soft:hash file="music-msx/08SD-SNATCHER-CODA.MP3" hex="0"/>
<soft:hash file="music-msx/Bart-XakTheTowerofGazzel-FirstFloor.mp3" hex="0"/>
<soft:hash file="music-templeos/000-playlist.m3u" hex="0"/>
<soft:hash file="music-templeos/panoramacircle-waterfowl.mp3" hex="0"/>
<soft:hash file="music-templeos/sanctumwave-devine-intellect.mp3" hex="0"/>
<soft:hash file="music-templeos/sanctumwave-nightwalk.mp3" hex="0"/>
<soft:hash file="music-templeos/theselfhelpgroup-temple-os.mp3" hex="0"/>
<soft:hash file="music-templeos/sanctumwave-risen.mp3" hex="0"/>
<soft:hash file="music-templeos/beeble-i-used-temple-os-to-write.mp3" hex="0"/>
<soft:hash file="music-templeos/ryanfarran-risen-temple-os.mp3" hex="0"/>
<soft:hash file="music-dickspeak/Cydel Gabutero - The Power of love (Cover)-fake-192k.mp3" hex="0"/>
<soft:hash file="music-dickspeak/Cydel Gabutero - The Power of love (Cover)-safe-16k-8b-pcm.mp3" hex="0"/>
<soft:hash file="music-dickspeak/Cydel Gabutero - The Power of love (Cover)-true-192k.mp3" hex="0"/>
</root:shot>

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:ocean xmlns:root="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root"
xmlns:link="http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-link"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root-1.0.xsd">
<link:sea name="Default Music" provider="gdxapp4d.system" author="للَّٰهِilLצسُو">
<link:magic file="music-msx/000-playlist.m3u" mime="audio/mpegurl"/>
<link:magic file="music-msx/" mime="inode/directory"/>
<link:magic file="music-templeos/000-playlist.m3u" mime="audio/mpegurl"/>
<link:magic file="music-templeos/" mime="inode/directory"/>
<link:magic file="music-dickspeak/000-playlist.m3u" mime="audio/mpegurl"/>
<link:magic file="music-dickspeak/" mime="inode/directory"/>
</link:sea>
</root:ocean>

View file

@ -0,0 +1,96 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-chain-dep-osgi-lib</artifactId>
<name>GDXApp⁴ᴰ-Chain-Dep-OSGI-LIB</name>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy todir="target/chain">
<fileset dir="src/main/chain" />
</copy>
<copy todir="target/chain/bundle">
<file file="target/dependency/slf4j-api.jar" />
<file file="target/dependency/logback-core.jar" />
<file file="target/dependency/logback-classic.jar" />
<file file="target/dependency/commons-lang3.jar" />
<file file="target/dependency/mariadb-java-client.jar" />
<file file="target/dependency/postgresql.jar" />
<file file="target/dependency/jackson-core.jar" />
<file file="target/dependency/jackson-databind.jar" />
<file file="target/dependency/jackson-annotations.jar" />
</copy>
<java failonerror="true" fork="true" classname="love.distributedrebirth.warpme.hash.WaterShotAddict">
<arg value="target/chain" />
<classpath>
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
</classpath>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:shot xmlns:root="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soft="http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-soft"
xsi:schemaLocation="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-root-1.0.xsd">
<soft:hash file="warp-sea.xml" hex="0"/>
<soft:hash file="bundle/slf4j-api.jar" hex="0"/>
<soft:hash file="bundle/logback-core.jar" hex="0"/>
<soft:hash file="bundle/logback-classic.jar" hex="0"/>
<soft:hash file="bundle/commons-lang3.jar" hex="0"/>
<soft:hash file="bundle/mariadb-java-client.jar" hex="0"/>
<soft:hash file="bundle/postgresql.jar" hex="0"/>
<soft:hash file="bundle/jackson-core.jar" hex="0"/>
<soft:hash file="bundle/jackson-annotations.jar" hex="0"/>
<soft:hash file="bundle/jackson-databind.jar" hex="0"/>
</root:shot>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:ocean xmlns:root="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root"
xmlns:link="http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-link"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root-1.0.xsd">
<link:sea name="Dep Osgi Lib" provider="gdxapp4d.system" author="للَّٰهِilLצسُو">
<link:magic file="bundle/slf4j-api.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/logback-core.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/logback-classic.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/commons-lang3.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/mariadb-java-client.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/postgresql.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/jackson-core.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/jackson-annotations.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/jackson-databind.jar" mime="application/vnd.osgi.bundle"/>
</link:sea>
</root:ocean>

View file

@ -0,0 +1,43 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-chain-dep-osgi-scr</artifactId>
<name>GDXApp⁴ᴰ-Chain-Dep-OSGI-SCR</name>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy todir="target/chain">
<fileset dir="src/main/chain" />
</copy>
<java failonerror="true" fork="true" classname="love.distributedrebirth.warpme.hash.WaterShotAddict">
<arg value="target/chain" />
<classpath>
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
</classpath>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:shot xmlns:root="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soft="http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-soft"
xsi:schemaLocation="http://wrap-core.x4o.distributedrebirth.love/xml/ns/warp-hash-root http://warp-hash.x4o.distributedrebirth.love/xml/ns/warp-hash-root-1.0.xsd">
<soft:hash file="warp-sea.xml" hex="0"/>
<soft:hash file="bundle/org.osgi.util.function-1.2.0.jar" hex="0"/>
<soft:hash file="bundle/org.osgi.util.promise-1.2.0.jar" hex="0"/>
<soft:hash file="bundle/org.apache.felix.scr-2.2.0.jar" hex="0"/>
</root:shot>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<root:ocean xmlns:root="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root"
xmlns:link="http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-link"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://wrap-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root http://warp-sea.x4o.distributedrebirth.love/xml/ns/warp-sea-root-1.0.xsd">
<link:sea name="Dep Osgi Scr" provider="gdxapp4d.system" author="للَّٰهِilLצسُو">
<link:magic file="bundle/org.osgi.util.function-1.2.0.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/org.osgi.util.promise-1.2.0.jar" mime="application/vnd.osgi.bundle"/>
<link:magic file="bundle/org.apache.felix.scr-2.2.0.jar" mime="application/vnd.osgi.bundle"/>
</link:sea>
</root:ocean>

View file

@ -0,0 +1,43 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>love.distributedrebirth.gdxapp4d</groupId>
<artifactId>gdxapp4d</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>gdxapp4d-chain-font-unicode4d</artifactId>
<name>GDXApp⁴ᴰ-Chain-Font-Unicode⁴ᴰ</name>
<packaging>pom</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<target>
<copy todir="target/chain">
<fileset dir="src/main/chain" />
</copy>
<java failonerror="true" fork="true" classname="love.distributedrebirth.warpme.hash.WaterShotAddict">
<arg value="target/chain" />
<classpath>
<pathelement location="../gdxapp4d-lib-warpme/target/gdxapp4d-lib-warpme.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-driver-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/nx01-x4o-sax3-${nx01.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/jasper-el-${jasper-el.version}.jar" />
<pathelement location="../gdxapp4d-lib-warpme/target/dependency/el-api-${jasper-el.version}.jar" />
</classpath>
</java>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more