diff options
-rw-r--r-- | flam3-convert.c | 223 | ||||
-rw-r--r-- | flam3-convert.man | 36 | ||||
-rw-r--r-- | flam3.c | 351 | ||||
-rw-r--r-- | flam3.dsw | 65 | ||||
-rw-r--r-- | flam3.h | 41 | ||||
-rw-r--r-- | flam3.pc.in | 12 |
6 files changed, 19 insertions, 709 deletions
diff --git a/flam3-convert.c b/flam3-convert.c deleted file mode 100644 index 3758fba..0000000 --- a/flam3-convert.c +++ /dev/null @@ -1,223 +0,0 @@ -/* - FLAM3 - cosmic recursive fractal flames - Copyright (C) 1992-2009 Spotworks LLC - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "private.h" - - -#define MAXARGS 1000 -#define streql(x,y) (!strcmp(x,y)) - - -/* - * split a string passed in ss into tokens on whitespace. - * # comments to end of line. ; terminates the record - */ -void tokenize(ss, argv, argc) - char **ss; - char *argv[]; - int *argc; -{ - char *s = *ss; - int i = 0, state = 0; - - while (*s != ';') { - char c = *s; - switch (state) { - case 0: - if ('#' == c) - state = 2; - else if (!isspace(c)) { - argv[i] = s; - i++; - state = 1; - } - case 1: - if (isspace(c)) { - *s = 0; - state = 0; - } - case 2: - if ('\n' == c) - state = 0; - } - s++; - } - *s = 0; - *ss = s+1; - *argc = i; -} - -/* - * given a pointer to a string SS, fill fields of a control point CP. - * return a pointer to the first unused char in SS. totally barfucious, - * must integrate with tcl soon... - */ - -void parse_control_point_old(char **ss, flam3_genome *cp) { - char *argv[MAXARGS]; - int argc, i, j; - int set_cm = 0, set_image_size = 0, set_nbatches = 0, set_white_level = 0, set_cmap_inter = 0; - int set_spatial_oversample = 0, set_hr = 0; - double *slot, xf, cm, t, nbatches, white_level, spatial_oversample, cmap_inter; - double image_size[2]; - - memset(cp, 0, sizeof(flam3_genome)); - - flam3_add_xforms(cp, flam3_nxforms, 0, 0); - - for (i = 0; i < flam3_nxforms; i++) { - cp->xform[i].density = 0.0; - cp->xform[i].color = i&1; - cp->xform[i].color_speed = 0.5; - cp->xform[i].animate = 1.0; - cp->xform[i].var[0] = 1.0; - for (j = 1; j < flam3_nvariations; j++) - cp->xform[i].var[j] = 0.0; - cp->xform[i].c[0][0] = 1.0; - cp->xform[i].c[0][1] = 0.0; - cp->xform[i].c[1][0] = 0.0; - cp->xform[i].c[1][1] = 1.0; - cp->xform[i].c[2][0] = 0.0; - cp->xform[i].c[2][1] = 0.0; - } - - tokenize(ss, argv, &argc); - for (i = 0; i < argc; i++) { - if (streql("xform", argv[i])) - slot = &xf; - else if (streql("time", argv[i])) - slot = &cp->time; - else if (streql("brightness", argv[i])) - slot = &cp->brightness; - else if (streql("contrast", argv[i])) - slot = &cp->contrast; - else if (streql("gamma", argv[i])) - slot = &cp->gamma; - else if (streql("vibrancy", argv[i])) - slot = &cp->vibrancy; - else if (streql("hue_rotation", argv[i])) { - slot = &cp->hue_rotation; - set_hr = 1; - } else if (streql("zoom", argv[i])) - slot = &cp->zoom; - else if (streql("image_size", argv[i])) { - slot = image_size; - set_image_size = 1; - } else if (streql("center", argv[i])) - slot = cp->center; - else if (streql("background", argv[i])) - slot = cp->background; - else if (streql("pixels_per_unit", argv[i])) - slot = &cp->pixels_per_unit; - else if (streql("spatial_filter_radius", argv[i])) - slot = &cp->spatial_filter_radius; - else if (streql("sample_density", argv[i])) - slot = &cp->sample_density; - else if (streql("nbatches", argv[i])) { - slot = &nbatches; - set_nbatches = 1; - } else if (streql("white_level", argv[i])) { - slot = &white_level; - set_white_level = 1; - } else if (streql("spatial_oversample", argv[i])) { - slot = &spatial_oversample; - set_spatial_oversample = 1; - } else if (streql("cmap", argv[i])) { - slot = &cm; - set_cm = 1; - } else if (streql("palette", argv[i])) { - slot = &cp->palette[0].color[0]; - } else if (streql("density", argv[i])) - slot = &cp->xform[(int)xf].density; - else if (streql("color", argv[i])) - slot = &cp->xform[(int)xf].color; - else if (streql("coefs", argv[i])) { - slot = cp->xform[(int)xf].c[0]; - cp->xform[(int)xf].density = 1.0; - } else if (streql("var", argv[i])) - slot = cp->xform[(int)xf].var; - else if (streql("cmap_inter", argv[i])) { - slot = &cmap_inter; - set_cmap_inter = 1; - } else - *slot++ = atof(argv[i]); - } - if (set_cm) { - double hr = set_hr ? cp->hue_rotation : 0.0; - cp->palette_index = (int) cm; - flam3_get_palette(cp->palette_index, cp->palette, hr); - } - if (set_image_size) { - cp->width = (int) image_size[0]; - cp->height = (int) image_size[1]; - } - if (set_nbatches) - cp->nbatches = (int) nbatches; - if (set_spatial_oversample) - cp->spatial_oversample = (int) spatial_oversample; - if (set_white_level) { - /* ignore */ - } - for (i = 0; i < flam3_nxforms; i++) { - t = 0.0; - for (j = 0; j < flam3_nvariations; j++) - t += cp->xform[i].var[j]; - t = 1.0 / t; - for (j = 0; j < flam3_nvariations; j++) - cp->xform[i].var[j] *= t; - } -} - -int -main(int argc, char **argv) -{ - char *s, *ss; - - if (1 != argc) { - docstring(); - exit(0); - } - - { - int i, c, slen = 5000; - s = malloc(slen); - i = 0; - do { - c = getchar(); - if (EOF == c) goto done_reading; - s[i++] = c; - if (i == slen-1) { - slen *= 2; - s = realloc(s, slen); - } - } while (1); - done_reading: - s[i] = 0; - } - - ss = s; - s += strlen(s); - printf("<conversions>\n"); - while (strchr(ss, ';')) { - flam3_genome cp; - parse_control_point_old(&ss, &cp); - flam3_print(stdout, &cp, NULL, flam3_print_edits); - } - printf("</conversions>\n"); - return 0; -} diff --git a/flam3-convert.man b/flam3-convert.man deleted file mode 100644 index b754356..0000000 --- a/flam3-convert.man +++ /dev/null @@ -1,36 +0,0 @@ -.TH flam3-animate 1 "" "" -.SH NAME -flam3-animate -flam3-render -flam3-genome -flam3-convert - render and animate FLAM3s and manipulate their genomes -.SH SYNOPSIS -.B flam3-render < input - -.SH DESCRIPTION - -FLAM3 implements a visual language based on a recursive set equation. - -Flam3-genome creates and manipulates genomes (xml parameter sets) in -this language. Flam3-render turns genomes into still images, and -Flam3-animate renders motion-blurred frames of animation. - -Flam3-convert reads from stdin files in the old format used by the -flame GIMP plugin, and writes the new format to stdout. - -.SH OPTIONS - -Any command line option will cause the program to write its -documentation to standard out. - -.SH ENVIRONMENT - -The environment variables are in the documention written to standard -out given any command line option. - -.SH SEE ALSO -.BR WWW.FLAM3.COM, -.BR electricsheep (1), - -.SH AUTHOR -spot aka Scott Draves, Erik Reckase @@ -86,27 +86,6 @@ unsigned short *flam3_create_xform_distrib(flam3_genome *cp) { return(xform_distrib); } -/* Run this on a copy of a genome to get a strip of the output */ -int flam3_make_strip(flam3_genome *cp, int nstrips, int stripnum) { - - double old_center[2]; - int j; - - /* Strip out motion elements */ - for (j=0;j<cp->num_xforms;j++) - flam3_delete_motion_elements(&cp->xform[j]); - - old_center[0] = cp->center[0]; - old_center[1] = cp->center[1]; - cp->height /= nstrips; - cp->center[1] = cp->center[1] - ((nstrips - 1) * cp->height) / (2 * cp->pixels_per_unit * pow(2.0, cp->zoom)); - cp->center[1] += cp->height * stripnum / ( cp->pixels_per_unit * pow(2.0,cp->zoom) ); - rotate_by(cp->center, old_center, cp->rotate); - - return(0); -} - - void rotate_by(double *p, double *center, double by) { double r[2]; double th = by * 2 * M_PI / 360.0; @@ -262,105 +241,6 @@ int flam3_iterate(flam3_genome *cp, int n, int fuse, const double4 in, double4 * return(badvals); } -#if 0 -int flam3_xform_preview(flam3_genome *cp, int xi, double range, int numvals, int depth, double *result, randctx *rc) { - - /* We will evaluate the 'xi'th xform 'depth' times, over the following values: */ - /* x in [-range : range], y in [-range : range], with 2* (2*numvals+1)^2 values returned */ - double p[4]; - double incr; - int outi; - int xx,yy,dd; - double oldweight; - - outi=0; - - oldweight = cp->xform[xi].density; - cp->xform[xi].density = 1.0; - - /* Prepare the function pointers */ - if (prepare_precalc_flags(cp)) { - cp->xform[xi].density = oldweight; - return(1); - } - - /* Calculate increment */ - incr = range / (double)numvals; - - /* Perform precalculations */ - xform_precalc(cp,xi); - - /* Loop over the grid */ - for (xx=-numvals;xx<=numvals;xx++) { - for (yy=-numvals;yy<=numvals;yy++) { - - /* Calculate the input coordinates */ - p[0] = (double)xx * incr; - p[1] = (double)yy * incr; - - /* Loop over the depth */ - for (dd=0;dd<depth;dd++) - apply_xform(cp, xi, p, p, rc); - - result[outi] = p[0]; - result[outi+1] = p[1]; - - outi += 2; - } - } - cp->xform[xi].density = oldweight; - - return(0); -} -#endif - -#if 0 -int flam3_colorhist(flam3_genome *cp, int num_batches, randctx *rc, double *hist) { - - int lp,plp; - int mycolor; - unsigned short *xform_distrib; - int sbs = 10000; - double4 *sub_batch; - - sub_batch = malloc (sizeof (*sub_batch) * sbs); - - memset(hist,0,256*sizeof(double)); - - // get into the attractor - if (prepare_precalc_flags(cp)) - return(1); - - xform_distrib = flam3_create_xform_distrib(cp); - - for (lp=0;lp<num_batches;lp++) { - - double4 start = (double4) { flam3_random_isaac_11(rc), flam3_random_isaac_11(rc), 0, 0 }; - - - if (xform_distrib==NULL) - return(1); - flam3_iterate(cp, sbs, 20, start, sub_batch, xform_distrib, rc); - - // histogram the colors in the sub_batch array - for (plp=0;plp<4*sbs;plp+=4) { - mycolor = (int)(sub_batch[plp+2]*CMAP_SIZE); - if (mycolor<0) mycolor=0; - if (mycolor>CMAP_SIZE_M1) mycolor=CMAP_SIZE_M1; - - hist[mycolor] += 1; - } - } - - free(xform_distrib); - free(sub_batch); - for (plp=0;plp<256;plp++) - hist[plp] /= (float)(num_batches*sbs); - - return(0); -} -#endif - flam3_genome *sheep_loop(flam3_genome *cp, double blend) { flam3_genome *result; @@ -3433,24 +3313,6 @@ static int sort_by_y(const void *av, const void *bv) { return 0; } - -/* Memory helper functions because - - Python on Windows uses the MSVCR71.dll version of the C Runtime and - mingw uses the MSVCRT.dll version. */ - -void *flam3_malloc(size_t size) { - - return (malloc(size)); - -} - -void flam3_free(void *ptr) { - - free(ptr); - -} - /* * find a 2d bounding box that does not enclose eps of the fractal density * in each compass direction. @@ -3574,11 +3436,6 @@ double flam3_render_memory_required(flam3_frame *spec) (double) cps[0].width * cps[0].height * real_bytes * 9.0; } -void bits_error(flam3_frame *spec) { - fprintf(stderr, "flam3: bits must be 32, 33, or 64 not %d.\n", - spec->bits); -} - int flam3_render(flam3_frame *spec, void *out, int field, int nchan, int trans, stat_struct *stats) { @@ -3601,211 +3458,3 @@ void flam3_srandom() { srandom(seed); } -#if 0 -/* correlation dimension, after clint sprott. - computes slope of the correlation sum at a size scale - the order of 2% the size of the attractor or the camera. */ -double flam3_dimension(flam3_genome *cp, int ntries, int clip_to_camera) { - double fd; - double *hist; - double bmin[2]; - double bmax[2]; - double d2max; - int lp; - randctx rc; - int SBS = 10000; - int i, n1=0, n2=0, got, nclipped; - - xorshift_seed (&rc); - - if (ntries < 2) ntries = 3000*1000; - - if (clip_to_camera) { - double scale, ppux, corner0, corner1; - scale = pow(2.0, cp->zoom); - ppux = cp->pixels_per_unit * scale; - corner0 = cp->center[0] - cp->width / ppux / 2.0; - corner1 = cp->center[1] - cp->height / ppux / 2.0; - bmin[0] = corner0; - bmin[1] = corner1; - bmax[0] = corner0 + cp->width / ppux; - bmax[1] = corner1 + cp->height / ppux; - } else { - if (flam3_estimate_bounding_box(cp, 0.0, 0, bmin, bmax, &rc)<0) - return(-1.0); - - } - - d2max = - (bmax[0] - bmin[0]) * (bmax[0] - bmin[0]) + - (bmax[1] - bmin[1]) * (bmax[1] - bmin[1]); - - // fprintf(stderr, "d2max=%g %g %g %g %g\n", d2max, - // bmin[0], bmin[1], bmax[0], bmax[1]); - - hist = malloc(2 * ntries * sizeof(double)); - - got = 0; - nclipped = 0; - double4 *subb = malloc (sizeof (*subb) * SBS); - while (got < 2*ntries) { - int i4, clipped; - unsigned short *xform_distrib; - const double4 start = (double4) { flam3_random_isaac_11(&rc), flam3_random_isaac_11(&rc), 0.0, 0.0 }; - if (prepare_precalc_flags(cp)) - return(-1.0); - xform_distrib = flam3_create_xform_distrib(cp); - if (xform_distrib==NULL) - return(-1.0); - flam3_iterate(cp, SBS, 20, start, subb, xform_distrib, &rc); - free(xform_distrib); - i4 = 0; - for (i = 0; i < SBS; i++) { - if (got == 2*ntries) break; - clipped = clip_to_camera && - ((subb[i4] < bmin[0]) || - (subb[i4+1] < bmin[1]) || - (subb[i4] > bmax[0]) || - (subb[i4+1] > bmax[1])); - if (!clipped) { - hist[got] = subb[i4]; - hist[got+1] = subb[i4+1]; - got += 2; - } else { - nclipped++; - if (nclipped > 10 * ntries) { - fprintf(stderr, "warning: too much clipping, " - "flam3_dimension giving up.\n"); - free (subb); - return sqrt(-1.0); - } - } - i4 += 4; - } - } - free (subb); - if (0) - fprintf(stderr, "cliprate=%g\n", nclipped/(ntries+(double)nclipped)); - - for (i = 0; i < ntries; i++) { - int ri; - double dx, dy, d2; - double tx, ty; - - tx = hist[2*i]; - ty = hist[2*i+1]; - - do { - ri = 2 * (random() % ntries); - } while (ri == i); - - dx = hist[ri] - tx; - dy = hist[ri+1] - ty; - d2 = dx*dx + dy*dy; - if (d2 < 0.004 * d2max) n2++; - if (d2 < 0.00004 * d2max) n1++; - } - - fd = 0.434294 * log(n2 / (n1 - 0.5)); - - if (0) - fprintf(stderr, "n1=%d n2=%d\n", n1, n2); - - free(hist); - return fd; -} -#endif - -#if 0 -double flam3_lyapunov(flam3_genome *cp, int ntries) { - double p[4]; - double x, y; - double xn, yn; - double xn2, yn2; - double dx, dy, r; - double eps = 1e-5; - int i; - double sum = 0.0; - unsigned short *xform_distrib; - - int lp; - randctx rc; - - xorshift_seed (&rc); - - if (ntries < 1) ntries = 10000; - - for (i = 0; i < ntries; i++) { - x = flam3_random_isaac_11(&rc); - y = flam3_random_isaac_11(&rc); - - p[0] = x; - p[1] = y; - p[2] = 0.0; - p[3] = 0.0; - - // get into the attractor - if (prepare_precalc_flags(cp)) - return(-1.0); - xform_distrib = flam3_create_xform_distrib(cp); - if (xform_distrib==NULL) - return(-1.0); - - flam3_iterate(cp, 1, 20+(random()%10), p, xform_distrib, &rc); - free(xform_distrib); - - x = p[0]; - y = p[1]; - - // take one deterministic step - srandom(i); - - if (prepare_precalc_flags(cp)) - return(-1.0); - xform_distrib = flam3_create_xform_distrib(cp); - if (xform_distrib==NULL) - return(-1.0); - - flam3_iterate(cp, 1, 0, p, xform_distrib, &rc); - free(xform_distrib); - - xn = p[0]; - yn = p[1]; - - do { - dx = flam3_random_isaac_11(&rc); - dy = flam3_random_isaac_11(&rc); - r = sqrt(dx * dx + dy * dy); - } while (r == 0.0); - dx /= r; - dy /= r; - - dx *= eps; - dy *= eps; - - p[0] = x + dx; - p[1] = y + dy; - p[2] = 0.0; - - // take the same step but with eps - srandom(i); - if (prepare_precalc_flags(cp)) - return(-1.0); - xform_distrib = flam3_create_xform_distrib(cp); - if (xform_distrib==NULL) - return(-1.0); - - flam3_iterate(cp, 1, 0, p, xform_distrib, &rc); - free(xform_distrib); - - xn2 = p[0]; - yn2 = p[1]; - - r = sqrt((xn-xn2)*(xn-xn2) + (yn-yn2)*(yn-yn2)); - - sum += log(r/eps); - } - return sum/(log(2.0)*ntries); -} -#endif - diff --git a/flam3.dsw b/flam3.dsw deleted file mode 100644 index ac76a19..0000000 --- a/flam3.dsw +++ /dev/null @@ -1,65 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "anim"=.\anim.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "convert"=.\convert.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "hqi"=.\hqi.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "pick"=.\pick.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - @@ -24,9 +24,7 @@ #include <libxml/parser.h> #include "xorshift.h" -#define EXPORT - -EXPORT char *flam3_version(); +char *flam3_version(); #define flam3_palette_random (-1) #define flam3_palette_interpolated (-2) @@ -533,8 +531,8 @@ void flam3_copyx(flam3_genome *dest, flam3_genome *src, int num_std, int num_fin void flam3_copy_params(flam3_xform *dest, flam3_xform *src, int varn); void flam3_delete_motion_elements(flam3_xform *xf); -EXPORT int flam3_xform_preview(flam3_genome *cp, int xi, double range, int numvals, int depth, double *result, randctx *rc); -EXPORT unsigned short* flam3_create_xform_distrib(flam3_genome *cp); +int flam3_xform_preview(flam3_genome *cp, int xi, double range, int numvals, int depth, double *result, randctx *rc); +unsigned short* flam3_create_xform_distrib(flam3_genome *cp); int flam3_create_chaos_distrib(flam3_genome *cp, int xi, unsigned short *xform_distrib); int flam3_check_unity_chaos(flam3_genome *cp); void clear_cp(flam3_genome *cp, int def_flag); @@ -544,39 +542,39 @@ void clear_cp(flam3_genome *cp, int def_flag); (samples[2], samples[3]) as starting color coordinate, perform fuse iterations and throw them away, then perform nsamples iterations and save them in the samples array */ -EXPORT int flam3_iterate(flam3_genome *cp, int n, int fuse, const double4 in, double4 *samples, unsigned short *xform_distrib, randctx *rc); +int flam3_iterate(flam3_genome *cp, int n, int fuse, const double4 in, double4 *samples, unsigned short *xform_distrib, randctx *rc); void apply_motion_parameters(flam3_xform *xf, flam3_xform *addto, double blend); /* genomes is array ngenomes long, with times set and in ascending order. interpolate to the requested time and return in result */ -EXPORT void flam3_interpolate(flam3_genome *genomes, int ngenomes, double time, double stagger, flam3_genome *result); +void flam3_interpolate(flam3_genome *genomes, int ngenomes, double time, double stagger, flam3_genome *result); /* print genome to given file with extra_attributes if not NULL */ -EXPORT void flam3_print(FILE *f, flam3_genome *g, char *extra_attributes, int print_edits); +void flam3_print(FILE *f, flam3_genome *g, char *extra_attributes, int print_edits); void flam3_print_xform(FILE *f, flam3_xform *x, int final_flag, int numstd, double *chaos_row, int motion_flag); -EXPORT char *flam3_print_to_string(flam3_genome *cp); +char *flam3_print_to_string(flam3_genome *cp); /* ivars is a list of variations to use, or flam3_variation_random */ /* ivars_n is the number of values in ivars to select from. */ /* sym is either a symmetry group or 0 meaning random or no symmetry */ /* spec_xforms specifies the number of xforms to use, setting to 0 makes the number random. */ -EXPORT void flam3_random(flam3_genome *g, int *ivars, int ivars_n, int sym, int spec_xforms); +void flam3_random(flam3_genome *g, int *ivars, int ivars_n, int sym, int spec_xforms); void add_to_action(char *action, char *addtoaction); -EXPORT void flam3_mutate(flam3_genome *cp, int mutate_mode, int *ivars, int ivars_n, int sym, double speed, randctx *rc, char *action); -EXPORT void flam3_cross(flam3_genome *cp0, flam3_genome *cp1, flam3_genome *out, int cross_mode, randctx *rc, char *action); +void flam3_mutate(flam3_genome *cp, int mutate_mode, int *ivars, int ivars_n, int sym, double speed, randctx *rc, char *action); +void flam3_cross(flam3_genome *cp0, flam3_genome *cp1, flam3_genome *out, int cross_mode, randctx *rc, char *action); /* return NULL in case of error */ -EXPORT flam3_genome *flam3_parse_xml2(char *s, char *fn, int default_flag, int *ncps); +flam3_genome *flam3_parse_xml2(char *s, char *fn, int default_flag, int *ncps); flam3_genome *flam3_parse_from_file(FILE *f, char *fn, int default_flag, int *ncps); void flam3_add_symmetry(flam3_genome *g, int sym); void flam3_improve_colors(flam3_genome *g, int ntries, int change_palette, int color_resolution); -EXPORT int flam3_colorhist(flam3_genome *cp, int num_batches, randctx *rc, double *hist); -EXPORT int flam3_estimate_bounding_box(flam3_genome *g, double eps, int nsamples, +int flam3_colorhist(flam3_genome *cp, int num_batches, randctx *rc, double *hist); +int flam3_estimate_bounding_box(flam3_genome *g, double eps, int nsamples, double *bmin, double *bmax, randctx *rc); void flam3_rotate(flam3_genome *g, double angle, int interp_type); /* angle in degrees */ @@ -585,7 +583,7 @@ double flam3_lyapunov(flam3_genome *g, int ntries); void flam3_apply_template(flam3_genome *cp, flam3_genome *templ); -EXPORT int flam3_count_nthreads(void); +int flam3_count_nthreads(void); typedef struct { // double temporal_filter_radius; @@ -611,10 +609,9 @@ typedef struct { /* out is pixel array. pixels are rgb or rgba if nchan is 3 or 4. */ -EXPORT int flam3_render(flam3_frame *f, void *out, int field, int nchan, int transp, stat_struct *stats); +int flam3_render(flam3_frame *f, void *out, int field, int nchan, int transp, stat_struct *stats); -EXPORT double flam3_render_memory_required(flam3_frame *f); -EXPORT int flam3_make_strip(flam3_genome *cp, int nstrips, int stripnum); +double flam3_render_memory_required(flam3_frame *f); void rotate_by(double *p, double *center, double by); @@ -627,11 +624,11 @@ double flam3_random_isaac_01(randctx *); double flam3_random_isaac_11(randctx *); int flam3_random_isaac_bit(randctx *); -EXPORT void flam3_init_frame(flam3_frame *f); +void flam3_init_frame(flam3_frame *f); /* External memory helpers */ -EXPORT void *flam3_malloc(size_t size); -EXPORT void flam3_free(void *ptr); +void *flam3_malloc(size_t size); +void flam3_free(void *ptr); void flam3_srandom(); diff --git a/flam3.pc.in b/flam3.pc.in deleted file mode 100644 index 32cd769..0000000 --- a/flam3.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -datarootdir=@datarootdir@ - -Name: flam3 -Description: Renders and animates fractal flames and manipulates their genetic codes, see www.flam3.com for more info. -Version: @VERSION@ -Requires: libpng >= 1.0 libxml-2.0 -Libs: -L${libdir} -lflam3 -ljpeg -lpthread -Cflags: -I${includedir} |