From cb338dd7e6ab834a1446b65ea9adcc47b233217b Mon Sep 17 00:00:00 2001
From: Juuxel
Date: Sat, 20 Mar 2021 14:02:47 +0200
Subject: Switch to SVG icons instead of PNGs and add icon for records
The PNG icons scaled horribly on FlatLaf but these ones look smooth on any scaling level.
Note: even though the icons are FlatSVGIcons from FlatLaf, they work properly on all LaFs
if the FlatLaf UI scale property is set to the correct value (which
LookAndFeel.setGlobalLAF does).
---
.../java/cuchaz/enigma/gui/config/LookAndFeel.java | 1 +
.../main/java/cuchaz/enigma/gui/util/GuiUtil.java | 20 ++--
.../src/main/resources/icons/annotation.png | Bin 877 -> 0 bytes
.../src/main/resources/icons/annotation.svg | 112 ++++++++++++++++++++
enigma-swing/src/main/resources/icons/class.png | Bin 768 -> 0 bytes
enigma-swing/src/main/resources/icons/class.svg | 88 ++++++++++++++++
.../src/main/resources/icons/constructor.png | Bin 751 -> 0 bytes
.../src/main/resources/icons/constructor.svg | 113 +++++++++++++++++++++
enigma-swing/src/main/resources/icons/enum.png | Bin 506 -> 0 bytes
enigma-swing/src/main/resources/icons/enum.svg | 88 ++++++++++++++++
enigma-swing/src/main/resources/icons/field.png | Bin 534 -> 0 bytes
enigma-swing/src/main/resources/icons/field.svg | 88 ++++++++++++++++
.../src/main/resources/icons/interface.png | Bin 538 -> 0 bytes
.../src/main/resources/icons/interface.svg | 88 ++++++++++++++++
enigma-swing/src/main/resources/icons/method.png | Bin 633 -> 0 bytes
enigma-swing/src/main/resources/icons/method.svg | 113 +++++++++++++++++++++
enigma-swing/src/main/resources/icons/record.svg | 88 ++++++++++++++++
17 files changed, 786 insertions(+), 13 deletions(-)
delete mode 100644 enigma-swing/src/main/resources/icons/annotation.png
create mode 100644 enigma-swing/src/main/resources/icons/annotation.svg
delete mode 100644 enigma-swing/src/main/resources/icons/class.png
create mode 100644 enigma-swing/src/main/resources/icons/class.svg
delete mode 100644 enigma-swing/src/main/resources/icons/constructor.png
create mode 100644 enigma-swing/src/main/resources/icons/constructor.svg
delete mode 100644 enigma-swing/src/main/resources/icons/enum.png
create mode 100644 enigma-swing/src/main/resources/icons/enum.svg
delete mode 100644 enigma-swing/src/main/resources/icons/field.png
create mode 100644 enigma-swing/src/main/resources/icons/field.svg
delete mode 100644 enigma-swing/src/main/resources/icons/interface.png
create mode 100644 enigma-swing/src/main/resources/icons/interface.svg
delete mode 100644 enigma-swing/src/main/resources/icons/method.png
create mode 100644 enigma-swing/src/main/resources/icons/method.svg
create mode 100644 enigma-swing/src/main/resources/icons/record.svg
(limited to 'enigma-swing/src')
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java
index e21ef52c..3edc87a2 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/LookAndFeel.java
@@ -36,6 +36,7 @@ public enum LookAndFeel {
public void setGlobalLAF() {
// Configure FlatLaf's UI scale to be our scale factor.
+ // This is also used for the SVG icons, so it applies even when some other LaF is active.
System.setProperty(FlatSystemProperties.UI_SCALE, Float.toString(ScaleUtil.getScaleFactor()));
try {
diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java
index 1a86148d..60414f99 100644
--- a/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java
+++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/util/GuiUtil.java
@@ -1,19 +1,18 @@
package cuchaz.enigma.gui.util;
+import com.formdev.flatlaf.extras.FlatSVGIcon;
import cuchaz.enigma.gui.Gui;
import cuchaz.enigma.translation.representation.AccessFlags;
import cuchaz.enigma.translation.representation.entry.ClassEntry;
import cuchaz.enigma.translation.representation.entry.MethodEntry;
import cuchaz.enigma.utils.Os;
-import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.font.TextAttribute;
import java.io.IOException;
-import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
@@ -23,6 +22,7 @@ public class GuiUtil {
public static final Icon INTERFACE_ICON = loadIcon("interface");
public static final Icon ENUM_ICON = loadIcon("enum");
public static final Icon ANNOTATION_ICON = loadIcon("annotation");
+ public static final Icon RECORD_ICON = loadIcon("record");
public static final Icon METHOD_ICON = loadIcon("method");
public static final Icon FIELD_ICON = loadIcon("field");
public static final Icon CONSTRUCTOR_ICON = loadIcon("constructor");
@@ -79,15 +79,9 @@ public class GuiUtil {
}
public static Icon loadIcon(String name) {
- try {
- InputStream inputStream = GuiUtil.class.getResourceAsStream("/icons/" + name + ".png");
- Image image = ImageIO.read(inputStream).getScaledInstance(ScaleUtil.scale(16), ScaleUtil.scale(16), Image.SCALE_DEFAULT);
- return new ImageIcon(image);
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- return null;
+ // Note: the width and height are scaled automatically because the FlatLaf UI scale
+ // is set in LookAndFeel.setGlobalLAF()
+ return new FlatSVGIcon("icons/" + name + ".svg", 16, 16, GuiUtil.class.getClassLoader());
}
public static Icon getClassIcon(Gui gui, ClassEntry entry) {
@@ -100,9 +94,9 @@ public class GuiUtil {
return INTERFACE_ICON;
} else if (access.isEnum()) {
return ENUM_ICON;
+ } else if (access.isRecord()) {
+ return RECORD_ICON;
}
-
- // TODO: Record icon?
}
return CLASS_ICON;
diff --git a/enigma-swing/src/main/resources/icons/annotation.png b/enigma-swing/src/main/resources/icons/annotation.png
deleted file mode 100644
index 9589a67e..00000000
Binary files a/enigma-swing/src/main/resources/icons/annotation.png and /dev/null differ
diff --git a/enigma-swing/src/main/resources/icons/annotation.svg b/enigma-swing/src/main/resources/icons/annotation.svg
new file mode 100644
index 00000000..b6855571
--- /dev/null
+++ b/enigma-swing/src/main/resources/icons/annotation.svg
@@ -0,0 +1,112 @@
+
+
diff --git a/enigma-swing/src/main/resources/icons/class.png b/enigma-swing/src/main/resources/icons/class.png
deleted file mode 100644
index 17d82ecd..00000000
Binary files a/enigma-swing/src/main/resources/icons/class.png and /dev/null differ
diff --git a/enigma-swing/src/main/resources/icons/class.svg b/enigma-swing/src/main/resources/icons/class.svg
new file mode 100644
index 00000000..bd76406d
--- /dev/null
+++ b/enigma-swing/src/main/resources/icons/class.svg
@@ -0,0 +1,88 @@
+
+
diff --git a/enigma-swing/src/main/resources/icons/constructor.png b/enigma-swing/src/main/resources/icons/constructor.png
deleted file mode 100644
index 3728b554..00000000
Binary files a/enigma-swing/src/main/resources/icons/constructor.png and /dev/null differ
diff --git a/enigma-swing/src/main/resources/icons/constructor.svg b/enigma-swing/src/main/resources/icons/constructor.svg
new file mode 100644
index 00000000..8dd8f679
--- /dev/null
+++ b/enigma-swing/src/main/resources/icons/constructor.svg
@@ -0,0 +1,113 @@
+
+
diff --git a/enigma-swing/src/main/resources/icons/enum.png b/enigma-swing/src/main/resources/icons/enum.png
deleted file mode 100644
index b64dc829..00000000
Binary files a/enigma-swing/src/main/resources/icons/enum.png and /dev/null differ
diff --git a/enigma-swing/src/main/resources/icons/enum.svg b/enigma-swing/src/main/resources/icons/enum.svg
new file mode 100644
index 00000000..25eaf0bb
--- /dev/null
+++ b/enigma-swing/src/main/resources/icons/enum.svg
@@ -0,0 +1,88 @@
+
+
diff --git a/enigma-swing/src/main/resources/icons/field.png b/enigma-swing/src/main/resources/icons/field.png
deleted file mode 100644
index 4ac1aab9..00000000
Binary files a/enigma-swing/src/main/resources/icons/field.png and /dev/null differ
diff --git a/enigma-swing/src/main/resources/icons/field.svg b/enigma-swing/src/main/resources/icons/field.svg
new file mode 100644
index 00000000..6a89f3a8
--- /dev/null
+++ b/enigma-swing/src/main/resources/icons/field.svg
@@ -0,0 +1,88 @@
+
+
diff --git a/enigma-swing/src/main/resources/icons/interface.png b/enigma-swing/src/main/resources/icons/interface.png
deleted file mode 100644
index fc2bfe56..00000000
Binary files a/enigma-swing/src/main/resources/icons/interface.png and /dev/null differ
diff --git a/enigma-swing/src/main/resources/icons/interface.svg b/enigma-swing/src/main/resources/icons/interface.svg
new file mode 100644
index 00000000..750e8125
--- /dev/null
+++ b/enigma-swing/src/main/resources/icons/interface.svg
@@ -0,0 +1,88 @@
+
+
diff --git a/enigma-swing/src/main/resources/icons/method.png b/enigma-swing/src/main/resources/icons/method.png
deleted file mode 100644
index e4e96797..00000000
Binary files a/enigma-swing/src/main/resources/icons/method.png and /dev/null differ
diff --git a/enigma-swing/src/main/resources/icons/method.svg b/enigma-swing/src/main/resources/icons/method.svg
new file mode 100644
index 00000000..751ea55d
--- /dev/null
+++ b/enigma-swing/src/main/resources/icons/method.svg
@@ -0,0 +1,113 @@
+
+
diff --git a/enigma-swing/src/main/resources/icons/record.svg b/enigma-swing/src/main/resources/icons/record.svg
new file mode 100644
index 00000000..32f2e5f0
--- /dev/null
+++ b/enigma-swing/src/main/resources/icons/record.svg
@@ -0,0 +1,88 @@
+
+
--
cgit v1.2.3