package jp.ac.aiit.jointry.services.picture.paint.views;
import java.util.Random;
import javafx.geometry.Point2D;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import jp.ac.aiit.jointry.services.picture.paint.PaintApplication;
public class PtAirbrush extends PaintTool {
private static final int AMOUNT_OF_LIQUID = 5;
private static Random rand = new Random();
@Override
public void paint(Canvas canvas, Point2D start, Point2D end) {
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(PaintApplication.getModel().getColor());
gc.setStroke(PaintApplication.getModel().getColor());
int r = getOptionController().getSelectTool().getPenSize();
int n = r * AMOUNT_OF_LIQUID; // エアブラシのドット量
int airbrushRR = r * r;
for (int i = 0; i < n; i++) {
int x, y;
// XY方向に一定距離で散布する。
// エアブラシの半径内に収まっていなければ再散布する。
do {
x = rand.nextInt(2 * r + 1) - r;
y = rand.nextInt(2 * r + 1) - r;
} while (x * x + y * y > airbrushRR);
gc.fillRect(start.getX() + x, start.getY() + y, 1, 1);
}
}
}