diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SVG.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SVG.java index 296616bce..302308485 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/SVG.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/SVG.java @@ -18,21 +18,17 @@ package org.jackhuang.hmcl.ui; import javafx.beans.value.ObservableValue; -import javafx.geometry.Pos; import javafx.scene.Group; import javafx.scene.Node; -import javafx.scene.layout.StackPane; import javafx.scene.paint.Paint; import javafx.scene.shape.SVGPath; -/** - * All vector icons used in the launcher. - *

- * Unless otherwise stated, - * these icons are from Material Symbols, - * with a style of outlined, a weight of 400, a grade of 0, and an optical size of 24 px. - * The view boxes of all icons are normalized to {@code 0 0 24 24}. - */ +/// All vector icons used in the launcher. +/// +/// Unless otherwise stated, +/// these icons are from Material Symbols, +/// with a style of outlined, a weight of 400, a grade of 0, and an optical size of 24 px. +/// The view boxes of all icons are normalized to `0 0 24 24`. public enum SVG { ADD("M11 13H5V11H11V5H13V11H19V13H13V19H11V13Z"), ADD_CIRCLE("M11 17H13V13H17V11H13V7H11V11H7V13H11V17ZM12 22Q9.925 22 8.1 21.2125T4.925 19.075Q3.575 17.725 2.7875 15.9T2 12Q2 9.925 2.7875 8.1T4.925 4.925Q6.275 3.575 8.1 2.7875T12 2Q14.075 2 15.9 2.7875T19.075 4.925Q20.425 6.275 21.2125 8.1T22 12Q22 14.075 21.2125 15.9T19.075 19.075Q17.725 20.425 15.9 21.2125T12 22ZM12 20Q15.35 20 17.675 17.675T20 12Q20 8.65 17.675 6.325T12 4Q8.65 4 6.325 6.325T4 12Q4 15.35 6.325 17.675T12 20ZM12 12Z"), @@ -145,38 +141,35 @@ public enum SVG { return path; } - private static Node createIcon(SVGPath path, double size) { - if (size < 0) { - StackPane pane = new StackPane(path); - pane.setAlignment(Pos.CENTER); - return pane; - } - - double scale = size / 24; - path.setScaleX(scale); - path.setScaleY(scale); - return new Group(path); - } - - public Node createIcon(double size) { - SVGPath p = new SVGPath(); + public SVGPath createSVGPath() { + var p = new SVGPath(); p.setContent(path); p.getStyleClass().add("svg"); - return createIcon(p, size); + return p; + } + + private static Node createIcon(SVGPath path, double size) { + if (size == DEFAULT_SIZE) + return path; + else { + double scale = size / DEFAULT_SIZE; + path.setScaleX(scale); + path.setScaleY(scale); + return new Group(path); + } } public Node createIcon() { - SVGPath p = new SVGPath(); - p.setContent(path); - p.getStyleClass().add("svg"); - return createIcon(p, -1); + return createIcon(DEFAULT_SIZE); + } + + public Node createIcon(double size) { + return createIcon(createSVGPath(), size); } public Node createIcon(ObservableValue color) { - SVGPath p = new SVGPath(); - p.setContent(path); - p.getStyleClass().add("svg"); + SVGPath p = createSVGPath(); p.fillProperty().bind(color); - return createIcon(p, -1); + return createIcon(p, DEFAULT_SIZE); } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedMenuItem.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedMenuItem.java index bf2ac0a31..ef95289ba 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedMenuItem.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/IconedMenuItem.java @@ -24,7 +24,7 @@ import org.jackhuang.hmcl.ui.SVG; public final class IconedMenuItem extends IconedItem { public IconedMenuItem(SVG icon, String text, Runnable action, JFXPopup popup) { - super(icon != null ? FXUtils.limitingSize(icon.createIcon(14), 14, 14) : null, text); + super(icon != null ? icon.createIcon(14) : null, text); getStyleClass().setAll("iconed-menu-item"); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaManagementPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaManagementPage.java index 90363c91c..56afeb5ce 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaManagementPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaManagementPage.java @@ -241,7 +241,7 @@ public final class JavaManagementPage extends ListPageBase { right.setAlignment(Pos.CENTER_RIGHT); { JFXButton revealButton = new JFXButton(); - revealButton.setGraphic(FXUtils.limitingSize(SVG.FOLDER_OPEN.createIcon(24), 24, 24)); + revealButton.setGraphic(SVG.FOLDER_OPEN.createIcon()); revealButton.getStyleClass().add("toggle-icon4"); revealButton.setOnAction(e -> { JavaRuntime java = getItem(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaRestorePage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaRestorePage.java index 1b3b4ebaa..065acd078 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaRestorePage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaRestorePage.java @@ -159,7 +159,7 @@ public final class JavaRestorePage extends ListPageBase skinnable.onReveal()); FXUtils.installFastTooltip(revealButton, i18n("reveal.in_file_manager")); @@ -168,7 +168,7 @@ public final class JavaRestorePage extends ListPageBase skinnable.onRemove()); FXUtils.installFastTooltip(removeButton, i18n("java.disabled.management.remove")); @@ -176,7 +176,7 @@ public final class JavaRestorePage extends ListPageBase skinnable.onRestore()); FXUtils.installFastTooltip(restoreButton, i18n("java.disabled.management.restore")); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListCell.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListCell.java index 7817092e1..a21f80ca5 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListCell.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/GameListCell.java @@ -115,7 +115,7 @@ public final class GameListCell extends ListCell { item.update(); }); btnUpgrade.getStyleClass().add("toggle-icon4"); - btnUpgrade.setGraphic(FXUtils.limitingSize(SVG.UPDATE.createIcon(24), 24, 24)); + btnUpgrade.setGraphic(SVG.UPDATE.createIcon()); FXUtils.installFastTooltip(btnUpgrade, i18n("version.update")); right.getChildren().add(btnUpgrade); @@ -127,7 +127,7 @@ public final class GameListCell extends ListCell { }); btnLaunch.getStyleClass().add("toggle-icon4"); BorderPane.setAlignment(btnLaunch, Pos.CENTER); - btnLaunch.setGraphic(FXUtils.limitingSize(SVG.ROCKET_LAUNCH.createIcon(24), 24, 24)); + btnLaunch.setGraphic(SVG.ROCKET_LAUNCH.createIcon()); FXUtils.installFastTooltip(btnLaunch, i18n("version.launch.test")); right.getChildren().add(btnLaunch); @@ -143,7 +143,7 @@ public final class GameListCell extends ListCell { }); btnManage.getStyleClass().add("toggle-icon4"); BorderPane.setAlignment(btnManage, Pos.CENTER); - btnManage.setGraphic(FXUtils.limitingSize(SVG.MORE_VERT.createIcon(24), 24, 24)); + btnManage.setGraphic(SVG.MORE_VERT.createIcon()); FXUtils.installFastTooltip(btnManage, i18n("settings.game.management")); right.getChildren().add(btnManage); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java index ba17e0e2b..685dab2c8 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/ModListPageSkin.java @@ -580,15 +580,15 @@ final class ModListPageSkin extends SkinBase { imageView.setImage(VersionIconType.COMMAND.getIcon()); restoreButton.getStyleClass().add("toggle-icon4"); - restoreButton.setGraphic(FXUtils.limitingSize(SVG.RESTORE.createIcon(24), 24, 24)); + restoreButton.setGraphic(SVG.RESTORE.createIcon()); FXUtils.installFastTooltip(restoreButton, i18n("mods.restore")); revealButton.getStyleClass().add("toggle-icon4"); - revealButton.setGraphic(FXUtils.limitingSize(SVG.FOLDER.createIcon(24), 24, 24)); + revealButton.setGraphic(SVG.FOLDER.createIcon()); infoButton.getStyleClass().add("toggle-icon4"); - infoButton.setGraphic(FXUtils.limitingSize(SVG.INFO.createIcon(24), 24, 24)); + infoButton.setGraphic(SVG.INFO.createIcon()); container.getChildren().setAll(checkBox, imageView, content, restoreButton, revealButton, infoButton);