From 83d880f29fda86016730a0aba75e431290d57cba Mon Sep 17 00:00:00 2001
From: Lennart Eichhorn <lennart@madmanfred.com>
Date: Sun, 31 May 2020 18:20:27 +0200
Subject: [PATCH] Restructured code directories

---
 src/main/java/Interfaces/Visualizer.java      |   2 +-
 .../{Visualization => MainClasses}/Cell.java  |   2 +-
 .../java/MainClasses/GeneticAlgorithm.java    |  16 +-
 .../JCodecPNGtoMP4.java                       |   2 +-
 src/main/java/MainClasses/Main.java           |   5 -
 src/main/java/Visualization/VideoCreator.java | 195 ------------------
 .../Visualizers/BestFoldingToConsole.java     |   9 +-
 .../Visualizers/BestFoldingToImage.java       |   5 +-
 .../Visualizers/BestFoldingsToVideo.java      |   5 +-
 .../GenerationOverviewToConsole.java          |   2 +-
 .../Visualizers/GenerationProgressToLog.java  |   2 +-
 11 files changed, 17 insertions(+), 228 deletions(-)
 rename src/main/java/{Visualization => MainClasses}/Cell.java (98%)
 rename src/main/java/{Visualization => MainClasses}/JCodecPNGtoMP4.java (99%)
 delete mode 100644 src/main/java/Visualization/VideoCreator.java
 rename src/main/java/{Visualization => }/Visualizers/BestFoldingToConsole.java (92%)
 rename src/main/java/{Visualization => }/Visualizers/BestFoldingToImage.java (98%)
 rename src/main/java/{Visualization => }/Visualizers/BestFoldingsToVideo.java (98%)
 rename src/main/java/{Visualization => }/Visualizers/GenerationOverviewToConsole.java (97%)
 rename src/main/java/{Visualization => }/Visualizers/GenerationProgressToLog.java (98%)

diff --git a/src/main/java/Interfaces/Visualizer.java b/src/main/java/Interfaces/Visualizer.java
index 1b6c646..a632178 100644
--- a/src/main/java/Interfaces/Visualizer.java
+++ b/src/main/java/Interfaces/Visualizer.java
@@ -4,7 +4,7 @@ import Enums.State;
 import MainClasses.Candidate;
 import MainClasses.GeneticAlgorithm;
 import MainClasses.Vertex;
-import Visualization.Cell;
+import MainClasses.Cell;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/src/main/java/Visualization/Cell.java b/src/main/java/MainClasses/Cell.java
similarity index 98%
rename from src/main/java/Visualization/Cell.java
rename to src/main/java/MainClasses/Cell.java
index c801e70..5dfd229 100644
--- a/src/main/java/Visualization/Cell.java
+++ b/src/main/java/MainClasses/Cell.java
@@ -1,4 +1,4 @@
-package Visualization;
+package MainClasses;
 
 import Enums.State;
 
diff --git a/src/main/java/MainClasses/GeneticAlgorithm.java b/src/main/java/MainClasses/GeneticAlgorithm.java
index a38a01a..4ea194c 100644
--- a/src/main/java/MainClasses/GeneticAlgorithm.java
+++ b/src/main/java/MainClasses/GeneticAlgorithm.java
@@ -11,16 +11,12 @@ import Mutators.SinglePoint;
 import Selectors.FitnessProportional;
 import Selectors.OnlyBest;
 import Selectors.Tournament;
-import Visualization.Visualizers.BestFoldingToConsole;
-import Visualization.Visualizers.BestFoldingToImage;
-
-import Visualization.Visualizers.BestFoldingsToVideo;
-import Visualization.Visualizers.GenerationOverviewToConsole;
-import Visualization.Visualizers.GenerationProgressToLog;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
+import Visualizers.BestFoldingToConsole;
+import Visualizers.BestFoldingToImage;
+
+import Visualizers.BestFoldingsToVideo;
+import Visualizers.GenerationOverviewToConsole;
+import Visualizers.GenerationProgressToLog;
 import java.util.Random;
 
 public class GeneticAlgorithm {
diff --git a/src/main/java/Visualization/JCodecPNGtoMP4.java b/src/main/java/MainClasses/JCodecPNGtoMP4.java
similarity index 99%
rename from src/main/java/Visualization/JCodecPNGtoMP4.java
rename to src/main/java/MainClasses/JCodecPNGtoMP4.java
index 0b730a2..f037c5c 100644
--- a/src/main/java/Visualization/JCodecPNGtoMP4.java
+++ b/src/main/java/MainClasses/JCodecPNGtoMP4.java
@@ -1,4 +1,4 @@
-package Visualization;
+package MainClasses;
 
 /**
  * Using NIO e JCodec to convert multiple sequence png images to mp4 video file
diff --git a/src/main/java/MainClasses/Main.java b/src/main/java/MainClasses/Main.java
index ffa497e..1fd7b3b 100644
--- a/src/main/java/MainClasses/Main.java
+++ b/src/main/java/MainClasses/Main.java
@@ -1,10 +1,5 @@
 package MainClasses;
 
-import Enums.VisualizerMethods;
-import Visualization.VideoCreator;
-
-import java.util.Arrays;
-
 public class Main {
 
     public static void main(String[] args) {
diff --git a/src/main/java/Visualization/VideoCreator.java b/src/main/java/Visualization/VideoCreator.java
deleted file mode 100644
index 6f16ce4..0000000
--- a/src/main/java/Visualization/VideoCreator.java
+++ /dev/null
@@ -1,195 +0,0 @@
-package Visualization;
-
-import MainClasses.Config;
-
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class VideoCreator{
-
-    private static final int MAXIMUM_SIZE = 3000;
-    public static File dir = new File("./visualization/series"); // Default
-    public static final String[] extensions = new String[]{"jpg", "png"};
-    public static final FilenameFilter imageFilter = new FilenameFilter() {
-        @Override
-        public boolean accept(final File dir, String name) {
-            for (final String ext : extensions) {
-                if (name.endsWith("." + ext)) {
-                    return (true);
-                }
-            }
-            return (false);
-        }
-    };
-
-
-    // MainClasses.Main calls this
-    public static void createVideo(String imagesPath, String videoPathAndFile,
-                                   int imgFps, int imgToFpsIncrease, int maxFps, int maxH, int maxW, boolean zoom) {
-        try {
-            System.err.println("\nStarting image resizing");
-            if (zoom) {
-                VideoCreator.resizeImagesWithZoom(imagesPath);
-            } else {
-                VideoCreator.resizeImages(imagesPath, maxH, maxW);
-            }
-
-            File videoFile = new File(videoPathAndFile);
-            if (!videoFile.exists()) {
-                videoFile.createNewFile();
-            }
-
-            try {
-                JCodecPNGtoMP4.generateVideoBySequenceImages(videoFile, imagesPath, "png", imgFps, imgToFpsIncrease, maxFps);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    private static void resizeImages(String imagesPath, int maxH, int maxW) throws IOException {
-        dir = new File(imagesPath);
-
-        if (dir.isDirectory()) {
-            // reads input images and determines maximum required size
-            int maxHeight = maxH;
-            int maxWidth = maxW;
-
-            if (maxHeight <= 0 || maxWidth <= 0) {
-                int counter = 1;
-                for (final File f : dir.listFiles(imageFilter)) {
-                    BufferedImage inputImage = ImageIO.read(f);
-                    if (maxHeight < inputImage.getHeight()) {
-                        maxHeight = inputImage.getHeight();
-                    }
-                    if (maxWidth < inputImage.getWidth()) {
-                        maxWidth = inputImage.getWidth();
-                    }
-                }
-            }
-
-            // Needed because video is not playable with bigger sizes, mostly a concern for straight line initialization
-            if (maxWidth > MAXIMUM_SIZE) {
-                maxWidth = MAXIMUM_SIZE;
-            }
-            if (maxHeight > MAXIMUM_SIZE) {
-                maxHeight = MAXIMUM_SIZE;
-            }
-
-            // Resizes all images
-            for (final File f : dir.listFiles(imageFilter)) {
-                BufferedImage inputImage = ImageIO.read(f);
-
-                // creates output image
-                BufferedImage outputImage = new BufferedImage(maxWidth,
-                        maxHeight, inputImage.getType());
-
-                // draws input image to the top left corner
-                Graphics2D g2d = outputImage.createGraphics();
-                //TODO The following two lines should be unnecessary
-                //g2d.setColor(Config.imageBackground);
-                //g2d.fillRect(0,0, maxWidth, maxHeight);
-                g2d.drawImage(inputImage, 0, 0, inputImage.getWidth(), inputImage.getHeight(), null);
-                g2d.dispose();
-
-                // overwrites image
-                ImageIO.write(outputImage, "png", f);
-            }
-        }
-    }
-
-    private static void resizeImagesWithZoom(String imagesPath) throws IOException {
-        dir = new File(imagesPath);
-
-        int[] maxHeightAfterIndex = new int[dir.listFiles(imageFilter).length];
-        int[] maxWidthAfterIndex = new int[dir.listFiles(imageFilter).length];
-
-        if (dir.isDirectory()) {
-
-            Path directoryPath = Paths.get(new File(imagesPath).toURI());
-            DirectoryStream<Path> stream = Files.newDirectoryStream(directoryPath, "*.png");
-
-            List<File> filesList = new ArrayList<>();
-            for (Path path : stream) {
-                filesList.add(path.toFile());
-            }
-            File[] files = new File[filesList.size()];
-            filesList.toArray(files);
-
-            JCodecPNGtoMP4.sortByNumber(files);
-            List<Object> list = Arrays.asList(files);
-            Collections.reverse(list);
-            list.toArray(files);
-
-            // reads input images and determines maximum required size after that particular image
-            int currentMaxHeight = 0;
-            int currentMaxWidth = 0;
-            int counter = files.length - 1;
-            for (File f : files) {
-                BufferedImage inputImage = ImageIO.read(f);
-                if (currentMaxHeight < inputImage.getHeight()) {
-                    currentMaxHeight = inputImage.getHeight();
-                }
-                if (currentMaxWidth < inputImage.getWidth()) {
-                    currentMaxWidth = inputImage.getWidth();
-                }
-                maxHeightAfterIndex[counter] = currentMaxHeight;
-                maxWidthAfterIndex[counter] = currentMaxWidth;
-                counter--;
-            }
-
-            // Resizes all images
-            counter = files.length - 1;
-            for (final File f : files) {
-                BufferedImage inputImage = ImageIO.read(f);
-
-                // creates output image
-                BufferedImage outputImage = new BufferedImage(maxWidthAfterIndex[0], // Total maximum W/H
-                        maxHeightAfterIndex[0], inputImage.getType());
-
-                // draws input image to the top left corner
-                Graphics2D g2d = outputImage.createGraphics();
-                //TODO The following two lines should be unnecessary
-                //g2d.setColor(Config.imageBackground);
-                //g2d.fillRect(0,0, maxWidthAfterIndex[0], maxHeightAfterIndex[0]);
-
-                int newHeight = 0;
-                int newWidth = 0;
-
-                // Width expansion to border if height fits accordingly
-                double expansionByWidth = (double) maxWidthAfterIndex[0] / maxWidthAfterIndex[counter];
-                if (maxHeightAfterIndex[counter] * expansionByWidth <= maxHeightAfterIndex[0]) {
-                    newWidth = (int) Math.floor(inputImage.getWidth() * expansionByWidth);
-                    newHeight = (int) Math.floor(inputImage.getHeight() * expansionByWidth);
-                } else {
-                    // otherwise height expansion to border and width according to ratio
-                    double expansionByHeight = (double) maxHeightAfterIndex[0] / maxHeightAfterIndex[counter];
-                    newWidth = (int) Math.floor(inputImage.getWidth() * expansionByHeight);
-                    newHeight = (int) Math.floor(inputImage.getHeight() * expansionByHeight);
-                }
-
-                g2d.drawImage(inputImage, 0, 0, newWidth, newHeight, null);
-                g2d.dispose();
-
-                // overwrites image
-                ImageIO.write(outputImage, "png", f);
-
-                counter--;
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/Visualization/Visualizers/BestFoldingToConsole.java b/src/main/java/Visualizers/BestFoldingToConsole.java
similarity index 92%
rename from src/main/java/Visualization/Visualizers/BestFoldingToConsole.java
rename to src/main/java/Visualizers/BestFoldingToConsole.java
index d5eb289..d7ebd39 100644
--- a/src/main/java/Visualization/Visualizers/BestFoldingToConsole.java
+++ b/src/main/java/Visualizers/BestFoldingToConsole.java
@@ -1,4 +1,4 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Enums.State;
 import Interfaces.Visualizer;
@@ -6,13 +6,8 @@ import MainClasses.Candidate;
 import MainClasses.Config;
 import MainClasses.GeneticAlgorithm;
 import MainClasses.Vertex;
-import Visualization.Cell;
+import MainClasses.Cell;
 
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
 import java.util.ArrayList;
 
 public class BestFoldingToConsole implements Visualizer {
diff --git a/src/main/java/Visualization/Visualizers/BestFoldingToImage.java b/src/main/java/Visualizers/BestFoldingToImage.java
similarity index 98%
rename from src/main/java/Visualization/Visualizers/BestFoldingToImage.java
rename to src/main/java/Visualizers/BestFoldingToImage.java
index 32d4c55..00d1830 100644
--- a/src/main/java/Visualization/Visualizers/BestFoldingToImage.java
+++ b/src/main/java/Visualizers/BestFoldingToImage.java
@@ -1,14 +1,13 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Enums.State;
 import Evaluators.EvaluatorNESW;
-import Interfaces.Evaluator;
 import Interfaces.Visualizer;
 import MainClasses.Candidate;
 import MainClasses.Config;
 import MainClasses.GeneticAlgorithm;
 import MainClasses.Vertex;
-import Visualization.Cell;
+import MainClasses.Cell;
 
 import java.nio.file.Files;
 import java.nio.file.Paths;
diff --git a/src/main/java/Visualization/Visualizers/BestFoldingsToVideo.java b/src/main/java/Visualizers/BestFoldingsToVideo.java
similarity index 98%
rename from src/main/java/Visualization/Visualizers/BestFoldingsToVideo.java
rename to src/main/java/Visualizers/BestFoldingsToVideo.java
index b94324f..9fd7cd8 100644
--- a/src/main/java/Visualization/Visualizers/BestFoldingsToVideo.java
+++ b/src/main/java/Visualizers/BestFoldingsToVideo.java
@@ -1,11 +1,10 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Interfaces.Visualizer;
 import MainClasses.Candidate;
 import MainClasses.Config;
 import MainClasses.GeneticAlgorithm;
-import Visualization.JCodecPNGtoMP4;
-import Visualization.VideoCreator;
+import MainClasses.JCodecPNGtoMP4;
 import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
 import java.io.File;
diff --git a/src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java b/src/main/java/Visualizers/GenerationOverviewToConsole.java
similarity index 97%
rename from src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java
rename to src/main/java/Visualizers/GenerationOverviewToConsole.java
index c6a2195..9ee0780 100644
--- a/src/main/java/Visualization/Visualizers/GenerationOverviewToConsole.java
+++ b/src/main/java/Visualizers/GenerationOverviewToConsole.java
@@ -1,4 +1,4 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Evaluators.EvaluatorNESW;
 import Interfaces.Visualizer;
diff --git a/src/main/java/Visualization/Visualizers/GenerationProgressToLog.java b/src/main/java/Visualizers/GenerationProgressToLog.java
similarity index 98%
rename from src/main/java/Visualization/Visualizers/GenerationProgressToLog.java
rename to src/main/java/Visualizers/GenerationProgressToLog.java
index 8feb053..47131d6 100644
--- a/src/main/java/Visualization/Visualizers/GenerationProgressToLog.java
+++ b/src/main/java/Visualizers/GenerationProgressToLog.java
@@ -1,4 +1,4 @@
-package Visualization.Visualizers;
+package Visualizers;
 
 import Evaluators.EvaluatorNESW;
 import Interfaces.Visualizer;
-- 
GitLab