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    import java.awt.geom.Point2D;
10   
11   public class KanizsaSquare {
12       private void paintTheImage() {
13           SPainter painter = new SPainter("Kanizsa Square",600,600);
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.moveToCenter();
27           painter.paint(square);
28       }
29   
30       private void paintGreenCircles(SPainter painter, SCircle dot) {
31   
32           painter.setColor(Color.green);
33           painter.mlt(100);
34           painter.mbk(100);
35           painter.paint(dot);
36           painter.moveToCenter();
37           painter.mrt(100);
38           painter.mfd(100);
39           painter.paint(dot);
40           painter.moveToCenter();
41       }
42   
43       private void paintRedCircle(SPainter painter, SCircle dot) {
44           painter.setColor(Color.red);
45           painter.mbk(100);
46           painter.mrt(100);
47           painter.paint(dot);
48           painter.moveToCenter();
49       }
50   
51       private void paintBlueCircle(SPainter painter, SCircle dot) {
52           painter.setColor(Color.blue);
53           painter.mlt(100);
54           painter.mfd(100);
55           painter.paint(dot);
56           painter.moveToCenter();
57       }
58   
59       //Required Infrastructure
60       public KanizsaSquare() {
61           paintTheImage();
62       }
63       public static void main(String[] args) {
64           SwingUtilities.invokeLater(new Runnable() {
65               public void run() {
66                   new KanizsaSquare();
67               }
68           });
69       }
70   }
71