View Javadoc
1   package org.woehlke.computer.kurzweil.tabs.sierpinskitriangle.model;
2   
3   
4   import org.woehlke.computer.kurzweil.tabs.sierpinskitriangle.model.SierpinskiTriangleTabState;
5   
6   import static org.woehlke.computer.kurzweil.tabs.sierpinskitriangle.model.SierpinskiTriangleTabState.*;
7   
8   /**
9    * Mandelbrot Set drawn by a Turing Machine.
10   *
11   * (C) 2006 - 2015 Thomas Woehlke.
12   * https://thomas-woehlke.blogspot.com/2016/01/mandelbrot-set-drawn-by-turing-machine.html
13   * @author Thomas Woehlke
14   *
15   * Created by tw on 16.12.2019.
16   */
17  public class SierpinskiTriangleTabStateMachine {
18  
19      private volatile SierpinskiTriangleTabState applicationState;
20  
21      public SierpinskiTriangleTabStateMachine() {
22          this.applicationState = SierpinskiTriangleTabState.MANDELBROT;
23      }
24  
25      public void click(){
26          SierpinskiTriangleTabState nextApplicationState = null;
27          switch (applicationState){
28              case MANDELBROT:
29                  nextApplicationState = MANDELBROT_ZOOM;
30                  break;
31              case MANDELBROT_ZOOM:
32                  nextApplicationState = MANDELBROT;
33                  break;
34          }
35          this.setApplicationState(nextApplicationState);
36      }
37  
38      public void setModeSwitch() {
39          SierpinskiTriangleTabState nextApplicationState = this.applicationState;
40          /*
41          switch (applicationState){
42              case MANDELBROT:
43              case JULIA_SET:
44                  break;
45              case MANDELBROT_ZOOM:
46                  nextApplicationState = MANDELBROT;
47                  break;
48              case JULIA_SET_ZOOM:
49                  nextApplicationState = JULIA_SET;
50                  break;
51          }
52          */
53          this.setApplicationState(nextApplicationState);
54      }
55  
56      public void setModeZoom() {
57          SierpinskiTriangleTabState nextApplicationState = this.applicationState;
58          switch (applicationState){
59              case MANDELBROT:
60                  nextApplicationState = MANDELBROT_ZOOM;
61                  break;
62              //case JULIA_SET:
63                //  nextApplicationState = JULIA_SET_ZOOM;
64                  //break;
65              case MANDELBROT_ZOOM:
66              //case JULIA_SET_ZOOM:
67                  break;
68          }
69          this.setApplicationState(nextApplicationState);
70      }
71  
72      public SierpinskiTriangleTabState getApplicationState() {
73          return applicationState;
74      }
75  
76      public void setApplicationState(SierpinskiTriangleTabState applicationState) {
77          this.applicationState = applicationState;
78      }
79  
80  }