Skip to content

Commit 8b4c826

Browse files
committed
static accessor for CssColor function mapping
1 parent f5ba85d commit 8b4c826

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

org/w3c/css/values/CssColor.java

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,63 @@ private void __setRGBAColor(ApplContext ac, CssExpression exp, RGBA rgba)
487487
}
488488
}
489489

490+
/**
491+
* parse a color function based on its name.
492+
* @param ac
493+
* @param exp
494+
* @param function_name
495+
* @return a CssColor instance or null
496+
* @throws InvalidParamException
497+
*/
498+
public static CssColor parseColorFunction(ApplContext ac, CssExpression exp, String function_name)
499+
throws InvalidParamException {
500+
if (function_name != null) {
501+
CssColor color = new CssColor();
502+
switch (function_name) {
503+
case "rgb(":
504+
color.setRGBColor(ac, exp);
505+
break;
506+
case "rgba(":
507+
color.setRGBAColor(ac, exp);
508+
break;
509+
case "hsl(":
510+
color.setHSLColor(ac, exp);
511+
break;
512+
case "hsla(":
513+
color.setHSLAColor(ac, exp);
514+
break;
515+
case "hwb(":
516+
color.setHWBColor(ac, exp);
517+
break;
518+
case "lab(":
519+
color.setLABColor(ac, exp);
520+
break;
521+
case "lch(":
522+
color.setLCHColor(ac, exp);
523+
break;
524+
case "oklab(":
525+
color.setOKLABColor(ac, exp);
526+
break;
527+
case "oklch(":
528+
color.setOKLCHColor(ac, exp);
529+
break;
530+
case "device-cmyk(":
531+
color.setDeviceCMYKColor(ac, exp);
532+
break;
533+
case "light-dark(":
534+
color.setLightDark(ac, exp);
535+
break;
536+
case "color-mix(":
537+
color.setColorMix(ac, exp);
538+
break;
539+
default:
540+
throw new InvalidParamException("invalid-color", ac);
541+
}
542+
return color;
543+
}
544+
return null;
545+
}
546+
490547
public void setHWBColor(ApplContext ac, CssExpression exp)
491548
throws InvalidParamException {
492549
hwb = HWB.parseHWBColor(ac, exp, this);

0 commit comments

Comments
 (0)