diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/Image.java b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/Image.java index 1bbc3ca7a66d4931b8259bba2ee85a2cfb1f2745..e489060642715ed344c0ef205301f1a74c85a252 100644 --- a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/Image.java +++ b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/Image.java @@ -3,13 +3,15 @@ package de.tudresden.inf.mci.brailleplot.rendering; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; +import java.io.IOException; +import java.net.URL; import java.util.Objects; /** * A representation of an (raster graphic) image. Basically just a wrapper for {@link javax.imageio.ImageIO} and * {@link java.awt.image.BufferedImage}. - * @author Leonard Kupper - * @version 2019.07.22 + * @author Leonard Kupper, Georg Graßnick + * @version 2019.09.24 */ public class Image implements Renderable { @@ -24,6 +26,15 @@ public class Image implements Renderable { imageData = ImageIO.read(Objects.requireNonNull(imageFile)); } + /** + * Constructor. Creates a new renderable representation from an image identified by an URL. + * @param url The URL to a resource containing an raster graphic image. (Different types supported. BMP, PNG, JPEG, ...) + * @throws java.io.IOException If an I/O exception of some sort has occurred while reading the image file. + */ + public Image(final URL url) throws IOException { + imageData = ImageIO.read(url); + } + /** * Get the loaded image as {@link BufferedImage}. * @return An instance of {@link BufferedImage}. diff --git a/src/test/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationParserTest.java b/src/test/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationParserTest.java index fe01525acc5b33c9cadd6f917f3c7c82cb5fa8b9..ce71eb080ebfbf12987943715e93386c8c4a6c30 100644 --- a/src/test/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationParserTest.java +++ b/src/test/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationParserTest.java @@ -4,7 +4,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import java.io.File; +import java.net.URL; import java.util.Arrays; import java.util.HashSet; import java.util.NoSuchElementException; @@ -13,15 +13,13 @@ import java.util.Set; public class JavaPropertiesConfigurationParserTest { - public static final String mDefaultConfigPath = getResource("config/default.properties").getAbsolutePath(); - public static final String mConcreteConfigPath = getResource("config/concrete.properties").getAbsolutePath(); + public static final URL mDefaultConfigPath = getResource("config/default.properties"); + public static final URL mConcreteConfigPath = getResource("config/concrete.properties"); public static Printer mPrinterConfig; public static Format mFormatConfig; - public static File getResource(String fileName) { - ClassLoader classLoader = ClassLoader.getSystemClassLoader(); - File resourceFile = new File(classLoader.getResource(fileName).getFile()); - return resourceFile; + public static URL getResource(final String location) { + return ClassLoader.getSystemClassLoader().getResource(location); } // Correct use testcases @@ -79,13 +77,13 @@ public class JavaPropertiesConfigurationParserTest { @Test public void testIllegalFile() { Assertions.assertThrows( - ConfigurationParsingException.class, - () -> new JavaPropertiesConfigurationParser("config/nonexistent.properties", mDefaultConfigPath) + NullPointerException.class, + () -> new JavaPropertiesConfigurationParser(getResource("config/nonexistent.properties"), mDefaultConfigPath) ); } @Test public void testMissingRequired() { - String configPath = getResource("config/missingRequiredPropertyExample.properties").getAbsolutePath(); + URL configPath = getResource("config/missingRequiredPropertyExample.properties"); Assertions.assertThrows( IllegalStateException.class, () -> new JavaPropertiesConfigurationParser(configPath, mDefaultConfigPath) @@ -93,7 +91,7 @@ public class JavaPropertiesConfigurationParserTest { } @Test public void testIllegalProperty() { - String configPath = getResource("config/illegalPropertyNameExample.properties").getAbsolutePath(); + URL configPath = getResource("config/illegalPropertyNameExample.properties"); Assertions.assertThrows( ConfigurationValidationException.class, () -> new JavaPropertiesConfigurationParser(configPath, mDefaultConfigPath) @@ -101,7 +99,7 @@ public class JavaPropertiesConfigurationParserTest { } @Test public void testIllegalValue() { - String configPath = getResource("config/illegalPropertyValueExample.properties").getAbsolutePath(); + URL configPath = getResource("config/illegalPropertyValueExample.properties"); Assertions.assertThrows( ConfigurationValidationException.class, () -> new JavaPropertiesConfigurationParser(configPath, mDefaultConfigPath) diff --git a/src/test/java/de/tudresden/inf/mci/brailleplot/layout/RasterCanvasTest.java b/src/test/java/de/tudresden/inf/mci/brailleplot/layout/RasterCanvasTest.java index f0cbc05ce550ce78ee1261c77801fb15da0c952c..5401330467bd48923bdea75abf543f27688340c3 100644 --- a/src/test/java/de/tudresden/inf/mci/brailleplot/layout/RasterCanvasTest.java +++ b/src/test/java/de/tudresden/inf/mci/brailleplot/layout/RasterCanvasTest.java @@ -2,9 +2,6 @@ package de.tudresden.inf.mci.brailleplot.layout; import de.tudresden.inf.mci.brailleplot.configparser.ConfigurationParser; import de.tudresden.inf.mci.brailleplot.configparser.JavaPropertiesConfigurationParser; -import de.tudresden.inf.mci.brailleplot.layout.RasterCanvas; -import de.tudresden.inf.mci.brailleplot.layout.Rectangle; -import de.tudresden.inf.mci.brailleplot.layout.SixDotBrailleRasterCanvas; import de.tudresden.inf.mci.brailleplot.printabledata.MatrixData; import de.tudresden.inf.mci.brailleplot.rendering.Image; import de.tudresden.inf.mci.brailleplot.rendering.MasterRenderer; @@ -12,21 +9,20 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.io.File; +import java.net.URL; import java.util.ListIterator; public class RasterCanvasTest { - public static final String mDefaultConfig = getResource("config/rasterizer_test_default.properties").getAbsolutePath(); - public static final String mBaseConfig = getResource("config/base_format.properties").getAbsolutePath(); - public static final String mMarginsOnlyConfig = getResource("config/margins_only.properties").getAbsolutePath(); - public static final String mConstraintOnlyConfig = getResource("config/constraint_only.properties").getAbsolutePath(); - public static final String mBothConfig = getResource("config/margins_and_constraint.properties").getAbsolutePath(); + public static final URL mDefaultConfig = getResource("config/rasterizer_test_default.properties"); + public static final URL mBaseConfig = getResource("config/base_format.properties"); + public static final URL mMarginsOnlyConfig = getResource("config/margins_only.properties"); + public static final URL mConstraintOnlyConfig = getResource("config/constraint_only.properties"); + public static final URL mBothConfig = getResource("config/margins_and_constraint.properties"); - public static File getResource(String fileName) { - ClassLoader classLoader = ClassLoader.getSystemClassLoader(); - File resourceFile = new File(classLoader.getResource(fileName).getFile()); - return resourceFile; + public static URL getResource(final String location) { + return ClassLoader.getSystemClassLoader().getResource(location); } @Test diff --git a/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/FunctionalRasterizerTest.java b/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/FunctionalRasterizerTest.java index 630419f330bc118d71d6add1be0aca3d023d82e3..0a410a48602d8a1272023ed4f01898a9c490a4ff 100644 --- a/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/FunctionalRasterizerTest.java +++ b/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/FunctionalRasterizerTest.java @@ -11,19 +11,18 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import java.io.File; +import java.net.URL; public class FunctionalRasterizerTest { - public static final String mDefaultConfig = getResource("config/rasterizer_test_default.properties").getAbsolutePath(); - public static final String mBaseConfig = getResource("config/base_format.properties").getAbsolutePath(); + public static final URL mDefaultConfig = getResource("config/rasterizer_test_default.properties"); + public static final URL mBaseConfig = getResource("config/base_format.properties"); public static Printer mPrinter; public static Format mFormat; - public static File getResource(String fileName) { - ClassLoader classLoader = ClassLoader.getSystemClassLoader(); - File resourceFile = new File(classLoader.getResource(fileName).getFile()); - return resourceFile; + public static URL getResource(final String location) { + return ClassLoader.getSystemClassLoader().getResource(location); } @BeforeAll diff --git a/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/MasterRendererTest.java b/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/MasterRendererTest.java index 27a0db664751722ae32a3d1bdee76a04a745e46c..cbd630e1ac20fde76502301d57f9207a8a440a6f 100644 --- a/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/MasterRendererTest.java +++ b/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/MasterRendererTest.java @@ -10,20 +10,18 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import java.io.File; +import java.net.URL; public class MasterRendererTest { - public static final String mDefaultConfig = getResource("config/rasterizer_test_default.properties").getAbsolutePath(); - public static final String mBaseConfig = getResource("config/base_format.properties").getAbsolutePath(); + public static final URL mDefaultConfig = getResource("config/rasterizer_test_default.properties"); + public static final URL mBaseConfig = getResource("config/base_format.properties"); public static Printer mPrinter; public static Format mFormat; - public static File getResource(String fileName) { - ClassLoader classLoader = ClassLoader.getSystemClassLoader(); - File resourceFile = new File(classLoader.getResource(fileName).getFile()); - return resourceFile; + public static URL getResource(final String location) { + return ClassLoader.getSystemClassLoader().getResource(location); } @BeforeAll