Compare commits

...

11 Commits
main ... dev

8 changed files with 220 additions and 166 deletions

View File

@ -1,49 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src">
<attributes>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-15">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
<attributes>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/atriasoft-png-encoder">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/atriasoft-png-decoder">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/scenarium-logger">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/atriasoft-etk">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/atriasoft-egami">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry combineaccessrules="false" kind="src" path="/atriasoft-esvg">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="out/eclipse/classes"/>
</classpath>

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
/__pycache__/
/bin/ /bin/
/Operator/ /Operator/
/DrawerProperties/ /DrawerProperties/

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>atriasoft-io-gami</name>
<comment></comment>
<projects>
<project>atriasoft-io-gami</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>net.sf.eclipsecs.core.CheckstyleBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,57 @@
#!/usr/bin/python
import realog.debug as debug
import lutin.tools as tools
import realog.debug as debug
import lutin.image as image
import os
import lutin.multiprocess as lutinMultiprocess
def get_type():
return "LIBRARY_DYNAMIC"
def get_desc():
return "Ewol Tool Kit"
def get_licence():
return "MPL-2"
def get_compagny_type():
return "org"
def get_compagny_name():
return "atria-soft"
#def get_maintainer():
# return "authors.txt"
#def get_version():
# return "version.txt"
def configure(target, my_module):
my_module.add_src_file([
'src/module-info.java',
'src/org/atriasoft/iogami/IOgami.java',
'src/org/atriasoft/iogami/internal/LOGGER.java',
])
my_module.add_path('src/', type='java')
my_module.add_depend([
'org-atriasoft-pngdecoder',
'org-atriasoft-pngencoder',
'org-atriasoft-esvg',
'org-atriasoft-egami',
])
#my_module.add_path([
# 'lib/spotbugs-annotations-4.2.2.jar'
# ],
# type='java',
# export=True
#);
my_module.add_flag('java', "RELEASE_15_PREVIEW");
return True

138
pom.xml Normal file
View File

@ -0,0 +1,138 @@
<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>
<groupId>org.atriasoft</groupId>
<artifactId>io-gami</artifactId>
<version>0.1.0</version>
<properties>
<maven.compiler.version>3.13.0</maven.compiler.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<maven.dependency.version>3.1.1</maven.dependency.version>
</properties>
<repositories>
<repository>
<id>gitea</id>
<url>https://gitea.atria-soft.org/api/packages/org.atriasoft/maven</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>gitea</id>
<url>https://gitea.atria-soft.org/api/packages/org.atriasoft/maven</url>
</repository>
<snapshotRepository>
<id>gitea</id>
<url>https://gitea.atria-soft.org/api/packages/org.atriasoft/maven</url>
</snapshotRepository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>org.atriasoft</groupId>
<artifactId>png-decoder</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>org.atriasoft</groupId>
<artifactId>png-encoder</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>org.atriasoft</groupId>
<artifactId>esvg</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>org.atriasoft</groupId>
<artifactId>egami</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.11.0-M2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.1.0-alpha1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test/src</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.version}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<!--<encoding>${project.build.sourceEncoding}</encoding>-->
</configuration>
</plugin>
<!-- Create the source bundle -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.3.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- junit results -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<!-- Java-doc generation for stand-alone site -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<show>private</show>
<nohelp>true</nohelp>
</configuration>
</plugin>
</plugins>
</build>
<!-- Generate Java-docs As Part Of Project Reports -->
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<show>public</show>
</configuration>
</plugin>
</plugins>
</reporting>
</project>

View File

@ -7,7 +7,6 @@ open module org.atriasoft.iogami {
requires transitive org.atriasoft.etk; requires transitive org.atriasoft.etk;
requires org.atriasoft.esvg; requires org.atriasoft.esvg;
requires transitive io.scenarium.logger;
requires org.atriasoft.pngdecoder; requires org.atriasoft.pngdecoder;
requires org.atriasoft.pngencoder; requires org.atriasoft.pngencoder;
requires transitive org.atriasoft.egami; requires transitive org.atriasoft.egami;

View File

@ -1,29 +1,28 @@
package org.atriasoft.iogami; package org.atriasoft.iogami;
import org.atriasoft.etk.Uri;
import org.atriasoft.etk.math.Vector2i;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import org.atriasoft.egami.Image;
import org.atriasoft.egami.ImageByte;
import org.atriasoft.egami.ImageByteRGB; import org.atriasoft.egami.ImageByteRGB;
import org.atriasoft.egami.ImageByteRGBA; import org.atriasoft.egami.ImageByteRGBA;
import org.atriasoft.egami.ToolImage; import org.atriasoft.egami.ToolImage;
import org.atriasoft.esvg.EsvgDocument; import org.atriasoft.esvg.EsvgDocument;
import org.atriasoft.egami.Image; import org.atriasoft.etk.Uri;
import org.atriasoft.egami.ImageByte; import org.atriasoft.etk.math.Vector2i;
import org.atriasoft.iogami.internal.Log;
import org.atriasoft.pngencoder.PngEncoder;
import org.atriasoft.pngdecoder.PNGDecoder; import org.atriasoft.pngdecoder.PNGDecoder;
import org.atriasoft.pngdecoder.PNGDecoder.Format; import org.atriasoft.pngdecoder.PNGDecoder.Format;
import org.atriasoft.pngencoder.PngEncoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class IOgami { public class IOgami {
static final Logger LOGGER = LoggerFactory.getLogger(IOgami.class);
public static ImageByte load(final Uri uri, final Vector2i size) { public static ImageByte load(final Uri uri, final Vector2i size) {
Log.todo("Load image : " + uri + " size=" + size); LOGGER.info("TODO: Load image : " + uri + " size=" + size);
if (uri.get().endsWith(".png")) { if (uri.get().endsWith(".png")) {
return IOgami.loadPNG(uri); return IOgami.loadPNG(uri);
} }
@ -62,10 +61,10 @@ public class IOgami {
System.err.println("try to load texture " + filename + ", didn't work"); System.err.println("try to load texture " + filename + ", didn't work");
System.exit(-1); System.exit(-1);
} }
byte[] elemData = new byte[buf.remaining()]; final byte[] elemData = new byte[buf.remaining()];
buf.get(elemData); buf.get(elemData);
if (hasAlpha) { if (hasAlpha) {
ImageByteRGBA img = new ImageByteRGBA(tWidth, tHeight); final ImageByteRGBA img = new ImageByteRGBA(tWidth, tHeight);
for (int yyy = 0; yyy < tHeight; yyy++) { for (int yyy = 0; yyy < tHeight; yyy++) {
for (int xxx = 0; xxx < tWidth; xxx++) { for (int xxx = 0; xxx < tWidth; xxx++) {
img.setRByte(xxx, yyy, elemData[(yyy * tWidth + xxx) * 4 + 0]); img.setRByte(xxx, yyy, elemData[(yyy * tWidth + xxx) * 4 + 0]);
@ -76,7 +75,7 @@ public class IOgami {
} }
return img; return img;
} }
ImageByteRGB img = new ImageByteRGB(tWidth, tHeight); final ImageByteRGB img = new ImageByteRGB(tWidth, tHeight);
for (int yyy = 0; yyy < tHeight; yyy++) { for (int yyy = 0; yyy < tHeight; yyy++) {
for (int xxx = 0; xxx < tWidth; xxx++) { for (int xxx = 0; xxx < tWidth; xxx++) {
img.setAFloat(xxx, yyy, 0xFF); img.setAFloat(xxx, yyy, 0xFF);
@ -89,15 +88,15 @@ public class IOgami {
} }
private static ImageByte loadSVG(final Uri filename, final Vector2i size) { private static ImageByte loadSVG(final Uri filename, final Vector2i size) {
EsvgDocument doc = new EsvgDocument(); final EsvgDocument doc = new EsvgDocument();
doc.load(filename); doc.load(filename);
return ToolImage.convertImageByte(doc.renderImageFloatRGBA(size)); return ToolImage.convertImageByte(doc.renderImageFloatRGBA(size));
} }
public static void storePNG(final Uri uri, final Image data) { public static void storePNG(final Uri uri, final Image data) {
Log.info("Store image : " + uri + " size=" + data.getSize()); LOGGER.info("Store image : " + uri + " size=" + data.getSize());
Log.warning("Save file in " + uri.getPath()); LOGGER.warn("Save file in " + uri.getPath());
new PngEncoder().withBufferedImage(data).withCompressionLevel(9).toFile(uri.getPath()); new PngEncoder().withBufferedImage(data).withCompressionLevel(9).toFile(uri.getPath());
} }

View File

@ -1,68 +0,0 @@
package org.atriasoft.iogami.internal;
import io.scenarium.logger.LogLevel;
import io.scenarium.logger.Logger;
public class Log {
private static final String LIB_NAME = "iogami";
private static final String LIB_NAME_DRAW = Logger.getDrawableName(Log.LIB_NAME);
private static final boolean PRINT_CRITICAL = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.CRITICAL);
private static final boolean PRINT_DEBUG = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.DEBUG);
private static final boolean PRINT_ERROR = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.ERROR);
private static final boolean PRINT_INFO = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.INFO);
private static final boolean PRINT_PRINT = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.PRINT);
private static final boolean PRINT_TODO = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.TODO);
private static final boolean PRINT_VERBOSE = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.VERBOSE);
private static final boolean PRINT_WARNING = Logger.getNeedPrint(Log.LIB_NAME, LogLevel.WARNING);
public static void critical(final String data) {
if (Log.PRINT_CRITICAL) {
Logger.critical(Log.LIB_NAME_DRAW, data);
}
}
public static void debug(final String data) {
if (Log.PRINT_DEBUG) {
Logger.debug(Log.LIB_NAME_DRAW, data);
}
}
public static void error(final String data) {
if (Log.PRINT_ERROR) {
Logger.error(Log.LIB_NAME_DRAW, data);
}
}
public static void info(final String data) {
if (Log.PRINT_INFO) {
Logger.info(Log.LIB_NAME_DRAW, data);
}
}
public static void print(final String data) {
if (Log.PRINT_PRINT) {
Logger.print(Log.LIB_NAME_DRAW, data);
}
}
public static void todo(final String data) {
if (Log.PRINT_TODO) {
Logger.todo(Log.LIB_NAME_DRAW, data);
}
}
public static void verbose(final String data) {
if (Log.PRINT_VERBOSE) {
Logger.verbose(Log.LIB_NAME_DRAW, data);
}
}
public static void warning(final String data) {
if (Log.PRINT_WARNING) {
Logger.warning(Log.LIB_NAME_DRAW, data);
}
}
private Log() {}
}