|
18 | 18 | import org.w3c.css.util.Util; |
19 | 19 |
|
20 | 20 | public class RGB { |
| 21 | + static final String functionname = "rgb"; |
21 | 22 |
|
22 | 23 | private String output = null; |
23 | 24 | private boolean percent = false; |
@@ -48,6 +49,22 @@ public final void setRed(ApplContext ac, CssValue val) |
48 | 49 | nv = nb; |
49 | 50 | } |
50 | 51 | } |
| 52 | + } else if (val.getType() == CssTypes.CSS_PERCENTAGE) { |
| 53 | + CssCheckableValue v = val.getCheckableValue(); |
| 54 | + if (!v.warnPositiveness(ac, "RGB")) { |
| 55 | + CssNumber nb = new CssNumber(); |
| 56 | + nb.setIntValue(0); |
| 57 | + nv = nb; |
| 58 | + } |
| 59 | + if (val.getRawType() == CssTypes.CSS_NUMBER) { |
| 60 | + float p = ((CssNumber) val).getValue(); |
| 61 | + if (p > 100.) { |
| 62 | + ac.getFrame().addWarning("out-of-range", Util.displayFloat(p)); |
| 63 | + CssNumber nb = new CssNumber(); |
| 64 | + nb.setIntValue(100); |
| 65 | + nv = nb; |
| 66 | + } |
| 67 | + } |
51 | 68 | } |
52 | 69 | } |
53 | 70 | vr = nv; |
@@ -77,6 +94,22 @@ public final void setGreen(ApplContext ac, CssValue val) |
77 | 94 | nv = nb; |
78 | 95 | } |
79 | 96 | } |
| 97 | + } else if (val.getType() == CssTypes.CSS_PERCENTAGE) { |
| 98 | + CssCheckableValue v = val.getCheckableValue(); |
| 99 | + if (!v.warnPositiveness(ac, "RGB")) { |
| 100 | + CssNumber nb = new CssNumber(); |
| 101 | + nb.setIntValue(0); |
| 102 | + nv = nb; |
| 103 | + } |
| 104 | + if (val.getRawType() == CssTypes.CSS_NUMBER) { |
| 105 | + float p = ((CssNumber) val).getValue(); |
| 106 | + if (p > 100.) { |
| 107 | + ac.getFrame().addWarning("out-of-range", Util.displayFloat(p)); |
| 108 | + CssNumber nb = new CssNumber(); |
| 109 | + nb.setIntValue(100); |
| 110 | + nv = nb; |
| 111 | + } |
| 112 | + } |
80 | 113 | } |
81 | 114 | } |
82 | 115 | vg = nv; |
@@ -107,6 +140,22 @@ public final void setBlue(ApplContext ac, CssValue val) |
107 | 140 | nv = nb; |
108 | 141 | } |
109 | 142 | } |
| 143 | + } else if (val.getType() == CssTypes.CSS_PERCENTAGE) { |
| 144 | + CssCheckableValue v = val.getCheckableValue(); |
| 145 | + if (!v.warnPositiveness(ac, "RGB")) { |
| 146 | + CssNumber nb = new CssNumber(); |
| 147 | + nb.setIntValue(0); |
| 148 | + nv = nb; |
| 149 | + } |
| 150 | + if (val.getRawType() == CssTypes.CSS_NUMBER) { |
| 151 | + float p = ((CssNumber) val).getValue(); |
| 152 | + if (p > 100.) { |
| 153 | + ac.getFrame().addWarning("out-of-range", Util.displayFloat(p)); |
| 154 | + CssNumber nb = new CssNumber(); |
| 155 | + nb.setIntValue(100); |
| 156 | + nv = nb; |
| 157 | + } |
| 158 | + } |
110 | 159 | } |
111 | 160 | } |
112 | 161 | vb = nv; |
@@ -168,7 +217,7 @@ protected void setRepresentationString(String s) { |
168 | 217 | */ |
169 | 218 | public String toString() { |
170 | 219 | if (output == null) { |
171 | | - StringBuilder sb = new StringBuilder("rgb("); |
| 220 | + StringBuilder sb = new StringBuilder(functionname).append('('); |
172 | 221 | if (isPercent()) { |
173 | 222 | sb.append(vr).append("%, "); |
174 | 223 | sb.append(vg).append("%, "); |
|
0 commit comments