KanizsaSquare.java
1    package npw;
2    
3    import java.awt.Color;
4    import javax.swing.SwingUtilities;
5    import painter.SPainter;
6    import shapes.SCircle;
7    import shapes.SSquare;
8    
9    public class KanizsaSquare {
10   
11   
12       private void paintTheImage() {
13           SPainter painter = new SPainter("Kanizsa Square",400,400);
14   
15           SCircle dot = new SCircle(75);
16           paintBlueCircle(painter, dot);
17           paintRedCircle(painter, dot);
18           paintGreenCircles(painter, dot);
19   
20           SSquare square = new SSquare(200);
21           paintWhiteSquare(painter, square);
22       }
23   
24       private void paintWhiteSquare(SPainter painter, SSquare square) {
25           painter.setColor(Color.WHITE);
26           painter.paint(square);
27       }
28   
29       private void paintGreenCircles(SPainter painter, SCircle dot) {
30           painter.setColor(Color.GREEN);
31           //Top Right
32           painter.mfd(100);
33           painter.mrt(100);
34           painter.paint(dot);
35           painter.mlt(100);
36           painter.mbk(100);
37           //Bottom left
38           painter.mbk(100);
39           painter.mlt(100);
40           painter.paint(dot);
41           painter.mrt(100);
42           painter.mfd(100);
43       }
44   
45       private void paintRedCircle(SPainter painter, SCircle dot) {
46           painter.setColor(Color.RED);
47           painter.mbk(100);
48           painter.mrt(100);
49           painter.paint(dot);
50           painter.mlt(100);
51           painter.mfd(100);
52       }
53   
54       private void paintBlueCircle(SPainter painter, SCircle dot) {
55           painter.setColor(Color.BLUE);
56           painter.mfd(100);
57           painter.mlt(100);
58           painter.paint(dot);
59           painter.mrt(100);
60           painter.mbk(100);
61       }
62   
63   
64       //Required Infrastructure
65       public KanizsaSquare() {
66           paintTheImage();
67       }
68   
69       public static void main(String[] args) {
70           SwingUtilities.invokeLater(new Runnable() {
71               public void run () {
72                   new KanizsaSquare();
73               }
74           });
75   
76       }
77   }
78   
79