diff --git a/src/fr/klemek/marble/Color.java b/src/fr/klemek/marble/Color.java index f41efbd..587470c 100644 --- a/src/fr/klemek/marble/Color.java +++ b/src/fr/klemek/marble/Color.java @@ -7,7 +7,7 @@ class Color { final byte g; final byte b; - Color(byte r, byte g, byte b) { + private Color(byte r, byte g, byte b) { this.r = r; this.g = g; this.b = b; @@ -19,7 +19,7 @@ class Color { this.b = (byte) b; } - static Color fromRgb(int r, int g, int b){ + static Color fromRgb(int r, int g, int b) { return new Color(r + Byte.MIN_VALUE, g + Byte.MIN_VALUE, b + Byte.MIN_VALUE); } @@ -30,18 +30,6 @@ class Color { Utils.randomByte(rand)); } - Color plus(Color other) { - return new Color(Utils.bound((short) r + other.r), - Utils.bound((short) g + other.g), - Utils.bound((short) b + other.b)); - } - - Color times(float factor) { - return new Color((byte) (r * factor), - (byte) (g * factor), - (byte) (b * factor)); - } - static Color add(float[] factors, Color[] colors) { float r = 0f; float g = 0f; @@ -51,7 +39,7 @@ class Color { g += factors[i] * colors[i].g; b += factors[i] * colors[i].b; } - return new Color(Utils.bound(Math.round(r)),Utils.bound(Math.round(g)), Utils.bound(Math.round(b))); + return new Color(Utils.bound(Math.round(r)), Utils.bound(Math.round(g)), Utils.bound(Math.round(b))); } static Color add(Color... colors) { diff --git a/src/fr/klemek/marble/Generator.java b/src/fr/klemek/marble/Generator.java index ad09808..0558ed7 100644 --- a/src/fr/klemek/marble/Generator.java +++ b/src/fr/klemek/marble/Generator.java @@ -11,9 +11,9 @@ class Generator { private final int height2; private final int size; - private float slope; - private Color source; - private Color divergence; + private final float slope; + private final Color source; + private final Color divergence; private long seed = 0L; @@ -34,7 +34,7 @@ class Generator { Utils.randInt(0, 30))); } - Generator(int width, int height, int size, float slope, Color divergence){ + Generator(int width, int height, int size, float slope, Color divergence) { this(width, height, size, slope, divergence, null); } @@ -88,17 +88,6 @@ class Generator { generateLine(y); } - private static Color getDivergence(int width, int height, int size) { - int size2 = (int) Math.min(Math.max(width / size, height / size), Byte.MAX_VALUE * 1.5f); - Color c; - do { - c = new Color(Utils.randInt(0, Byte.MAX_VALUE), - Utils.randInt(0, Byte.MAX_VALUE), - Utils.randInt(0, Byte.MAX_VALUE)); - } while (c.sum() * 2 < size2 || c.sum() > Byte.MAX_VALUE * 2); - return c; - } - private void generateLine(int y) { for (int x = 0; x < width2; x++) { Color div = divergence.diverge(rand); @@ -112,56 +101,6 @@ class Generator { } } - void inspect(int x, int y, int size, boolean unsigned) { - - System.out.println(String.format("Inspect area : %d-%d x %d-%d", x, x + size, y, y + size)); - - int sumr = 0; - int sumg = 0; - int sumb = 0; - for (int i = x; i < x + size; i++) { - for (int j = y; j < y + size; j++) { - System.out.print(String.format("%1$-12s %2$-4d ", table[i][j].toString(unsigned), table[i][j].sum())); - sumr += unsigned ? table[i][j].r - Byte.MIN_VALUE : table[i][j].r; - sumg += unsigned ? table[i][j].g - Byte.MIN_VALUE : table[i][j].g; - sumb += unsigned ? table[i][j].b - Byte.MIN_VALUE : table[i][j].b; - } - System.out.println(); - } - - System.out.println(String.format("mean : (%d,%d,%d) %d", sumr / (size * size), sumg / (size * size), sumb / (size * size), (sumr + sumg + sumb) / (size * size))); - } - - void inspectDivergence(int x0, int y0, int size) { - System.out.println(String.format("Inspect divergence in area : %d-%d x %d-%d", x0, x0 + size, y0, y0 + size)); - - int sumr = 0; - int sumg = 0; - int sumb = 0; - for (int x = x0; x < x0 + size; x++) { - for (int y = y0; y < y0 + size; y++) { - - Color div = table[x][y]; - - if (x > 0 && y == 0) { - div = Color.add(new float[]{1f,-1f},new Color[]{table[x][y], table[x - 1][y]}); - } else if (x == 0 && y > 0) { - div = Color.add(new float[]{1f,-1f},new Color[]{table[x][y], table[x][y-1]}); - } else if (x > 0 && y > 0) { - div = Color.add(new float[]{1f,-slope,slope-1f},new Color[]{table[x][y], table[x][y - 1], table[x - 1][y]}); - } - - System.out.print(String.format("%1$-12s %2$-4d ", div, div.sum())); - - sumr += div.r; - sumg += div.g; - sumb += div.b; - } - System.out.println(); - } - System.out.println(String.format("mean : (%d,%d,%d) %d", sumr / (size * size), sumg / (size * size), sumb / (size * size), (sumr + sumg + sumb) / (size * size))); - } - byte[] getData() { byte[] data = new byte[width * height * 3]; int k = 0; diff --git a/src/fr/klemek/marble/ImageUtils.java b/src/fr/klemek/marble/ImageUtils.java index 9cbbcf0..0da91e3 100644 --- a/src/fr/klemek/marble/ImageUtils.java +++ b/src/fr/klemek/marble/ImageUtils.java @@ -35,8 +35,8 @@ final class ImageUtils { int linePadding = (width * 3) % 4; if (linePadding > 0) { - byte[] tail = new byte[4-linePadding]; - tail[tail.length-1] = (byte) 255; + byte[] tail = new byte[4 - linePadding]; + tail[tail.length - 1] = (byte) 255; data = Utils.interlaceArrays(data, tail, width * 3, height); } return data; @@ -64,7 +64,7 @@ final class ImageUtils { return header; } - static boolean saveBmpFile(byte[] data, File bmpFile){ + static boolean saveBmpFile(byte[] data, File bmpFile) { try (FileOutputStream fos = new FileOutputStream(bmpFile.getPath())) { fos.write(data); return true; @@ -74,7 +74,7 @@ final class ImageUtils { } } - static boolean convertBmpToJpg(File bmpFile, File jpgFile){ + static boolean convertBmpToJpg(File bmpFile, File jpgFile) { try { BufferedImage inputImage = ImageIO.read(bmpFile); ImageIO.write(inputImage, "JPG", jpgFile); diff --git a/src/fr/klemek/marble/LocalTests.java b/src/fr/klemek/marble/LocalTests.java index 8a27b56..14b2584 100644 --- a/src/fr/klemek/marble/LocalTests.java +++ b/src/fr/klemek/marble/LocalTests.java @@ -1,6 +1,6 @@ package fr.klemek.marble; -public class LocalTests { +class LocalTests { public static void main(String[] args) { Generator gen = new Generator(800, 800, 2); diff --git a/src/fr/klemek/marble/MarbleViewer.java b/src/fr/klemek/marble/MarbleViewer.java index 0753c42..25b6af1 100644 --- a/src/fr/klemek/marble/MarbleViewer.java +++ b/src/fr/klemek/marble/MarbleViewer.java @@ -3,10 +3,10 @@ package fr.klemek.marble; import javax.swing.*; import java.awt.*; -public class MarbleViewer extends JFrame { +class MarbleViewer extends JFrame { - public MarbleViewer(Generator generator){ - this.setLocation(0,0); + public MarbleViewer(Generator generator) { + this.setLocation(0, 0); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); this.setResizable(false); this.add(new Panel(generator)); @@ -14,13 +14,13 @@ public class MarbleViewer extends JFrame { this.setVisible(true); } - private class Panel extends JPanel{ + private class Panel extends JPanel { - private Generator generator; + private final Generator generator; - Panel(Generator generator){ + Panel(Generator generator) { this.generator = generator; - Dimension size= new Dimension(generator.getWidth(), generator.getHeight()); + Dimension size = new Dimension(generator.getWidth(), generator.getHeight()); this.setMinimumSize(size); this.setPreferredSize(size); this.setMaximumSize(size); @@ -32,10 +32,10 @@ public class MarbleViewer extends JFrame { int size = generator.getSize(); - for(int x = 0; x < generator.getWidth2(); x++){ - for(int y = 0; y < generator.getHeight2(); y++){ + for (int x = 0; x < generator.getWidth2(); x++) { + for (int y = 0; y < generator.getHeight2(); y++) { g.setColor(generator.getTable()[x][y].toColor()); - g.fillRect(x*size, y*size, size, size); + g.fillRect(x * size, y * size, size, size); } } } diff --git a/src/fr/klemek/marble/Utils.java b/src/fr/klemek/marble/Utils.java index 2c91425..271ea90 100644 --- a/src/fr/klemek/marble/Utils.java +++ b/src/fr/klemek/marble/Utils.java @@ -37,55 +37,55 @@ final class Utils { return out; } - static void translateUnsigned(byte[] data){ - for(int i = 0; i < data.length; i++){ + static void translateUnsigned(byte[] data) { + for (int i = 0; i < data.length; i++) { data[i] = (byte) (data[i] - Byte.MIN_VALUE); } } - static byte[] interlaceArrays(byte[] data, byte[] added, int size, int times){ - byte[] out = new byte[data.length + added.length*times]; - int size2 = size+added.length; - for(int i = 0; i < times; i++){ - writeArray(out, data, size2*i, size2*i+size, size*i); - writeArray(out, added, size2*i+size, size2*(i+1), 0); + static byte[] interlaceArrays(byte[] data, byte[] added, int size, int times) { + byte[] out = new byte[data.length + added.length * times]; + int size2 = size + added.length; + for (int i = 0; i < times; i++) { + writeArray(out, data, size2 * i, size2 * i + size, size * i); + writeArray(out, added, size2 * i + size, size2 * (i + 1), 0); } - writeArray(out, data, size2*times, out.length-size2*times, size*times); + writeArray(out, data, size2 * times, out.length - size2 * times, size * times); return out; } - static void writeArray(byte[] out, byte[] data, int start, int stop, int padding){ - for(int i = 0; i < Math.min(stop, out.length)-start; i++){ - out[i+start] = data[i+padding]; + static void writeArray(byte[] out, byte[] data, int start, int stop, int padding) { + for (int i = 0; i < Math.min(stop, out.length) - start; i++) { + out[i + start] = data[i + padding]; } } - static void writeArray(byte[] out, byte[] data, int start, int padding){ - writeArray(out, data, start, start+data.length-padding, padding); + static void writeArray(byte[] out, byte[] data, int start, int padding) { + writeArray(out, data, start, start + data.length - padding, padding); } - static void writeArray(byte[] out, byte[] data, int start){ + static void writeArray(byte[] out, byte[] data, int start) { writeArray(out, data, start, 0); } - static byte[] num2bytes(int number, int nbyte){ + static byte[] num2bytes(int number, int nbyte) { byte[] b = new byte[nbyte]; - for(int i = 0; i < nbyte; i++){ - b[i] = (byte)(number%256); - number = number/256; + for (int i = 0; i < nbyte; i++) { + b[i] = (byte) (number % 256); + number = number / 256; } return b; } - static byte[] num2bytes(int number){ + static byte[] num2bytes(int number) { return num2bytes(number, 4); } - static int randInt(int min, int max){ - return ThreadLocalRandom.current().nextInt(max-min)+min; + static int randInt(int min, int max) { + return ThreadLocalRandom.current().nextInt(max - min) + min; } - static int div(Random rand, byte src){ - return Math.round(rand.nextFloat()*2*src-src); + static int div(Random rand, byte src) { + return Math.round(rand.nextFloat() * 2 * src - src); } } diff --git a/src/fr/klemek/marble/WallpaperGenerator.java b/src/fr/klemek/marble/WallpaperGenerator.java index d85c66d..a949563 100644 --- a/src/fr/klemek/marble/WallpaperGenerator.java +++ b/src/fr/klemek/marble/WallpaperGenerator.java @@ -29,7 +29,7 @@ class WallpaperGenerator { makeWallpaper(file, width, height, size); } - static Dimension getScreenSizes() { + private static Dimension getScreenSizes() { Dimension dim = new Dimension(0, 0); for (GraphicsDevice gd : GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()) { dim.width = Math.max(dim.width, gd.getDisplayMode().getWidth()); @@ -38,7 +38,7 @@ class WallpaperGenerator { return dim; } - static void makeWallpaper(String name, int width, int height, int size) { + private static void makeWallpaper(String name, int width, int height, int size) { System.out.println("Making wallpaper '" + name + "' " + width + "x" + height + "px"); File bmpFile = new File(name + ".bmp"); @@ -56,12 +56,12 @@ class WallpaperGenerator { System.out.println("\tData writing done in " + (System.currentTimeMillis() - t1) + " ms"); t1 = System.currentTimeMillis(); - if(!ImageUtils.saveBmpFile(file, bmpFile)) + if (!ImageUtils.saveBmpFile(file, bmpFile)) return; System.out.println("\tFile writing done in " + (System.currentTimeMillis() - t1) + " ms"); t1 = System.currentTimeMillis(); - if(!ImageUtils.convertBmpToJpg(bmpFile, outputFile)) + if (!ImageUtils.convertBmpToJpg(bmpFile, outputFile)) return; System.out.println("\tFile converting done in " + (System.currentTimeMillis() - t1) + " ms"); diff --git a/test/fr/klemek/marble/UtilsTest.java b/test/fr/klemek/marble/UtilsTest.java index 85dcf06..a62d840 100644 --- a/test/fr/klemek/marble/UtilsTest.java +++ b/test/fr/klemek/marble/UtilsTest.java @@ -1,72 +1,65 @@ package fr.klemek.marble; -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; public class UtilsTest { @org.junit.Test public void bound() { - assertEquals((byte)-128, Utils.bound(-200)); - assertEquals((byte)-128, Utils.bound(-129)); - assertEquals((byte)-128, Utils.bound(-128)); - assertEquals((byte)-64, Utils.bound(-64)); - assertEquals((byte)0, Utils.bound(0)); - assertEquals((byte)64, Utils.bound(64)); - assertEquals((byte)127, Utils.bound(127)); - assertEquals((byte)127, Utils.bound(128)); - assertEquals((byte)127, Utils.bound(200)); + assertEquals((byte) -128, Utils.bound(-200)); + assertEquals((byte) -128, Utils.bound(-129)); + assertEquals((byte) -128, Utils.bound(-128)); + assertEquals((byte) -64, Utils.bound(-64)); + assertEquals((byte) 0, Utils.bound(0)); + assertEquals((byte) 64, Utils.bound(64)); + assertEquals((byte) 127, Utils.bound(127)); + assertEquals((byte) 127, Utils.bound(128)); + assertEquals((byte) 127, Utils.bound(200)); } @org.junit.Test public void subArray() { - byte[] array0 = new byte[]{0,1,2,3,4,5,6,7,8,9}; - assertArrayEquals(new byte[]{2,3,4}, Utils.subArray(array0, 2, 5)); + byte[] array0 = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + assertArrayEquals(new byte[]{2, 3, 4}, Utils.subArray(array0, 2, 5)); } @org.junit.Test public void translateUnsigned() { - byte[] array0 = new byte[]{-128,-64,0,64,127}; + byte[] array0 = new byte[]{-128, -64, 0, 64, 127}; Utils.translateUnsigned(array0); - assertArrayEquals(new byte[]{0,64,(byte)128,(byte)192,(byte)255}, array0); + assertArrayEquals(new byte[]{0, 64, (byte) 128, (byte) 192, (byte) 255}, array0); } @org.junit.Test public void interlaceArrays() { byte[] array0 = new byte[10]; - byte[] array1 = new byte[]{1,1}; - assertArrayEquals(new byte[]{0,0,0,1,1,0,0,0,1,1,0,0,0,0}, Utils.interlaceArrays(array0, array1, 3,2)); + byte[] array1 = new byte[]{1, 1}; + assertArrayEquals(new byte[]{0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0}, Utils.interlaceArrays(array0, array1, 3, 2)); } @org.junit.Test public void writeArray() { byte[] array0 = new byte[10]; - byte[] array1 = new byte[]{0,1,2,3,4,5,6,7,8,9}; - Utils.writeArray(array0,array1,2,5,3); - assertArrayEquals(new byte[]{0,0,3,4,5,0,0,0,0,0}, array0); + byte[] array1 = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + Utils.writeArray(array0, array1, 2, 5, 3); + assertArrayEquals(new byte[]{0, 0, 3, 4, 5, 0, 0, 0, 0, 0}, array0); } @org.junit.Test public void writeArray1() { byte[] array0 = new byte[10]; - byte[] array1 = new byte[]{0,1,2,3,4,5,6,7,8,9}; - Utils.writeArray(array0,array1,2,3); - assertArrayEquals(new byte[]{0,0,3,4,5,6,7,8,9,0}, array0); + byte[] array1 = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + Utils.writeArray(array0, array1, 2, 3); + assertArrayEquals(new byte[]{0, 0, 3, 4, 5, 6, 7, 8, 9, 0}, array0); } @org.junit.Test public void writeArray2() { byte[] array0 = new byte[10]; - byte[] array1 = new byte[]{0,1,2,3,4,5,6,7,8,9}; - Utils.writeArray(array0,array1,2); - assertArrayEquals(new byte[]{0,0,0,1,2,3,4,5,6,7}, array0); - } - - @org.junit.Test - public void num2bytes() { - } - - @org.junit.Test - public void num2bytes1() { + byte[] array1 = new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + Utils.writeArray(array0, array1, 2); + assertArrayEquals(new byte[]{0, 0, 0, 1, 2, 3, 4, 5, 6, 7}, array0); } } \ No newline at end of file