package hep.aida.ref.plotter; import hep.aida.IMarkerStyle; import java.util.Iterator; import java.util.List; /** * * @author The FreeHEP team @ SLAC. * */ public class MarkerStyle extends BrushStyle implements IMarkerStyle { protected void initializeBaseStyle() { super.initializeBaseStyle(); String[] availShapes = {"dot", "box", "triangle", "diamond", "star", "verticalLine", "horizontalLine", "cross", "circle", "square"}; addParameter( new StringStyleParameter( Style.MARKER_SHAPE, null, availShapes) ); addParameter( new RevolvingStyleParameter( Style.MARKER_SHAPE_ROTATE, availShapes[0]) ); addParameter( new StringStyleParameter( Style.MARKER_SHAPE_ROTATE_METHOD, Style.ROTATE_METHOD[1], Style.ROTATE_METHOD ) ); addParameter( new IntegerStyleParameter(Style.MARKER_SIZE, 6) ); String defaultRotation = "dot, box, triangle, diamond, star, circle, square"; this.setParameterDefault(Style.MARKER_SHAPE_ROTATE, defaultRotation); } public String[] availableShapes() { return availableParameterOptions(Style.MARKER_SHAPE); } public boolean setShape(String markerShape) { return ( (StringStyleParameter) parameter(Style.MARKER_SHAPE) ).setValue(markerShape); } public String shape() { return ( (StringStyleParameter) deepestSetParameter(Style.MARKER_SHAPE) ).value(); } public String shape(int globalIndex, int overlayIndex) { if (isParameterSet(Style.MARKER_SHAPE, false)) return parameter(Style.MARKER_SHAPE).parValue(); else if (isParameterSet(Style.MARKER_SHAPE_ROTATE, false)) { if (this.parameterValue(Style.MARKER_SHAPE_ROTATE) == Style.ROTATE_METHOD[0]) { return ((RevolvingStyleParameter) parameter(Style.MARKER_SHAPE_ROTATE)).parameterValue(globalIndex); } else { return ((RevolvingStyleParameter) parameter(Style.MARKER_SHAPE_ROTATE)).parameterValue(overlayIndex); } } List parents = parentList(); if (parents != null) { Iterator it = parents.iterator(); while (it.hasNext()) { MarkerStyle pbs = null; Object obj = it.next(); if (obj instanceof MarkerStyle) pbs = (MarkerStyle) obj; else continue; String tmp = pbs.shape(globalIndex, overlayIndex); if (tmp != null) return tmp; } } return null; } /** * Set the marker's size. * @param size The marker's size. * @return false if the implementation cannot perform the requested change * in the marker's size. * */ public boolean setSize(int size) { return ( (IntegerStyleParameter) parameter(Style.MARKER_SIZE) ).setValue(size); } /** * Get the marker's size. * @return The marker's size. * */ public int size() { return ( (IntegerStyleParameter) deepestSetParameter(Style.MARKER_SIZE) ).value(); } }