/****************************************************************************************
* Copyright (c) 2014 Michael Goldbach <michael@wildplot.com> *
* *
* This program is free software; you can redistribute it and/or modify it under *
* the terms of the GNU General Public License as published by the Free Software *
* Foundation; either version 3 of the License, or (at your option) any later *
* version. *
* *
* This program is distributed in the hope that it will be useful, but WITHOUT ANY *
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A *
* PARTICULAR PURPOSE. See the GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License along with *
* this program. If not, see <http://www.gnu.org/licenses/>. *
****************************************************************************************/
package com.wildplot.android.rendering;
import com.wildplot.android.rendering.graphics.wrapper.ColorWrap;
import com.wildplot.android.rendering.graphics.wrapper.GraphicsWrap;
import com.wildplot.android.rendering.graphics.wrapper.RectangleWrap;
import com.wildplot.android.rendering.interfaces.Drawable;
/**
* This class simply draws points from a given data array or a function in given interval on a PlotSheet object
*
*/
public class PointDrawer2D implements Drawable {
private PlotSheet plotSheet;
private double[][] pointList;
private ColorWrap color;
public PointDrawer2D(PlotSheet plotSheet, double[][] pointList, ColorWrap color) {
this.plotSheet = plotSheet;
this.pointList = pointList;
this.color = color;
}
/* (non-Javadoc)
* @see rendering.Drawable#paint(java.awt.Graphics)
*/
@Override
public void paint(GraphicsWrap g) {
ColorWrap oldColor = g.getColor();
RectangleWrap field = g.getClipBounds();
g.setColor(color);
for(int i = 0; i< pointList[0].length; i++) {
drawPoint(pointList[0][i], pointList[1][i], g, field);
}
g.setColor(oldColor);
}
/**
* Draw points as cross
* @param x x-value of a point
* @param y y-value of a point
* @param g graphic object where to draw
* @param field given rectangle field
*/
public void drawPoint(double x, double y, GraphicsWrap g, RectangleWrap field) {
float[] coordStart = plotSheet.toGraphicPoint(x, y,field);
g.drawArc(coordStart[0]-3, coordStart[1]-3, 6, 6, 0, 360);
// g.drawLine(coordStart[0]-3, coordStart[1]-3, coordStart[0]+3, coordStart[1]+3);
// g.drawLine(coordStart[0]-3, coordStart[1]+3, coordStart[0]+3, coordStart[1]-3);
}
/*
* (non-Javadoc)
* @see rendering.Drawable#isOnFrame()
*/
public boolean isOnFrame() {
return false;
}
@Override
public void abortAndReset() {
// TODO Auto-generated method stub
}
@Override
public boolean isClusterable() {
return true;
}
@Override
public boolean isCritical() {
return true;
}
}