package org.chartsy.dots; import java.awt.Graphics2D; import java.awt.Rectangle; import org.chartsy.main.ChartFrame; import org.chartsy.main.ChartProperties; import org.chartsy.main.chart.Chart; import org.chartsy.main.data.ChartData; import org.chartsy.main.data.Dataset; import org.chartsy.main.utils.CoordCalc; import org.chartsy.main.utils.Range; import org.chartsy.main.utils.SerialVersion; /** * * @author viorel.gheba */ public class Dots extends Chart { private static final long serialVersionUID = SerialVersion.APPVERSION; public Dots() {} public String getName() { return "Dots"; } public void paint(Graphics2D g, ChartFrame cf) { ChartData cd = cf.getChartData(); ChartProperties cp = cf.getChartProperties(); Rectangle rect = cf.getSplitPanel().getChartPanel().getBounds(); rect.grow(-2, -2); Range range = cf.getSplitPanel().getChartPanel().getRange(); if (!cd.isVisibleNull()) { Dataset dataset = cd.getVisible(); for(int i = 0; i < dataset.getItemsCount(); i++) { double open = dataset.getOpenAt(i); double close = dataset.getCloseAt(i); double x = cd.getX(i, rect); double yClose = cd.getY(close, rect, range, cp.getAxisLogarithmicFlag()); double dotWidth = cp.getBarWidth() < 4.0d ? cp.getBarWidth() : 4.0d; double dotHeight = dotWidth; g.setPaint(open > close ? cp.getBarDownColor() : cp.getBarUpColor()); g.draw(CoordCalc.rectangle(x - dotWidth/2, yClose - dotHeight/2, dotWidth, dotHeight)); } } } }