1
/* The GIMP -- an image manipulation program
2
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
4
* IfsCompose is a interface for creating IFS fractals by
6
* Copyright (C) 1997 Owen Taylor
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23
gdouble a11,a12,a21,a22,b1,b2;
76
IPolygon *click_boundary;
77
IPolygon *draw_boundary;
81
/* manipulation of affine transforms */
82
void aff2_translate (Aff2 *naff, gdouble x, gdouble y);
83
void aff2_rotate (Aff2 *naff, gdouble theta);
84
void aff2_scale (Aff2 *naff, gdouble s, gint flip);
85
void aff2_distort (Aff2 *naff, gdouble asym, gdouble shear);
86
void aff2_compute_stretch (Aff2 *naff,
87
gdouble xo, gdouble yo,
88
gdouble xn, gdouble yn);
89
void aff2_compute_distort (Aff2 *naff,
90
gdouble xo, gdouble yo,
91
gdouble xn, gdouble yn);
92
void aff2_compose (Aff2 *naff, Aff2 *aff1, Aff2 *aff2);
93
void aff2_invert (Aff2 *naff, Aff2 *aff);
94
void aff2_apply (Aff2 *aff, gdouble x, gdouble y,
95
gdouble *xf, gdouble *yf);
96
void aff2_fixed_point (Aff2 *aff, gdouble *xf, gdouble *yf);
97
void aff3_apply (Aff3 *t, gdouble x, gdouble y, gdouble z,
98
gdouble *xf, gdouble *yf, gdouble *zf);
101
/* manipulation of polygons */
102
IPolygon *ipolygon_convex_hull (IPolygon *poly);
103
gint ipolygon_contains (IPolygon *poly, gint xt, gint yt);
106
/* manipulation of composite transforms */
107
AffElement *aff_element_new (gdouble x, gdouble y, GimpRGB *color, gint count);
108
void aff_element_free (AffElement *elem);
109
void aff_element_compute_trans (AffElement *elem, gdouble width,
111
gdouble center_x, gdouble center_y);
112
void aff_element_compute_color_trans (AffElement *elem);
113
void aff_element_decompose_trans (AffElement *elem, Aff2 *aff,
114
gdouble width, gdouble height,
115
gdouble center_x, gdouble center_y);
116
void aff_element_compute_boundary (AffElement *elem, gint width,
118
AffElement **elements,
120
void aff_element_draw (AffElement *elem,
127
PangoLayout *layout);
130
void ifs_render (AffElement **elements, gint num_elements,
131
gint width, gint height, gint nsteps,
132
IfsComposeVals *vals, gint band_y, gint band_height,
133
guchar *data, guchar *mask, guchar *nhits, gint preview);
135
gchar * ifsvals_stringify (IfsComposeVals *vals,
136
AffElement **elements);
137
gboolean ifsvals_parse_string (const gchar *str,
138
IfsComposeVals *vals,
139
AffElement ***elements);