package test; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.TexturePaint; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JComponent; import javax.swing.JFrame; import com.kreative.paint.document.draw.DrawObject; import com.kreative.paint.document.draw.PaintSettings; import com.kreative.paint.document.draw.ShapeDrawObject; import com.kreative.paint.document.layer.DrawLayer; import com.kreative.paint.document.layer.FillLayer; import com.kreative.paint.document.layer.GroupLayer; import com.kreative.paint.document.layer.Layer; import com.kreative.paint.document.layer.PaintLayer; import com.kreative.paint.material.MaterialLocator; import com.kreative.paint.material.TextureLoader; public class NewLayerTest { private static MyComponent comp = null; private static Layer layer = null; private static int gx = 0, gy = 0, gw = 100, gh = 100, tx = 0, ty = 0; public static void main(String[] args) { final MaterialLocator mloc = new MaterialLocator("Kreative", "PowerPaint"); final TextureLoader tl = new TextureLoader(mloc.getMaterialLoader()); final TexturePaint tp = tl.getTextures().getValue("SuperPaint").getValue("Berkeley"); layer = new FillLayer("Berkeley", tp, AlphaComposite.SrcOver); JFrame f = new JFrame("Hello World"); f.setContentPane(comp = new MyComponent()); f.setSize(200, 200); f.setLocationRelativeTo(null); f.setVisible(true); f.addKeyListener(new KeyListener() { private int mode = 0; @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_F: { FillLayer l = new FillLayer("Berkeley", tp, AlphaComposite.SrcOver); layer = l; } comp.repaint(); break; case KeyEvent.VK_D: { DrawLayer l = new DrawLayer("Layer 1"); DrawObject d = new ShapeDrawObject.Ellipse(new PaintSettings(tp, Color.black), 0, 0, 100, 100); l.add(d); layer = l; } comp.repaint(); break; case KeyEvent.VK_P: { PaintLayer l = new PaintLayer("Layer 1", 0xFFFFFF); Graphics2D g = l.createPaintGraphics(); g.setPaint(tp); g.fillOval( 0, 0, 50, 50); g.fillOval(50, 0, 50, 50); g.fillOval( 0, 50, 50, 50); g.fillOval(50, 50, 50, 50); g.dispose(); layer = l; } comp.repaint(); break; case KeyEvent.VK_G: { GroupLayer gl = new GroupLayer("Group 1"); { FillLayer l = new FillLayer("White", Color.white, AlphaComposite.SrcOver); gl.add(l); } { DrawLayer l = new DrawLayer("Layer 1"); DrawObject d = new ShapeDrawObject.Ellipse(new PaintSettings(tp, Color.black), 0, 0, 100, 100); l.add(d); gl.add(l); } { PaintLayer l = new PaintLayer("Layer 1", 0xFFFFFF); Graphics2D g = l.createPaintGraphics(); g.setPaint(Color.gray); g.fillOval( 0, 0, 50, 50); g.fillOval(50, 0, 50, 50); g.fillOval( 0, 50, 50, 50); g.fillOval(50, 50, 50, 50); g.dispose(); gl.add(l); } layer = gl; } comp.repaint(); break; case KeyEvent.VK_V: mode = 0; break; case KeyEvent.VK_S: mode = 1; break; case KeyEvent.VK_T: mode = 2; break; case KeyEvent.VK_L: mode = 3; break; case KeyEvent.VK_LEFT: switch (mode) { case 0: gx--; break; case 1: gw--; if (gw < 1) gw = 1; break; case 2: tx--; break; case 3: layer.setX(layer.getX() - 1); break; } comp.repaint(); break; case KeyEvent.VK_RIGHT: switch (mode) { case 0: gx++; break; case 1: gw++; break; case 2: tx++; break; case 3: layer.setX(layer.getX() + 1); break; } comp.repaint(); break; case KeyEvent.VK_UP: switch (mode) { case 0: gy--; break; case 1: gh--; if (gh < 1) gh = 1; break; case 2: ty--; break; case 3: layer.setY(layer.getY() - 1); break; } comp.repaint(); break; case KeyEvent.VK_DOWN: switch (mode) { case 0: gy++; break; case 1: gh++; break; case 2: ty++; break; case 3: layer.setY(layer.getY() + 1); break; } comp.repaint(); break; case KeyEvent.VK_CLEAR: case KeyEvent.VK_ESCAPE: switch (mode) { case 0: gx = gy = 0; break; case 1: gw = gh = 100; break; case 2: tx = ty = 0; break; case 3: layer.setLocation(0,0); break; } comp.repaint(); break; } } @Override public void keyReleased(KeyEvent e) {} @Override public void keyTyped(KeyEvent e) {} }); } private static class MyComponent extends JComponent { private static final long serialVersionUID = 1L; @Override protected void paintComponent(Graphics g) { layer.paint((Graphics2D)g, gx, gy, gw, gh, tx, ty); } } }