From 64b1408b96d1ca115f705c8ec59c3bc4c1e82780 Mon Sep 17 00:00:00 2001 From: Joseph Burton Date: Thu, 16 Oct 2025 18:26:55 +0100 Subject: Color unobfuscated tokens in blue (#569) --- .../src/main/java/cuchaz/enigma/gui/config/Themes.java | 3 ++- .../src/main/java/cuchaz/enigma/gui/config/UiConfig.java | 16 ++++++++++++++++ .../java/cuchaz/enigma/source/DecompiledClassSource.java | 13 ++++++++++++- .../java/cuchaz/enigma/source/RenamableTokenType.java | 3 ++- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java index d2a6608c..b8a72c5e 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/Themes.java @@ -89,7 +89,8 @@ public class Themes { return Map.of( RenamableTokenType.OBFUSCATED, BoxHighlightPainter.create(UiConfig.getObfuscatedColor(), UiConfig.getObfuscatedOutlineColor()), RenamableTokenType.PROPOSED, BoxHighlightPainter.create(UiConfig.getProposedColor(), UiConfig.getProposedOutlineColor()), - RenamableTokenType.DEOBFUSCATED, BoxHighlightPainter.create(UiConfig.getDeobfuscatedColor(), UiConfig.getDeobfuscatedOutlineColor()) + RenamableTokenType.DEOBFUSCATED, BoxHighlightPainter.create(UiConfig.getDeobfuscatedColor(), UiConfig.getDeobfuscatedOutlineColor()), + RenamableTokenType.UNOBFUSCATED, BoxHighlightPainter.create(UiConfig.getUnobfuscatedColor(), UiConfig.getUnobfuscatedOutlineColor()) ); } diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/UiConfig.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/UiConfig.java index ecd17f28..f0117ee8 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/config/UiConfig.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/config/UiConfig.java @@ -151,6 +151,14 @@ public final class UiConfig { return getThemeColorRgba("Deobfuscated Outline"); } + public static Color getUnobfuscatedColor() { + return getThemeColorRgba("Unobfuscated"); + } + + public static Color getUnobfuscatedOutlineColor() { + return getThemeColorRgba("Unobfuscated Outline"); + } + public static Color getEditorBackgroundColor() { return getThemeColorRgb("Editor Background"); } @@ -385,6 +393,10 @@ public final class UiConfig { s.setIfAbsentDouble("Deobfuscated Alpha", 1.0); s.setIfAbsentRgbColor("Deobfuscated Outline", 0x50A050); s.setIfAbsentDouble("Deobfuscated Outline Alpha", 1.0); + s.setIfAbsentRgbColor("Unobfuscated", 0x7FAAFF); + s.setIfAbsentDouble("Unobfuscated Alpha", 1.0); + s.setIfAbsentRgbColor("Unobfuscated Outline", 0x183060); + s.setIfAbsentDouble("Unobfuscated Outline Alpha", 1.0); s.setIfAbsentRgbColor("Editor Background", 0xFFFFFF); s.setIfAbsentRgbColor("Highlight", 0x3333EE); s.setIfAbsentRgbColor("Caret", 0x000000); @@ -413,6 +425,10 @@ public final class UiConfig { s.setIfAbsentDouble("Deobfuscated Alpha", 0.3); s.setIfAbsentRgbColor("Deobfuscated Outline", 0x50FA7B); s.setIfAbsentDouble("Deobfuscated Outline Alpha", 0.5); + s.setIfAbsentRgbColor("Unobfuscated", 0x3794FF); + s.setIfAbsentDouble("Unobfuscated Alpha", 0.3); + s.setIfAbsentRgbColor("Unobfuscated Outline", 0x3794FF); + s.setIfAbsentDouble("Unobfuscated Outline Alpha", 0.5); s.setIfAbsentRgbColor("Editor Background", 0x282A36); s.setIfAbsentRgbColor("Highlight", 0xFF79C6); s.setIfAbsentRgbColor("Caret", 0xF8F8F2); diff --git a/enigma/src/main/java/cuchaz/enigma/source/DecompiledClassSource.java b/enigma/src/main/java/cuchaz/enigma/source/DecompiledClassSource.java index 4f78e9ce..69692db0 100644 --- a/enigma/src/main/java/cuchaz/enigma/source/DecompiledClassSource.java +++ b/enigma/src/main/java/cuchaz/enigma/source/DecompiledClassSource.java @@ -12,6 +12,7 @@ import cuchaz.enigma.EnigmaProject; import cuchaz.enigma.EnigmaServices; import cuchaz.enigma.analysis.EntryReference; import cuchaz.enigma.api.service.NameProposalService; +import cuchaz.enigma.api.service.ObfuscationTestService; import cuchaz.enigma.translation.LocalNameGenerator; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.Translator; @@ -72,7 +73,11 @@ public class DecompiledClassSource { return proposedName.get(); } - target.add(RenamableTokenType.OBFUSCATED, movedToken); + if (isUnobfuscated(project, entry)) { + target.add(RenamableTokenType.UNOBFUSCATED, movedToken); + } else { + target.add(RenamableTokenType.OBFUSCATED, movedToken); + } } } @@ -96,6 +101,12 @@ public class DecompiledClassSource { }).findFirst(); } + private static boolean isUnobfuscated(EnigmaProject project, Entry entry) { + EnigmaServices services = project.getEnigma().getServices(); + + return services.get(ObfuscationTestService.TYPE).stream().anyMatch(service -> service.testDeobfuscated(entry)); + } + @Nullable private String generateDefaultName(Entry entry) { if (entry instanceof LocalVariableDefEntry) { diff --git a/enigma/src/main/java/cuchaz/enigma/source/RenamableTokenType.java b/enigma/src/main/java/cuchaz/enigma/source/RenamableTokenType.java index c63aad91..aad3ada9 100644 --- a/enigma/src/main/java/cuchaz/enigma/source/RenamableTokenType.java +++ b/enigma/src/main/java/cuchaz/enigma/source/RenamableTokenType.java @@ -3,5 +3,6 @@ package cuchaz.enigma.source; public enum RenamableTokenType { OBFUSCATED, DEOBFUSCATED, - PROPOSED + PROPOSED, + UNOBFUSCATED, } -- cgit v1.2.3