問題
在 JMP 中創建用戶界面時,您可能希望為顯示添加一些背景色或前景色。 但是,隨著 JMP 15 對 macOS 深色模式和 Windows 高對比度模式的新支持,您需要一種方法來檢測用戶是處於深色還是淺色外觀模式,以便獲得清晰的內容。 例如,您不希望在深色模式下將淺色設置為背景色或深色前景色,因為這樣會難以閱讀。
解決方案
要檢測用戶是處於深色模式還是淺色模式,我們可以檢查背景顏色首選項。 通過計算背景顏色的亮度,我們大致可以判斷出當前操作系統是否運行在深色外觀模式下。
/* 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>