View Javadoc
1   package org.woehlke.computer.kurzweil.tabs.wator;
2   
3   import org.woehlke.computer.kurzweil.tabs.wator.WatorModel;
4   
5   import javax.swing.*;
6   import java.awt.*;
7   
8   
9   /**
10   * Mandelbrot Set drawn by a Turing Machine.
11   *
12   * (C) 2006 - 2013 Thomas Woehlke.
13   * https://thomas-woehlke.blogspot.com/2016/01/mandelbrot-set-drawn-by-turing-machine.html
14   * @author Thomas Woehlke
15   *
16   * Date: 05.02.2006
17   * Time: 00:51:51
18   */
19  public class WatorCanvas extends JComponent {
20  
21      private static final long serialVersionUID = 7526471155622776147L;
22  
23      private volatile WatorModel app;
24      private volatile Dimension preferredSize;
25  
26      public WatorCanvas(WatorModel app) {
27          this.app = app;
28          int width = this.app.getWorldDimensions().getWidth();
29          int height = this.app.getWorldDimensions().getHeight();
30          this.preferredSize = new Dimension(width, height);
31          this.setSize(this.preferredSize);
32          this.setPreferredSize(preferredSize);
33      }
34  
35      public void paint(Graphics g) {
36          this.setSize(this.preferredSize);
37          this.setPreferredSize(preferredSize);
38          super.paintComponent(g);
39          int red = 0;
40          int green = 0;
41          int blue = 0;
42          for(int y = 0; y < app.getWorldDimensions().getY(); y++){
43              for(int x = 0; x < app.getWorldDimensions().getX(); x++){
44                  blue = (((app.getCellStatusFor(x,y))*4)%256);
45                  Color stateColor = new Color(red, green, blue);
46                  g.setColor(stateColor);
47                  g.drawLine(x,y,x,y);
48              }
49          }
50      }
51  
52      public void update(Graphics g) {
53          paint(g);
54      }
55  
56  }