/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.graphene;
import java.awt.Color;
/**
* A set of parameters that can be applied to a <code>SparklineGraph2DRenderer</code>
* to update it's settings.
*
* <p>
* Only the parameters that are set in the update get applied to the renderer.
* Parameters unique to the sparkline that can be changed are:
* <ul>
* <li>Colors of the circles drawn at the important data points of a sparkline graph</li>
* <li>Size of the circles drawn at the important data points</li>
* <li>Whether to draw circles at the important data points</li>
* <li>Interpolation scheme used in drawing the sparkline line</li>
* <li>Aspect ratio to be maintained in the graph area</li>
* </ul>
*
* @author asbarber
* @author jkfeng
* @author sjdallst
*/
public class SparklineGraph2DRendererUpdate extends Graph2DRendererUpdate<SparklineGraph2DRendererUpdate>{
private Color minValueColor, maxValueColor, lastValueColor; //Circle colors
private Integer circleDiameter; //Circle size
private Boolean drawCircles; //Option to not draw circles
private InterpolationScheme interpolation; //Data interpolation
private Double aspectRatio; //x:y ratio
/**
* Sets the color of the circle drawn at the minimum value.
* @param color color for the minimum value circle
* @return this
*/
public SparklineGraph2DRendererUpdate minValueColor(Color color){
minValueColor = color;
return self();
}
/**
* Sets the color of the circle drawn at the maximum value.
* @param color color for the maximum value circle
* @return this
*/
public SparklineGraph2DRendererUpdate maxValueColor(Color color){
maxValueColor = color;
return self();
}
/**
* Sets the color of the circle drawn at the last value.
* @param color color for the last value circle
* @return this
*/
public SparklineGraph2DRendererUpdate lastValueColor(Color color){
lastValueColor = color;
return self();
}
/**
* Sets the diameter of the circles drawn.
* @param diameter size of circle diameter in pixels
* @return this
*/
public SparklineGraph2DRendererUpdate circleDiameter(int diameter){
circleDiameter = diameter;
return self();
}
/**
* Sets whether circles are drawn on the line at important values.
* @param decision whether circles are drawn
* @return this
*/
public SparklineGraph2DRendererUpdate drawCircles(boolean decision){
this.drawCircles = decision;
return self();
}
/**
* Sets the interpolation scheme of the line.
* @param scheme new interpolation scheme
* @return this
*/
public SparklineGraph2DRendererUpdate interpolation(InterpolationScheme scheme) {
if (scheme == null) {
throw new NullPointerException("Interpolation scheme can't be null");
}
if (!LineTimeGraph2DRenderer.supportedInterpolationScheme.contains(scheme)) {
throw new IllegalArgumentException("Interpolation " + scheme + " is not supported");
}
this.interpolation = scheme;
return self();
}
/**
* Sets the width to height aspect ratio for the graph area.
* @param ratio ratio between width and height that should be maintained
* @return this
*/
public SparklineGraph2DRendererUpdate aspectRatio(double ratio){
aspectRatio = ratio;
return self();
}
/**
* Gets the color of the circle drawn for the minimum value.
* @return color of the circle at the minimum
*/
public Color getMinValueColor(){
return minValueColor;
}
/**
* Gets the color of the circle drawn for the maximum value.
* @return color of the circle at the maximum
*/
public Color getMaxValueColor(){
return maxValueColor;
}
/**
* Gets the color of the circle drawn for the last value.
* @return color of the circle at the last index
*/
public Color getLastValueColor(){
return lastValueColor;
}
/**
* Gets the diameter of the circle.
* @return size of the diameter of the circles drawn in pixels
*/
public Integer getCircleDiameter(){
return circleDiameter;
}
/**
* Gets the decision for whether circles are drawn.
* @return whether circles are drawn
*/
public Boolean getDrawCircles(){
return drawCircles;
}
/**
* Gets the interpolation scheme of the line.
* @return interpolation scheme for the line
*/
public InterpolationScheme getInterpolation() {
return interpolation;
}
/**
* Gets the width to height aspect ratio of the graph area
* @return width to height aspect ratio
*/
public Double getAspectRatio(){
return aspectRatio;
}
}