package org.lemsml.jlems.viz.plot;
public class Builder {
Painter painter;
PickStore pickStore;
int width;
int height;
public Builder(Painter p, PickStore ps) {
painter = p;
pickStore = ps;
}
public void setCanvasSize(int w, int h) {
width = w;
height = h;
}
public void clear() {
pickStore.clear();
}
public void add3DPickablePoint(double x, double y, double z, PickablePoint pp) {
double wx = painter.xProj(x, y, z);
double wy = painter.yProj(x, y, z);
pp.moveTo(wx, wy);
int ix = painter.powx(wx);
int iy = painter.powy(wy);
// if (ix > 0 && iy > 0 && ix < width && iy < height) {
pickStore.addPoint(pp, ix, iy);
// }
}
public void addPoint(PickablePoint pp) {
addPickablePoint(pp);
}
public void addPickablePoint(PickablePoint pp) {
addPickablePoint(pp, pp.getPosition());
}
public void addPickablePoint(PickablePoint pp, Position pos) {
// or could get the world transform ourselves?
int ix = painter.powx(pos.getX());
int iy = painter.powy(pos.getY());
pickStore.addPoint(pp, ix, iy);
painter.fillPixelRectangle(ix, iy, pp.getColor(), pp.getSize());
}
public void addPickableRegion(PickableRegion pka) {
pickStore.addPickableRegion(pka,
painter.powx(pka.getXReference()),
painter.powy(pka.getYReference()));
}
public void addPickableRegion(Pickable pbl, int x, int y, int w, int h) {
pickStore.addPoint(pbl, x, y, x + w, y + h);
}
public void add2DPickableRegionOn3DPoint(Pickable pbl, double x, double y, double z,
int dx, int dy, int w, int h) {
double wx = painter.xProj(x, y, z);
double wy = painter.yProj(x, y, z);
int ix = painter.powx(wx);
int iy = painter.powy(wy);
addPickableRegion(pbl, ix + dx, iy + dy, w, h);
}
}