mirror of
https://github.com/scottdraves/flam3.git
synced 2026-07-16 17:03:00 -04:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1876a2a266 | |||
| f67447a609 | |||
| 1252833105 | |||
| 035ab3d4e9 | |||
| cbc41cd4aa | |||
| 7f69d64ebf | |||
| 01f29fe20c | |||
| 8d34fd4c01 | |||
| d52cd965e7 | |||
| facfbd6292 | |||
| 0eb68c545d | |||
| 4242535339 | |||
| d8fbddac62 |
+2
-2
@@ -1,7 +1,7 @@
|
||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||
|
||||
SVN_DEF = -D'SVN_REV="$(shell svnversion -n .)"'
|
||||
AM_CFLAGS = -g -O3 -std=gnu99 -ffast-math -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" $(SVN_DEF)
|
||||
GIT_DEF = -D'GIT_REV="$(shell git describe --tags --dirty)"'
|
||||
AM_CFLAGS = -g -O3 -std=gnu99 -ffast-math -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" $(GIT_DEF)
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
|
||||
+2
-2
@@ -359,8 +359,8 @@ top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||
SVN_DEF = -D'SVN_REV="$(shell svnversion -n .)"'
|
||||
AM_CFLAGS = -g -O3 -std=gnu99 -ffast-math -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" $(SVN_DEF)
|
||||
GIT_DEF = -D'GIT_REV="$(shell git describe --tags --dirty)"'
|
||||
AM_CFLAGS = -g -O3 -std=gnu99 -ffast-math -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" $(GIT_DEF)
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
man1_MANS = flam3-animate.man flam3-genome.man flam3-render.man flam3-convert.man
|
||||
lib_LTLIBRARIES = libflam3.la
|
||||
|
||||
@@ -315,6 +315,10 @@ todo: eliminate all static storage.
|
||||
|
||||
changelog:
|
||||
|
||||
5/17/15 Added hsv_circular and hsv_rgb_palette_blend. Improved
|
||||
edit history of genetic algorithm (keep track of generation).
|
||||
Add find_parents operator to flam3-genome. Release as 3.0.2.
|
||||
|
||||
12/29/10 Added --version option to flam3-genome. fixed bug in 16 bpc
|
||||
png image writing when using strips. xform opacity now affects
|
||||
calculated width of density estimation filters. Release as 3.0.1.
|
||||
|
||||
Vendored
+1
-2
@@ -573,8 +573,7 @@ to "yes", and re-run configure.
|
||||
END
|
||||
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
fi])
|
||||
|
||||
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
||||
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
#define TIME_WITH_SYS_TIME 1
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "3.0.1"
|
||||
#define VERSION "3.0.2"
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
/* #undef const */
|
||||
|
||||
@@ -2827,7 +2827,7 @@ fi
|
||||
# Define the identity of the package.
|
||||
|
||||
PACKAGE=flam3
|
||||
VERSION="3.0.1"
|
||||
VERSION="3.0.2"
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
@@ -2922,7 +2922,6 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
# Save CFLAGS from the environment
|
||||
save_CFLAGS=$CFLAGS
|
||||
|
||||
@@ -4711,13 +4710,13 @@ if ${lt_cv_nm_interface+:} false; then :
|
||||
else
|
||||
lt_cv_nm_interface="BSD nm"
|
||||
echo "int some_variable = 0;" > conftest.$ac_ext
|
||||
(eval echo "\"\$as_me:4714: $ac_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:4713: $ac_compile\"" >&5)
|
||||
(eval "$ac_compile" 2>conftest.err)
|
||||
cat conftest.err >&5
|
||||
(eval echo "\"\$as_me:4717: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
|
||||
(eval echo "\"\$as_me:4716: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
|
||||
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
|
||||
cat conftest.err >&5
|
||||
(eval echo "\"\$as_me:4720: output\"" >&5)
|
||||
(eval echo "\"\$as_me:4719: output\"" >&5)
|
||||
cat conftest.out >&5
|
||||
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
|
||||
lt_cv_nm_interface="MS dumpbin"
|
||||
@@ -5923,7 +5922,7 @@ ia64-*-hpux*)
|
||||
;;
|
||||
*-*-irix6*)
|
||||
# Find out which ABI we are using.
|
||||
echo '#line 5926 "configure"' > conftest.$ac_ext
|
||||
echo '#line 5925 "configure"' > conftest.$ac_ext
|
||||
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
|
||||
(eval $ac_compile) 2>&5
|
||||
ac_status=$?
|
||||
@@ -7422,11 +7421,11 @@ else
|
||||
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:7425: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:7424: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:7429: \$? = $ac_status" >&5
|
||||
echo "$as_me:7428: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings other than the usual output.
|
||||
@@ -7761,11 +7760,11 @@ else
|
||||
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:7764: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:7763: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:7768: \$? = $ac_status" >&5
|
||||
echo "$as_me:7767: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings other than the usual output.
|
||||
@@ -7866,11 +7865,11 @@ else
|
||||
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:7869: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:7868: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>out/conftest.err)
|
||||
ac_status=$?
|
||||
cat out/conftest.err >&5
|
||||
echo "$as_me:7873: \$? = $ac_status" >&5
|
||||
echo "$as_me:7872: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s out/conftest2.$ac_objext
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
@@ -7921,11 +7920,11 @@ else
|
||||
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:7924: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:7923: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>out/conftest.err)
|
||||
ac_status=$?
|
||||
cat out/conftest.err >&5
|
||||
echo "$as_me:7928: \$? = $ac_status" >&5
|
||||
echo "$as_me:7927: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s out/conftest2.$ac_objext
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
@@ -10305,7 +10304,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 10308 "configure"
|
||||
#line 10307 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
@@ -10401,7 +10400,7 @@ else
|
||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<_LT_EOF
|
||||
#line 10404 "configure"
|
||||
#line 10403 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ AC_INIT(flam3-animate.c)
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AC_ARG_ENABLE(pthread, [ --enable-pthread compile FLAM3 with threads enabled (default=yes)])
|
||||
AC_ARG_ENABLE(atomic_ops, [ --enable-atomic-ops compile FLAM3 with atom ops enabled (default=yes, independently checks for 32 and 64 bit sizes)])
|
||||
AM_INIT_AUTOMAKE(flam3,"3.0.1")
|
||||
AM_INIT_AUTOMAKE(flam3,"3.0.2")
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
|
||||
+3
-1
@@ -39,6 +39,7 @@ void test_cp(flam3_genome *cp) {
|
||||
cp->time = 0.0;
|
||||
cp->interpolation = flam3_interpolation_linear;
|
||||
cp->palette_interpolation = flam3_palette_interpolation_hsv;
|
||||
cp->hsv_rgb_palette_blend = 0.0;
|
||||
cp->background[0] = 0.0;
|
||||
cp->background[1] = 0.0;
|
||||
cp->background[2] = 0.0;
|
||||
@@ -248,7 +249,8 @@ void spin(int frame, double blend, flam3_genome *parent, flam3_genome *templ)
|
||||
/* Set genome parameters accordingly */
|
||||
result->time = (double)frame;
|
||||
result->interpolation = flam3_interpolation_linear;
|
||||
result->palette_interpolation = flam3_palette_interpolation_hsv;
|
||||
result->palette_interpolation = flam3_palette_interpolation_hsv_circular;
|
||||
result->hsv_rgb_palette_blend = 0.0;
|
||||
|
||||
/* Force linear interpolation - unsure if this is still necessary */
|
||||
/* I believe we put this in so that older clients could render frames */
|
||||
|
||||
@@ -61,8 +61,8 @@
|
||||
|
||||
char *flam3_version() {
|
||||
|
||||
if (strcmp(SVN_REV, "exported"))
|
||||
return flam3_os "-" VERSION "." SVN_REV;
|
||||
if (strcmp(GIT_REV, ""))
|
||||
return flam3_os "-" GIT_REV;
|
||||
return flam3_os "-" VERSION;
|
||||
}
|
||||
|
||||
@@ -480,7 +480,7 @@ flam3_genome *sheep_edge(flam3_genome *cp, double blend, int seqflag, double sta
|
||||
flam3_rotate(&spun[0], blend*360.0, spun[0].interpolation_type);
|
||||
flam3_rotate(&spun[1], blend*360.0, spun[0].interpolation_type);
|
||||
|
||||
fprintf(stderr, "xyzzy %d %d\n", spun[0].palette_interpolation, spun[1].palette_interpolation);
|
||||
//fprintf(stderr, "xyzzy %d %d\n", spun[0].palette_interpolation, spun[1].palette_interpolation);
|
||||
|
||||
/* Now call the interpolation */
|
||||
if (argi("unsmoother",0) == 0)
|
||||
@@ -785,7 +785,8 @@ void flam3_interpolate(flam3_genome cps[], int ncps,
|
||||
result->time = time;
|
||||
result->interpolation = flam3_interpolation_linear;
|
||||
result->interpolation_type = cpi[0].interpolation_type;
|
||||
result->palette_interpolation = flam3_palette_interpolation_hsv;
|
||||
result->palette_interpolation = flam3_palette_interpolation_hsv_circular;
|
||||
result->hsv_rgb_palette_blend = 0.0;
|
||||
|
||||
if (!smoothflag) {
|
||||
flam3_interpolate_n(result, 2, cpi, c, stagger);
|
||||
@@ -1281,7 +1282,8 @@ void clear_cp(flam3_genome *cp, int default_flag) {
|
||||
cp->rotate = 0.0;
|
||||
cp->pixels_per_unit = 50;
|
||||
cp->interpolation = flam3_interpolation_linear;
|
||||
cp->palette_interpolation = flam3_palette_interpolation_hsv;
|
||||
cp->palette_interpolation = flam3_palette_interpolation_hsv_circular;
|
||||
cp->hsv_rgb_palette_blend = 0.0;
|
||||
|
||||
cp->genome_index = 0;
|
||||
memset(cp->parent_fname,0,flam3_parent_fn_len);
|
||||
@@ -1618,6 +1620,8 @@ void flam3_apply_template(flam3_genome *cp, flam3_genome *templ) {
|
||||
cp->palette_mode = templ->palette_mode;
|
||||
if (templ->palette_interpolation >= 0)
|
||||
cp->palette_interpolation = templ->palette_interpolation;
|
||||
if (templ->hsv_rgb_palette_blend >= 0)
|
||||
cp->hsv_rgb_palette_blend = templ->hsv_rgb_palette_blend;
|
||||
|
||||
}
|
||||
|
||||
@@ -1785,8 +1789,13 @@ void flam3_print(FILE *f, flam3_genome *cp, char *extra_attributes, int print_ed
|
||||
fprintf(f, " palette_interpolation=\"sweep\"");
|
||||
else if (flam3_palette_interpolation_rgb == cp->palette_interpolation)
|
||||
fprintf(f, " palette_interpolation=\"rgb\"");
|
||||
else if (flam3_palette_interpolation_hsv2 == cp->palette_interpolation)
|
||||
fprintf(f, " palette_interpolation=\"hsv2\"");
|
||||
else if (flam3_palette_interpolation_hsv == cp->palette_interpolation)
|
||||
fprintf(f, " palette_interpolation=\"hsv\"");
|
||||
else if (flam3_palette_interpolation_hsv_circular == cp->palette_interpolation) {
|
||||
fprintf(f, " palette_interpolation=\"hsv_circular\"");
|
||||
if (cp->hsv_rgb_palette_blend > 0.0)
|
||||
fprintf(f, " hsv_rgb_palette_blend=\"%g\"", cp->hsv_rgb_palette_blend);
|
||||
}
|
||||
|
||||
if (extra_attributes)
|
||||
fprintf(f, " %s", extra_attributes);
|
||||
@@ -3087,7 +3096,8 @@ void flam3_random(flam3_genome *cp, int *ivars, int ivars_n, int sym, int spec_x
|
||||
fprintf(stderr,"error getting palette from xml file, setting to all white\n");
|
||||
cp->time = 0.0;
|
||||
cp->interpolation = flam3_interpolation_linear;
|
||||
cp->palette_interpolation = flam3_palette_interpolation_hsv;
|
||||
cp->palette_interpolation = flam3_palette_interpolation_hsv_circular;
|
||||
cp->hsv_rgb_palette_blend = 0.0;
|
||||
|
||||
/* Choose the number of xforms */
|
||||
if (spec_xforms>0) {
|
||||
|
||||
@@ -75,7 +75,7 @@ extern char *flam3_variation_names[];
|
||||
#define flam3_palette_interpolation_hsv 0
|
||||
#define flam3_palette_interpolation_sweep 1
|
||||
#define flam3_palette_interpolation_rgb 2
|
||||
#define flam3_palette_interpolation_hsv2 3
|
||||
#define flam3_palette_interpolation_hsv_circular 3
|
||||
|
||||
#define flam3_max_action_length 10000
|
||||
|
||||
@@ -453,6 +453,7 @@ typedef struct {
|
||||
int interpolation;
|
||||
int interpolation_type;
|
||||
int palette_interpolation;
|
||||
double hsv_rgb_palette_blend;
|
||||
int num_xforms;
|
||||
int final_xform_index;
|
||||
int final_xform_enable;
|
||||
|
||||
+63
-62
@@ -172,13 +172,15 @@ void interpolate_cmap(flam3_palette cmap, double blend,
|
||||
t[4] = p1[i].index;
|
||||
|
||||
/* take the shorter way around the hue circle */
|
||||
if (0 == i) {
|
||||
fprintf(stderr, "xxx interpolating between hues, %g %g\n", s[0], t[0]);
|
||||
}
|
||||
if ((s[0] - t[0]) > 3.0)
|
||||
// if (0 == i) {
|
||||
// fprintf(stderr, "xxx interpolating between hues, %g %g\n", s[0], t[0]);
|
||||
// }
|
||||
|
||||
/* Correct the first hue to go the short way around */
|
||||
if ((s[0] - t[0]) > 3.0) /* first hue much bigger than second hue */
|
||||
s[0] -= 6.0;
|
||||
if ((s[0] - t[0]) < -3.0) /* first hue much smaller than second hue */
|
||||
s[0] += 6.0;
|
||||
if ((t[0] - s[0]) > 3.0)
|
||||
t[0] += 6.0;
|
||||
|
||||
for (j = 0; j < 5; j++)
|
||||
t[j] = ((1.0-blend) * s[j]) + (blend * t[j]);
|
||||
@@ -370,77 +372,75 @@ double get_stagger_coef(double t, double stagger_prc, int num_xforms, int this_x
|
||||
and have final xform in the same slot) */
|
||||
void flam3_interpolate_n(flam3_genome *result, int ncp,
|
||||
flam3_genome *cpi, double *c, double stagger) {
|
||||
int i, j, k, numstd;
|
||||
|
||||
fprintf(stderr, "xxx pi=%d\n", cpi[0].palette_interpolation);
|
||||
int i, j, k, l, numstd;
|
||||
|
||||
if (flam3_palette_interpolation_sweep != cpi[0].palette_interpolation) {
|
||||
|
||||
|
||||
/* rgb, hsv or hsv_circular modes. */
|
||||
double rgb_fraction = 0.0; /* Assume that we are in plain hsv mode */
|
||||
if (flam3_palette_interpolation_rgb == cpi[0].palette_interpolation)
|
||||
rgb_fraction = 1.0; /* All RGB output */
|
||||
else if (flam3_palette_interpolation_hsv_circular == cpi[0].palette_interpolation)
|
||||
rgb_fraction = cpi[0].hsv_rgb_palette_blend;
|
||||
|
||||
for (i = 0; i < 256; i++) {
|
||||
double t[3], s[5];
|
||||
double col_rgb[3], col_hsv[3];
|
||||
double new_rgb[3] = {0, 0, 0};
|
||||
double new_hsv[3] = {0, 0, 0};
|
||||
double new_count = 0, new_index = 0;
|
||||
int alpha1 = 1;
|
||||
|
||||
s[0] = s[1] = s[2] = s[3] = s[4] = 0.0;
|
||||
|
||||
|
||||
/* Loop over each control point's color at this index */
|
||||
for (k = 0; k < ncp; k++) {
|
||||
if (i == 0) {
|
||||
fprintf(stderr, "ncp=%d, k=%d\n", ncp, k);
|
||||
fprintf(stderr, "rgb=%g %g %g\n", cpi[k].palette[i].color[0], cpi[k].palette[i].color[1], cpi[k].palette[i].color[2]);
|
||||
}
|
||||
if (flam3_palette_interpolation_rgb != cpi[0].palette_interpolation)
|
||||
rgb2hsv(cpi[k].palette[i].color, t);
|
||||
else {
|
||||
int l;
|
||||
for (l = 0; l < 3; l++)
|
||||
t[l] = cpi[k].palette[i].color[l];
|
||||
}
|
||||
if (i == 0) {
|
||||
fprintf(stderr, "hsv=%g %g %g\n", t[0], t[1], t[2]);
|
||||
|
||||
/* Convert to hsv */
|
||||
rgb2hsv(cpi[k].palette[i].color, col_hsv);
|
||||
|
||||
/* Store the rgb */
|
||||
for (l = 0; l < 3; l++)
|
||||
col_rgb[l] = cpi[k].palette[i].color[l];
|
||||
|
||||
if (2 == ncp && k == 0 && cpi[0].palette_interpolation == flam3_palette_interpolation_hsv_circular) {
|
||||
/* only adjust the first coordinate based on the other control point's hue */
|
||||
double second_color[3];
|
||||
rgb2hsv(cpi[1].palette[i].color, second_color);
|
||||
|
||||
/* Adjust the hue so that we go the shorter direction around the circle */
|
||||
if ((second_color[0] - col_hsv[0]) > 3.0) {
|
||||
col_hsv[0] += 6.0;
|
||||
} else if ((second_color[0] - col_hsv[0]) < -3.0) {
|
||||
col_hsv[0] -= 6.0;
|
||||
}
|
||||
}
|
||||
|
||||
if (2 == ncp && cpi[0].palette_interpolation == flam3_palette_interpolation_hsv2) {
|
||||
/* should also support blending between rgb and hsv,
|
||||
and change the color of the cut, so we can keep
|
||||
a dominant color but control what it is. */
|
||||
double z[3];
|
||||
rgb2hsv(cpi[1-k].palette[i].color, z);
|
||||
if ((z[0] - t[0]) > 3.0) t[0] += 6.0;
|
||||
if (i == 0)
|
||||
fprintf(stderr, "adjusted %g %g\n", z[0], t[0]);
|
||||
}
|
||||
|
||||
for (j = 0; j < 3; j++)
|
||||
s[j] += c[k] * t[j];
|
||||
|
||||
s[3] += c[k] * cpi[k].palette[i].color[3];
|
||||
for (j = 0; j < 3; j++) {
|
||||
new_rgb[j] += c[k] * col_rgb[j];
|
||||
new_hsv[j] += c[k] * col_hsv[j];
|
||||
}
|
||||
|
||||
/* Compute the other two components of the color (count and index) */
|
||||
new_count += c[k] * cpi[k].palette[i].color[3];
|
||||
if (cpi[k].palette[i].color[3] != 1.0)
|
||||
alpha1 = 0;
|
||||
s[4] += c[k] * cpi[k].palette[i].index;
|
||||
new_index += c[k] * cpi[k].palette[i].index;
|
||||
|
||||
}
|
||||
|
||||
if (alpha1 == 1)
|
||||
s[3] = 1.0;
|
||||
new_count = 1.0;
|
||||
|
||||
if (i == 0)
|
||||
fprintf(stderr, "s0=%g\n", s[0]);
|
||||
|
||||
if (flam3_palette_interpolation_rgb != cpi[0].palette_interpolation)
|
||||
hsv2rgb(s, result->palette[i].color);
|
||||
else {
|
||||
int l;
|
||||
for (l = 0; l < 3; l++)
|
||||
result->palette[i].color[l] = s[l];
|
||||
}
|
||||
result->palette[i].color[3] = s[3];
|
||||
result->palette[i].index = s[4];
|
||||
/* Convert the new hsv coord to back rgb */
|
||||
double new_hsv_rgb[3];
|
||||
hsv2rgb(new_hsv, new_hsv_rgb);
|
||||
|
||||
if (i == 0)
|
||||
fprintf(stderr, "result rgb=%g %g %g\n",
|
||||
result->palette[0].color[0],
|
||||
result->palette[0].color[1],
|
||||
result->palette[0].color[2]);
|
||||
|
||||
/* Store the interpolated color in the new palette */
|
||||
for (l = 0; l < 3; l++)
|
||||
result->palette[i].color[l] = rgb_fraction * new_rgb[l] + (1.0-rgb_fraction) * new_hsv_rgb[l];
|
||||
|
||||
result->palette[i].color[3] = new_count;
|
||||
result->palette[i].index = new_index;
|
||||
|
||||
/* Clip the new color appropriately */
|
||||
for (j = 0; j < 4; j++) {
|
||||
if (result->palette[i].color[j] < 0.0)
|
||||
result->palette[i].color[j] = 0.0;
|
||||
@@ -469,6 +469,7 @@ void flam3_interpolate_n(flam3_genome *result, int ncp,
|
||||
|
||||
result->interpolation_type = cpi[0].interpolation_type;
|
||||
result->palette_interpolation = cpi[0].palette_interpolation;
|
||||
result->hsv_rgb_palette_blend = cpi[0].hsv_rgb_palette_blend;
|
||||
INTERP(brightness);
|
||||
INTERP(contrast);
|
||||
INTERP(highlight_power);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#! /bin/bash
|
||||
|
||||
# libtool - Provide generalized library-building support services.
|
||||
# Generated automatically by config.status (flam3) 3.0.1
|
||||
# Libtool was configured on host prometheus:
|
||||
# Generated automatically by config.status (flam3) 3.0.2
|
||||
# Libtool was configured on host nuc:
|
||||
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
|
||||
#
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
||||
@@ -86,7 +86,7 @@ NM="/usr/bin/nm -B"
|
||||
LN_S="ln -s"
|
||||
|
||||
# What is the maximum length of a command?
|
||||
max_cmd_len=1572864
|
||||
max_cmd_len=3458764513820540925
|
||||
|
||||
# Object file suffix (normally "o").
|
||||
objext=o
|
||||
@@ -234,10 +234,10 @@ finish_eval=""
|
||||
hardcode_into_libs=yes
|
||||
|
||||
# Compile-time system search path for libraries.
|
||||
sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/4.9 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib"
|
||||
sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/4.8 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib"
|
||||
|
||||
# Run-time system search path for libraries.
|
||||
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/lib/i386-linux-gnu/mesa /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/mesa-egl /usr/lib/x86_64-linux-gnu/mesa /usr/lib/x86_64-linux-gnu/mir/client8driver/mesa /lib32 /usr/lib32 "
|
||||
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/mesa-egl /usr/lib/x86_64-linux-gnu/mesa "
|
||||
|
||||
# Whether dlopen is supported.
|
||||
dlopen_support=unknown
|
||||
|
||||
@@ -332,6 +332,8 @@ int parse_flame_element(xmlNode *flame_node, flam3_genome *loc_current_cp) {
|
||||
/* Compare attribute names */
|
||||
if (!xmlStrcmp(cur_att->name, (const xmlChar *)"time")) {
|
||||
cp->time = flam3_atof(att_str);
|
||||
} else if (!xmlStrcmp(cur_att->name, (const xmlChar *)"hsv_rgb_palette_blend")) {
|
||||
cp->hsv_rgb_palette_blend = flam3_atof(att_str);
|
||||
} else if (!xmlStrcmp(cur_att->name, (const xmlChar *)"interpolation")) {
|
||||
if (!strcmp("linear", att_str)) {
|
||||
cp->interpolation = flam3_interpolation_linear;
|
||||
@@ -345,8 +347,8 @@ int parse_flame_element(xmlNode *flame_node, flam3_genome *loc_current_cp) {
|
||||
cp->palette_interpolation = flam3_palette_interpolation_hsv;
|
||||
} else if (!strcmp("sweep", att_str)) {
|
||||
cp->palette_interpolation = flam3_palette_interpolation_sweep;
|
||||
} else if (!strcmp("hsv2", att_str)) {
|
||||
cp->palette_interpolation = flam3_palette_interpolation_hsv2;
|
||||
} else if (!strcmp("hsv_circular", att_str)) {
|
||||
cp->palette_interpolation = flam3_palette_interpolation_hsv_circular;
|
||||
} else if (!strcmp("rgb", att_str)) {
|
||||
cp->palette_interpolation = flam3_palette_interpolation_rgb;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user