View Javadoc
1   package org.woehlke.computer.kurzweil.tabs.sierpinskitriangle;
2   
3   import org.woehlke.computer.kurzweil.tabs.sierpinskitriangle.SierpinskiTriangleModel;
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 SierpinskiTriangleCanvas extends JComponent {
20  
21      private volatile SierpinskiTriangleModel app;
22      private volatile Dimension preferredSize;
23  
24      public SierpinskiTriangleCanvas(SierpinskiTriangleModel app) {
25          this.app = app;
26          int width = this.app.getWorldDimensions().getWidth();
27          int height = this.app.getWorldDimensions().getHeight();
28          this.preferredSize = new Dimension(width, height);
29          this.setSize(this.preferredSize);
30          this.setPreferredSize(preferredSize);
31      }
32  
33      public void paint(Graphics g) {
34          this.setSize(this.preferredSize);
35          this.setPreferredSize(preferredSize);
36          super.paintComponent(g);
37          int red = 0;
38          int green = 0;
39          int blue = 0;
40          for(int y = 0; y < app.getWorldDimensions().getY(); y++){
41              for(int x = 0; x < app.getWorldDimensions().getX(); x++){
42                  blue = (((app.getCellStatusFor(x,y))*4)%256);
43                  Color stateColor = new Color(red, green, blue);
44                  g.setColor(stateColor);
45                  g.drawLine(x,y,x,y);
46              }
47          }
48      }
49  
50      public void update(Graphics g) {
51          paint(g);
52      }
53  
54  }