問題
JMP でユーザー インターフェイスを作成する場合、ディスプレイに背景色または前景色を追加したい場合があります。 ただし、JMP 15 の新しい macOS ダーク モードと Windows ハイ コントラスト モードのサポートにより、コンテンツを読みやすくするために、ユーザーがダークまたはライト アピアランス モードにあるかどうかを検出する方法が必要です。 たとえば、明るい色を背景色として設定したり、暗いモードで暗い前景色を設定したりすると、読みにくくなります。
解決
ユーザーが暗いモードか明るいモードかを検出するために、背景色の設定を確認できます。 背景色の輝度を計算することで、現在の OS が暗い外観モードで実行されているかどうかを一般的に把握できます。
/* 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" );
);
実際には、この関数をスクリプトの最初に呼び出して (または毎回呼び出して)、必要なときに使用できます。
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>