KanizsaSquare.java
1    package npw;
2    
3    import java.awt.Color;
4    import javax.swing.SwingUtilities;
5    import painter.SPainter;
6    import shapes.*;
7    
8    public class KanizsaSquare {
9    
10       /* 
11        * Program to paint a blue dot in the context of the nonrepresentational 
12        * Painting World, NPW 
13        * 
14        */
15   
16       //The solution to the Kaniza Square problem
17   
18       private void paintTheImage() {
19   
20           SPainter painter = new SPainter("Kanizsa Square",400,400);
21   
22           SCircle dot = new SCircle(75);
23           paintBlueCircle(painter, dot);
24           paintRedCircle(painter, dot);
25           paintGreenCircles(painter, dot);
26   
27           SSquare square = new SSquare(200);
28           paintWhiteSquare(painter, square);
29   
30       }
31   
32       private void paintWhiteSquare(SPainter painter, SSquare square) {
33   
34           painter.moveToCenter();
35           painter.setColor(Color.WHITE);
36           painter.paint(square);
37       }
38       private void paintGreenCircles(SPainter painter, SCircle dot) {
39   
40           painter.mfd(100);
41           painter.mrt(100);
42           painter.setColor(Color.GREEN);
43           painter.paint(dot);
44           painter.mlt(100);
45           painter.mbk(100);
46   
47           painter.mlt(100);
48           painter.mbk(100);
49           painter.paint(dot);
50           painter.mrt(100);
51           painter.mfd(100);
52   
53       }
54   
55       private void paintRedCircle(SPainter painter, SCircle dot) {
56   
57           painter.mbk(100);
58           painter.mrt(100);
59           painter.setColor(Color.RED);
60           painter.paint(dot);
61           painter.mlt(100);
62           painter.mfd(100);
63   
64       }
65   
66       private void paintBlueCircle(SPainter painter, SCircle dot) {
67           painter.mlt(100);
68           painter.mfd(100);
69           painter.setColor(Color.BLUE);
70           painter.paint(dot);
71           painter.mrt(100);
72           painter.mbk(100);
73       }
74   
75       //Required infrastructure
76   
77       public KanizsaSquare() { paintTheImage(); }
78   
79       public static void main(String[] args) {
80   
81           SwingUtilities.invokeLater(new Runnable() {
82               @Override
83               public void run() {
84                   new KanizsaSquare();
85               }
86           });
87   
88       }
89   
90   
91   }