16
16
import org .w3c .css .util .ApplContext ;
17
17
import org .w3c .css .util .InvalidParamException ;
18
18
19
+ import java .math .BigDecimal ;
20
+
19
21
public class RGBA extends RGB {
20
22
static final String functionname = "rgba" ;
21
23
@@ -24,10 +26,8 @@ public class RGBA extends RGB {
24
26
25
27
CssValue va ;
26
28
27
- public final void setAlpha (ApplContext ac , CssValue val )
29
+ public static final CssValue filterAlpha (ApplContext ac , CssValue val )
28
30
throws InvalidParamException {
29
- CssValue nv = val ;
30
- output = null ;
31
31
if (val .getRawType () == CssTypes .CSS_CALC ) {
32
32
// TODO add warning about uncheckability
33
33
// might need to extend...
@@ -38,15 +38,15 @@ public final void setAlpha(ApplContext ac, CssValue val)
38
38
ac .getFrame ().addWarning ("out-of-range" , val .toString ());
39
39
CssNumber nb = new CssNumber ();
40
40
nb .setIntValue (0 );
41
- nv = nb ;
41
+ return nb ;
42
42
}
43
43
if (val .getRawType () == CssTypes .CSS_NUMBER ) {
44
- float p = ((CssNumber ) val ).getValue () ;
45
- if (p > 1. ) {
44
+ BigDecimal pp = ((CssNumber ) val ).value ;
45
+ if (pp . compareTo ( BigDecimal . ONE ) >= 0 ) {
46
46
ac .getFrame ().addWarning ("out-of-range" , val .toString ());
47
47
CssNumber nb = new CssNumber ();
48
48
nb .setIntValue (1 );
49
- nv = nb ;
49
+ return nb ;
50
50
}
51
51
}
52
52
} else if (val .getType () == CssTypes .CSS_PERCENTAGE ) {
@@ -56,20 +56,25 @@ public final void setAlpha(ApplContext ac, CssValue val)
56
56
ac .getFrame ().addWarning ("out-of-range" , val .toString ());
57
57
CssNumber nb = new CssNumber ();
58
58
nb .setIntValue (0 );
59
- nv = nb ;
59
+ return nb ;
60
60
}
61
61
if (val .getRawType () == CssTypes .CSS_PERCENTAGE ) {
62
62
float p = ((CssPercentage ) val ).floatValue ();
63
63
if (p > 100. ) {
64
64
ac .getFrame ().addWarning ("out-of-range" , val .toString ());
65
- nv = new CssPercentage (100 );
65
+ return new CssPercentage (100 );
66
66
}
67
67
}
68
68
}
69
69
}
70
- va = nv ;
70
+ return val ;
71
71
}
72
72
73
+ public final void setAlpha (ApplContext ac , CssValue val )
74
+ throws InvalidParamException {
75
+ output = null ;
76
+ va = filterAlpha (ac , val );
77
+ }
73
78
74
79
public boolean equals (RGBA other ) {
75
80
if (other != null ) {
0 commit comments