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