onResize() {
- return null;
- }
-
- @Override
- public int getWidth() {
- return JAnsi8Engine.C_WIDTH * JAnsi8Engine.C_MUL_X;
- }
-
- @Override
- public int getHeight() {
- return JAnsi8Engine.C_HEIGHT * JAnsi8Engine.C_MUL_Y;
- }
-
- @Override
- public void destroy() {
- stopped = true;
- }
-
- @Override
- public void start(final RenderingLoop d) {
- renderLoop = d;
- final Thread th = new Thread(() -> {
- try {
- double extratime = 0;
- while (!stopped) {
- final long start = System.currentTimeMillis();
- repaint();
- final long end = System.currentTimeMillis();
- final double delta = (end - start) / 1000d;
- final int deltaInt = (int) Math.floor(delta);
- final int extraTimeInt = (int) Math.floor(extratime);
- if (extraTimeInt + deltaInt < 200) {
- Thread.sleep(200 - (extraTimeInt + deltaInt));
- extratime = 0;
- } else
- extratime += delta - 200d;
- }
- } catch (final InterruptedException e) {
- e.printStackTrace();
- }
- });
- th.setName("Console rendering thread");
- th.setDaemon(true);
- th.start();
- }
-
- @Override
- public void repaint() {
- renderLoop.refresh();
- r.curColor = 0x1C;
- r.glDrawStringCenter(JAnsi8Engine.C_WIDTH * JAnsi8Engine.C_MUL_X / 2, 0, title);
- if (win) {
- WindowsSupport.writeConsole(JAnsi24bitRenderer.ANSI_PREFIX + "0;0f");
- WindowsSupport.writeConsole(JAnsi24bitRenderer.ANSI_PREFIX + "?12l");
- WindowsSupport.writeConsole(JAnsi24bitRenderer.ANSI_PREFIX + "?25l");
- } else {
- AnsiConsole.out.print(JAnsi24bitRenderer.ANSI_PREFIX + "0;0f");
- AnsiConsole.out.print(JAnsi24bitRenderer.ANSI_PREFIX + "?12l");
- AnsiConsole.out.print(JAnsi24bitRenderer.ANSI_PREFIX + "?25l");
- }
- for (int y = 0; y < JAnsi8Engine.C_HEIGHT; y++) {
- int precBgColor = -1;
- int precFgColor = -1;
- int curBgColor = -1;
- int curFgColor = -1;
- for (int x = 0; x < JAnsi8Engine.C_WIDTH; x++) {
- curBgColor = (r.colorMatrix[x + y * JAnsi8Engine.C_WIDTH] & 0xF0) >> 4;
- curFgColor = r.colorMatrix[x + y * JAnsi8Engine.C_WIDTH] & 0x0F;
- if (precBgColor != curBgColor) {
- final String str = JAnsi8Renderer.ANSI_PREFIX + JAnsi8Renderer.ansiBgColorPrefix + JAnsi8Renderer.colorANSI[curBgColor] + JAnsi8Renderer.ansiColorSuffix;
- if (win)
- WindowsSupport.writeConsole(str);
- else
- AnsiConsole.out.print(str);
- }
- if (precFgColor != curFgColor) {
- final String str = JAnsi8Renderer.ANSI_PREFIX + JAnsi8Renderer.ansiFgColorPrefix + JAnsi8Renderer.colorANSI[curFgColor] + JAnsi8Renderer.ansiColorSuffix;
- if (win)
- WindowsSupport.writeConsole(str);
- else
- AnsiConsole.out.print(str);
- }
-
- final String stri = r.charmatrix[x + y * JAnsi8Engine.C_WIDTH] + "";
- if (win)
- WindowsSupport.writeConsole(stri);
- else
- AnsiConsole.out.print(stri);
-
- precBgColor = curBgColor;
- precFgColor = curFgColor;
- }
-
- if (win)
- WindowsSupport.writeConsole("\r\n");
- else
- AnsiConsole.out.println();
- }
- }
-
- @Override
- public Renderer getRenderer() {
- return r;
- }
-
- @Override
- public JAnsi8Font loadFont(final String file) throws IOException {
- return new JAnsi8Font();
- }
-
- @Override
- public JAnsi8Font loadFont(final String path, final String file) throws IOException {
- return new JAnsi8Font();
- }
-
- @Override
- public JAnsi8Skin loadSkin(final String file) throws IOException {
- return new JAnsi8Skin(file);
- }
-
- @Override
- public void waitForExit() {
- try {
- do
- Thread.sleep(500);
- while (stopped == false);
- } catch (final InterruptedException e) {
-
- }
- }
-
- @Override
- public boolean isSupported() {
- if (StaticVars.startupArguments.isMSDOSModeEnabled() || StaticVars.startupArguments.isEngineForced() && StaticVars.startupArguments.isHeadless8EngineForced() == false)
- return false;
- return true;
- }
-
- @Override
- public boolean doesRefreshPauses() {
- return true;
- }
-}
diff --git a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Font.java b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Font.java
deleted file mode 100644
index 692648e6..00000000
--- a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Font.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package it.cavallium.warppi.gui.graphicengine.impl.jansi8colors;
-
-import java.io.IOException;
-
-import it.cavallium.warppi.gui.graphicengine.BinaryFont;
-import it.cavallium.warppi.gui.graphicengine.GraphicEngine;
-
-public class JAnsi8Font implements BinaryFont {
-
- @Override
- public void load(final String file) throws IOException {
-
- }
-
- @Override
- public void initialize(final GraphicEngine d) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void use(final GraphicEngine d) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public int getStringWidth(final String text) {
- return 5 * text.length();
- }
-
- @Override
- public int getCharacterWidth() {
- return 5;
- }
-
- @Override
- public int getCharacterHeight() {
- return 5;
- }
-
- @Override
- public boolean isInitialized() {
- return true;
- }
-
- @Override
- public int getSkinWidth() {
- return 0;
- }
-
- @Override
- public int getSkinHeight() {
- return 0;
- }
-
-}
diff --git a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Renderer.java b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Renderer.java
deleted file mode 100644
index 5fd8ffb0..00000000
--- a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Renderer.java
+++ /dev/null
@@ -1,464 +0,0 @@
-package it.cavallium.warppi.gui.graphicengine.impl.jansi8colors;
-
-import it.cavallium.warppi.StaticVars;
-import it.cavallium.warppi.gui.graphicengine.Renderer;
-
-public class JAnsi8Renderer implements Renderer {
-
- JAnsi8Font currentFont;
- protected char[] charmatrix = new char[JAnsi8Engine.C_WIDTH * JAnsi8Engine.C_HEIGHT];
- protected int[] colorMatrix = new int[JAnsi8Engine.C_WIDTH * JAnsi8Engine.C_HEIGHT];
- protected int clearColor = hexColor(0xc5, 0xc2, 0xaf);
- protected int curColor = clearColor;
- public JAnsi8Skin currentSkin;
-
- public static final String ANSI_PREFIX = "\u001B[";
- public static final String ansiFgColorPrefix = "3";
- public static final String ansiBgColorPrefix = "4";
- public static final String ansiColorSuffix = "m";
- public static final String[] colorANSI = new String[] { "0", "1", "2", "3", "4", "5", "6", "7", "0;1", "1;1", "2;1", "3;1", "4;1", "5;1", "6;1", "7;1" };
-
- public static final String ANSI_RESET = "\u001B[0m";
- public static char FILL;
-
- private int hexColor(final int red, final int green, final int blue) {
- final int r1 = red;
- int r2;
- final int g1 = green;
- int g2;
- final int b1 = blue;
- int b2;
-
- final float[] match = new float[16];
-
- // COLOR
- r2 = 0;
- g2 = 0;
- b2 = 0;
- match[0] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 205;
- g2 = 0;
- b2 = 0;
- match[1] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 0;
- g2 = 205;
- b2 = 0;
- match[2] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 205;
- g2 = 205;
- b2 = 0;
- match[3] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 0;
- g2 = 0;
- b2 = 238;
- match[4] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 205;
- g2 = 0;
- b2 = 205;
- match[5] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 0;
- g2 = 205;
- b2 = 205;
- match[6] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 229;
- g2 = 229;
- b2 = 229;
- match[7] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 127;
- g2 = 127;
- b2 = 127;
- match[8] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 255;
- g2 = 0;
- b2 = 0;
- match[9] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 0;
- g2 = 255;
- b2 = 0;
- match[0xa] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 255;
- g2 = 255;
- b2 = 0;
- match[0xb] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 92;
- g2 = 92;
- b2 = 255;
- match[0xc] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 255;
- g2 = 0;
- b2 = 255;
- match[0xd] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 0;
- g2 = 255;
- b2 = 255;
- match[0xe] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- // COLOR
- r2 = 255;
- g2 = 255;
- b2 = 255;
- match[0xf] = (r2 - r1) * (r2 - r1) + (g2 - g1) * (g2 - g1) + (b2 - b1) * (b2 - b1);
-
- int minIndex = 0;
- for (int i = 1; i < match.length; i++) {
- final float newnumber = match[i];
- if (newnumber < match[minIndex])
- minIndex = i;
- }
-
- return minIndex;
- }
-
- private int[] hexColorReverse(final int i) {
- switch (i) {
- case 0x0:
- return new int[] { 0, 0, 0 };
- case 0x1:
- return new int[] { 205, 0, 0 };
- case 0x2:
- return new int[] { 0, 205, 0 };
- case 0x3:
- return new int[] { 205, 205, 0 };
- case 0x4:
- return new int[] { 0, 0, 238 };
- case 0x5:
- return new int[] { 205, 0, 205 };
- case 0x6:
- return new int[] { 0, 205, 205 };
- case 0x7:
- return new int[] { 229, 229, 229 };
- case 0x8:
- return new int[] { 127, 127, 127 };
- case 0x9:
- return new int[] { 255, 0, 0 };
- case 0xa:
- return new int[] { 0, 255, 0 };
- case 0xb:
- return new int[] { 255, 255, 0 };
- case 0xc:
- return new int[] { 92, 92, 255 };
- case 0xd:
- return new int[] { 255, 0, 255 };
- case 0xe:
- return new int[] { 0, 255, 255 };
- default:
- return new int[] { 255, 255, 255 };
- }
- }
-
- private int colorUnion(final int[] col) {
- return 0xFF << 24 | col[0] << 16 | col[1] << 8 | col[2];
- }
-
- @Override
- public void glColor3i(final int r, final int gg, final int b) {
- curColor = hexColor(r, gg, b);
- }
-
- @Override
- public void glColor(final int c) {
- curColor = hexColor(c >> 16 & 0xFF, c >> 8 & 0xFF, c & 0xFF);
- }
-
- @Override
- public void glColor4i(final int red, final int green, final int blue, final int alpha) {
- curColor = hexColor(red, green, blue);
- }
-
- @Override
- public void glColor3f(final float red, final float green, final float blue) {
- curColor = hexColor((int) (red * 255), (int) (green * 255), (int) (blue * 255));
- }
-
- @Override
- public void glColor4f(final float red, final float green, final float blue, final float alpha) {
- curColor = hexColor((int) (red * 255), (int) (green * 255), (int) (blue * 255));
- }
-
- @Override
- public void glClearColor4i(final int red, final int green, final int blue, final int alpha) {
- clearColor = hexColor(red, green, blue);
- }
-
- @Override
- public void glClearColor4f(final float red, final float green, final float blue, final float alpha) {
- clearColor = hexColor((int) (red * 255), (int) (green * 255), (int) (blue * 255));
- }
-
- @Override
- public int glGetClearColor() {
- return clearColor;
- }
-
- @Override
- public void glClearColor(final int c) {
- clearColor = hexColor(c >> 16 & 0xFF, c >> 8 & 0xFF, c & 0xFF);
- }
-
- @Override
- public void glClear(final int screenWidth, final int screenHeight) {
- clearAll();
- }
-
- @Override
- public void glDrawLine(float x1, float y1, float x2, float y2) {
- x1 /= JAnsi8Engine.C_MUL_X;
- x2 /= JAnsi8Engine.C_MUL_X;
- y1 /= JAnsi8Engine.C_MUL_Y;
- y2 /= JAnsi8Engine.C_MUL_Y;
-
- final int dx = (int) Math.abs(x2 - x1);
- final int dy = (int) Math.abs(y2 - y1);
-
- final int sx = x1 < x2 ? 1 : -1;
- final int sy = y1 < y2 ? 1 : -1;
-
- int err = dx - dy;
-
- while (true) {
- if ((int) x1 >= JAnsi8Engine.C_WIDTH || (int) y1 >= JAnsi8Engine.C_HEIGHT || (int) x2 >= JAnsi8Engine.C_WIDTH || (int) y2 >= JAnsi8Engine.C_HEIGHT)
- break;
- final int precBG = colorMatrix[(int) x1 + (int) y1 * JAnsi8Engine.C_WIDTH] & 0xF0;
- colorMatrix[(int) x1 + (int) y1 * JAnsi8Engine.C_WIDTH] = precBG | curColor;
- if (JAnsi8Renderer.FILL == 0)
- initFill();
- charmatrix[(int) x1 + (int) y1 * JAnsi8Engine.C_WIDTH] = JAnsi8Renderer.FILL;
-
- if (x1 == x2 && y1 == y2)
- break;
-
- final int e2 = 2 * err;
-
- if (e2 > -dy) {
- err = err - dy;
- x1 = x1 + sx;
- }
-
- if (e2 < dx) {
- err = err + dx;
- y1 = y1 + sy;
- }
- }
- }
-
- private void initFill() {
- JAnsi8Renderer.FILL = StaticVars.startupArguments.isMSDOSModeEnabled() ? 0xDB : '█';
- }
-
- @Override
- public void glFillRect(final float x, final float y, final float width, final float height, final float uvX,
- final float uvY, final float uvWidth, final float uvHeight) {
- if (currentSkin != null)
- glDrawSkin((int) (x / JAnsi8Engine.C_MUL_X), (int) (y / JAnsi8Engine.C_MUL_Y), (int) (uvX / JAnsi8Engine.C_MUL_X), (int) (uvY / JAnsi8Engine.C_MUL_Y), (int) ((uvWidth + uvX) / JAnsi8Engine.C_MUL_X), (int) ((uvHeight + uvY) / JAnsi8Engine.C_MUL_Y), true);
- else
- glFillColor(x, y, width, height);
- }
-
- @Override
- public void glFillColor(final float x, final float y, final float width, final float height) {
- if (JAnsi8Renderer.FILL == 0)
- initFill();
- glFillColor(x, y, width, height, JAnsi8Renderer.FILL, curColor);
- }
-
- private void glFillColor(final float x, final float y, final float width, final float height, final char character,
- final int color) {
- final int ix = (int) x / JAnsi8Engine.C_MUL_X;
- final int iy = (int) y / JAnsi8Engine.C_MUL_Y;
- final int iw = (int) width / JAnsi8Engine.C_MUL_X;
- final int ih = (int) height / JAnsi8Engine.C_MUL_Y;
-
- int x1 = ix + iw;
- int y1 = iy + ih;
- if (ix >= JAnsi8Engine.C_WIDTH || iy >= JAnsi8Engine.C_WIDTH)
- return;
- if (x1 >= JAnsi8Engine.C_WIDTH)
- x1 = JAnsi8Engine.C_WIDTH;
- if (y1 >= JAnsi8Engine.C_HEIGHT)
- y1 = JAnsi8Engine.C_HEIGHT;
- final int sizeW = JAnsi8Engine.C_WIDTH;
- for (int px = ix; px < x1; px++)
- for (int py = iy; py < y1; py++) {
- final int precBG = colorMatrix[px + py * sizeW] & 0xF0;
- colorMatrix[px + py * sizeW] = precBG | color;
- charmatrix[px + py * sizeW] = character;
- }
- }
-
- @Override
- public void glDrawCharLeft(final int x, final int y, final char ch) {
- final int cx = x / JAnsi8Engine.C_MUL_X;
- final int cy = y / JAnsi8Engine.C_MUL_Y;
- if (cx >= JAnsi8Engine.C_WIDTH || cy >= JAnsi8Engine.C_HEIGHT)
- return;
- charmatrix[cx + cy * JAnsi8Engine.C_WIDTH] = ch;
- final int precBG = colorMatrix[cx + cy * JAnsi8Engine.C_WIDTH] & 0xF0;
- colorMatrix[cx + cy * JAnsi8Engine.C_WIDTH] = precBG | curColor;
- }
-
- @Override
- public void glDrawCharCenter(final int x, final int y, final char ch) {
- glDrawCharLeft(x, y, ch);
- }
-
- @Override
- public void glDrawCharRight(final int x, final int y, final char ch) {
- final int cx = x / JAnsi8Engine.C_MUL_X - 1;
- final int cy = y / JAnsi8Engine.C_MUL_Y;
- if (cx >= JAnsi8Engine.C_WIDTH || cy >= JAnsi8Engine.C_HEIGHT)
- return;
- charmatrix[cx + cy * JAnsi8Engine.C_WIDTH] = ch;
- final int precBG = colorMatrix[cx + cy * JAnsi8Engine.C_WIDTH] & 0xF0;
- colorMatrix[cx + cy * JAnsi8Engine.C_WIDTH] = precBG | curColor;
- }
-
- @Override
- public void glDrawStringLeft(final float x, final float y, final String text) {
- final int cx = (int) x / JAnsi8Engine.C_MUL_X;
- final int cy = (int) y / JAnsi8Engine.C_MUL_Y;
- int i = 0;
- for (final char c : text.toCharArray()) {
- if (cx + i >= JAnsi8Engine.C_WIDTH || cy >= JAnsi8Engine.C_HEIGHT)
- break;
- charmatrix[cx + i + cy * JAnsi8Engine.C_WIDTH] = c;
- final int precBG = colorMatrix[cx + i + cy * JAnsi8Engine.C_WIDTH] & 0xF0;
- colorMatrix[cx + i + cy * JAnsi8Engine.C_WIDTH] = precBG | curColor;
- i++;
- }
- }
-
- @Override
- public void glDrawStringCenter(final float x, final float y, final String text) {
- final int cx = (int) x / JAnsi8Engine.C_MUL_X - text.length() / 2;
- final int cy = (int) y / JAnsi8Engine.C_MUL_Y;
- int i = 0;
- for (final char c : text.toCharArray()) {
- if (cx + i >= JAnsi8Engine.C_WIDTH || cy >= JAnsi8Engine.C_HEIGHT)
- break;
- charmatrix[cx + i + cy * JAnsi8Engine.C_WIDTH] = c;
- final int precBG = colorMatrix[cx + i + cy * JAnsi8Engine.C_WIDTH] & 0xF0;
- colorMatrix[cx + i + cy * JAnsi8Engine.C_WIDTH] = precBG | curColor;
- i++;
- }
- }
-
- @Override
- public void glDrawStringRight(final float x, final float y, final String text) {
- // TODO Auto-generated method stub
-
- }
-
- private void glDrawSkin(int x0, int y0, int s0, int t0, int s1, int t1, final boolean transparent) {
- int oldColor;
- int newColor;
- final int onex = s0 <= s1 ? 1 : -1;
- final int oney = t0 <= t1 ? 1 : -1;
- int width = 0;
- int height = 0;
- if (onex == -1) {
- final int s00 = s0;
- s0 = s1;
- s1 = s00;
- width = s1 - s0;
- }
- if (oney == -1) {
- final int t00 = t0;
- t0 = t1;
- t1 = t00;
- height = t1 - t0;
- }
- if (x0 >= JAnsi8Engine.C_WIDTH || y0 >= JAnsi8Engine.C_WIDTH)
- return;
- if (x0 + width >= JAnsi8Engine.C_WIDTH)
- s1 = JAnsi8Engine.C_WIDTH - x0 + s0;
- if (y0 + height >= JAnsi8Engine.C_HEIGHT)
- t1 = JAnsi8Engine.C_HEIGHT - y0 + t0;
- if (x0 < 0) {
- if (onex == -1) {
- width += x0;
- s1 += x0 + 1;
- } else
- s0 -= x0;
- x0 = 0;
- }
- if (y0 < 0) {
- if (oney == -1) {
- height += y0;
- t1 += y0 + 1;
- } else
- t0 -= y0;
- y0 = 0;
- }
- int pixelX;
- int pixelY;
- for (int texx = 0; texx < s1 - s0; texx++)
- for (int texy = 0; texy < t1 - t0; texy++) {
- pixelX = x0 + texx * onex + width;
- pixelY = y0 + texy * oney + height;
- if (pixelY < JAnsi8Engine.C_HEIGHT)
- if (pixelX - pixelX % JAnsi8Engine.C_WIDTH == 0) {
- newColor = currentSkin.skinData[s0 + texx + (t0 + texy) * currentSkin.skinSize[0]];
- if (transparent) {
- oldColor = colorUnion(hexColorReverse((colorMatrix[pixelX + pixelY * JAnsi8Engine.C_WIDTH] & 0xF0) >> 4));
- final float a2 = (newColor >> 24 & 0xFF) / 255f;
- final float a1 = 1f - a2;
- final int r = (int) ((oldColor >> 16 & 0xFF) * a1 + (newColor >> 16 & 0xFF) * a2);
- final int g = (int) ((oldColor >> 8 & 0xFF) * a1 + (newColor >> 8 & 0xFF) * a2);
- final int b = (int) ((oldColor & 0xFF) * a1 + (newColor & 0xFF) * a2);
- newColor = 0xFF000000 | r << 16 | g << 8 | b;
- }
- final int bgColor = colorMatrix[pixelX + pixelY * JAnsi8Engine.C_WIDTH] & 0xF0;
- colorMatrix[pixelX + pixelY * JAnsi8Engine.C_WIDTH] = bgColor | hexColor(newColor >> 16 & 0xFF, newColor >> 8 & 0xFF, newColor & 0xFF);
- if (JAnsi8Renderer.FILL == 0)
- initFill();
- charmatrix[pixelX + pixelY * JAnsi8Engine.C_WIDTH] = JAnsi8Renderer.FILL;
- }
- }
- }
-
- @Override
- public void glClearSkin() {
- currentSkin = null;
- }
-
- protected void clearAll() {
- for (int i = 0; i < JAnsi8Engine.C_WIDTH * JAnsi8Engine.C_HEIGHT; i++) {
- charmatrix[i] = ' ';
- colorMatrix[i] = clearColor << 4;
- }
- }
-
- @Override
- public JAnsi8Font getCurrentFont() {
- return currentFont;
- }
-
-}
diff --git a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Skin.java b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Skin.java
deleted file mode 100644
index 331df018..00000000
--- a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jansi8colors/JAnsi8Skin.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package it.cavallium.warppi.gui.graphicengine.impl.jansi8colors;
-
-import java.awt.geom.AffineTransform;
-import java.awt.image.AffineTransformOp;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-
-import javax.imageio.ImageIO;
-
-import it.cavallium.warppi.gui.graphicengine.GraphicEngine;
-import it.cavallium.warppi.gui.graphicengine.Skin;
-
-public class JAnsi8Skin implements Skin {
-
- public int[] skinData;
- public int[] skinSize;
-
- JAnsi8Skin(final String file) throws IOException {
- load(file);
- }
-
- @Override
- public void load(final String file) throws IOException {
- final BufferedImage img = ImageIO.read(this.getClass().getResource("/" + file));
- skinData = JAnsi8Skin.getMatrixOfImage(img);
- skinSize = new int[] { img.getWidth(), img.getHeight() };
- }
-
- public static int[] getMatrixOfImage(final BufferedImage bufferedImage) {
- BufferedImage after = new BufferedImage(bufferedImage.getWidth(null), bufferedImage.getHeight(null), BufferedImage.TYPE_INT_ARGB);
- final AffineTransform at = new AffineTransform();
- at.scale(1f / JAnsi8Engine.C_MUL_X, 1f / JAnsi8Engine.C_MUL_Y);
- final AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
- after = scaleOp.filter(bufferedImage, after);
-
- final int width = after.getWidth(null);
- final int height = after.getHeight(null);
- final int[] pixels = new int[width * height];
- for (int i = 0; i < width; i++)
- for (int j = 0; j < height; j++)
- pixels[i + j * width] = after.getRGB(i, j);
-
- return pixels;
- }
-
- @Override
- public void initialize(final GraphicEngine d) {
-
- }
-
- @Override
- public void use(final GraphicEngine d) {
- ((JAnsi8Renderer) d.getRenderer()).currentSkin = this;
- }
-
- @Override
- public boolean isInitialized() {
- return true;
- }
-
- @Override
- public int getSkinWidth() {
- return 0;
- }
-
- @Override
- public int getSkinHeight() {
- return 0;
- }
-
-}
diff --git a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingEngine.java b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingEngine.java
index bdae8ad3..745c50a9 100644
--- a/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingEngine.java
+++ b/desktop/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/swing/SwingEngine.java
@@ -176,7 +176,7 @@ public class SwingEngine implements GraphicEngine {
public boolean isSupported() {
if (StaticVars.startupArguments.isEngineForced() && StaticVars.startupArguments.isCPUEngineForced() == false)
return false;
- return (StaticVars.startupArguments.isHeadlessEngineForced() || GraphicsEnvironment.isHeadless()) == false;
+ return (GraphicsEnvironment.isHeadless()) == false;
}
@Override
diff --git a/engine-jogl/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jogl/JOGLEngine.java b/engine-jogl/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jogl/JOGLEngine.java
index 66820757..2b1dd570 100644
--- a/engine-jogl/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jogl/JOGLEngine.java
+++ b/engine-jogl/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/jogl/JOGLEngine.java
@@ -162,8 +162,6 @@ public class JOGLEngine implements GraphicEngine {
public boolean isSupported() {
if (StaticVars.startupArguments.isEngineForced() && StaticVars.startupArguments.isGPUEngineForced() == false)
return false;
- if (StaticVars.startupArguments.isHeadlessEngineForced())
- return false;
boolean available = false;
boolean errored = false;
try {
diff --git a/hardware/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/framebuffer/FBEngine.java b/hardware/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/framebuffer/FBEngine.java
index aab46c2d..794af3c9 100644
--- a/hardware/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/framebuffer/FBEngine.java
+++ b/hardware/src/main/java/it/cavallium/warppi/gui/graphicengine/impl/framebuffer/FBEngine.java
@@ -168,8 +168,6 @@ public class FBEngine implements GraphicEngine {
public boolean isSupported() {
if (StaticVars.startupArguments.isEngineForced() && StaticVars.startupArguments.isFrameBufferEngineForced() == false)
return false;
- if (StaticVars.startupArguments.isHeadlessEngineForced())
- return false;
/*
File fbFile = new File("/dev/fb1");
try {
diff --git a/rules/teavm/target/classes/ar/com/hjg/pngj/chunks/package.html b/rules/teavm/target/classes/ar/com/hjg/pngj/chunks/package.html
new file mode 100644
index 00000000..13740669
--- /dev/null
+++ b/rules/teavm/target/classes/ar/com/hjg/pngj/chunks/package.html
@@ -0,0 +1,9 @@
+
+
+
+Contains the code related to chunk management for the PNGJ library.
+
+Only needed by client code if some special chunk handling is required.
+
+
+
diff --git a/rules/teavm/target/classes/ar/com/hjg/pngj/package.html b/rules/teavm/target/classes/ar/com/hjg/pngj/package.html
new file mode 100644
index 00000000..a417d56b
--- /dev/null
+++ b/rules/teavm/target/classes/ar/com/hjg/pngj/package.html
@@ -0,0 +1,49 @@
+
+
+
+PNGJ main package
+
+
+Users of this library should rarely need more than the public members of this package.
+Newcomers: start with PngReader and PngWriter.
+
+
+Example of use: this code reads a true colour PNG image (RGB8 or RGBA8)
+and reduces the red channel by half, increasing the green by 20.
+It copies all the "safe" metadata from the original image, and adds a textual metadata.
+
+
+ public static void convert(String origFilename, String destFilename) {
+ // you can also use PngReader (esentially the same) or PngReaderByte
+ PngReaderInt pngr = new PngReaderInt(new File(origFilename));
+ System.out.println(pngr.toString());
+ int channels = pngr.imgInfo.channels;
+ if (channels < 3 || pngr.imgInfo.bitDepth != 8)
+ throw new RuntimeException("For simplicity this supports only RGB8/RGBA8 images");
+ // writer with same image properties as original
+ PngWriter pngw = new PngWriter(new File(destFilename), pngr.imgInfo, true);
+ // instruct the writer to grab all ancillary chunks from the original
+ pngw.copyChunksFrom(pngr.getChunksList(), ChunkCopyBehaviour.COPY_ALL_SAFE);
+ // add a textual chunk to writer
+ pngw.getMetadata().setText(PngChunkTextVar.KEY_Description, "Decreased red and increased green");
+ // also: while(pngr.hasMoreRows())
+ for (int row = 0; row < pngr.imgInfo.rows; row++) {
+ ImageLineInt l1 = pngr.readRowInt(); // each element is a sample
+ int[] scanline = l1.getScanline(); // to save typing
+ for (int j = 0; j < pngr.imgInfo.cols; j++) {
+ scanline[j * channels] /= 2;
+ scanline[j * channels + 1] = ImageLineHelper.clampTo_0_255(scanline[j * channels + 1] + 20);
+ }
+ pngw.writeRow(l1);
+ }
+ pngr.end(); // it's recommended to end the reader first, in case there are trailing chunks to read
+ pngw.end();
+ }
+
+
+
+For more examples, see the tests and samples.
+
+