preview
This commit is contained in:
parent
3bd07f30da
commit
ea9de93db8
@ -6,9 +6,12 @@ import java.util.function.Consumer;
|
||||
|
||||
public class MotionListener implements MouseMotionListener {
|
||||
|
||||
private final Consumer<MouseEvent> onMove;
|
||||
|
||||
private final Consumer<MouseEvent> onDrag;
|
||||
|
||||
public MotionListener(final Consumer<MouseEvent> onDrag) {
|
||||
public MotionListener(final Consumer<MouseEvent> onMove, final Consumer<MouseEvent> onDrag) {
|
||||
this.onMove = onMove;
|
||||
this.onDrag = onDrag;
|
||||
}
|
||||
|
||||
@ -21,7 +24,9 @@ public class MotionListener implements MouseMotionListener {
|
||||
|
||||
@Override
|
||||
public void mouseMoved(final MouseEvent e) {
|
||||
|
||||
if (onMove != null) {
|
||||
onMove.accept(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
@Slf4j
|
||||
public class DrawingPanel extends JPanel {
|
||||
@ -18,11 +19,18 @@ public class DrawingPanel extends JPanel {
|
||||
|
||||
private Vector lastPoint = null;
|
||||
|
||||
private Point cursor = null;
|
||||
|
||||
public DrawingPanel(final ToolBox toolBox, final Drawing drawing) {
|
||||
this.toolBox = toolBox;
|
||||
this.drawing = drawing;
|
||||
this.addMouseListener(new ClickListener(this::onPress, null));
|
||||
this.addMouseMotionListener(new MotionListener(this::onDrag));
|
||||
this.addMouseMotionListener(new MotionListener(this::onMove, this::onDrag));
|
||||
}
|
||||
|
||||
private void onMove(final MouseEvent e) {
|
||||
cursor = e.getPoint();
|
||||
repaint();
|
||||
}
|
||||
|
||||
private void onPress(final MouseEvent e) {
|
||||
@ -32,6 +40,7 @@ public class DrawingPanel extends JPanel {
|
||||
}
|
||||
|
||||
private void onDrag(final MouseEvent e) {
|
||||
cursor = e.getPoint();
|
||||
lastPoint = toolBox.getTool().apply(lastPoint, drawing.getCurrent().getCurrent(), new Vector(e.getPoint()));
|
||||
repaint();
|
||||
}
|
||||
@ -48,6 +57,11 @@ public class DrawingPanel extends JPanel {
|
||||
g.setColor(Color.white);
|
||||
g.fillRect(0, 0, drawing.getWidth(), drawing.getHeight());
|
||||
g.drawImage(drawing.getCurrent().getCurrent(), 0, 0, null);
|
||||
|
||||
final BufferedImage preview = toolBox.getTool().getPreview();
|
||||
if (cursor != null && preview != null) {
|
||||
g.drawImage(preview, cursor.x - preview.getWidth() / 2, cursor.y - preview.getHeight() / 2, null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -16,4 +16,6 @@ public abstract class Tool {
|
||||
|
||||
public abstract Vector apply(final Vector last, final BufferedImage image, final Vector point);
|
||||
|
||||
public abstract BufferedImage getPreview();
|
||||
|
||||
}
|
||||
|
||||
@ -110,4 +110,9 @@ public class StampTool extends Tool {
|
||||
destination.getGraphics().drawImage(prepared, point.intX() - prepared.getWidth() / 2, point.intY() - prepared.getHeight() / 2, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BufferedImage getPreview() {
|
||||
return prepared;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user