package io.github.jgkamat.ViPaint.Tools.KeyModeTools; import javafx.scene.canvas.GraphicsContext; import javafx.scene.input.KeyCode; import javafx.scene.shape.Rectangle; /** * A ViPaint class that represents a Triangle! * * @author Jay Kamat * @version 1.0 */ public class Triangle implements KeyModeTool { private double startx, starty; @Override public void onEnterMode(Cursor c, KeyToolEvent e, GraphicsContext g) { startx = c.getCenterX(); starty = c.getCenterY(); g.setLineWidth(c.getStroke()); } @Override public void onMoveInMode(Cursor c, KeyToolEvent e, GraphicsContext g) { if(e.isUppercase()) { g.fillPolygon( new double[] {startx, c.getCenterX(), startx + (c.getCenterX() - startx) / 2.0}, new double[] {starty, starty, c.getCenterY()}, 3); } else { g.strokePolygon( new double[] {startx, c.getCenterX(), startx + (c.getCenterX() - startx) / 2.0}, new double[] {starty, starty, c.getCenterY()}, 3); } } @Override public void onExitMode(Cursor c, KeyToolEvent e, GraphicsContext g) { onMoveInMode(c, e, g); } @Override public KeyCode getDefaultKey() { return KeyCode.T; } @Override public String getName() { return "Triangle"; } @Override public boolean hasPreview() { return true; } @Override public String getHelp() { return "The Triangle tool is used to draw filled and sketched " + "Rectangles.\n\nPress T for a filled Triangle, and r for a hollow " + "one.\nThen move around with h,j,k, and l, and press <ESC> to " + "complete the drawing."; } }