@@ -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