aboutsummaryrefslogtreecommitdiff
path: root/Week11 Mandelbrot/src/fractals
diff options
context:
space:
mode:
Diffstat (limited to 'Week11 Mandelbrot/src/fractals')
-rw-r--r--Week11 Mandelbrot/src/fractals/ColorTable.java69
-rw-r--r--Week11 Mandelbrot/src/fractals/GridFiller.java40
-rw-r--r--Week11 Mandelbrot/src/fractals/GridView.java1
-rw-r--r--Week11 Mandelbrot/src/fractals/MainWindow.java58
4 files changed, 40 insertions, 128 deletions
diff --git a/Week11 Mandelbrot/src/fractals/ColorTable.java b/Week11 Mandelbrot/src/fractals/ColorTable.java
deleted file mode 100644
index 064bd15..0000000
--- a/Week11 Mandelbrot/src/fractals/ColorTable.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package fractals;
-
-import java.awt.Color;
-
-/**
- *
- * @author Sjaak Smetsers
- * @version 1.0. 14-03-2014
- */
-/**
- * Converting indexes (ranging from 0 to tableSize) to RGB colors
- *
- * @author Sjaak
- */
-public class ColorTable {
-
- // a two dimensional conversion array
- private int[][] rgbColors;
- private int tableSize;
-
- private static final int MAXRGB = 256;
-
- public static final int[] BLACK = new int[3];
-
- /**
- * converts specified color to an rgb array
- *
- * @param color the color to be converted
- * @return the corresponding array of rgb values
- */
- private static int[] color2RGB(Color color) {
- int[] rgb = {color.getRed(), color.getGreen(), color.getBlue()};
- return rgb;
- }
-
- /**
- * creates and fills the table with the specified size
- *
- * @param tableSize the size of the table
- */
- public ColorTable(int tableSize) {
- this.tableSize = tableSize;
- this.rgbColors = new int[tableSize][3];
-
- randomColorSet();
- }
-
- /**
- * fills the table randomly
- */
- private void randomColorSet() {
- for (int[] color : rgbColors) {
- for (int c = 0; c < 3; c++) {
- color[c] = (int) (Math.random() * 256);
- }
- }
- }
-
- /**
- * converts an index into an rgb value
- *
- * @param color_index to be converted
- * @return the resulting rgb value
- */
- public int[] getColor(int color_index) {
- return rgbColors[color_index % tableSize];
- }
-
-}
diff --git a/Week11 Mandelbrot/src/fractals/GridFiller.java b/Week11 Mandelbrot/src/fractals/GridFiller.java
deleted file mode 100644
index 73b422e..0000000
--- a/Week11 Mandelbrot/src/fractals/GridFiller.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package fractals;
-
-/**
- *
- * @author Sjaak Smetsers
-** @version 1.0, 13-03-2013
- */
-
-/**
- * A skeleton class illustrating the use of the grid interface
- *
- */
-public class GridFiller {
- private Grid grid; // the grid to be filled
- private ColorTable colorTable; // a table for converting indexes to
- // rgb values
-
- /**
- * The constructor
- * @param grid to be filled
- */
- public GridFiller (Grid grid) {
- colorTable = new ColorTable (30); // some random value, needs to be adjusted
- this.grid = grid;
- }
-
- /**
- * fills the whole grid with some arbitrarily chosen color
- *
- */
- public void fill () {
- int grid_w = grid.getWidth(), grid_h = grid.getHeight();
- for (int i = 0; i < grid_w; i++) {
- for (int j = 0; j < grid_h; j++) {
- int color_index = i/5 * grid_w/5 + j/5;
- grid.setPixel(i, j, colorTable.getColor(color_index));
- }
- }
- }
-}
diff --git a/Week11 Mandelbrot/src/fractals/GridView.java b/Week11 Mandelbrot/src/fractals/GridView.java
index 4a51114..d85dc6e 100644
--- a/Week11 Mandelbrot/src/fractals/GridView.java
+++ b/Week11 Mandelbrot/src/fractals/GridView.java
@@ -5,7 +5,6 @@ import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
-import javax.swing.JComponent;
import javax.swing.JPanel;
/**
diff --git a/Week11 Mandelbrot/src/fractals/MainWindow.java b/Week11 Mandelbrot/src/fractals/MainWindow.java
index 7a7a94f..b6276af 100644
--- a/Week11 Mandelbrot/src/fractals/MainWindow.java
+++ b/Week11 Mandelbrot/src/fractals/MainWindow.java
@@ -2,10 +2,10 @@ package fractals;
-import com.camilstaps.mandelbrot.MandelbrotController;
+import com.camilstaps.mandelbrot.MandelbrotView;
import com.camilstaps.mandelbrot.ZoomFrame;
import java.awt.BorderLayout;
-import java.awt.FlowLayout;
+import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -26,20 +26,25 @@ import javax.swing.JTextField;
* creates a window to which a GridView panel is added
*
*/
-public class MainWindow implements MandelbrotController.MandelbrotProvider, ZoomFrame.MandelbrotTextFields {
+public class MainWindow implements MandelbrotView.MandelbrotProvider, ZoomFrame.MandelbrotTextFields {
// the size of the window
public static final int WIDTH = 650, HEIGHT = 650;
+ private final String INITIAL_CENTER_X = "0",
+ INITIAL_CENTER_Y = "0",
+ INITIAL_SCALE = "100",
+ INITIAL_REPETITIONS = "100";
+
// The grip panel
private final GridView grid;
- private final JTextField field_centerX = new JTextField("0", 6);
- private final JTextField field_centerY = new JTextField("0", 6);
- private final JTextField field_scale = new JTextField("100", 6);
- private final JTextField field_repetitions = new JTextField("100", 6);
+ private final JTextField field_centerX = new JTextField(INITIAL_CENTER_X, 6);
+ private final JTextField field_centerY = new JTextField(INITIAL_CENTER_Y, 6);
+ private final JTextField field_scale = new JTextField(INITIAL_SCALE, 6);
+ private final JTextField field_repetitions = new JTextField(INITIAL_REPETITIONS, 6);
private final JButton button_redraw = new JButton("Redraw");
- private final MandelbrotController mandelbrotController;
+ private final MandelbrotView mandelbrotController;
public MainWindow () {
ZoomFrame mainFrame = new ZoomFrame ("Mandelbrot");
@@ -55,13 +60,15 @@ public class MainWindow implements MandelbrotController.MandelbrotProvider, Zoom
grid = new GridView(WIDTH - insets.left - insets.right, HEIGHT - insets.top - insets.bottom);
mainFrame.add(grid, BorderLayout.CENTER);
- mandelbrotController = new MandelbrotController(this, grid);
+ mandelbrotController = new MandelbrotView(this, grid);
mandelbrotController.redraw();
- mainFrame.setMandelbrotController(mandelbrotController);
+ mainFrame.setMandelbrotView(mandelbrotController);
mainFrame.setMandelbrotTextFields(this);
- JPanel panel = new JPanel(new FlowLayout());
+ JPanel left = new JPanel(new BorderLayout());
+
+ JPanel panel = new JPanel(new GridLayout(10,1));
button_redraw.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
@@ -72,15 +79,30 @@ public class MainWindow implements MandelbrotController.MandelbrotProvider, Zoom
});
panel.add(new JLabel("Center x:"));
panel.add(field_centerX);
- panel.add(new JLabel("y:"));
+ panel.add(new JLabel("Center y:"));
panel.add(field_centerY);
panel.add(new JLabel("Scale:"));
panel.add(field_scale);
panel.add(new JLabel("Repetitions:"));
panel.add(field_repetitions);
panel.add(button_redraw);
+ JButton button_reset = new JButton("Reset");
+ button_reset.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent ae) {
+ field_centerX.setText(INITIAL_CENTER_X);
+ field_centerY.setText(INITIAL_CENTER_Y);
+ field_scale.setText(INITIAL_SCALE);
+ field_repetitions.setText(INITIAL_REPETITIONS);
+ mandelbrotController.redraw();
+ }
+ });
+ panel.add(button_reset);
+
+ left.add(panel, BorderLayout.NORTH);
+ left.add(new JPanel(), BorderLayout.CENTER);
- mainFrame.add(panel, BorderLayout.PAGE_END);
+ mainFrame.add(left, BorderLayout.EAST);
mainFrame.pack();
}
@@ -115,22 +137,22 @@ public class MainWindow implements MandelbrotController.MandelbrotProvider, Zoom
@Override
public void setCenterX(double x) {
- field_centerX.setText(Double.toString(x));
+ field_centerX.setText(String.format("%.5f", x));
}
@Override
public void setCenterY(double y) {
- field_centerY.setText(Double.toString(y));
+ field_centerY.setText(String.format("%.5f", y));
}
@Override
public void setScale(double scale) {
- field_scale.setText(Double.toString(scale));
+ field_scale.setText(String.format("%.5f", scale));
}
@Override
- public void setRepetitions(double repetitions) {
- field_repetitions.setText(Double.toString(repetitions));
+ public void setRepetitions(int repetitions) {
+ field_repetitions.setText(Integer.toString(repetitions));
}
}