From e8d3196e42dc735fce15848dab8051a5322ca019 Mon Sep 17 00:00:00 2001 From: bronze Date: Wed, 19 Jul 2017 16:11:52 -0400 Subject: [PATCH 1/7] Initial Commit for v2 (Broken) --- Painter/src/bz/bronze/painter/Context.java | 38 +++++++++++++------ .../bronze/painter/{Mouse.java => Input.java} | 30 ++++++++++----- Painter/src/bz/bronze/painter/Painter.java | 2 +- Painter/src/bz/bronze/painter/Save.java | 20 ++++++++++ Painter/src/bz/bronze/painter/Tick.java | 14 ++++++- Painter/src/bz/bronze/painter/Window.java | 16 +++++++- 6 files changed, 93 insertions(+), 27 deletions(-) rename Painter/src/bz/bronze/painter/{Mouse.java => Input.java} (68%) create mode 100644 Painter/src/bz/bronze/painter/Save.java diff --git a/Painter/src/bz/bronze/painter/Context.java b/Painter/src/bz/bronze/painter/Context.java index b7efe9f..752c88f 100644 --- a/Painter/src/bz/bronze/painter/Context.java +++ b/Painter/src/bz/bronze/painter/Context.java @@ -2,7 +2,8 @@ package bz.bronze.painter; import java.awt.Color; import java.awt.Graphics; - +import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; import java.util.Random; public class Context { @@ -10,17 +11,22 @@ public class Context { static Random rng = new Random(); + static Graphics g; + + static BufferedImage bufferedImage = new BufferedImage(1280, 720, BufferedImage.TYPE_INT_ARGB); + static RenderedImage renderedImage; + public static void drawBorders(Graphics g) - { - g.drawLine(0, 0, 0, Window.height + 10); + { + g.fillRect(0, 0, 3, Window.height + 10); - Log.print("hit"); - - //g.dispose(); + g.dispose(); } - public static void draw(Graphics g, int x, int y) - { + public static void draw(int x, int y) + { + g = bufferedImage.createGraphics(); + int size = Window.sizeSlider.getValue(); Color c = new Color(rng.nextInt(256), rng.nextInt(256), rng.nextInt(256), Window.opacitySlider.getValue()); @@ -29,9 +35,17 @@ public class Context { g.fillOval(x - size / 2, y - size / 2, size, size); g.dispose(); - - Log.print("[PAINTER] Drawn at, " + "X: " + x + " Y: " + y); - Log.print("[PAINTER] Color, " + "R: " + c.getRed() + " G: " + c.getGreen() + " B: " + c.getBlue()); - Log.print("[PAINTER] Opacity, " + Window.opacitySlider.getValue()); + + renderedImage = bufferedImage; + + Log.print("[PAINTER] Drawn at " + "X: " + x + " Y: " + y); + Log.print("[PAINTER] Color " + "R: " + c.getRed() + " G: " + c.getGreen() + " B: " + c.getBlue()); + Log.print("[PAINTER] Opacity " + Window.opacitySlider.getValue()); + } + + public static void swapBuffers() + { + //Window.paintArea.repaint(); + Window.paintArea.print(bufferedImage.getGraphics()); } } \ No newline at end of file diff --git a/Painter/src/bz/bronze/painter/Mouse.java b/Painter/src/bz/bronze/painter/Input.java similarity index 68% rename from Painter/src/bz/bronze/painter/Mouse.java rename to Painter/src/bz/bronze/painter/Input.java index ba5cb8e..4f173df 100644 --- a/Painter/src/bz/bronze/painter/Mouse.java +++ b/Painter/src/bz/bronze/painter/Input.java @@ -6,8 +6,8 @@ import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; -public class Mouse { - static boolean isDown; +public class Input { + static boolean mouseIsDown; public static void listen() { @@ -19,13 +19,13 @@ public class Mouse { @Override public void mousePressed(MouseEvent e) { - isDown = true; + mouseIsDown = true; } @Override public void mouseReleased(MouseEvent e) { - isDown = false; + mouseIsDown = false; } @Override @@ -39,12 +39,22 @@ public class Mouse { }); Window.clearButton.addActionListener(new ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) { - Window.paintArea.repaint(); - } - }); + { + @Override + public void actionPerformed(ActionEvent e) { + Window.paintArea.repaint(); + Context.bufferedImage.flush(); + + Log.print("[PAINTER] Cleared!"); + } + }); + Window.saveButton.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) { + Save.saveImage(); + } + }); } public static int getMouseX() diff --git a/Painter/src/bz/bronze/painter/Painter.java b/Painter/src/bz/bronze/painter/Painter.java index e9f5214..44cad84 100644 --- a/Painter/src/bz/bronze/painter/Painter.java +++ b/Painter/src/bz/bronze/painter/Painter.java @@ -8,7 +8,7 @@ public class Painter { public static void init() { Window w = new Window(title); - //Context.drawBorders(Window.paintArea.getGraphics()); + Context.drawBorders(Window.paintArea.getGraphics()); Tick refresh = new Tick(); Log.print("[INIT] Done!"); diff --git a/Painter/src/bz/bronze/painter/Save.java b/Painter/src/bz/bronze/painter/Save.java new file mode 100644 index 0000000..1d07ff5 --- /dev/null +++ b/Painter/src/bz/bronze/painter/Save.java @@ -0,0 +1,20 @@ +package bz.bronze.painter; + +import java.io.IOException; + +import javax.imageio.ImageIO; + +public class Save { + public static void saveImage() + { + Window.filePicker.showSaveDialog(Window.paintArea); + + try + { + ImageIO.write(Context.renderedImage, "png", Window.filePicker.getSelectedFile()); + Log.print("[INFO] Image Saved!"); + } catch (IOException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/Painter/src/bz/bronze/painter/Tick.java b/Painter/src/bz/bronze/painter/Tick.java index a293419..3decc17 100644 --- a/Painter/src/bz/bronze/painter/Tick.java +++ b/Painter/src/bz/bronze/painter/Tick.java @@ -14,9 +14,19 @@ public class Tick implements Runnable { Window.opacitySliderLabel.setText("Opacity: " + Window.opacitySlider.getValue()); Window.sizeSliderLabel.setText("Size: " + Window.sizeSlider.getValue()); - if(Mouse.isDown) + Context.drawBorders(Window.paintArea.getGraphics()); + + if(Input.mouseIsDown) { - Context.draw(Window.paintArea.getGraphics(), Window.paintArea.getMousePosition().x, Window.paintArea.getMousePosition().y); + try + { + Context.draw(Window.paintArea.getMousePosition().x, Window.paintArea.getMousePosition().y); + } catch (Exception e) + { + Log.print("[ERROR] Mouse out of bounds!"); + } + + Context.swapBuffers(); //Window.paintArea.repaint(); } } diff --git a/Painter/src/bz/bronze/painter/Window.java b/Painter/src/bz/bronze/painter/Window.java index c8f2581..6032b4f 100644 --- a/Painter/src/bz/bronze/painter/Window.java +++ b/Painter/src/bz/bronze/painter/Window.java @@ -4,10 +4,12 @@ import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.JButton; +import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; +import javax.swing.filechooser.FileNameExtensionFilter; public class Window { public static int width = 1280; @@ -24,6 +26,10 @@ public class Window { public static JSlider sizeSlider = new JSlider(); public static JButton clearButton = new JButton(); + public static JButton saveButton = new JButton(); + + public static JFileChooser filePicker = new JFileChooser(); + public static FileNameExtensionFilter filter = new FileNameExtensionFilter("Images", "png"); public Window(String windowName) { @@ -39,6 +45,11 @@ public class Window { clearButton.setText("Clear"); clearButton.setPreferredSize(new Dimension(100, 50)); + saveButton.setText("Save"); + saveButton.setPreferredSize(new Dimension(100, 50)); + + //filePicker.setFileFilter(filter); + window.setLayout(new BorderLayout()); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setSize(width, height); @@ -49,7 +60,8 @@ public class Window { toolbox.add(sizeSliderLabel); toolbox.add(sizeSlider); toolbox.add(clearButton); - toolbox.add(fpsLabel, BorderLayout.SOUTH); + toolbox.add(saveButton); + //toolbox.add(fpsLabel, BorderLayout.SOUTH); window.add(paintArea); window.add(toolbox, BorderLayout.WEST); @@ -60,7 +72,7 @@ public class Window { window.setResizable(false); window.setVisible(true); - Mouse.listen(); + Input.listen(); Log.print("[WINDOW] Created!"); } From f0313d1cd9fcb114bfaa7caa3651d5971260c678 Mon Sep 17 00:00:00 2001 From: bronze Date: Wed, 26 Jul 2017 02:02:52 -0400 Subject: [PATCH 2/7] This branch works now lol --- Painter/src/bz/bronze/painter/Context.java | 17 ++++++++--------- Painter/src/bz/bronze/painter/Tick.java | 9 ++++----- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Painter/src/bz/bronze/painter/Context.java b/Painter/src/bz/bronze/painter/Context.java index 752c88f..dda1707 100644 --- a/Painter/src/bz/bronze/painter/Context.java +++ b/Painter/src/bz/bronze/painter/Context.java @@ -2,6 +2,7 @@ package bz.bronze.painter; import java.awt.Color; import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.util.Random; @@ -11,10 +12,10 @@ public class Context { static Random rng = new Random(); - static Graphics g; - - static BufferedImage bufferedImage = new BufferedImage(1280, 720, BufferedImage.TYPE_INT_ARGB); + static BufferedImage bufferedImage = new BufferedImage(Window.paintArea.getWidth(), Window.paintArea.getHeight(), BufferedImage.TYPE_INT_ARGB); static RenderedImage renderedImage; + + static Graphics g = bufferedImage.createGraphics(); public static void drawBorders(Graphics g) { @@ -25,7 +26,7 @@ public class Context { public static void draw(int x, int y) { - g = bufferedImage.createGraphics(); + //g = bufferedImage.createGraphics(); int size = Window.sizeSlider.getValue(); Color c = new Color(rng.nextInt(256), rng.nextInt(256), rng.nextInt(256), Window.opacitySlider.getValue()); @@ -34,8 +35,6 @@ public class Context { g.fillOval(x - size / 2, y - size / 2, size, size); - g.dispose(); - renderedImage = bufferedImage; Log.print("[PAINTER] Drawn at " + "X: " + x + " Y: " + y); @@ -43,9 +42,9 @@ public class Context { Log.print("[PAINTER] Opacity " + Window.opacitySlider.getValue()); } - public static void swapBuffers() + public static void swapBuffers(Graphics g) { - //Window.paintArea.repaint(); - Window.paintArea.print(bufferedImage.getGraphics()); + Graphics2D g2d = (Graphics2D) g; + g2d.drawImage(bufferedImage, null, 0, 0); } } \ No newline at end of file diff --git a/Painter/src/bz/bronze/painter/Tick.java b/Painter/src/bz/bronze/painter/Tick.java index 3decc17..4877bdd 100644 --- a/Painter/src/bz/bronze/painter/Tick.java +++ b/Painter/src/bz/bronze/painter/Tick.java @@ -1,11 +1,11 @@ package bz.bronze.painter; public class Tick implements Runnable { - public Thread refresh = new Thread(this); + public Thread tick = new Thread(this); public Tick() { - refresh.start(); + tick.start(); } public void run() { @@ -25,10 +25,9 @@ public class Tick implements Runnable { { Log.print("[ERROR] Mouse out of bounds!"); } - - Context.swapBuffers(); - //Window.paintArea.repaint(); } + + Context.swapBuffers(Window.paintArea.getGraphics()); } } } \ No newline at end of file From d53c104c4ce236e3f80309b94b25fd3af4ff14c0 Mon Sep 17 00:00:00 2001 From: Sebastian Cabrera Date: Wed, 26 Jul 2017 02:16:30 -0400 Subject: [PATCH 3/7] Disabled clear button until I figure out how to fix it lol --- Painter/src/bz/bronze/painter/Window.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Painter/src/bz/bronze/painter/Window.java b/Painter/src/bz/bronze/painter/Window.java index 6032b4f..2d257b8 100644 --- a/Painter/src/bz/bronze/painter/Window.java +++ b/Painter/src/bz/bronze/painter/Window.java @@ -42,6 +42,8 @@ public class Window { sizeSlider.setValue(100); sizeSlider.setPreferredSize(new Dimension(100, 50)); + clearButton.setEnabled(false); + clearButton.setToolTipText("Clearing machine broke!"); clearButton.setText("Clear"); clearButton.setPreferredSize(new Dimension(100, 50)); From 9d8a28fb25943a6a86b556ff20bd554103f4b0ef Mon Sep 17 00:00:00 2001 From: Sebastian Cabrera Date: Wed, 31 Jan 2018 14:21:31 -0500 Subject: [PATCH 4/7] speed limit --- Painter/src/bz/bronze/painter/Tick.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Painter/src/bz/bronze/painter/Tick.java b/Painter/src/bz/bronze/painter/Tick.java index 4877bdd..9d9bd3c 100644 --- a/Painter/src/bz/bronze/painter/Tick.java +++ b/Painter/src/bz/bronze/painter/Tick.java @@ -2,6 +2,8 @@ package bz.bronze.painter; public class Tick implements Runnable { public Thread tick = new Thread(this); + long taskTime = 0; + long sleepTime = 1000/60; public Tick() { @@ -11,6 +13,8 @@ public class Tick implements Runnable { public void run() { while(Painter.isRunning) { + taskTime = System.currentTimeMillis(); + Window.opacitySliderLabel.setText("Opacity: " + Window.opacitySlider.getValue()); Window.sizeSliderLabel.setText("Size: " + Window.sizeSlider.getValue()); @@ -28,6 +32,15 @@ public class Tick implements Runnable { } Context.swapBuffers(Window.paintArea.getGraphics()); + + taskTime = System.currentTimeMillis()-taskTime; + if (sleepTime-taskTime > 0 ) { + try { + Thread.sleep(sleepTime-taskTime); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } } } \ No newline at end of file From 8ba36e12d4646aece271d8d3f7542070d0314c7d Mon Sep 17 00:00:00 2001 From: Sebastian Cabrera Date: Wed, 20 Feb 2019 23:59:34 -0500 Subject: [PATCH 5/7] weird blank line --- Painter/src/bz/bronze/painter/Input.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Painter/src/bz/bronze/painter/Input.java b/Painter/src/bz/bronze/painter/Input.java index 4f173df..0b636e1 100644 --- a/Painter/src/bz/bronze/painter/Input.java +++ b/Painter/src/bz/bronze/painter/Input.java @@ -20,7 +20,6 @@ public class Input { @Override public void mousePressed(MouseEvent e) { mouseIsDown = true; - } @Override From 3133ae8457219cf08fe4fc67303bfdbe1d38b546 Mon Sep 17 00:00:00 2001 From: Sebastian Cabrera Date: Tue, 30 Apr 2019 00:15:28 -0400 Subject: [PATCH 6/7] idek --- Painter/src/bz/bronze/painter/Context.java | 5 ++--- Painter/src/bz/bronze/painter/Painter.java | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Painter/src/bz/bronze/painter/Context.java b/Painter/src/bz/bronze/painter/Context.java index dda1707..0dba227 100644 --- a/Painter/src/bz/bronze/painter/Context.java +++ b/Painter/src/bz/bronze/painter/Context.java @@ -25,10 +25,9 @@ public class Context { } public static void draw(int x, int y) - { - //g = bufferedImage.createGraphics(); - + { int size = Window.sizeSlider.getValue(); + Color c = new Color(rng.nextInt(256), rng.nextInt(256), rng.nextInt(256), Window.opacitySlider.getValue()); g.setColor(c); diff --git a/Painter/src/bz/bronze/painter/Painter.java b/Painter/src/bz/bronze/painter/Painter.java index 44cad84..508bcef 100644 --- a/Painter/src/bz/bronze/painter/Painter.java +++ b/Painter/src/bz/bronze/painter/Painter.java @@ -3,7 +3,6 @@ package bz.bronze.painter; public class Painter { private static String title = "Painter"; public static boolean isRunning; - public static void init() { From baaeb429cb9f09b5c10bd0624144aa49094f9898 Mon Sep 17 00:00:00 2001 From: Sebastian Cabrera Date: Tue, 30 Apr 2019 02:06:37 -0400 Subject: [PATCH 7/7] idek --- Painter/src/bz/bronze/painter/Context.java | 2 +- Painter/src/bz/bronze/painter/Save.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Painter/src/bz/bronze/painter/Context.java b/Painter/src/bz/bronze/painter/Context.java index 0dba227..e1736c8 100644 --- a/Painter/src/bz/bronze/painter/Context.java +++ b/Painter/src/bz/bronze/painter/Context.java @@ -15,7 +15,7 @@ public class Context { static BufferedImage bufferedImage = new BufferedImage(Window.paintArea.getWidth(), Window.paintArea.getHeight(), BufferedImage.TYPE_INT_ARGB); static RenderedImage renderedImage; - static Graphics g = bufferedImage.createGraphics(); + static Graphics g = Window.paintArea.getGraphics(); public static void drawBorders(Graphics g) { diff --git a/Painter/src/bz/bronze/painter/Save.java b/Painter/src/bz/bronze/painter/Save.java index 1d07ff5..ae29367 100644 --- a/Painter/src/bz/bronze/painter/Save.java +++ b/Painter/src/bz/bronze/painter/Save.java @@ -11,7 +11,7 @@ public class Save { try { - ImageIO.write(Context.renderedImage, "png", Window.filePicker.getSelectedFile()); + ImageIO.write(Window.paintArea.getGraphics(), "png", Window.filePicker.getSelectedFile()); Log.print("[INFO] Image Saved!"); } catch (IOException e) { e.printStackTrace();