updated link to the tutorial (pointed out by Alan Horkan) and added

2004-11-13  Sven Neumann  <sven@gimp.org>

	* plug-ins/ifscompose/README.ifscompose: updated link to the
	tutorial (pointed out by Alan Horkan) and added another link.

	* plug-ins/ifscompose/ifscompose_storage.c: removed trailing
	whitespace.
This commit is contained in:
Sven Neumann 2004-11-13 11:47:20 +00:00 committed by Sven Neumann
parent 2cb5f99887
commit 9d64e06b46
3 changed files with 50 additions and 41 deletions

View File

@ -1,3 +1,11 @@
2004-11-13 Sven Neumann <sven@gimp.org>
* plug-ins/ifscompose/README.ifscompose: updated link to the
tutorial (pointed out by Alan Horkan) and added another link.
* plug-ins/ifscompose/ifscompose_storage.c: removed trailing
whitespace.
2004-11-13 Sven Neumann <sven@gimp.org>
* plug-ins/common/retinex.c (retinex_dialog): fixed table size.

View File

@ -1,5 +1,5 @@
IfsCompose-0.6.1
----------------
IfsCompose
----------
IfsCompose is a plug-in for the GIMP that allows
the creation of Iterated Function System fractals by direct
@ -72,11 +72,12 @@ Note that if you render onto an image with an alpha channel, the
background will be transparent (very useful for compositing several
fractals), otherwise the background will be the current background.
There is a tutorial and some example images at:
There are tutorials and some example images at:
http://www.gtk.org/~otaylor/IfsCompose/ifs_tutorial/tutorial.html
http://tigert.gimp.org/gimp/ifs-compose/
http://www.msc.cornell.edu/~otaylor/plug-ins/ifscompose.html
Have fun!
Owen Taylor
owt1@cornell.edu

View File

@ -89,8 +89,8 @@ static struct
{ "prob", TOKEN_PROB }
};
static GTokenType
ifsvals_parse_color (GScanner *scanner,
static GTokenType
ifsvals_parse_color (GScanner *scanner,
GimpRGB *result)
{
GTokenType token;
@ -102,9 +102,9 @@ ifsvals_parse_color (GScanner *scanner,
token = g_scanner_get_next_token (scanner);
if (token != G_TOKEN_FLOAT)
return G_TOKEN_FLOAT;
result->r = scanner->value.v_float;
token = g_scanner_get_next_token (scanner);
if (token != G_TOKEN_COMMA)
return G_TOKEN_COMMA;
@ -112,7 +112,7 @@ ifsvals_parse_color (GScanner *scanner,
token = g_scanner_get_next_token (scanner);
if (token != G_TOKEN_FLOAT)
return G_TOKEN_FLOAT;
result->g = scanner->value.v_float;
token = g_scanner_get_next_token (scanner);
@ -122,7 +122,7 @@ ifsvals_parse_color (GScanner *scanner,
token = g_scanner_get_next_token (scanner);
if (token != G_TOKEN_FLOAT)
return G_TOKEN_FLOAT;
result->b = scanner->value.v_float;
token = g_scanner_get_next_token (scanner);
@ -140,7 +140,7 @@ parse_genuine_float (GScanner *scanner,
{
gboolean negate = FALSE;
GTokenType token;
token = g_scanner_get_next_token (scanner);
if (token == '-')
@ -155,7 +155,7 @@ parse_genuine_float (GScanner *scanner,
return G_TOKEN_NONE;
}
else
return G_TOKEN_FLOAT;
return G_TOKEN_FLOAT;
}
static GTokenType
@ -185,31 +185,31 @@ ifsvals_parse_element (GScanner *scanner,
if (expected_token != G_TOKEN_NONE)
return expected_token;
break;
case TOKEN_THETA:
expected_token = parse_genuine_float (scanner, &result->theta);
if (expected_token != G_TOKEN_NONE)
return expected_token;
break;
case TOKEN_SCALE:
expected_token = parse_genuine_float (scanner, &result->scale);
if (expected_token != G_TOKEN_NONE)
return expected_token;
break;
case TOKEN_ASYM:
expected_token = parse_genuine_float (scanner, &result->asym);
if (expected_token != G_TOKEN_NONE)
return expected_token;
break;
case TOKEN_SHEAR:
expected_token = parse_genuine_float (scanner, &result->shear);
if (expected_token != G_TOKEN_NONE)
return expected_token;
break;
case TOKEN_FLIP:
token = g_scanner_get_next_token (scanner);
if (token != G_TOKEN_INT)
@ -223,43 +223,43 @@ ifsvals_parse_element (GScanner *scanner,
if (token != G_TOKEN_NONE)
return token;
break;
case TOKEN_GREEN_COLOR:
token = ifsvals_parse_color (scanner, &result->green_color);
if (token != G_TOKEN_NONE)
return token;
break;
case TOKEN_BLUE_COLOR:
token = ifsvals_parse_color (scanner, &result->blue_color);
if (token != G_TOKEN_NONE)
return token;
break;
case TOKEN_BLACK_COLOR:
token = ifsvals_parse_color (scanner, &result->black_color);
if (token != G_TOKEN_NONE)
return token;
break;
case TOKEN_TARGET_COLOR:
token = ifsvals_parse_color (scanner, &result->target_color);
if (token != G_TOKEN_NONE)
return token;
break;
case TOKEN_HUE_SCALE:
expected_token = parse_genuine_float (scanner, &result->hue_scale);
if (expected_token != G_TOKEN_NONE)
return expected_token;
break;
case TOKEN_VALUE_SCALE:
expected_token = parse_genuine_float (scanner, &result->value_scale);
if (expected_token != G_TOKEN_NONE)
return expected_token;
break;
case TOKEN_SIMPLE_COLOR:
token = g_scanner_get_next_token (scanner);
if (token != G_TOKEN_INT)
@ -279,7 +279,7 @@ ifsvals_parse_element (GScanner *scanner,
default:
return G_TOKEN_SYMBOL;
}
token = g_scanner_get_next_token (scanner);
}
return G_TOKEN_NONE;
@ -323,7 +323,7 @@ ifsvals_parse (GScanner *scanner,
if (g_scanner_eof (scanner))
break;
switch (token)
{
case TOKEN_ITERATIONS:
@ -353,19 +353,19 @@ ifsvals_parse (GScanner *scanner,
case TOKEN_RADIUS:
expected_token = parse_genuine_float (scanner, &new_vals.radius);
break;
case TOKEN_ASPECT_RATIO:
expected_token = parse_genuine_float (scanner, &new_vals.aspect_ratio);
break;
case TOKEN_CENTER_X:
expected_token = parse_genuine_float (scanner, &new_vals.center_x);
break;
case TOKEN_CENTER_Y:
expected_token = parse_genuine_float (scanner, &new_vals.center_y);
break;
case TOKEN_ELEMENT:
el = aff_element_new (0.0,0.0, &color, ++i);
expected_token = ifsvals_parse_element (scanner, &el->v);
@ -379,7 +379,7 @@ ifsvals_parse (GScanner *scanner,
aff_element_free (el);
break;
default:
expected_token = G_TOKEN_SYMBOL;
}
@ -398,7 +398,7 @@ ifsvals_parse (GScanner *scanner,
g_list_free (el_list);
return FALSE;
}
*vals = new_vals;
el_list = g_list_reverse (el_list);
@ -428,16 +428,16 @@ ifsvals_parse_string (const gchar *str,
scanner->config->symbol_2_token = TRUE;
scanner->config->scan_identifier_1char = TRUE;
scanner->input_name = "IfsCompose Saved Data";
for (i = 0; i < G_N_ELEMENTS (symbols); i++)
g_scanner_scope_add_symbol (scanner, 0,
symbols[i].name,
symbols[i].name,
GINT_TO_POINTER (symbols[i].token));
g_scanner_input_text (scanner, str, strlen (str));
result = ifsvals_parse (scanner, vals, elements);
g_scanner_destroy (scanner);
return result;
@ -492,7 +492,7 @@ ifsvals_stringify (IfsComposeVals *vals,
g_ascii_formatd (buf, G_ASCII_DTOSTR_BUF_SIZE, "%f", elements[i]->v.shear);
g_string_append_printf (result, " shear %s\n", buf);
g_string_append_printf (result, " flip %d\n", elements[i]->v.flip);
g_ascii_formatd (cbuf[0], G_ASCII_DTOSTR_BUF_SIZE, "%f", elements[i]->v.red_color.r);
g_ascii_formatd (cbuf[1], G_ASCII_DTOSTR_BUF_SIZE, "%f", elements[i]->v.red_color.g);
g_ascii_formatd (cbuf[2], G_ASCII_DTOSTR_BUF_SIZE, "%f", elements[i]->v.red_color.b);
@ -526,8 +526,8 @@ ifsvals_stringify (IfsComposeVals *vals,
g_ascii_formatd (buf, G_ASCII_DTOSTR_BUF_SIZE, "%f", elements[i]->v.hue_scale);
g_string_append_printf (result, " hue_scale %s\n", buf);
g_ascii_formatd (buf, G_ASCII_DTOSTR_BUF_SIZE, "%f", elements[i]->v.value_scale);
g_string_append_printf (result, " value_scale %s\n", buf);
g_string_append_printf (result, " simple_color %d\n",
g_string_append_printf (result, " value_scale %s\n", buf);
g_string_append_printf (result, " simple_color %d\n",
elements[i]->v.simple_color);
g_ascii_formatd (buf, G_ASCII_DTOSTR_BUF_SIZE, "%f", elements[i]->v.prob);
g_string_append_printf (result, " prob %s\n", buf);