package com.marshalchen.common.uimodule.shapeimageview.path.parser;
import org.xmlpull.v1.XmlPullParser;
@SuppressWarnings("FinalStaticMethod")
class ParseUtil {
static final String escape (String s) {
return s
.replaceAll("\"", """)
.replaceAll("'", "&apos")
.replaceAll("<", "<")
.replaceAll(">", ">")
.replaceAll("&", "&");
}
static final String getStringAttr(String name, XmlPullParser attributes) {
int n = attributes.getAttributeCount();
for (int i = 0; i < n; i++) {
if (attributes.getAttributeName(i).equals(name)) {
return attributes.getAttributeValue(i);
}
}
return null;
}
/*
* Some SVG unit conversions. This is approximate
*/
static final Float convertUnits(String name, XmlPullParser atts, float dpi, float width, float height) {
String value = getStringAttr(name, atts);
if (value == null) {
return null;
} else if (value.endsWith("px")) {
return Float.parseFloat(value.substring(0, value.length() - 2));
} else if (value.endsWith("pt")) {
return Float.valueOf(value.substring(0, value.length() - 2)) * dpi / 72;
} else if (value.endsWith("pc")) {
return Float.valueOf(value.substring(0, value.length() - 2)) * dpi / 6;
} else if (value.endsWith("cm")) {
return Float.valueOf(value.substring(0, value.length() - 2)) * dpi / 2.54f;
} else if (value.endsWith("mm")) {
return Float.valueOf(value.substring(0, value.length() - 2)) * dpi / 254;
} else if (value.endsWith("in")) {
return Float.valueOf(value.substring(0, value.length() - 2)) * dpi;
} else if (value.endsWith("%")) {
Float result = Float.valueOf(value.substring(0, value.length() - 1));
float mult;
if (name.contains("x") || name.equals("width") ) {
mult = width / 100f;
} else if (name.contains("y") || name.equals("height")) {
mult = height / 100f;
} else {
mult = (height + width) / 2f;
}
return result * mult;
} else {
return Float.valueOf(value);
}
}
}