in fop-core/src/main/java/org/apache/fop/fo/properties/TextDecorationMaker.java [50:124]
public Property convertProperty(Property p,
PropertyList propertyList,
FObj fo)
throws PropertyException {
ListProperty listProp = (ListProperty) super.convertProperty(p, propertyList, fo);
List lst = listProp.getList();
boolean none = false;
boolean under = false;
boolean over = false;
boolean through = false;
boolean blink = false;
int enumValue = -1;
for (int i = lst.size(); --i >= 0;) {
Property prop = (Property)lst.get(i);
if (prop instanceof NCnameProperty) {
prop = checkEnumValues(prop.getString());
lst.set(i, prop);
}
if (prop != null) {
enumValue = prop.getEnum();
}
switch (enumValue) {
case Constants.EN_NONE:
if (under | over | through | blink) {
throw new PropertyException("Invalid combination of values");
}
none = true;
break;
case Constants.EN_UNDERLINE:
case Constants.EN_NO_UNDERLINE:
case Constants.EN_OVERLINE:
case Constants.EN_NO_OVERLINE:
case Constants.EN_LINE_THROUGH:
case Constants.EN_NO_LINE_THROUGH:
case Constants.EN_BLINK:
case Constants.EN_NO_BLINK:
if (none) {
throw new PropertyException(
"'none' specified, no additional values allowed");
}
switch (enumValue) {
case Constants.EN_UNDERLINE:
case Constants.EN_NO_UNDERLINE:
if (!under) {
under = true;
continue;
}
case Constants.EN_OVERLINE:
case Constants.EN_NO_OVERLINE:
if (!over) {
over = true;
continue;
}
case Constants.EN_LINE_THROUGH:
case Constants.EN_NO_LINE_THROUGH:
if (!through) {
through = true;
continue;
}
case Constants.EN_BLINK:
case Constants.EN_NO_BLINK:
if (!blink) {
blink = true;
continue;
}
default:
throw new PropertyException("Invalid combination of values");
}
default:
throw new PropertyException("Invalid value specified: " + p);
}
}
return listProp;
}