package org.lemsml.jlems.viz.plot; import java.awt.BasicStroke; import org.lemsml.jlems.core.logging.E; public class DisplayStrokes { String[] styleNames; int nsn; double[] widths; int nw; BasicStroke[][] strokes; public DisplayStrokes(String[] sn, double[] w) { styleNames = sn; widths = w; nsn = styleNames.length; nw = widths.length; strokes = new BasicStroke[nsn][nw]; } public BasicStroke getStroke(int ilin, int iwin) { int il = ilin; int iw = iwin; if (il >= nsn) { il = nsn-1; } if (iw >= nw) { iw = nw-1; } BasicStroke ret = strokes[il][iw]; if (ret == null) { ret = makeStroke(styleNames[il], widths[iw]); strokes[il][iw] = ret; } return ret; } private BasicStroke makeStroke(String snm, double w) { float fw = (float)w; BasicStroke ret = null; if (snm.equals("solid")) { ret = new BasicStroke(fw); } else if (snm.equals("dotted")) { float[] dashes= {2, 2, 2, 2}; ret = new BasicStroke(fw, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL, 10.f, dashes, 0.f); } else if (snm.equals("short dash")) { float[] dashes= {6, 6, 6, 6}; ret = new BasicStroke(fw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10.f, dashes, 0.f); } else if (snm.equals("long dash")) { float[] dashes= {8, 4, 8, 4}; ret = new BasicStroke(fw, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10.f, dashes, 0.f); } else if (snm.equals("dot-dash")) { float[] dashes= {2, 2, 8, 2}; ret = new BasicStroke(fw, BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL, 10.f, dashes, 0.f); } else { E.warning("unrecognized line stype " + snm); ret = new BasicStroke(fw); } return ret; } }