|
@@ -1,36 +1,69 @@
|
|
-package ui.view;
|
|
|
|
-
|
|
|
|
-import java.awt.Image;
|
|
|
|
-import java.io.File;
|
|
|
|
-import java.io.IOException;
|
|
|
|
-
|
|
|
|
-import javax.imageio.ImageIO;
|
|
|
|
-
|
|
|
|
-public class Util {
|
|
|
|
-
|
|
|
|
- static Image loadImage(Object origin, String url, int w, int h, int scale){
|
|
|
|
- return loadImage(origin,url).getScaledInstance(w, h, scale);
|
|
|
|
- }
|
|
|
|
- static Image loadImage(Object origin, String url, int w, int h){
|
|
|
|
- return loadImage(origin,url,w,h, Image.SCALE_SMOOTH);
|
|
|
|
- }
|
|
|
|
- static Image loadImage(Object origin, String url){
|
|
|
|
- try {
|
|
|
|
- return ImageIO.read(loadFile(origin, url));
|
|
|
|
- } catch (IOException e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- static File loadFile(Object origin, String url){
|
|
|
|
- try{
|
|
|
|
- return new File(origin.getClass().getResource(url).getFile());
|
|
|
|
- }catch(Exception e){
|
|
|
|
- boolean rootSymbol=false;//Whether url starts with a / or \
|
|
|
|
- switch(url.charAt(0)){
|
|
|
|
- case '/':case '\\':rootSymbol=true;
|
|
|
|
- }
|
|
|
|
- return new File("res"+(rootSymbol?"":"/")+url);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+package ui.view;
|
|
|
|
+
|
|
|
|
+import java.awt.Image;
|
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
|
+import java.io.File;
|
|
|
|
+import java.io.IOException;
|
|
|
|
+
|
|
|
|
+import javax.imageio.ImageIO;
|
|
|
|
+
|
|
|
|
+public class Util {
|
|
|
|
+ /**
|
|
|
|
+ * 30x30 pixel FileNotFound Icon, which can be shown without using I/O operations
|
|
|
|
+ */
|
|
|
|
+ static private Image defaultImage = createDefaultImage();
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * creates the default Image
|
|
|
|
+ * @return 30x30 Image, showing a red cross
|
|
|
|
+ */
|
|
|
|
+ private static Image createDefaultImage() {
|
|
|
|
+ BufferedImage def = new BufferedImage(30,30,BufferedImage.TYPE_BYTE_INDEXED);
|
|
|
|
+ for(int x = 0; x < 30; x++)
|
|
|
|
+ for(int y = 0; y < 30; y++){
|
|
|
|
+ if(x == 29 || y == 29)
|
|
|
|
+ //Border Bottom/Left -> Light Grey
|
|
|
|
+ def.setRGB(x, y, 13158600);
|
|
|
|
+ else if(x == 0 || y == 0)
|
|
|
|
+ //Border Top/Right -> Dark Grey
|
|
|
|
+ def.setRGB(x, y, 6316128);
|
|
|
|
+ else if((x == y || x == 31 - y) && 6 < x && x < 25)
|
|
|
|
+ //Red Cross in the middle
|
|
|
|
+ def.setRGB(x, y, 13107200);
|
|
|
|
+ else //all other Pixels are white
|
|
|
|
+ def.setRGB(x, y, 16777215);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return def;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ static Image loadImage(Object origin, String url, int w, int h, int scale){
|
|
|
|
+ return loadImage(origin,url).getScaledInstance(w, h, scale);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ static Image loadImage(Object origin, String url, int w, int h){
|
|
|
|
+ return loadImage(origin,url,w,h, Image.SCALE_SMOOTH);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ static Image loadImage(Object origin, String url){
|
|
|
|
+ try {
|
|
|
|
+ return ImageIO.read(loadFile(origin, url));
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ System.err.println("Warning: '" + url + "' loading failed!");
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return defaultImage;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ static File loadFile(Object origin, String url){
|
|
|
|
+ try{
|
|
|
|
+ return new File(origin.getClass().getResource(url).getFile());
|
|
|
|
+ }catch(Exception e){
|
|
|
|
+ boolean rootSymbol=false;//Whether url starts with a / or \
|
|
|
|
+ switch(url.charAt(0)){
|
|
|
|
+ case '/':case '\\':rootSymbol=true;
|
|
|
|
+ }
|
|
|
|
+ return new File("res"+(rootSymbol?"":"/")+url);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|