From aa0b54986303ff563d4465b94e163adbf26e9d6f Mon Sep 17 00:00:00 2001 From: jmoenig Date: Mon, 16 Sep 2013 12:00:59 +0200 Subject: Paint: Flood fill freeze fix thanks for the contribution, Kartik! --- paint.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'paint.js') diff --git a/paint.js b/paint.js index 9841557..44585b2 100644 --- a/paint.js +++ b/paint.js @@ -49,6 +49,7 @@ May 14 - bugfixes, Snap integration (Jens) May 16 - flat design adjustments (Jens) July 12 - pipette tool, code formatting adjustments (Jens) + September 16 - flood fill freeze fix (Kartik) */ @@ -62,7 +63,7 @@ // Global stuff //////////////////////////////////////////////////////// -modules.paint = '2013-July-13'; +modules.paint = '2013-September-16'; // Declarations @@ -671,7 +672,23 @@ PaintCanvasMorph.prototype.floodfill = function (sourcepoint) { p[1] === sourcecolor[1] && p[2] === sourcecolor[2] && p[3] === sourcecolor[3]; - }; + }; + + // if already filled, abort + if (sourcecolor[3] === 0 && + this.settings.primarycolor === "transparent") { + return; + } + if (sourcecolor[0] === this.settings.primarycolor.r && + sourcecolor[1] === this.settings.primarycolor.g && + sourcecolor[2] === this.settings.primarycolor.b && + sourcecolor[3] === this.settings.primarycolor.a) { + return; + } + if (sourcecolor[3] === 0 && this.settings.primarycolor.a === 0) { + return; + } + while (stack.length > 0) { currentpoint = stack.pop(); if (checkpoint(read(currentpoint))) { -- cgit v1.3.1