From d89b39698081cb6c44bc54f6033f8d0d524bc3f2 Mon Sep 17 00:00:00 2001 From: Mukund Sivaraman Date: Tue, 14 Nov 2006 19:44:21 +0000 Subject: [PATCH] plug-ins/FractalExplorer/FractalExplorer.c Fixed bug #372671 and made 2006-11-15 Mukund Sivaraman * plug-ins/FractalExplorer/FractalExplorer.c * plug-ins/FractalExplorer/Dialogs.c: Fixed bug #372671 and made loglog smoothing work again. --- ChangeLog | 6 ++++++ plug-ins/FractalExplorer/Dialogs.c | 18 ++++++++++++++---- plug-ins/FractalExplorer/FractalExplorer.c | 17 +++++++++++++---- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index c6d20b8428..45e5b15f11 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-11-15 Mukund Sivaraman + + * plug-ins/FractalExplorer/FractalExplorer.c + * plug-ins/FractalExplorer/Dialogs.c: Fixed bug #372671 and made + loglog smoothing work again. + 2006-11-14 Simon Budig * plug-ins/script-fu/scripts/grid-system.scm: don't register in the diff --git a/plug-ins/FractalExplorer/Dialogs.c b/plug-ins/FractalExplorer/Dialogs.c index ac14d4a265..5d92ff567b 100644 --- a/plug-ins/FractalExplorer/Dialogs.c +++ b/plug-ins/FractalExplorer/Dialogs.c @@ -1254,6 +1254,7 @@ dialog_update_preview (void) gint counter; gint color; gint useloglog; + gdouble log2; if (NULL == wint.preview) return; @@ -1283,6 +1284,8 @@ dialog_update_preview (void) p_ul = wint.wimage; iteration = MAX (1, (int) wvals.iter); useloglog = wvals.useloglog; + log2 = log (2.0); + for (ycoord = 0; ycoord < preview_height; ycoord++) { px = 0; @@ -1302,9 +1305,8 @@ dialog_update_preview (void) x = 0; y = 0; } - for (counter = 0; - (counter < iteration) && ((x * x + y * y) < 4); - counter++) + + for (counter = 0; counter < iteration; counter++) { oldx = x; oldy = y; @@ -1414,11 +1416,19 @@ dialog_update_preview (void) } x = xx; + + if (((x * x) + (y * y)) >= 4.0) + break; } if (useloglog) { - adjust = log (log (x * x + y * y) / 2) / log (2); + gdouble modulus_square = (x * x) + (y * y); + + if (modulus_square > (G_E * G_E)) + adjust = log (log (modulus_square) / 2.0) / log2; + else + adjust = 0.0; } else { diff --git a/plug-ins/FractalExplorer/FractalExplorer.c b/plug-ins/FractalExplorer/FractalExplorer.c index db79e722c4..eb522c90dc 100644 --- a/plug-ins/FractalExplorer/FractalExplorer.c +++ b/plug-ins/FractalExplorer/FractalExplorer.c @@ -523,11 +523,13 @@ explorer_render_row (const guchar *src_row, gint color; gint iteration; gint useloglog; + gdouble log2; cx = wvals.cx; cy = wvals.cy; useloglog = wvals.useloglog; iteration = wvals.iter; + log2 = log (2.0); for (col = 0; col < row_width; col++) { @@ -543,9 +545,8 @@ explorer_render_row (const guchar *src_row, x = 0; y = 0; } - for (counter = 0; - (counter < iteration) && ((x * x + y * y) < 4); - counter++) + + for (counter = 0; counter < iteration; counter++) { oldx=x; oldy=y; @@ -657,11 +658,19 @@ explorer_render_row (const guchar *src_row, xx = xx - 1; } x = xx; + + if (((x * x) + (y * y)) >= 4.0) + break; } if (useloglog) { - adjust = log (log (x * x + y * y) / 2) / log (2); + gdouble modulus_square = (x * x) + (y * y); + + if (modulus_square > (G_E * G_E)) + adjust = log (log (modulus_square) / 2.0) / log2; + else + adjust = 0.0; } else {