Functions that create and access a "switchable-color" object that automatically switches between dark mode and light mode when used as a color by CAPI or Graphics Ports.
color
create-light-dark-switchable-color light-mode-color dark-mode-color => switchable-color
light-dark-switchable-color-p object => boolean
light-dark-switchable-color-light-color switchable-color => color-specifier
light-dark-switchable-color-dark-color switchable-color => color-specifier
light-dark-switchable-color-set-colors switchable-color new-light-mode-color new-dark-mode-color
|
Color specifications. | |
| object⇩ |
A Lisp object. |
| switchable-color⇩ |
An object that was created by create-light-dark-switchable-color. |
|
Color specifications or nil. | |
| switchable-color |
An opaque object that can be used as color. |
| boolean |
A boolean. |
| color-specifier |
A color specification or a color name. |
The function create-light-dark-switchable-color creates a "switchable-color" object that can be used where CAPI or Graphics Ports functions require a color. The "switchable-color" object uses light-mode-color when the screen is in light mode, and dark-mode-color when the screen is in dark mode.
light-mode-color and dark-mode-color can be anything that can be interpreted as color, that is either a color spec or a color name. See 15 The Color System for details.
The function light-dark-switchable-color-p returns true if object is a "switchable-color" object created by create-light-dark-switchable-color and false otherwise.
The functions light-dark-switchable-color-light-color and light-dark-switchable-color-dark-color return the light mode color and dark mode color respectively of their argument switchable-color.
The function light-dark-switchable-color-set-colors can be used to set the colors of a "switchable-color" object. Either new-light-mode-color or new-dark-mode-color may be nil, in which case the corresponding color does not change. Note that light-dark-switchable-color-set-colors does not force a redisplay of anything that is using the color, so if you want to see the change on the screen then you have to force a redisplay of the users. Use redisplay-element for output-panes and pinboard-objects and set the relevant color again using (setf simple-pane-foreground) or (setf simple-pane-background) for other panes.
Creating display pane that uses different colors in different modes:
(let ((background (color:create-light-dark-switchable-color
:lightcyan :navy))
(foreground (color:create-light-dark-switchable-color
:black :white)))
(capi:contain (make-instance 'capi:display-pane
:text "A pane with switchable color"
:foreground foreground
:background background)))
CAPI User Guide and Reference Manual (Unix version) - 18 Feb 2025 15:34:47