Compare commits

...
Sign in to create a new pull request.

7 commits
master ... v2

Author SHA1 Message Date
Sebastian Cabrera
baaeb429cb idek 2019-04-30 02:06:37 -04:00
Sebastian Cabrera
3133ae8457 idek 2019-04-30 00:15:28 -04:00
Sebastian Cabrera
8ba36e12d4 weird blank line 2019-02-20 23:59:34 -05:00
Sebastian Cabrera
9d8a28fb25 speed limit 2018-01-31 14:21:31 -05:00
Sebastian Cabrera
d53c104c4c Disabled clear button until I figure out how to fix it lol 2017-07-26 02:16:30 -04:00
bronze
f0313d1cd9 This branch works now lol 2017-07-26 02:02:52 -04:00
bronze
e8d3196e42 Initial Commit for v2 (Broken) 2017-07-19 16:11:52 -04:00
6 changed files with 108 additions and 32 deletions

View file

@ -2,7 +2,9 @@ package bz.bronze.painter;
import java.awt.Color; import java.awt.Color;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.util.Random; import java.util.Random;
public class Context { public class Context {
@ -10,28 +12,38 @@ public class Context {
static Random rng = new Random(); static Random rng = new Random();
static BufferedImage bufferedImage = new BufferedImage(Window.paintArea.getWidth(), Window.paintArea.getHeight(), BufferedImage.TYPE_INT_ARGB);
static RenderedImage renderedImage;
static Graphics g = Window.paintArea.getGraphics();
public static void drawBorders(Graphics g) 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)
{ {
int size = Window.sizeSlider.getValue(); int size = Window.sizeSlider.getValue();
Color c = new Color(rng.nextInt(256), rng.nextInt(256), rng.nextInt(256), Window.opacitySlider.getValue()); Color c = new Color(rng.nextInt(256), rng.nextInt(256), rng.nextInt(256), Window.opacitySlider.getValue());
g.setColor(c); g.setColor(c);
g.fillOval(x - size / 2, y - size / 2, size, size); g.fillOval(x - size / 2, y - size / 2, size, size);
g.dispose(); renderedImage = bufferedImage;
Log.print("[PAINTER] Drawn at, " + "X: " + x + " Y: " + y); 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] Color " + "R: " + c.getRed() + " G: " + c.getGreen() + " B: " + c.getBlue());
Log.print("[PAINTER] Opacity, " + Window.opacitySlider.getValue()); Log.print("[PAINTER] Opacity " + Window.opacitySlider.getValue());
}
public static void swapBuffers(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(bufferedImage, null, 0, 0);
} }
} }

View file

@ -6,8 +6,8 @@ import java.awt.event.ActionListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
public class Mouse { public class Input {
static boolean isDown; static boolean mouseIsDown;
public static void listen() public static void listen()
{ {
@ -19,13 +19,12 @@ public class Mouse {
@Override @Override
public void mousePressed(MouseEvent e) { public void mousePressed(MouseEvent e) {
isDown = true; mouseIsDown = true;
} }
@Override @Override
public void mouseReleased(MouseEvent e) { public void mouseReleased(MouseEvent e) {
isDown = false; mouseIsDown = false;
} }
@Override @Override
@ -39,12 +38,22 @@ public class Mouse {
}); });
Window.clearButton.addActionListener(new ActionListener() Window.clearButton.addActionListener(new ActionListener()
{ {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
Window.paintArea.repaint(); 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() public static int getMouseX()

View file

@ -3,12 +3,11 @@ package bz.bronze.painter;
public class Painter { public class Painter {
private static String title = "Painter"; private static String title = "Painter";
public static boolean isRunning; public static boolean isRunning;
public static void init() public static void init()
{ {
Window w = new Window(title); Window w = new Window(title);
//Context.drawBorders(Window.paintArea.getGraphics()); Context.drawBorders(Window.paintArea.getGraphics());
Tick refresh = new Tick(); Tick refresh = new Tick();
Log.print("[INIT] Done!"); Log.print("[INIT] Done!");

View file

@ -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(Window.paintArea.getGraphics(), "png", Window.filePicker.getSelectedFile());
Log.print("[INFO] Image Saved!");
} catch (IOException e) {
e.printStackTrace();
}
}
}

View file

@ -1,24 +1,46 @@
package bz.bronze.painter; package bz.bronze.painter;
public class Tick implements Runnable { public class Tick implements Runnable {
public Thread refresh = new Thread(this); public Thread tick = new Thread(this);
long taskTime = 0;
long sleepTime = 1000/60;
public Tick() public Tick()
{ {
refresh.start(); tick.start();
} }
public void run() { public void run() {
while(Painter.isRunning) while(Painter.isRunning)
{ {
taskTime = System.currentTimeMillis();
Window.opacitySliderLabel.setText("Opacity: " + Window.opacitySlider.getValue()); Window.opacitySliderLabel.setText("Opacity: " + Window.opacitySlider.getValue());
Window.sizeSliderLabel.setText("Size: " + Window.sizeSlider.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
//Window.paintArea.repaint(); {
Context.draw(Window.paintArea.getMousePosition().x, Window.paintArea.getMousePosition().y);
} catch (Exception e)
{
Log.print("[ERROR] Mouse out of bounds!");
}
} }
Context.swapBuffers(Window.paintArea.getGraphics());
taskTime = System.currentTimeMillis()-taskTime;
if (sleepTime-taskTime > 0 ) {
try {
Thread.sleep(sleepTime-taskTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} }
} }
} }

View file

@ -4,10 +4,12 @@ import java.awt.BorderLayout;
import java.awt.Dimension; import java.awt.Dimension;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JSlider; import javax.swing.JSlider;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Window { public class Window {
public static int width = 1280; public static int width = 1280;
@ -24,6 +26,10 @@ public class Window {
public static JSlider sizeSlider = new JSlider(); public static JSlider sizeSlider = new JSlider();
public static JButton clearButton = new JButton(); 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) public Window(String windowName)
{ {
@ -36,9 +42,16 @@ public class Window {
sizeSlider.setValue(100); sizeSlider.setValue(100);
sizeSlider.setPreferredSize(new Dimension(100, 50)); sizeSlider.setPreferredSize(new Dimension(100, 50));
clearButton.setEnabled(false);
clearButton.setToolTipText("Clearing machine broke!");
clearButton.setText("Clear"); clearButton.setText("Clear");
clearButton.setPreferredSize(new Dimension(100, 50)); clearButton.setPreferredSize(new Dimension(100, 50));
saveButton.setText("Save");
saveButton.setPreferredSize(new Dimension(100, 50));
//filePicker.setFileFilter(filter);
window.setLayout(new BorderLayout()); window.setLayout(new BorderLayout());
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(width, height); window.setSize(width, height);
@ -49,7 +62,8 @@ public class Window {
toolbox.add(sizeSliderLabel); toolbox.add(sizeSliderLabel);
toolbox.add(sizeSlider); toolbox.add(sizeSlider);
toolbox.add(clearButton); toolbox.add(clearButton);
toolbox.add(fpsLabel, BorderLayout.SOUTH); toolbox.add(saveButton);
//toolbox.add(fpsLabel, BorderLayout.SOUTH);
window.add(paintArea); window.add(paintArea);
window.add(toolbox, BorderLayout.WEST); window.add(toolbox, BorderLayout.WEST);
@ -60,7 +74,7 @@ public class Window {
window.setResizable(false); window.setResizable(false);
window.setVisible(true); window.setVisible(true);
Mouse.listen(); Input.listen();
Log.print("[WINDOW] Created!"); Log.print("[WINDOW] Created!");
} }