package cit.PureATN; import java.awt.BasicStroke; import java.awt.event.InputEvent; import java.awt.geom.Point2D; import javax.swing.WindowConstants; import org.piccolo2d.PCanvas; import org.piccolo2d.PLayer; import org.piccolo2d.event.PBasicInputEventHandler; import org.piccolo2d.event.PDragSequenceEventHandler; import org.piccolo2d.event.PInputEvent; import org.piccolo2d.event.PInputEventFilter; import org.piccolo2d.event.PMouseWheelZoomEventHandler; import org.piccolo2d.extras.PFrame; import org.piccolo2d.nodes.PPath; import org.piccolo2d.util.PPaintContext; public class Note extends PFrame { /** * */ private static final long serialVersionUID = 1L; private PLayer layer; public static PInputEventFilter disablemask = new PInputEventFilter(0); public static Note theapp; // The Application public DPenReceiver dPenReceiver; public Note() { this(null); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); theapp = this; // どこからでもNote.theapp で参照できるように } public Note(final PCanvas aCanvas) { super("Note", false, aCanvas); setSize(650, 800); setLocation(10,10); dPenReceiver = new DPenReceiver(this); } public void initialize() { super.initialize(); // らくがき用マウスイベント // final PBasicInputEventHandler squiggleEventHandler = createSSSquiggleEventHandler(); final PBasicInputEventHandler squiggleEventHandler = createSquiggleEventHandler(); squiggleEventHandler.setEventFilter(new PInputEventFilter(InputEvent.BUTTON1_MASK)); getCanvas().removeInputEventListener(getCanvas().getPanEventHandler()); getCanvas().addInputEventListener(squiggleEventHandler); // install mouse wheel zoom event handler final PMouseWheelZoomEventHandler mouseWheelZoomEventHandler = new PMouseWheelZoomEventHandler(); getCanvas().addInputEventListener(mouseWheelZoomEventHandler); // pan // final MyPPanEventHandler panEventHandler = new MyPPanEventHandler(getCanvas()); // panEventHandler.setEventFilter(disablemask); // getCanvas().addInputEventListener(panEventHandler); layer = getCanvas().getLayer(); getCanvas().setDefaultRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); getCanvas().setAnimatingRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); getCanvas().setInteractingRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); } // public PBasicInputEventHandler createSSSquiggleEventHandler() { // return new PBasicInputEventHandler() { // protected ShortStroke squiggle; // int dragCount = 0; // Point2D pressP; // public void mousePressed(final PInputEvent aEvent) { // pressP = aEvent.getPositionRelativeTo(layer); // dragCount = 0; // } // public void mouseDragged(final PInputEvent aEvent) { // dragCount++; // if (squiggle == null) { // squiggle = new ShortStroke(); // squiggle.penid = 1; // squiggle.paperid = 1; // squiggle.time = System.currentTimeMillis(); // squiggle.addPoint(pressP); // squiggle.applyTempPtsToAry(); // squiggle.moveTo( pressP.getX(), pressP.getY() ); // squiggle.setTransparency(0.7f); // // squiggle.rebuildStroke(); // layer.addChild(squiggle); // } else { // Point2D inkp = aEvent.getPositionRelativeTo(layer); // squiggle.addPoint(inkp); // squiggle.lineTo( inkp.getX(),inkp.getY()); // } // } // public void mouseReleased(final PInputEvent aEvent) { // if (dragCount < 3){ // } else { // squiggle.play(300); // squiggle = null; // } // } // }; // } public PBasicInputEventHandler createSquiggleEventHandler() { return new PDragSequenceEventHandler() { protected ShortStroke squiggle; public void startDrag(final PInputEvent e) { super.startDrag(e); final Point2D p = e.getPosition(); squiggle = new ShortStroke(); layer.addChild(squiggle); squiggle.startDrag_on_draw(p.getX(), p.getY()); // squiggle.setStroke(new BasicStroke((float) (3 / e.getCamera().getViewScale()))); layer.repaint(); } public void drag(final PInputEvent e) { super.drag(e); updateSquiggle(e); } public void endDrag(final PInputEvent e) { super.endDrag(e); updateSquiggle(e); squiggle.endDrag_on_draw(); // squiggle.ink = layer; // squiggle.play(10); squiggle = null; } public void updateSquiggle(final PInputEvent aEvent) { final Point2D p = aEvent.getPosition(); squiggle.drag_on_draw( p.getX(), p.getY()); layer.repaint(); } }; } public static void main(final String[] args) { new Note(); } }