Problem
Beim Erstellen von Benutzeroberflächen in JMP möchten Sie Ihren Anzeigen möglicherweise einige Hintergrund- oder Vordergrundfarben hinzufügen. Mit der neuen Unterstützung von JMP 15 für macOS Dark Mode und Windows High Contrast Mode benötigen Sie jedoch eine Möglichkeit, um zu erkennen, ob sich der Benutzer in einem dunklen oder hellen Darstellungsmodus befindet, um lesbare Inhalte zu erhalten. Beispielsweise möchten Sie im Dunkelmodus keine helle Farbe als Hintergrundfarbe oder eine dunkle Vordergrundfarbe festlegen, da dies schwer lesbar wäre.
Lösung
Um zu erkennen, ob sich der Benutzer in einem dunklen oder hellen Modus befindet, können wir die Einstellung für die Hintergrundfarbe überprüfen. Durch die Berechnung der Leuchtdichte der Hintergrundfarbe können wir im Allgemeinen herausfinden, ob das aktuelle Betriebssystem in einem dunklen Darstellungsmodus ausgeführt wird.
/* Function: getCurrentAppearance
Returns the current appearance based on the background
color for reports, either 'Light' or 'Dark'.
*/
getCurrentAppearance = Function({},
{backgroundColor, hue, luminance, saturation},
backgroundColor = Arg( Arg( Get Preference( BackgroundColor ), 1 ), 1 );
{hue, luminance, saturation} = Color To HLS( backgroundColor );
If( luminance < 0.5, "Dark", "Light" );
);
In der Praxis können Sie diese Funktion am Anfang Ihres Skripts aufrufen (oder jedes Mal aufrufen) und bei Bedarf verwenden.
isLightMode = getCurrentAppearance() == "Light";
New Window("Appearance Mode",
Text Box("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
<<BACKGROUND color=""></BACKGROUND>