diff --git a/platform/editor-ui-api/src/com/intellij/ide/ui/DaltonizationFilter.java b/platform/editor-ui-api/src/com/intellij/ide/ui/DaltonizationFilter.java index d05917088c67..ba14a9d5de9a 100644 --- a/platform/editor-ui-api/src/com/intellij/ide/ui/DaltonizationFilter.java +++ b/platform/editor-ui-api/src/com/intellij/ide/ui/DaltonizationFilter.java @@ -3,6 +3,13 @@ package com.intellij.ide.ui; import java.awt.image.ImageFilter; final class DaltonizationFilter extends WeightFilter { + public static ImageFilter get(ColorBlindness blindness) { + if (blindness == ColorBlindness.protanopia) return protanopia; + if (blindness == ColorBlindness.deuteranopia) return deuteranopia; + if (blindness == ColorBlindness.tritanopia) return tritanopia; + return null; + } + public static final ImageFilter protanopia = forProtanopia(null); public static final ImageFilter deuteranopia = forDeuteranopia(null); public static final ImageFilter tritanopia = forTritanopia(null); diff --git a/platform/editor-ui-api/src/com/intellij/ide/ui/MatrixFilter.java b/platform/editor-ui-api/src/com/intellij/ide/ui/MatrixFilter.java index f380672ce31f..13aea6ee9393 100644 --- a/platform/editor-ui-api/src/com/intellij/ide/ui/MatrixFilter.java +++ b/platform/editor-ui-api/src/com/intellij/ide/ui/MatrixFilter.java @@ -95,6 +95,13 @@ final class MatrixFilter extends WeightFilter { TRITANOPIA_CORRECTION = Matrix.create(3, 1, 0, 0, 0, 1, 0, .7, .7, 1); } + public static ImageFilter get(ColorBlindness blindness) { + if (blindness == ColorBlindness.protanopia) return protanopia; + if (blindness == ColorBlindness.deuteranopia) return deuteranopia; + if (blindness == ColorBlindness.tritanopia) return tritanopia; + return null; + } + public static final ImageFilter protanopia = forProtanopia(null, true); public static final ImageFilter deuteranopia = forDeuteranopia(null, true); public static final ImageFilter tritanopia = forTritanopia(null, true); diff --git a/platform/editor-ui-api/src/com/intellij/ide/ui/SimulationFilter.java b/platform/editor-ui-api/src/com/intellij/ide/ui/SimulationFilter.java index f2b3d6942480..8a93c8d64e18 100644 --- a/platform/editor-ui-api/src/com/intellij/ide/ui/SimulationFilter.java +++ b/platform/editor-ui-api/src/com/intellij/ide/ui/SimulationFilter.java @@ -3,6 +3,14 @@ package com.intellij.ide.ui; import java.awt.image.ImageFilter; final class SimulationFilter extends WeightFilter { + public static ImageFilter get(ColorBlindness blindness) { + if (blindness == ColorBlindness.protanopia) return protanopia; + if (blindness == ColorBlindness.deuteranopia) return deuteranopia; + if (blindness == ColorBlindness.tritanopia) return tritanopia; + if (blindness == ColorBlindness.achromatopsia) return achromatopsia; + return null; + } + public static final ImageFilter protanopia = forProtanopia(null); public static final ImageFilter deuteranopia = forDeuteranopia(null); public static final ImageFilter tritanopia = forTritanopia(null); diff --git a/platform/editor-ui-api/src/com/intellij/ide/ui/UISettings.java b/platform/editor-ui-api/src/com/intellij/ide/ui/UISettings.java index 947ae2dbc7c6..b6ccede3ea81 100644 --- a/platform/editor-ui-api/src/com/intellij/ide/ui/UISettings.java +++ b/platform/editor-ui-api/src/com/intellij/ide/ui/UISettings.java @@ -27,6 +27,7 @@ import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SimpleModificationTracker; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.util.registry.Registry; import com.intellij.util.EventDispatcher; import com.intellij.util.PlatformUtils; import com.intellij.util.SystemProperties; @@ -41,7 +42,6 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; -import java.util.Map; import static com.intellij.util.ui.UIUtil.isValidFont; @@ -171,13 +171,9 @@ public class UISettings extends SimpleModificationTracker implements PersistentS incModificationCount(); myDispatcher.getMulticaster().uiSettingsChanged(this); ApplicationManager.getApplication().getMessageBus().syncPublisher(UISettingsListener.TOPIC).uiSettingsChanged(this); - IconLoader.setFilter(COLOR_BLINDNESS == ColorBlindness.protanopia - ? DaltonizationFilter.protanopia - : COLOR_BLINDNESS == ColorBlindness.deuteranopia - ? DaltonizationFilter.deuteranopia - : COLOR_BLINDNESS == ColorBlindness.tritanopia - ? DaltonizationFilter.tritanopia - : null); + IconLoader.setFilter(Registry.is("color.blindness.daltonization") + ? DaltonizationFilter.get(COLOR_BLINDNESS) + : MatrixFilter.get(COLOR_BLINDNESS)); } public void removeUISettingsListener(UISettingsListener listener) { diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index cc338814ad06..0ad683412ff7 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -43,6 +43,7 @@ actionSystem.enableAbbreviations=true actionSystem.extendedKeyCode.disabled=false color.blindness.icon.filter=false +color.blindness.daltonization=false ide.debugMode=false