KanizsaSquare.java
package npw;

import painter.SPainter;
import shapes.SSquare;
import shapes.SCircle;
import javax.swing.*;
import java.awt.*;

public class KanizsaSquare {
    private void paintTheImage() {
       SPainter painter = new SPainter("Kanizsa Square",400,400);

       SCircle dot = new SCircle(75);
       paintBlueCircle(painter, dot);
       paintRedCircle(painter, dot);
       paintGreenCircles(painter, dot);

       SSquare square = new SSquare(200);
       paintWhiteSquare(painter, square);
}

    private void paintBlueCircle(SPainter painter, SCircle dot) {
        painter.setColor(Color.BLUE);
        painter.moveToCenter();
        painter.mlt(100);
        painter.mfd(100);
        painter.paint(dot);
        painter.moveToCenter();
    }

    private void paintRedCircle(SPainter painter, SCircle dot) {
        painter.setColor(Color.RED);
        painter.moveToCenter();
        painter.mrt(100);
        painter.mbk(100);
        painter.paint(dot);
        painter.moveToCenter();

    }

    private void paintGreenCircles(SPainter painter, SCircle dot) {
       painter.setColor(Color.GREEN);
       painter.moveToCenter();
       painter.mlt(100);
       painter.mbk(100);
       painter.paint(dot);
       painter.moveToCenter();

       dot = new SCircle(75);
       painter.moveToCenter();
       painter.mrt(100);
       painter.mfd(100);
       painter.paint(dot);
       painter.moveToCenter();
    }

    private void paintWhiteSquare(SPainter painter, SSquare square) {
       painter.setColor(Color.WHITE);
       painter.paint(square);
    }

    // REQUIRED INFRASTRUCTURE

    public KanizsaSquare() {
        paintTheImage();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new npw.KanizsaSquare();
            }
        });
    }
}