
w3c.css.values.LCH Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cssvalidator Show documentation
Show all versions of cssvalidator Show documentation
Backend for the W3C CSS Validation Service
//
// Author: Yves Lafon
//
// (c) COPYRIGHT MIT, ERCIM, Keio University, Beihang University 2018.
// Please first read the full copyright statement in file COPYRIGHT.html
//
package org.w3c.css.values;
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import java.math.BigDecimal;
public class LCH {
String output = null;
CssValue vl, vc, vh, alpha;
boolean faSet = false;
/**
* Create a new LCH
*/
public LCH() {
}
public static final CssValue filterC(ApplContext ac, CssValue val)
throws InvalidParamException {
if (val.getRawType() == CssTypes.CSS_CALC) {
// TODO add warning about uncheckability
// might need to extend...
} else {
if (val.getType() == CssTypes.CSS_NUMBER) {
CssCheckableValue v = val.getCheckableValue();
if (!v.isPositive()) {
ac.getFrame().addWarning("out-of-range", val.toString());
CssNumber nb = new CssNumber();
nb.setValue(BigDecimal.ZERO);
return nb;
}
}
}
return val;
}
public static final CssValue filterH(ApplContext ac, CssValue val)
throws InvalidParamException {
if (val.getRawType() == CssTypes.CSS_CALC) {
// TODO add warning about uncheckability
// might need to extend...
} else {
if (val.getType() == CssTypes.CSS_NUMBER) {
CssCheckableValue v = val.getCheckableValue();
if (!v.isPositive()) {
ac.getFrame().addWarning("out-of-range", val.toString());
CssNumber nb = new CssNumber();
nb.setIntValue(0);
return nb;
}
if (val.getRawType() == CssTypes.CSS_NUMBER) {
BigDecimal pp = ((CssNumber) val).value;
if (pp.compareTo(CssAngle.deg360) > 0) {
ac.getFrame().addWarning("out-of-range", val.toString());
CssNumber nb = new CssNumber();
nb.setValue(CssAngle.deg360);
return nb;
}
}
}
}
return val;
}
public final void setL(ApplContext ac, CssValue val)
throws InvalidParamException {
output = null;
vl = LAB.filterL(ac, val);
}
public final void setC(ApplContext ac, CssValue val)
throws InvalidParamException {
output = null;
vc = filterC(ac, val);
}
public final void setH(ApplContext ac, CssValue val)
throws InvalidParamException {
output = null;
vh = filterH(ac, val);
}
public final void setAlpha(ApplContext ac, CssValue val)
throws InvalidParamException {
output = null;
faSet = true;
alpha = RGBA.filterAlpha(ac, val);
}
public boolean equals(LCH other) {
if (other != null) {
return (vl.equals(other.vl) && vc.equals(other.vc) && vh.equals(other.vh) &&
((alpha == null && other.alpha == null) || (alpha != null && alpha.equals(other.alpha))));
}
return false;
}
/**
* Returns a string representation of the object.
*/
public String toString() {
if (output == null) {
StringBuilder sb = new StringBuilder("lch(");
sb.append(vl).append(' ');
sb.append(vc).append(' ');
sb.append(vh);
if (faSet) {
sb.append(" / ").append(alpha);
}
sb.append(')');
output = sb.toString();
}
return output;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy