From 07285e7786b93b1a30dee22ff85de101760ef1ca Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Tue, 21 Oct 2014 17:51:43 +0200 Subject: [PATCH] Check bounds in drawPoint(). --- DrawingWindow.java | 4 +++- Test.java | 12 ++++++++++++ overview.html | 7 ++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/DrawingWindow.java b/DrawingWindow.java index 1b93c57..957f5ff 100644 --- a/DrawingWindow.java +++ b/DrawingWindow.java @@ -34,7 +34,7 @@ import javax.swing.JPanel; * possible de fermer la fenêtre via le gestionnaire de fenêtres. * * @author Arnaud Giersch <arnaud.giersch@univ-fcomte.fr> - * @version 20141021 + * @version 20141021a */ public class DrawingWindow { @@ -242,6 +242,8 @@ public class DrawingWindow { * @see #setColor */ public void drawPoint(int x, int y) { + if (x < 0 || y < 0 || x >= width || y >= height) + return; synchronized (image) { image.setRGB(x, y, graphics.getColor().getRGB()); } diff --git a/Test.java b/Test.java index d3e4e62..d68d8a4 100644 --- a/Test.java +++ b/Test.java @@ -1,6 +1,7 @@ class Test{ public static void main(String[] args) { DrawingWindow w1 = new DrawingWindow("Test!", 400, 400); + w1.setColor("lawngreen"); for (int i = 0; i < 12; i++) { int p = 10 * i + 10; @@ -22,6 +23,16 @@ class Test{ w1.fillTriangle(p, 150, p + i, 150 + i/2, p, 150 + i); } + // Try out of bounds drawings + w1.setColor("blue"); + w1.drawLine(-10, w1.height - 10, w1.width + 10, w1.height - 10); + w1.drawLine(w1.width - 10, -10, w1.width - 10, w1.height + 10); + w1.setColor("red"); + for (int x = -10; x <= w1.width + 10; x++) + w1.drawPoint(x, w1.height - 20); + for (int y = -10; y <= w1.height + 10; y++) + w1.drawPoint(w1.width - 20, y); + DrawingWindow w2 = new DrawingWindow("Test!", 800, 600); w2.setBgColor("red"); w2.setColor("blue"); @@ -47,6 +58,7 @@ class Test{ System.out.println("Click anywhere on w1..."); + w1.setColor("black"); while (w1.waitMousePress(5 * 1000)) { int x = w1.getMouseX(); int y = w1.getMouseY(); diff --git a/overview.html b/overview.html index 4b85e16..69ce0b5 100644 --- a/overview.html +++ b/overview.html @@ -39,13 +39,14 @@

Modifications

--- mar. 21 oct. 2014 14:52:46 +0200
+-- mar. 21 oct. 2014
         * Les méthodes *sleep() sont `public'.
+        * Vérification des coordonnées dans drawPoint().
 
--- ven. 17 oct. 2014 14:09:50 +0200
+-- ven. 17 oct. 2014
         * Correction d'un décalage avec getMouse{X,Y}.
 
--- lun. 14 oct. 2014 22:10:45 +0200
+-- lun. 14 oct. 2014
         * Ajout des méthodes setColor(int) et setBgColor(int).
         * Liste de noms de couleurs plus complète.
         * Ne termine l'application que lorsque la dernière fenêtre est fermée.
-- 
2.20.1