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