in poi-ooxml/src/main/java/org/apache/poi/xdgf/usermodel/XDGFShape.java [721:829]
public Stroke getStroke() {
float lineWeight = getLineWeight().floatValue();
int cap;
int join = BasicStroke.JOIN_MITER;
switch (getLineCap()) {
case 0:
cap = BasicStroke.CAP_ROUND;
break;
case 1:
cap = BasicStroke.CAP_SQUARE;
break;
case 2:
cap = BasicStroke.CAP_BUTT; // TODO: what does extended mean?
break;
default:
throw new POIXMLException("Invalid line cap specified");
}
float[] dash = null;
// these line patterns are just approximations
switch (getLinePattern()) {
case 0: // transparent
break;
case 1: // solid
break;
case 2:
dash = new float[] { 5, 3 };
break;
case 3:
dash = new float[] { 1, 4 };
break;
case 4:
dash = new float[] { 6, 3, 1, 3 };
break;
case 5:
dash = new float[] { 6, 3, 1, 3, 1, 3 };
break;
case 6:
dash = new float[] { 1, 3, 6, 3, 6, 3 };
break;
case 7:
dash = new float[] { 15, 3, 6, 3 };
break;
case 8:
dash = new float[] { 6, 3, 6, 3 };
break;
case 9:
dash = new float[] { 3, 2 };
break;
case 10:
dash = new float[] { 1, 2 };
break;
case 11:
dash = new float[] { 3, 2, 1, 2 };
break;
case 12:
dash = new float[] { 3, 2, 1, 2, 1 };
break;
case 13:
dash = new float[] { 1, 2, 3, 2, 3, 2 };
break;
case 14:
dash = new float[] { 3, 2, 7, 2 };
break;
case 15:
dash = new float[] { 7, 2, 3, 2, 3, 2 };
break;
case 16:
dash = new float[] { 12, 6 };
break;
case 17:
dash = new float[] { 1, 6 };
break;
case 18:
dash = new float[] { 1, 6, 12, 6 };
break;
case 19:
dash = new float[] { 1, 6, 1, 6, 12, 6 };
break;
case 20:
dash = new float[] { 1, 6, 12, 6, 12, 6 };
break;
case 21:
dash = new float[] { 30, 6, 12, 6 };
break;
case 22:
dash = new float[] { 30, 6, 12, 6, 12, 6 };
break;
case 23:
dash = new float[] { 1 };
break;
case 254:
throw new POIXMLException("Unsupported line pattern value");
default:
throw new POIXMLException("Invalid line pattern value");
}
// dashes are in units of line width
if (dash != null) {
for (int i = 0; i < dash.length; i++) {
dash[i] *= lineWeight;
}
}
return new BasicStroke(lineWeight, cap, join, 10, dash, 0);
}