package hep.aida.ref.plotter.adapter;
import hep.aida.ICloud;
import hep.aida.ICloud1D;
import hep.aida.ICloud2D;
import hep.aida.ref.event.ObserverAdapter;
import jas.hist.DataSource;
import jas.hist.HistogramUpdate;
/**
*
* @author manj
* @version $Id: AIDACloudAdapter.java 13402 2007-11-02 21:19:21Z serbo $
*/
abstract class AIDACloudAdapter extends ObserverAdapter implements DataSource
{
/**
* Create a DataSource from a Cloud
*/
public static DataSource create(ICloud c)
{
AIDACloudAdapter result;
if (c instanceof ICloud1D) result = new AIDACloudAdapter1D((ICloud1D)c);
else if (c instanceof ICloud2D) result = new AIDACloudAdapter2D((ICloud2D)c);
else throw new IllegalArgumentException("Argument is an unknown subtype of ICloud");
return result;
}
protected AIDACloudAdapter(ICloud h)
{
super(h);
update = hr;
}
protected double getMarginValue(double lowerEdge, double upperEdge) {
double le = lowerEdge != upperEdge ? lowerEdge : lowerEdge - 1;
double ue = lowerEdge != upperEdge ? upperEdge : upperEdge + 1;
double delta = ue - le;
return margin*Math.abs(delta);
}
protected int xAxisType = DOUBLE;
protected int yAxisType = DOUBLE;
protected double margin = 0.05;
private final static jas.hist.HistogramUpdate hr = new jas.hist.HistogramUpdate(HistogramUpdate.TITLE_UPDATE+HistogramUpdate.DATA_UPDATE+HistogramUpdate.RANGE_UPDATE,false);
static
{
hr.setAxis(hr.HORIZONTAL_AXIS);
hr.setAxis(hr.VERTICAL_AXIS);
}
}