diff options
Diffstat (limited to 'src/com/jogamp/opencl/demos/fft/PaintView.java')
-rw-r--r-- | src/com/jogamp/opencl/demos/fft/PaintView.java | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/com/jogamp/opencl/demos/fft/PaintView.java b/src/com/jogamp/opencl/demos/fft/PaintView.java new file mode 100644 index 0000000..9dea3c8 --- /dev/null +++ b/src/com/jogamp/opencl/demos/fft/PaintView.java @@ -0,0 +1,98 @@ +package com.jogamp.opencl.demos.fft; + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Paint; +import java.awt.RadialGradientPaint; +import java.awt.Rectangle; +import java.awt.Shape; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.awt.geom.Point2D; +import java.awt.image.BufferedImage; + +/** + * Draws an image and lets you draw white dots in it with the mouse. Or big white dots with code. + * @author notzed + */ +class PaintView extends ImageView implements MouseListener, MouseMotionListener { + + Graphics2D imgg; + Paint paint; + Shape brush; + BlurTest win; + + public PaintView(BlurTest win, BufferedImage img) { + super(img); + + this.win = win; + + paint = new RadialGradientPaint(new Point2D.Float(0, 0), 3, + new float[]{0.0f, 1.0f}, new Color[]{new Color(255, 255, 255, 255), new Color(255, 255, 255, 0)}); + brush = new java.awt.geom.Ellipse2D.Float(-5, -5, 11, 11); + + imgg = img.createGraphics(); + + this.addMouseListener(this); + } + + void drawPaint(double x, double y) { + Graphics2D gg = (Graphics2D) imgg.create(); + + gg.translate(x, y); + gg.setPaint(paint); + gg.fill(brush); + + gg.dispose(); + + repaint(new Rectangle((int) (x - 6), (int) (y - 6), 12, 12)); + // close your eyes if you're under-age ... + win.recalc(); + } + + public void drawDot(double width, double height, double angle) { + Graphics2D gg = (Graphics2D) imgg.create(); + + gg.setPaint(paint); + gg.translate(img.getWidth() / 2, img.getHeight() / 2); + gg.rotate(angle); + gg.scale(width, height); + gg.fill(brush); + + gg.dispose(); + + repaint(); + win.recalc(); + } + + public void mouseClicked(MouseEvent e) { + } + + public void mousePressed(MouseEvent e) { + if (e.getButton() == e.BUTTON1) { + addMouseMotionListener(this); + drawPaint(e.getX(), e.getY()); + } + } + + public void mouseReleased(MouseEvent e) { + if (e.getButton() == e.BUTTON1) { + removeMouseMotionListener(this); + //drawPaint(e.getX(), e.getY()); + } + } + + public void mouseEntered(MouseEvent e) { + } + + public void mouseExited(MouseEvent e) { + } + + public void mouseDragged(MouseEvent e) { + drawPaint(e.getX(), e.getY()); + } + + public void mouseMoved(MouseEvent e) { + } +} |