Skip to content

Commit

Permalink
transcoder: use KEY_PREFERS_COLOR_SCHEME in CSSTranscodingHelper'…
Browse files Browse the repository at this point in the history
…s dark mode
  • Loading branch information
carlosame committed Feb 2, 2025
1 parent 8dff200 commit 2cfc635
Showing 1 changed file with 23 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -224,11 +224,6 @@ public class CSSTranscodingHelper {
*/
private final Transcoder transcoder;

/**
* dark mode toggle.
*/
private boolean darkMode = false;

/**
* dark mode initial value for the CSS {@code color} property.
*/
Expand Down Expand Up @@ -263,11 +258,22 @@ public CSSTranscodingHelper(Transcoder trans) {

/**
* Enables or disables dark mode.
* <p>
* This method just sets the
* {@link SVGAbstractTranscoder#KEY_PREFERS_COLOR_SCHEME
* KEY_PREFERS_COLOR_SCHEME} transcoding hint.
* </p>
*
* @param darkMode if {@code true}, dark mode will be enabled.
*/
public void setDarkMode(boolean darkMode) {
this.darkMode = darkMode;
String pcs;
if (darkMode) {
pcs = "dark";
} else {
pcs = "light";
}
this.transcoder.addTranscodingHint(SVGAbstractTranscoder.KEY_PREFERS_COLOR_SCHEME, pcs);
}

/**
Expand Down Expand Up @@ -1097,6 +1103,8 @@ protected boolean isFontFamilyAvailable(String fontFamily) {

@Override
public CSSTypedValue getInitialColor() {
boolean darkMode = "dark".equalsIgnoreCase(
(String) transcoder.getTranscodingHints().get(SVGAbstractTranscoder.KEY_PREFERS_COLOR_SCHEME));
return darkMode ? darkmodeInitialColor : super.getInitialColor();
}

Expand Down Expand Up @@ -1224,7 +1232,15 @@ protected String getPointerAccuracy() {
*/
@Override
protected String getPrefersColorScheme() {
return darkMode ? "dark" : "light";
final String defPcs = "light";
String pcs;
try {
pcs = (String) transcoder.getTranscodingHints()
.getOrDefault(SVGAbstractTranscoder.KEY_PREFERS_COLOR_SCHEME, defPcs);
} catch (ClassCastException e) {
pcs = defPcs;
}
return pcs;
}

@Override
Expand Down

0 comments on commit 2cfc635

Please sign in to comment.