summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2007-12-19 20:59:56 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2007-12-19 20:59:56 (GMT)
commit5f1fc7b0711f51dd05077303f854c658ccd9dcba (patch)
tree7d519f704a04a8f25d3e5f14ce809a7d985c4581
parenta60088999da4f44bf5885f431fe78eb87d643ae7 (diff)
download2iv35-5f1fc7b0711f51dd05077303f854c658ccd9dcba.zip
2iv35-5f1fc7b0711f51dd05077303f854c658ccd9dcba.tar.gz
2iv35-5f1fc7b0711f51dd05077303f854c658ccd9dcba.tar.bz2
Loads of splitting, gui templates added for other elements
-rw-r--r--Smoke/Makefile48
-rw-r--r--Smoke/colormap.c94
-rw-r--r--Smoke/colormap.h4
-rw-r--r--Smoke/divergence.c58
-rw-r--r--Smoke/divergence.h16
-rw-r--r--Smoke/flowvis.c58
-rw-r--r--Smoke/flowvis.h16
-rw-r--r--Smoke/fluids.c127
-rw-r--r--Smoke/fluids.h34
-rw-r--r--Smoke/funcs.h2
-rw-r--r--Smoke/glyphs.c4
-rw-r--r--Smoke/gtk.c209
-rw-r--r--Smoke/gtk_colormap.c2
-rw-r--r--Smoke/gtk_divergence.c29
-rw-r--r--Smoke/gtk_divergence.h6
-rw-r--r--Smoke/gtk_flowvis.c29
-rw-r--r--Smoke/gtk_flowvis.h6
-rw-r--r--Smoke/gtk_glyphs.c2
-rw-r--r--Smoke/gtk_heightplots.c29
-rw-r--r--Smoke/gtk_heightplots.h6
-rw-r--r--Smoke/gtk_isolines.c143
-rw-r--r--Smoke/gtk_isolines.h6
-rw-r--r--Smoke/gtk_main.c91
-rw-r--r--Smoke/gtk_main.h6
-rw-r--r--Smoke/gtk_streamlines.c93
-rw-r--r--Smoke/gtk_streamlines.h6
-rw-r--r--Smoke/heightplots.c58
-rw-r--r--Smoke/heightplots.h16
-rw-r--r--Smoke/isolines.c58
-rw-r--r--Smoke/isolines.h16
-rw-r--r--Smoke/palette.c91
-rw-r--r--Smoke/palette.h5
-rw-r--r--Smoke/renderer_gl.c204
-rwxr-xr-xSmoke/smoke.binbin608721 -> 615438 bytes
-rw-r--r--Smoke/streamlines.c71
-rw-r--r--Smoke/streamlines.h23
-rw-r--r--Smoke/template.c58
-rw-r--r--Smoke/template.h16
38 files changed, 1222 insertions, 518 deletions
diff --git a/Smoke/Makefile b/Smoke/Makefile
index ac15258..f5f4514 100644
--- a/Smoke/Makefile
+++ b/Smoke/Makefile
@@ -3,10 +3,10 @@
CPP = g++
CC = gcc
-OBJ_GTK = gtk.o gtk_colormap.o gtk_glyphs.o renderer_gl.o fluids.o smoke.o colormap.o glyphs.o seedpoint.o streamlines.o palette.o funcs.o fftw-2.1.3/fftw/config.o fftw-2.1.3/fftw/executor.o fftw-2.1.3/fftw/fftwf77.o fftw-2.1.3/fftw/fftwnd.o fftw-2.1.3/fftw/fn_1.o fftw-2.1.3/fftw/fn_2.o fftw-2.1.3/fftw/fn_3.o fftw-2.1.3/fftw/fn_4.o fftw-2.1.3/fftw/fn_5.o fftw-2.1.3/fftw/fn_6.o fftw-2.1.3/fftw/fn_7.o fftw-2.1.3/fftw/fn_8.o fftw-2.1.3/fftw/fn_9.o fftw-2.1.3/fftw/fn_10.o fftw-2.1.3/fftw/fn_11.o fftw-2.1.3/fftw/fn_12.o fftw-2.1.3/fftw/fn_13.o fftw-2.1.3/fftw/fn_14.o fftw-2.1.3/fftw/fn_15.o fftw-2.1.3/fftw/fn_16.o fftw-2.1.3/fftw/fn_32.o fftw-2.1.3/fftw/fn_64.o fftw-2.1.3/fftw/fni_1.o fftw-2.1.3/fftw/fni_2.o fftw-2.1.3/fftw/fni_3.o fftw-2.1.3/fftw/fni_4.o fftw-2.1.3/fftw/fni_5.o fftw-2.1.3/fftw/fni_6.o fftw-2.1.3/fftw/fni_7.o fftw-2.1.3/fftw/fni_8.o fftw-2.1.3/fftw/fni_9.o fftw-2.1.3/fftw/fni_10.o fftw-2.1.3/fftw/fni_11.o fftw-2.1.3/fftw/fni_12.o fftw-2.1.3/fftw/fni_13.o fftw-2.1.3/fftw/fni_14.o fftw-2.1.3/fftw/fni_15.o fftw-2.1.3/fftw/fni_16.o fftw-2.1.3/fftw/fni_32.o fftw-2.1.3/fftw/fni_64.o fftw-2.1.3/fftw/ftw_2.o fftw-2.1.3/fftw/ftw_3.o fftw-2.1.3/fftw/ftw_4.o fftw-2.1.3/fftw/ftw_5.o fftw-2.1.3/fftw/ftw_6.o fftw-2.1.3/fftw/ftw_7.o fftw-2.1.3/fftw/ftw_8.o fftw-2.1.3/fftw/ftw_9.o fftw-2.1.3/fftw/ftw_10.o fftw-2.1.3/fftw/ftw_16.o fftw-2.1.3/fftw/ftw_32.o fftw-2.1.3/fftw/ftw_64.o fftw-2.1.3/fftw/ftwi_2.o fftw-2.1.3/fftw/ftwi_3.o fftw-2.1.3/fftw/ftwi_4.o fftw-2.1.3/fftw/ftwi_5.o fftw-2.1.3/fftw/ftwi_6.o fftw-2.1.3/fftw/ftwi_7.o fftw-2.1.3/fftw/ftwi_8.o fftw-2.1.3/fftw/ftwi_9.o fftw-2.1.3/fftw/ftwi_10.o fftw-2.1.3/fftw/ftwi_16.o fftw-2.1.3/fftw/ftwi_32.o fftw-2.1.3/fftw/ftwi_64.o fftw-2.1.3/fftw/generic.o fftw-2.1.3/fftw/malloc.o fftw-2.1.3/fftw/planner.o fftw-2.1.3/fftw/putils.o fftw-2.1.3/fftw/rader.o fftw-2.1.3/fftw/timer.o fftw-2.1.3/fftw/twiddle.o fftw-2.1.3/fftw/wisdom.o fftw-2.1.3/fftw/wisdomio.o fftw-2.1.3/rfftw/fcr_1.o fftw-2.1.3/rfftw/fcr_2.o fftw-2.1.3/rfftw/fcr_3.o fftw-2.1.3/rfftw/fcr_4.o fftw-2.1.3/rfftw/fcr_5.o fftw-2.1.3/rfftw/fcr_6.o fftw-2.1.3/rfftw/fcr_7.o fftw-2.1.3/rfftw/fcr_8.o fftw-2.1.3/rfftw/fcr_9.o fftw-2.1.3/rfftw/fcr_10.o fftw-2.1.3/rfftw/fcr_11.o fftw-2.1.3/rfftw/fcr_12.o fftw-2.1.3/rfftw/fcr_13.o fftw-2.1.3/rfftw/fcr_14.o fftw-2.1.3/rfftw/fcr_15.o fftw-2.1.3/rfftw/fcr_16.o fftw-2.1.3/rfftw/fcr_32.o fftw-2.1.3/rfftw/fcr_64.o fftw-2.1.3/rfftw/fcr_128.o fftw-2.1.3/rfftw/fhb_2.o fftw-2.1.3/rfftw/fhb_3.o fftw-2.1.3/rfftw/fhb_4.o fftw-2.1.3/rfftw/fhb_5.o fftw-2.1.3/rfftw/fhb_6.o fftw-2.1.3/rfftw/fhb_7.o fftw-2.1.3/rfftw/fhb_8.o fftw-2.1.3/rfftw/fhb_9.o fftw-2.1.3/rfftw/fhb_10.o fftw-2.1.3/rfftw/fhb_16.o fftw-2.1.3/rfftw/fhb_32.o fftw-2.1.3/rfftw/fhf_2.o fftw-2.1.3/rfftw/fhf_3.o fftw-2.1.3/rfftw/fhf_4.o fftw-2.1.3/rfftw/fhf_5.o fftw-2.1.3/rfftw/fhf_6.o fftw-2.1.3/rfftw/fhf_7.o fftw-2.1.3/rfftw/fhf_8.o fftw-2.1.3/rfftw/fhf_9.o fftw-2.1.3/rfftw/fhf_10.o fftw-2.1.3/rfftw/fhf_16.o fftw-2.1.3/rfftw/fhf_32.o fftw-2.1.3/rfftw/frc_1.o fftw-2.1.3/rfftw/frc_2.o fftw-2.1.3/rfftw/frc_3.o fftw-2.1.3/rfftw/frc_4.o fftw-2.1.3/rfftw/frc_5.o fftw-2.1.3/rfftw/frc_6.o fftw-2.1.3/rfftw/frc_7.o fftw-2.1.3/rfftw/frc_8.o fftw-2.1.3/rfftw/frc_9.o fftw-2.1.3/rfftw/frc_10.o fftw-2.1.3/rfftw/frc_11.o fftw-2.1.3/rfftw/frc_12.o fftw-2.1.3/rfftw/frc_13.o fftw-2.1.3/rfftw/frc_14.o fftw-2.1.3/rfftw/frc_15.o fftw-2.1.3/rfftw/frc_16.o fftw-2.1.3/rfftw/frc_32.o fftw-2.1.3/rfftw/frc_64.o fftw-2.1.3/rfftw/frc_128.o fftw-2.1.3/rfftw/rconfig.o fftw-2.1.3/rfftw/rexec2.o fftw-2.1.3/rfftw/rexec.o fftw-2.1.3/rfftw/rfftwf77.o fftw-2.1.3/rfftw/rfftwnd.o fftw-2.1.3/rfftw/rgeneric.o fftw-2.1.3/rfftw/rplanner.o $(RES)
+OBJ_GTK = gtk.o gtk_main.o gtk_colormap.o gtk_glyphs.o gtk_divergence.o gtk_heightplots.o gtk_isolines.o gtk_streamlines.o gtk_flowvis.o renderer_gl.o fluids.o smoke.o colormap.o glyphs.o divergence.o isolines.o heightplots.o seedpoint.o streamlines.o flowvis.o palette.o funcs.o fftw-2.1.3/fftw/config.o fftw-2.1.3/fftw/executor.o fftw-2.1.3/fftw/fftwf77.o fftw-2.1.3/fftw/fftwnd.o fftw-2.1.3/fftw/fn_1.o fftw-2.1.3/fftw/fn_2.o fftw-2.1.3/fftw/fn_3.o fftw-2.1.3/fftw/fn_4.o fftw-2.1.3/fftw/fn_5.o fftw-2.1.3/fftw/fn_6.o fftw-2.1.3/fftw/fn_7.o fftw-2.1.3/fftw/fn_8.o fftw-2.1.3/fftw/fn_9.o fftw-2.1.3/fftw/fn_10.o fftw-2.1.3/fftw/fn_11.o fftw-2.1.3/fftw/fn_12.o fftw-2.1.3/fftw/fn_13.o fftw-2.1.3/fftw/fn_14.o fftw-2.1.3/fftw/fn_15.o fftw-2.1.3/fftw/fn_16.o fftw-2.1.3/fftw/fn_32.o fftw-2.1.3/fftw/fn_64.o fftw-2.1.3/fftw/fni_1.o fftw-2.1.3/fftw/fni_2.o fftw-2.1.3/fftw/fni_3.o fftw-2.1.3/fftw/fni_4.o fftw-2.1.3/fftw/fni_5.o fftw-2.1.3/fftw/fni_6.o fftw-2.1.3/fftw/fni_7.o fftw-2.1.3/fftw/fni_8.o fftw-2.1.3/fftw/fni_9.o fftw-2.1.3/fftw/fni_10.o fftw-2.1.3/fftw/fni_11.o fftw-2.1.3/fftw/fni_12.o fftw-2.1.3/fftw/fni_13.o fftw-2.1.3/fftw/fni_14.o fftw-2.1.3/fftw/fni_15.o fftw-2.1.3/fftw/fni_16.o fftw-2.1.3/fftw/fni_32.o fftw-2.1.3/fftw/fni_64.o fftw-2.1.3/fftw/ftw_2.o fftw-2.1.3/fftw/ftw_3.o fftw-2.1.3/fftw/ftw_4.o fftw-2.1.3/fftw/ftw_5.o fftw-2.1.3/fftw/ftw_6.o fftw-2.1.3/fftw/ftw_7.o fftw-2.1.3/fftw/ftw_8.o fftw-2.1.3/fftw/ftw_9.o fftw-2.1.3/fftw/ftw_10.o fftw-2.1.3/fftw/ftw_16.o fftw-2.1.3/fftw/ftw_32.o fftw-2.1.3/fftw/ftw_64.o fftw-2.1.3/fftw/ftwi_2.o fftw-2.1.3/fftw/ftwi_3.o fftw-2.1.3/fftw/ftwi_4.o fftw-2.1.3/fftw/ftwi_5.o fftw-2.1.3/fftw/ftwi_6.o fftw-2.1.3/fftw/ftwi_7.o fftw-2.1.3/fftw/ftwi_8.o fftw-2.1.3/fftw/ftwi_9.o fftw-2.1.3/fftw/ftwi_10.o fftw-2.1.3/fftw/ftwi_16.o fftw-2.1.3/fftw/ftwi_32.o fftw-2.1.3/fftw/ftwi_64.o fftw-2.1.3/fftw/generic.o fftw-2.1.3/fftw/malloc.o fftw-2.1.3/fftw/planner.o fftw-2.1.3/fftw/putils.o fftw-2.1.3/fftw/rader.o fftw-2.1.3/fftw/timer.o fftw-2.1.3/fftw/twiddle.o fftw-2.1.3/fftw/wisdom.o fftw-2.1.3/fftw/wisdomio.o fftw-2.1.3/rfftw/fcr_1.o fftw-2.1.3/rfftw/fcr_2.o fftw-2.1.3/rfftw/fcr_3.o fftw-2.1.3/rfftw/fcr_4.o fftw-2.1.3/rfftw/fcr_5.o fftw-2.1.3/rfftw/fcr_6.o fftw-2.1.3/rfftw/fcr_7.o fftw-2.1.3/rfftw/fcr_8.o fftw-2.1.3/rfftw/fcr_9.o fftw-2.1.3/rfftw/fcr_10.o fftw-2.1.3/rfftw/fcr_11.o fftw-2.1.3/rfftw/fcr_12.o fftw-2.1.3/rfftw/fcr_13.o fftw-2.1.3/rfftw/fcr_14.o fftw-2.1.3/rfftw/fcr_15.o fftw-2.1.3/rfftw/fcr_16.o fftw-2.1.3/rfftw/fcr_32.o fftw-2.1.3/rfftw/fcr_64.o fftw-2.1.3/rfftw/fcr_128.o fftw-2.1.3/rfftw/fhb_2.o fftw-2.1.3/rfftw/fhb_3.o fftw-2.1.3/rfftw/fhb_4.o fftw-2.1.3/rfftw/fhb_5.o fftw-2.1.3/rfftw/fhb_6.o fftw-2.1.3/rfftw/fhb_7.o fftw-2.1.3/rfftw/fhb_8.o fftw-2.1.3/rfftw/fhb_9.o fftw-2.1.3/rfftw/fhb_10.o fftw-2.1.3/rfftw/fhb_16.o fftw-2.1.3/rfftw/fhb_32.o fftw-2.1.3/rfftw/fhf_2.o fftw-2.1.3/rfftw/fhf_3.o fftw-2.1.3/rfftw/fhf_4.o fftw-2.1.3/rfftw/fhf_5.o fftw-2.1.3/rfftw/fhf_6.o fftw-2.1.3/rfftw/fhf_7.o fftw-2.1.3/rfftw/fhf_8.o fftw-2.1.3/rfftw/fhf_9.o fftw-2.1.3/rfftw/fhf_10.o fftw-2.1.3/rfftw/fhf_16.o fftw-2.1.3/rfftw/fhf_32.o fftw-2.1.3/rfftw/frc_1.o fftw-2.1.3/rfftw/frc_2.o fftw-2.1.3/rfftw/frc_3.o fftw-2.1.3/rfftw/frc_4.o fftw-2.1.3/rfftw/frc_5.o fftw-2.1.3/rfftw/frc_6.o fftw-2.1.3/rfftw/frc_7.o fftw-2.1.3/rfftw/frc_8.o fftw-2.1.3/rfftw/frc_9.o fftw-2.1.3/rfftw/frc_10.o fftw-2.1.3/rfftw/frc_11.o fftw-2.1.3/rfftw/frc_12.o fftw-2.1.3/rfftw/frc_13.o fftw-2.1.3/rfftw/frc_14.o fftw-2.1.3/rfftw/frc_15.o fftw-2.1.3/rfftw/frc_16.o fftw-2.1.3/rfftw/frc_32.o fftw-2.1.3/rfftw/frc_64.o fftw-2.1.3/rfftw/frc_128.o fftw-2.1.3/rfftw/rconfig.o fftw-2.1.3/rfftw/rexec2.o fftw-2.1.3/rfftw/rexec.o fftw-2.1.3/rfftw/rfftwf77.o fftw-2.1.3/rfftw/rfftwnd.o fftw-2.1.3/rfftw/rgeneric.o fftw-2.1.3/rfftw/rplanner.o $(RES)
OBJ_GLUT = glut.o fluids.o colormap.o glyphs.o seedpoint.o streamlines.o palette.o funcs.o fftw-2.1.3/fftw/config.o fftw-2.1.3/fftw/executor.o fftw-2.1.3/fftw/fftwf77.o fftw-2.1.3/fftw/fftwnd.o fftw-2.1.3/fftw/fn_1.o fftw-2.1.3/fftw/fn_2.o fftw-2.1.3/fftw/fn_3.o fftw-2.1.3/fftw/fn_4.o fftw-2.1.3/fftw/fn_5.o fftw-2.1.3/fftw/fn_6.o fftw-2.1.3/fftw/fn_7.o fftw-2.1.3/fftw/fn_8.o fftw-2.1.3/fftw/fn_9.o fftw-2.1.3/fftw/fn_10.o fftw-2.1.3/fftw/fn_11.o fftw-2.1.3/fftw/fn_12.o fftw-2.1.3/fftw/fn_13.o fftw-2.1.3/fftw/fn_14.o fftw-2.1.3/fftw/fn_15.o fftw-2.1.3/fftw/fn_16.o fftw-2.1.3/fftw/fn_32.o fftw-2.1.3/fftw/fn_64.o fftw-2.1.3/fftw/fni_1.o fftw-2.1.3/fftw/fni_2.o fftw-2.1.3/fftw/fni_3.o fftw-2.1.3/fftw/fni_4.o fftw-2.1.3/fftw/fni_5.o fftw-2.1.3/fftw/fni_6.o fftw-2.1.3/fftw/fni_7.o fftw-2.1.3/fftw/fni_8.o fftw-2.1.3/fftw/fni_9.o fftw-2.1.3/fftw/fni_10.o fftw-2.1.3/fftw/fni_11.o fftw-2.1.3/fftw/fni_12.o fftw-2.1.3/fftw/fni_13.o fftw-2.1.3/fftw/fni_14.o fftw-2.1.3/fftw/fni_15.o fftw-2.1.3/fftw/fni_16.o fftw-2.1.3/fftw/fni_32.o fftw-2.1.3/fftw/fni_64.o fftw-2.1.3/fftw/ftw_2.o fftw-2.1.3/fftw/ftw_3.o fftw-2.1.3/fftw/ftw_4.o fftw-2.1.3/fftw/ftw_5.o fftw-2.1.3/fftw/ftw_6.o fftw-2.1.3/fftw/ftw_7.o fftw-2.1.3/fftw/ftw_8.o fftw-2.1.3/fftw/ftw_9.o fftw-2.1.3/fftw/ftw_10.o fftw-2.1.3/fftw/ftw_16.o fftw-2.1.3/fftw/ftw_32.o fftw-2.1.3/fftw/ftw_64.o fftw-2.1.3/fftw/ftwi_2.o fftw-2.1.3/fftw/ftwi_3.o fftw-2.1.3/fftw/ftwi_4.o fftw-2.1.3/fftw/ftwi_5.o fftw-2.1.3/fftw/ftwi_6.o fftw-2.1.3/fftw/ftwi_7.o fftw-2.1.3/fftw/ftwi_8.o fftw-2.1.3/fftw/ftwi_9.o fftw-2.1.3/fftw/ftwi_10.o fftw-2.1.3/fftw/ftwi_16.o fftw-2.1.3/fftw/ftwi_32.o fftw-2.1.3/fftw/ftwi_64.o fftw-2.1.3/fftw/generic.o fftw-2.1.3/fftw/malloc.o fftw-2.1.3/fftw/planner.o fftw-2.1.3/fftw/putils.o fftw-2.1.3/fftw/rader.o fftw-2.1.3/fftw/timer.o fftw-2.1.3/fftw/twiddle.o fftw-2.1.3/fftw/wisdom.o fftw-2.1.3/fftw/wisdomio.o fftw-2.1.3/rfftw/fcr_1.o fftw-2.1.3/rfftw/fcr_2.o fftw-2.1.3/rfftw/fcr_3.o fftw-2.1.3/rfftw/fcr_4.o fftw-2.1.3/rfftw/fcr_5.o fftw-2.1.3/rfftw/fcr_6.o fftw-2.1.3/rfftw/fcr_7.o fftw-2.1.3/rfftw/fcr_8.o fftw-2.1.3/rfftw/fcr_9.o fftw-2.1.3/rfftw/fcr_10.o fftw-2.1.3/rfftw/fcr_11.o fftw-2.1.3/rfftw/fcr_12.o fftw-2.1.3/rfftw/fcr_13.o fftw-2.1.3/rfftw/fcr_14.o fftw-2.1.3/rfftw/fcr_15.o fftw-2.1.3/rfftw/fcr_16.o fftw-2.1.3/rfftw/fcr_32.o fftw-2.1.3/rfftw/fcr_64.o fftw-2.1.3/rfftw/fcr_128.o fftw-2.1.3/rfftw/fhb_2.o fftw-2.1.3/rfftw/fhb_3.o fftw-2.1.3/rfftw/fhb_4.o fftw-2.1.3/rfftw/fhb_5.o fftw-2.1.3/rfftw/fhb_6.o fftw-2.1.3/rfftw/fhb_7.o fftw-2.1.3/rfftw/fhb_8.o fftw-2.1.3/rfftw/fhb_9.o fftw-2.1.3/rfftw/fhb_10.o fftw-2.1.3/rfftw/fhb_16.o fftw-2.1.3/rfftw/fhb_32.o fftw-2.1.3/rfftw/fhf_2.o fftw-2.1.3/rfftw/fhf_3.o fftw-2.1.3/rfftw/fhf_4.o fftw-2.1.3/rfftw/fhf_5.o fftw-2.1.3/rfftw/fhf_6.o fftw-2.1.3/rfftw/fhf_7.o fftw-2.1.3/rfftw/fhf_8.o fftw-2.1.3/rfftw/fhf_9.o fftw-2.1.3/rfftw/fhf_10.o fftw-2.1.3/rfftw/fhf_16.o fftw-2.1.3/rfftw/fhf_32.o fftw-2.1.3/rfftw/frc_1.o fftw-2.1.3/rfftw/frc_2.o fftw-2.1.3/rfftw/frc_3.o fftw-2.1.3/rfftw/frc_4.o fftw-2.1.3/rfftw/frc_5.o fftw-2.1.3/rfftw/frc_6.o fftw-2.1.3/rfftw/frc_7.o fftw-2.1.3/rfftw/frc_8.o fftw-2.1.3/rfftw/frc_9.o fftw-2.1.3/rfftw/frc_10.o fftw-2.1.3/rfftw/frc_11.o fftw-2.1.3/rfftw/frc_12.o fftw-2.1.3/rfftw/frc_13.o fftw-2.1.3/rfftw/frc_14.o fftw-2.1.3/rfftw/frc_15.o fftw-2.1.3/rfftw/frc_16.o fftw-2.1.3/rfftw/frc_32.o fftw-2.1.3/rfftw/frc_64.o fftw-2.1.3/rfftw/frc_128.o fftw-2.1.3/rfftw/rconfig.o fftw-2.1.3/rfftw/rexec2.o fftw-2.1.3/rfftw/rexec.o fftw-2.1.3/rfftw/rfftwf77.o fftw-2.1.3/rfftw/rfftwnd.o fftw-2.1.3/rfftw/rgeneric.o fftw-2.1.3/rfftw/rplanner.o $(RES)
LINKOBJ_GLUT = fluids.o colormap.o glyphs.o seedpoint.o streamlines.o palette.o funcs.o glut.o fftw-2.1.3/fftw/config.o fftw-2.1.3/fftw/executor.o fftw-2.1.3/fftw/fftwf77.o fftw-2.1.3/fftw/fftwnd.o fftw-2.1.3/fftw/fn_1.o fftw-2.1.3/fftw/fn_2.o fftw-2.1.3/fftw/fn_3.o fftw-2.1.3/fftw/fn_4.o fftw-2.1.3/fftw/fn_5.o fftw-2.1.3/fftw/fn_6.o fftw-2.1.3/fftw/fn_7.o fftw-2.1.3/fftw/fn_8.o fftw-2.1.3/fftw/fn_9.o fftw-2.1.3/fftw/fn_10.o fftw-2.1.3/fftw/fn_11.o fftw-2.1.3/fftw/fn_12.o fftw-2.1.3/fftw/fn_13.o fftw-2.1.3/fftw/fn_14.o fftw-2.1.3/fftw/fn_15.o fftw-2.1.3/fftw/fn_16.o fftw-2.1.3/fftw/fn_32.o fftw-2.1.3/fftw/fn_64.o fftw-2.1.3/fftw/fni_1.o fftw-2.1.3/fftw/fni_2.o fftw-2.1.3/fftw/fni_3.o fftw-2.1.3/fftw/fni_4.o fftw-2.1.3/fftw/fni_5.o fftw-2.1.3/fftw/fni_6.o fftw-2.1.3/fftw/fni_7.o fftw-2.1.3/fftw/fni_8.o fftw-2.1.3/fftw/fni_9.o fftw-2.1.3/fftw/fni_10.o fftw-2.1.3/fftw/fni_11.o fftw-2.1.3/fftw/fni_12.o fftw-2.1.3/fftw/fni_13.o fftw-2.1.3/fftw/fni_14.o fftw-2.1.3/fftw/fni_15.o fftw-2.1.3/fftw/fni_16.o fftw-2.1.3/fftw/fni_32.o fftw-2.1.3/fftw/fni_64.o fftw-2.1.3/fftw/ftw_2.o fftw-2.1.3/fftw/ftw_3.o fftw-2.1.3/fftw/ftw_4.o fftw-2.1.3/fftw/ftw_5.o fftw-2.1.3/fftw/ftw_6.o fftw-2.1.3/fftw/ftw_7.o fftw-2.1.3/fftw/ftw_8.o fftw-2.1.3/fftw/ftw_9.o fftw-2.1.3/fftw/ftw_10.o fftw-2.1.3/fftw/ftw_16.o fftw-2.1.3/fftw/ftw_32.o fftw-2.1.3/fftw/ftw_64.o fftw-2.1.3/fftw/ftwi_2.o fftw-2.1.3/fftw/ftwi_3.o fftw-2.1.3/fftw/ftwi_4.o fftw-2.1.3/fftw/ftwi_5.o fftw-2.1.3/fftw/ftwi_6.o fftw-2.1.3/fftw/ftwi_7.o fftw-2.1.3/fftw/ftwi_8.o fftw-2.1.3/fftw/ftwi_9.o fftw-2.1.3/fftw/ftwi_10.o fftw-2.1.3/fftw/ftwi_16.o fftw-2.1.3/fftw/ftwi_32.o fftw-2.1.3/fftw/ftwi_64.o fftw-2.1.3/fftw/generic.o fftw-2.1.3/fftw/malloc.o fftw-2.1.3/fftw/planner.o fftw-2.1.3/fftw/putils.o fftw-2.1.3/fftw/rader.o fftw-2.1.3/fftw/timer.o fftw-2.1.3/fftw/twiddle.o fftw-2.1.3/fftw/wisdom.o fftw-2.1.3/fftw/wisdomio.o fftw-2.1.3/rfftw/fcr_1.o fftw-2.1.3/rfftw/fcr_2.o fftw-2.1.3/rfftw/fcr_3.o fftw-2.1.3/rfftw/fcr_4.o fftw-2.1.3/rfftw/fcr_5.o fftw-2.1.3/rfftw/fcr_6.o fftw-2.1.3/rfftw/fcr_7.o fftw-2.1.3/rfftw/fcr_8.o fftw-2.1.3/rfftw/fcr_9.o fftw-2.1.3/rfftw/fcr_10.o fftw-2.1.3/rfftw/fcr_11.o fftw-2.1.3/rfftw/fcr_12.o fftw-2.1.3/rfftw/fcr_13.o fftw-2.1.3/rfftw/fcr_14.o fftw-2.1.3/rfftw/fcr_15.o fftw-2.1.3/rfftw/fcr_16.o fftw-2.1.3/rfftw/fcr_32.o fftw-2.1.3/rfftw/fcr_64.o fftw-2.1.3/rfftw/fcr_128.o fftw-2.1.3/rfftw/fhb_2.o fftw-2.1.3/rfftw/fhb_3.o fftw-2.1.3/rfftw/fhb_4.o fftw-2.1.3/rfftw/fhb_5.o fftw-2.1.3/rfftw/fhb_6.o fftw-2.1.3/rfftw/fhb_7.o fftw-2.1.3/rfftw/fhb_8.o fftw-2.1.3/rfftw/fhb_9.o fftw-2.1.3/rfftw/fhb_10.o fftw-2.1.3/rfftw/fhb_16.o fftw-2.1.3/rfftw/fhb_32.o fftw-2.1.3/rfftw/fhf_2.o fftw-2.1.3/rfftw/fhf_3.o fftw-2.1.3/rfftw/fhf_4.o fftw-2.1.3/rfftw/fhf_5.o fftw-2.1.3/rfftw/fhf_6.o fftw-2.1.3/rfftw/fhf_7.o fftw-2.1.3/rfftw/fhf_8.o fftw-2.1.3/rfftw/fhf_9.o fftw-2.1.3/rfftw/fhf_10.o fftw-2.1.3/rfftw/fhf_16.o fftw-2.1.3/rfftw/fhf_32.o fftw-2.1.3/rfftw/frc_1.o fftw-2.1.3/rfftw/frc_2.o fftw-2.1.3/rfftw/frc_3.o fftw-2.1.3/rfftw/frc_4.o fftw-2.1.3/rfftw/frc_5.o fftw-2.1.3/rfftw/frc_6.o fftw-2.1.3/rfftw/frc_7.o fftw-2.1.3/rfftw/frc_8.o fftw-2.1.3/rfftw/frc_9.o fftw-2.1.3/rfftw/frc_10.o fftw-2.1.3/rfftw/frc_11.o fftw-2.1.3/rfftw/frc_12.o fftw-2.1.3/rfftw/frc_13.o fftw-2.1.3/rfftw/frc_14.o fftw-2.1.3/rfftw/frc_15.o fftw-2.1.3/rfftw/frc_16.o fftw-2.1.3/rfftw/frc_32.o fftw-2.1.3/rfftw/frc_64.o fftw-2.1.3/rfftw/frc_128.o fftw-2.1.3/rfftw/rconfig.o fftw-2.1.3/rfftw/rexec2.o fftw-2.1.3/rfftw/rexec.o fftw-2.1.3/rfftw/rfftwf77.o fftw-2.1.3/rfftw/rfftwnd.o fftw-2.1.3/rfftw/rgeneric.o fftw-2.1.3/rfftw/rplanner.o $(RES)
-LINKOBJ_GTK = fluids.o smoke.o colormap.o glyphs.o seedpoint.o streamlines.o palette.o funcs.o renderer_gl.o gtk_colormap.o gtk_glyphs.o gtk.o fftw-2.1.3/fftw/config.o fftw-2.1.3/fftw/executor.o fftw-2.1.3/fftw/fftwf77.o fftw-2.1.3/fftw/fftwnd.o fftw-2.1.3/fftw/fn_1.o fftw-2.1.3/fftw/fn_2.o fftw-2.1.3/fftw/fn_3.o fftw-2.1.3/fftw/fn_4.o fftw-2.1.3/fftw/fn_5.o fftw-2.1.3/fftw/fn_6.o fftw-2.1.3/fftw/fn_7.o fftw-2.1.3/fftw/fn_8.o fftw-2.1.3/fftw/fn_9.o fftw-2.1.3/fftw/fn_10.o fftw-2.1.3/fftw/fn_11.o fftw-2.1.3/fftw/fn_12.o fftw-2.1.3/fftw/fn_13.o fftw-2.1.3/fftw/fn_14.o fftw-2.1.3/fftw/fn_15.o fftw-2.1.3/fftw/fn_16.o fftw-2.1.3/fftw/fn_32.o fftw-2.1.3/fftw/fn_64.o fftw-2.1.3/fftw/fni_1.o fftw-2.1.3/fftw/fni_2.o fftw-2.1.3/fftw/fni_3.o fftw-2.1.3/fftw/fni_4.o fftw-2.1.3/fftw/fni_5.o fftw-2.1.3/fftw/fni_6.o fftw-2.1.3/fftw/fni_7.o fftw-2.1.3/fftw/fni_8.o fftw-2.1.3/fftw/fni_9.o fftw-2.1.3/fftw/fni_10.o fftw-2.1.3/fftw/fni_11.o fftw-2.1.3/fftw/fni_12.o fftw-2.1.3/fftw/fni_13.o fftw-2.1.3/fftw/fni_14.o fftw-2.1.3/fftw/fni_15.o fftw-2.1.3/fftw/fni_16.o fftw-2.1.3/fftw/fni_32.o fftw-2.1.3/fftw/fni_64.o fftw-2.1.3/fftw/ftw_2.o fftw-2.1.3/fftw/ftw_3.o fftw-2.1.3/fftw/ftw_4.o fftw-2.1.3/fftw/ftw_5.o fftw-2.1.3/fftw/ftw_6.o fftw-2.1.3/fftw/ftw_7.o fftw-2.1.3/fftw/ftw_8.o fftw-2.1.3/fftw/ftw_9.o fftw-2.1.3/fftw/ftw_10.o fftw-2.1.3/fftw/ftw_16.o fftw-2.1.3/fftw/ftw_32.o fftw-2.1.3/fftw/ftw_64.o fftw-2.1.3/fftw/ftwi_2.o fftw-2.1.3/fftw/ftwi_3.o fftw-2.1.3/fftw/ftwi_4.o fftw-2.1.3/fftw/ftwi_5.o fftw-2.1.3/fftw/ftwi_6.o fftw-2.1.3/fftw/ftwi_7.o fftw-2.1.3/fftw/ftwi_8.o fftw-2.1.3/fftw/ftwi_9.o fftw-2.1.3/fftw/ftwi_10.o fftw-2.1.3/fftw/ftwi_16.o fftw-2.1.3/fftw/ftwi_32.o fftw-2.1.3/fftw/ftwi_64.o fftw-2.1.3/fftw/generic.o fftw-2.1.3/fftw/malloc.o fftw-2.1.3/fftw/planner.o fftw-2.1.3/fftw/putils.o fftw-2.1.3/fftw/rader.o fftw-2.1.3/fftw/timer.o fftw-2.1.3/fftw/twiddle.o fftw-2.1.3/fftw/wisdom.o fftw-2.1.3/fftw/wisdomio.o fftw-2.1.3/rfftw/fcr_1.o fftw-2.1.3/rfftw/fcr_2.o fftw-2.1.3/rfftw/fcr_3.o fftw-2.1.3/rfftw/fcr_4.o fftw-2.1.3/rfftw/fcr_5.o fftw-2.1.3/rfftw/fcr_6.o fftw-2.1.3/rfftw/fcr_7.o fftw-2.1.3/rfftw/fcr_8.o fftw-2.1.3/rfftw/fcr_9.o fftw-2.1.3/rfftw/fcr_10.o fftw-2.1.3/rfftw/fcr_11.o fftw-2.1.3/rfftw/fcr_12.o fftw-2.1.3/rfftw/fcr_13.o fftw-2.1.3/rfftw/fcr_14.o fftw-2.1.3/rfftw/fcr_15.o fftw-2.1.3/rfftw/fcr_16.o fftw-2.1.3/rfftw/fcr_32.o fftw-2.1.3/rfftw/fcr_64.o fftw-2.1.3/rfftw/fcr_128.o fftw-2.1.3/rfftw/fhb_2.o fftw-2.1.3/rfftw/fhb_3.o fftw-2.1.3/rfftw/fhb_4.o fftw-2.1.3/rfftw/fhb_5.o fftw-2.1.3/rfftw/fhb_6.o fftw-2.1.3/rfftw/fhb_7.o fftw-2.1.3/rfftw/fhb_8.o fftw-2.1.3/rfftw/fhb_9.o fftw-2.1.3/rfftw/fhb_10.o fftw-2.1.3/rfftw/fhb_16.o fftw-2.1.3/rfftw/fhb_32.o fftw-2.1.3/rfftw/fhf_2.o fftw-2.1.3/rfftw/fhf_3.o fftw-2.1.3/rfftw/fhf_4.o fftw-2.1.3/rfftw/fhf_5.o fftw-2.1.3/rfftw/fhf_6.o fftw-2.1.3/rfftw/fhf_7.o fftw-2.1.3/rfftw/fhf_8.o fftw-2.1.3/rfftw/fhf_9.o fftw-2.1.3/rfftw/fhf_10.o fftw-2.1.3/rfftw/fhf_16.o fftw-2.1.3/rfftw/fhf_32.o fftw-2.1.3/rfftw/frc_1.o fftw-2.1.3/rfftw/frc_2.o fftw-2.1.3/rfftw/frc_3.o fftw-2.1.3/rfftw/frc_4.o fftw-2.1.3/rfftw/frc_5.o fftw-2.1.3/rfftw/frc_6.o fftw-2.1.3/rfftw/frc_7.o fftw-2.1.3/rfftw/frc_8.o fftw-2.1.3/rfftw/frc_9.o fftw-2.1.3/rfftw/frc_10.o fftw-2.1.3/rfftw/frc_11.o fftw-2.1.3/rfftw/frc_12.o fftw-2.1.3/rfftw/frc_13.o fftw-2.1.3/rfftw/frc_14.o fftw-2.1.3/rfftw/frc_15.o fftw-2.1.3/rfftw/frc_16.o fftw-2.1.3/rfftw/frc_32.o fftw-2.1.3/rfftw/frc_64.o fftw-2.1.3/rfftw/frc_128.o fftw-2.1.3/rfftw/rconfig.o fftw-2.1.3/rfftw/rexec2.o fftw-2.1.3/rfftw/rexec.o fftw-2.1.3/rfftw/rfftwf77.o fftw-2.1.3/rfftw/rfftwnd.o fftw-2.1.3/rfftw/rgeneric.o fftw-2.1.3/rfftw/rplanner.o $(RES)
+LINKOBJ_GTK = fluids.o smoke.o colormap.o glyphs.o divergence.o isolines.o heightplots.o seedpoint.o streamlines.o flowvis.o palette.o funcs.o renderer_gl.o gtk_main.o gtk_colormap.o gtk_glyphs.o gtk_divergence.o gtk_isolines.o gtk_heightplots.o gtk_streamlines.o gtk_flowvis.o gtk.o fftw-2.1.3/fftw/config.o fftw-2.1.3/fftw/executor.o fftw-2.1.3/fftw/fftwf77.o fftw-2.1.3/fftw/fftwnd.o fftw-2.1.3/fftw/fn_1.o fftw-2.1.3/fftw/fn_2.o fftw-2.1.3/fftw/fn_3.o fftw-2.1.3/fftw/fn_4.o fftw-2.1.3/fftw/fn_5.o fftw-2.1.3/fftw/fn_6.o fftw-2.1.3/fftw/fn_7.o fftw-2.1.3/fftw/fn_8.o fftw-2.1.3/fftw/fn_9.o fftw-2.1.3/fftw/fn_10.o fftw-2.1.3/fftw/fn_11.o fftw-2.1.3/fftw/fn_12.o fftw-2.1.3/fftw/fn_13.o fftw-2.1.3/fftw/fn_14.o fftw-2.1.3/fftw/fn_15.o fftw-2.1.3/fftw/fn_16.o fftw-2.1.3/fftw/fn_32.o fftw-2.1.3/fftw/fn_64.o fftw-2.1.3/fftw/fni_1.o fftw-2.1.3/fftw/fni_2.o fftw-2.1.3/fftw/fni_3.o fftw-2.1.3/fftw/fni_4.o fftw-2.1.3/fftw/fni_5.o fftw-2.1.3/fftw/fni_6.o fftw-2.1.3/fftw/fni_7.o fftw-2.1.3/fftw/fni_8.o fftw-2.1.3/fftw/fni_9.o fftw-2.1.3/fftw/fni_10.o fftw-2.1.3/fftw/fni_11.o fftw-2.1.3/fftw/fni_12.o fftw-2.1.3/fftw/fni_13.o fftw-2.1.3/fftw/fni_14.o fftw-2.1.3/fftw/fni_15.o fftw-2.1.3/fftw/fni_16.o fftw-2.1.3/fftw/fni_32.o fftw-2.1.3/fftw/fni_64.o fftw-2.1.3/fftw/ftw_2.o fftw-2.1.3/fftw/ftw_3.o fftw-2.1.3/fftw/ftw_4.o fftw-2.1.3/fftw/ftw_5.o fftw-2.1.3/fftw/ftw_6.o fftw-2.1.3/fftw/ftw_7.o fftw-2.1.3/fftw/ftw_8.o fftw-2.1.3/fftw/ftw_9.o fftw-2.1.3/fftw/ftw_10.o fftw-2.1.3/fftw/ftw_16.o fftw-2.1.3/fftw/ftw_32.o fftw-2.1.3/fftw/ftw_64.o fftw-2.1.3/fftw/ftwi_2.o fftw-2.1.3/fftw/ftwi_3.o fftw-2.1.3/fftw/ftwi_4.o fftw-2.1.3/fftw/ftwi_5.o fftw-2.1.3/fftw/ftwi_6.o fftw-2.1.3/fftw/ftwi_7.o fftw-2.1.3/fftw/ftwi_8.o fftw-2.1.3/fftw/ftwi_9.o fftw-2.1.3/fftw/ftwi_10.o fftw-2.1.3/fftw/ftwi_16.o fftw-2.1.3/fftw/ftwi_32.o fftw-2.1.3/fftw/ftwi_64.o fftw-2.1.3/fftw/generic.o fftw-2.1.3/fftw/malloc.o fftw-2.1.3/fftw/planner.o fftw-2.1.3/fftw/putils.o fftw-2.1.3/fftw/rader.o fftw-2.1.3/fftw/timer.o fftw-2.1.3/fftw/twiddle.o fftw-2.1.3/fftw/wisdom.o fftw-2.1.3/fftw/wisdomio.o fftw-2.1.3/rfftw/fcr_1.o fftw-2.1.3/rfftw/fcr_2.o fftw-2.1.3/rfftw/fcr_3.o fftw-2.1.3/rfftw/fcr_4.o fftw-2.1.3/rfftw/fcr_5.o fftw-2.1.3/rfftw/fcr_6.o fftw-2.1.3/rfftw/fcr_7.o fftw-2.1.3/rfftw/fcr_8.o fftw-2.1.3/rfftw/fcr_9.o fftw-2.1.3/rfftw/fcr_10.o fftw-2.1.3/rfftw/fcr_11.o fftw-2.1.3/rfftw/fcr_12.o fftw-2.1.3/rfftw/fcr_13.o fftw-2.1.3/rfftw/fcr_14.o fftw-2.1.3/rfftw/fcr_15.o fftw-2.1.3/rfftw/fcr_16.o fftw-2.1.3/rfftw/fcr_32.o fftw-2.1.3/rfftw/fcr_64.o fftw-2.1.3/rfftw/fcr_128.o fftw-2.1.3/rfftw/fhb_2.o fftw-2.1.3/rfftw/fhb_3.o fftw-2.1.3/rfftw/fhb_4.o fftw-2.1.3/rfftw/fhb_5.o fftw-2.1.3/rfftw/fhb_6.o fftw-2.1.3/rfftw/fhb_7.o fftw-2.1.3/rfftw/fhb_8.o fftw-2.1.3/rfftw/fhb_9.o fftw-2.1.3/rfftw/fhb_10.o fftw-2.1.3/rfftw/fhb_16.o fftw-2.1.3/rfftw/fhb_32.o fftw-2.1.3/rfftw/fhf_2.o fftw-2.1.3/rfftw/fhf_3.o fftw-2.1.3/rfftw/fhf_4.o fftw-2.1.3/rfftw/fhf_5.o fftw-2.1.3/rfftw/fhf_6.o fftw-2.1.3/rfftw/fhf_7.o fftw-2.1.3/rfftw/fhf_8.o fftw-2.1.3/rfftw/fhf_9.o fftw-2.1.3/rfftw/fhf_10.o fftw-2.1.3/rfftw/fhf_16.o fftw-2.1.3/rfftw/fhf_32.o fftw-2.1.3/rfftw/frc_1.o fftw-2.1.3/rfftw/frc_2.o fftw-2.1.3/rfftw/frc_3.o fftw-2.1.3/rfftw/frc_4.o fftw-2.1.3/rfftw/frc_5.o fftw-2.1.3/rfftw/frc_6.o fftw-2.1.3/rfftw/frc_7.o fftw-2.1.3/rfftw/frc_8.o fftw-2.1.3/rfftw/frc_9.o fftw-2.1.3/rfftw/frc_10.o fftw-2.1.3/rfftw/frc_11.o fftw-2.1.3/rfftw/frc_12.o fftw-2.1.3/rfftw/frc_13.o fftw-2.1.3/rfftw/frc_14.o fftw-2.1.3/rfftw/frc_15.o fftw-2.1.3/rfftw/frc_16.o fftw-2.1.3/rfftw/frc_32.o fftw-2.1.3/rfftw/frc_64.o fftw-2.1.3/rfftw/frc_128.o fftw-2.1.3/rfftw/rconfig.o fftw-2.1.3/rfftw/rexec2.o fftw-2.1.3/rfftw/rexec.o fftw-2.1.3/rfftw/rfftwf77.o fftw-2.1.3/rfftw/rfftwnd.o fftw-2.1.3/rfftw/rgeneric.o fftw-2.1.3/rfftw/rplanner.o $(RES)
LIBS_GLUT = -lglut -lm
#INCS = -I"fftw-2.1.3/fftw" -I"fftw-2.1.3/rfftw"
LIBS_GTK = -lglut -lm `pkg-config --libs gtk+-2.0` /usr/lib/libgdkglext-x11-1.0.so /usr/lib/libgtkglext-x11-1.0.so
@@ -38,21 +38,48 @@ gtk: $(OBJ_GTK)
gtk.o: gtk.c
$(CC) -c gtk.c -o gtk.o $(CFLAGS)
+gtk_main.o: gtk.c
+ $(CC) -c gtk_main.c -o gtk_main.o $(CFLAGS)
+
gtk_colormap.o: gtk_colormap.c
$(CC) -c gtk_colormap.c -o gtk_colormap.o $(CFLAGS)
gtk_glyphs.o: gtk_glyphs.c
$(CC) -c gtk_glyphs.c -o gtk_glyphs.o $(CFLAGS)
+gtk_divergence.o: gtk_divergence.c
+ $(CC) -c gtk_divergence.c -o gtk_divergence.o $(CFLAGS)
+
+gtk_isolines.o: gtk_isolines.c
+ $(CC) -c gtk_isolines.c -o gtk_isolines.o $(CFLAGS)
+
+gtk_heightplots.o: gtk_heightplots.c
+ $(CC) -c gtk_heightplots.c -o gtk_heightplots.o $(CFLAGS)
+
+gtk_streamlines.o: gtk_streamlines.c
+ $(CC) -c gtk_streamlines.c -o gtk_streamlines.o $(CFLAGS)
+
+gtk_flowvis.o: gtk_flowvis.c
+ $(CC) -c gtk_flowvis.c -o gtk_flowvis.o $(CFLAGS)
+
glut.o: glut.c
$(CC) -c glut.c -o glut.o $(CFLAGS)
renderer_gl.o: renderer_gl.c
$(CC) -c renderer_gl.c -o renderer_gl.o $(CFLAGS)
+funcs.o: funcs.c
+ $(CC) -c funcs.c -o funcs.o $(CFLAGS)
+
fluids.o: fluids.c
$(CC) -c fluids.c -o fluids.o $(CFLAGS)
+seedpoint.o: seedpoint.c
+ $(CC) -c seedpoint.c -o seedpoint.o $(CFLAGS)
+
+palette.o: palette.c
+ $(CC) -c palette.c -o palette.o $(CFLAGS)
+
smoke.o: smoke.c
$(CC) -c smoke.c -o smoke.o $(CFLAGS)
@@ -62,17 +89,20 @@ colormap.o: colormap.c
glyphs.o: glyphs.c
$(CC) -c glyphs.c -o glyphs.o $(CFLAGS)
-seedpoint.o: seedpoint.c
- $(CC) -c seedpoint.c -o seedpoint.o $(CFLAGS)
+divergence.o: divergence.c
+ $(CC) -c divergence.c -o divergence.o $(CFLAGS)
+
+isolines.o: isolines.c
+ $(CC) -c isolines.c -o isolines.o $(CFLAGS)
+
+heightplots.o: heightplots.c
+ $(CC) -c heightplots.c -o heightplots.o $(CFLAGS)
streamlines.o: streamlines.c
$(CC) -c streamlines.c -o streamlines.o $(CFLAGS)
-palette.o: palette.c
- $(CC) -c palette.c -o palette.o $(CFLAGS)
-
-funcs.o: funcs.c
- $(CC) -c funcs.c -o funcs.o $(CFLAGS)
+flowvis.o: flowvis.c
+ $(CC) -c flowvis.c -o flowvis.o $(CFLAGS)
fftw-2.1.3/fftw/config.o: fftw-2.1.3/fftw/config.c
$(CC) -c fftw-2.1.3/fftw/config.c -o fftw-2.1.3/fftw/config.o $(CFLAGS)
diff --git a/Smoke/colormap.c b/Smoke/colormap.c
index efe0114..d9ede0f 100644
--- a/Smoke/colormap.c
+++ b/Smoke/colormap.c
@@ -5,6 +5,7 @@
#include <math.h>
+
#include "funcs.h"
#include "palette.h"
@@ -39,12 +40,12 @@ int colormap_get_num_colors(void)
return colormap_num_colors;
}
-void colormap_set_map(int color_map)
+void colormap_set_colormap(int colormap)
{
- colormap_colormap = color_map;
+ colormap_colormap = colormap;
}
-int colormap_get_map(void){
+int colormap_get_colormap(void){
return colormap_colormap;
}
@@ -133,93 +134,6 @@ static float clamp(float value)
return value;
}
-void HSVtoRGB(float *r, float *g, float *b, float h, float s, float v)
-{
- int i;
- float f, p, q, t;
-
- if( s == 0 ) {
- // achromatic (grey)
- *r = *g = *b = v;
- return;
- }
-
- h /= 60; // sector 0 to 5
- i = floor(h);
- f = h - i; // factorial part of h
- p = v * (1 - s);
- q = v * (1 - s * f);
- t = v * (1 - s * (1 - f));
-
- switch(i) {
- case 0:
- *r = v;
- *g = t;
- *b = p;
- break;
- case 1:
- *r = q;
- *g = v;
- *b = p;
- break;
- case 2:
- *r = p;
- *g = v;
- *b = t;
- break;
- case 3:
- *r = p;
- *g = q;
- *b = v;
- break;
- case 4:
- *r = t;
- *g = p;
- *b = v;
- break;
- default: // case 5:
- *r = v;
- *g = p;
- *b = q;
- break;
- }
-
-}
-
-// r,g,b values are from 0 to 1
-// h = [0,360], s = [0,1], v = [0,1]
-// if s == 0, then h = -1 (undefined)
-void RGBtoHSV( float r, float g, float b, float *h, float *s, float *v )
-{
- float min, max, delta;
-
- min = MIN3(r, g, b);
- max = MAX3(r, g, b);
- *v = max; // v
-
- delta = max - min;
-
- if(max != 0) {
- *s = delta / max; // s
- } else {
- // r = g = b = 0 // s = 0, v is undefined
- *s = 0;
- *h = -1;
- return;
- }
-
- if(r == max) {
- *h = ( g - b ) / delta; // between yellow & magenta
- } else if(g == max) {
- *h = 2 + (b - r) / delta; // between cyan & yellow
- } else {
- *h = 4 + (r - g) / delta; // between magenta & cyan
- }
- *h *= 60; // degrees
- if(*h < 0) {
- *h += 360;
- }
-}
struct color4f colormap_get_color(float value)
{
diff --git a/Smoke/colormap.h b/Smoke/colormap.h
index 22c34ed..1d70054 100644
--- a/Smoke/colormap.h
+++ b/Smoke/colormap.h
@@ -4,8 +4,8 @@
void colormap_set_num_colors(int num_colors);
int colormap_get_num_colors(void);
-void colormap_set_map(int color_map);
-int colormap_get_map(void);
+void colormap_set_colormap(int colormap);
+int colormap_get_colormap(void);
void colormap_set_scaling(int scaling);
int colormap_get_scaling(void);
diff --git a/Smoke/divergence.c b/Smoke/divergence.c
new file mode 100644
index 0000000..29f9c26
--- /dev/null
+++ b/Smoke/divergence.c
@@ -0,0 +1,58 @@
+#ifdef G_OS_WIN32
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+
+#include "funcs.h"
+#include "palette.h"
+
+#include "divergence.h"
+
+
+static int divergence_render = FALSE;
+
+static int divergence_num_colors = PALETTE_MAXCOLORS;
+
+static int divergence_colormap = PALETTE_BLACKWHITE;
+
+
+void divergence_set_render(int render_divergence)
+{
+ divergence_render = render_divergence;
+}
+
+int divergence_get_render(void)
+{
+ return divergence_render;
+}
+
+void divergence_set_num_colors(int num_colors)
+{
+ divergence_num_colors = num_colors;
+}
+
+int divergence_get_num_colors(void)
+{
+ return divergence_num_colors;
+}
+
+void divergence_set_colormap(int colormap)
+{
+ divergence_colormap = colormap;
+}
+
+int divergence_get_colormap(void)
+{
+ return divergence_colormap;
+}
+
+
+struct color4f divergence_get_color(float value)
+{
+ struct color4f return_value;
+
+ return_value = set_palette(divergence_colormap, value, divergence_num_colors);
+
+ return return_value;
+}
diff --git a/Smoke/divergence.h b/Smoke/divergence.h
new file mode 100644
index 0000000..3785177
--- /dev/null
+++ b/Smoke/divergence.h
@@ -0,0 +1,16 @@
+#ifndef _DIVERGENCE_H
+#define _DIVERGENCE_H
+
+void divergence_set_render(int render_divergence);
+int divergence_get_render(void);
+
+void divergence_set_num_colors(int num_colors);
+int divergence_get_num_colors(void);
+
+void divergence_set_colormap(int colormap);
+int divergence_get_colormap(void);
+
+
+struct color4f divergence_get_color(float value);
+
+#endif
diff --git a/Smoke/flowvis.c b/Smoke/flowvis.c
new file mode 100644
index 0000000..5adaf99
--- /dev/null
+++ b/Smoke/flowvis.c
@@ -0,0 +1,58 @@
+#ifdef G_OS_WIN32
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+
+#include "funcs.h"
+#include "palette.h"
+
+#include "flowvis.h"
+
+
+static int flowvis_render = FALSE;
+
+static int flowvis_num_colors = PALETTE_MAXCOLORS;
+
+static int flowvis_colormap = PALETTE_BLACKWHITE;
+
+
+void flowvis_set_render(int render_flowvis)
+{
+ flowvis_render = render_flowvis;
+}
+
+int flowvis_get_render(void)
+{
+ return flowvis_render;
+}
+
+void flowvis_set_num_colors(int num_colors)
+{
+ flowvis_num_colors = num_colors;
+}
+
+int flowvis_get_num_colors(void)
+{
+ return flowvis_num_colors;
+}
+
+void flowvis_set_colormap(int colormap)
+{
+ flowvis_colormap = colormap;
+}
+
+int flowvis_get_colormap(void)
+{
+ return flowvis_colormap;
+}
+
+
+struct color4f flowvis_get_color(float value)
+{
+ struct color4f return_value;
+
+ return_value = set_palette(flowvis_colormap, value, flowvis_num_colors);
+
+ return return_value;
+}
diff --git a/Smoke/flowvis.h b/Smoke/flowvis.h
new file mode 100644
index 0000000..dcbff60
--- /dev/null
+++ b/Smoke/flowvis.h
@@ -0,0 +1,16 @@
+#ifndef _FLOWVIS_H
+#define _FLOWVIS_H
+
+void flowvis_set_render(int render_flowvi);
+int flowvi_get_render(void);
+
+void flowvi_set_num_colors(int num_colors);
+int flowvi_get_num_colors(void);
+
+void flowvi_set_colormap(int colormap);
+int flowvi_get_colormap(void);
+
+
+struct color4f flowvis_get_color(float value);
+
+#endif
diff --git a/Smoke/fluids.c b/Smoke/fluids.c
index 25d742f..3b3f8fe 100644
--- a/Smoke/fluids.c
+++ b/Smoke/fluids.c
@@ -16,9 +16,6 @@
#include "funcs.h"
#include "fluids.h"
-#include "palette.h"
-#include "seedpoint.h"
-#include "streamlines.h"
//--- SIMULATION PARAMETERS ------------------------------------------------------------------------
const int DIM = 50; //size of simulation grid
@@ -37,12 +34,7 @@ rfftwnd_plan plan_rc, plan_cr; //simulation domain discretization
int winWidth, winHeight; //size of the graphics window, in pixels
int color_dir = 0; //use direction color-coding or not
float vec_scale = 1000; //scaling of hedgehogs
-int draw_vecs = 1; //draw the vector field or not
-int scalar_col = 0; //method for scalar coloring
-int frozen = 0; //toggles on/off the animation
int vis_dataset = DATASET_RHO;
-int mousebutton;
-int mousebuttonstate;
int active_slider = 0;
int glyph_scalar = SCALAR_RHO;
int glyph_vector = VECTOR_VEL;
@@ -383,124 +375,6 @@ void set_autoscaling(void)
//threshold = (scale_min + scale_max) / 2;
}
-#define percentage(a, b) (min(a, b) / max(a, b))
-
-void draw_isolines(float threshold)
-{
- fftw_real wn = (fftw_real)winWidth / (fftw_real)(DIM + 1); // Grid cell width
- fftw_real hn = (fftw_real)winHeight / (fftw_real)(DIM + 1); // Grid cell height
-
- int idx;
- int i, j;
- float v0, v1, v2, v3;
- float x0, y0, x1, y1, x_offset, y_offset;
- int state = 0;
- static int prev_state = 0;
- struct color4f colormap;
-
- v0 = v1 = v2 = v3 = 0.0f;
- x0 = y0 = x1 = y1 = 0.0f;
-
- if (isolines_nr == 1) glLineWidth(2.0f);
- else glLineWidth(2.0f);
- glBegin(GL_LINES);
-
- for (i = 0; i < DIM - 1; i++)
- {
- for (j = 0; j < DIM - 1; j++)
- {
- state = 0;
- idx = (j * DIM) + i;
- colormap = set_palette(scalar_col, get_dataset(idx), 5);
- glColor4f(colormap.r, colormap.g, colormap.b, 1.0f);
-
- v0 = get_dataset(idx + DIM);
- v1 = get_dataset(idx + 1 + DIM);
- v2 = get_dataset(idx + 1);
- v3 = get_dataset(idx);
-
- if (v0 >= threshold) { state += 1; }
- if (v1 >= threshold) { state += 2; }
- if (v2 >= threshold) { state += 4; }
- if (v3 >= threshold) { state += 8; }
-
- x_offset = wn + (fftw_real)i * wn;
- y_offset = wn + (fftw_real)j * hn;
-
- switch (state)
- {
- case 5:
- case 10:
- x0 = 0;
- y0 = percentage(fabs(v3 - v0), threshold) * hn;
- x1 = percentage(fabs(v1 - v0), threshold) * wn;
- y1 = hn;
- if (x0 != y0 != x1 != y1 != 0.0f) {
- glVertex3i(x_offset + x0, y_offset + y0, 0.0f);
- glVertex3i(x_offset + x1, y_offset + y1, 0.0f);
- }
- // no break !!
- case 4:
- case 11:
- x0 = percentage(fabs(v3 - v2), threshold) * wn;
- y0 = 0;
- x1 = wn;
- y1 = percentage(fabs(v2 - v1), threshold) * hn;
- break;
- case 6:
- case 9:
- x0 = percentage(fabs(v3 - v2), threshold) * wn;
- y0 = 0;
- x1 = percentage(fabs(v1 - v0), threshold) * wn;
- y1 = hn;
- break;
- case 7:
- case 8:
- x0 = percentage(fabs(v3 - v2), threshold) * wn;
- y0 = 0;
- x1 = 0;
- y1 = percentage(fabs(v3 - v0), threshold) * hn;
- break;
- case 3:
- case 12:
- x0 = 0;
- y0 = percentage(fabs(v3 - v0), threshold) * hn;
- x1 = wn;
- y1 = percentage(fabs(v2 - v1), threshold) * hn;
- break;
- case 2:
- case 13:
- x0 = percentage(fabs(v1 - v0), threshold) * wn;
- y0 = hn;
- x1 = wn;
- y1 = percentage(fabs(v2 - v1), threshold) * hn;
- break;
- case 1:
- case 14:
- x0 = 0;
- y0 = percentage(fabs(v3 - v0), threshold) * hn;
- x1 = percentage(fabs(v1 - v0), threshold) * wn;
- y1 = hn;
- break;
- case 0: case 15: default:
- x0 = y0 = x1 = y1 = 0.0f;
- break;
- }
-
- // draw line
- if (x0 != y0 != x1 != y1 != 0.0f)
- {
- glVertex3i(x_offset + x0, y_offset + y0, 0.0f);
- glVertex3i(x_offset + x1, y_offset + y1, 0.0f);
- }
-
- }
- }
-
- glEnd();
-}
-
-
//------ INTERACTION CODE STARTS HERE -----------------------------------------------------------------
void click(int button, int state, int mx, int my)
@@ -610,7 +484,6 @@ void drag(int mx, int my)
}
}
-void selectColor(int arg) { scalar_col = arg; }
void select_dataset(int arg) { vis_dataset = arg; }
void toggle_mouse_rotate(void) { rotate_plane = (rotate_plane) ? FALSE : TRUE; }
void toggle_seed_insert(void) { seed_insert = (seed_insert) ? FALSE : TRUE; }
diff --git a/Smoke/fluids.h b/Smoke/fluids.h
index b08db20..47bb31f 100644
--- a/Smoke/fluids.h
+++ b/Smoke/fluids.h
@@ -43,14 +43,7 @@ extern int frame_index;
extern int winWidth, winHeight; //size of the graphics window, in pixels
extern int color_dir; //use direction color-coding or not
extern float vec_scale; //scaling of hedgehogs
-extern int draw_vecs; //draw the vector field or not
-extern int scalar_col; //method for scalar coloring
-extern int frozen; //toggles on/off the animation
-extern int autoscale;
extern int vis_dataset;
-extern int mousebutton;
-extern int mousebuttonstate;
-extern int active_slider;
extern int glyph_scalar;
extern int glyph_vector;
@@ -72,40 +65,13 @@ void keyboard(unsigned char key, int x, int y);
void calculate_one_simulation_step(void);
-int get_glyph_usage(void);
-
-//////////////////
-
-void init_simulation(int n);
-int rescale_to_winwidth(float value);
-void FFT(int direction,void* vx);
-int clamp(float x);
-void solve(int n, fftw_real* vx, fftw_real* vy, fftw_real* vx0, fftw_real* vy0, fftw_real visc, fftw_real dt);
-void diffuse_matter(int n, fftw_real *vx, fftw_real *vy, fftw_real *rho, fftw_real *rho0, fftw_real dt);
-void set_forces(void);
-void calculate_hight_plot(void);
-void copy_frame(void);
-void calculate_one_simulation_step(void);;
-float remap(float value);
-void direction_to_color(float x, float y, int method);
float get_dataset(int index);
void set_autoscaling(void);
-void draw_isolines(float threshold);
-void visualize(void);
-void keyboard(unsigned char key, int x, int y);
-void click(int button, int state, int mx, int my);
void mouse_rotate(int mx, int my);
-void drag(int mx, int my);
//////////////////
-int get_glyph_usage(void);
-void selectColor(int arg);
void select_dataset(int arg);
-void toggle_autoscale(void);
-void toggle_clamping(void);
-void show_options(void);
-void toggle_glyph_usage(void);
void toggle_mouse_rotate(void);
void toggle_seed_insert(void);
void set_glyph_scalar(int arg);
diff --git a/Smoke/funcs.h b/Smoke/funcs.h
index dcb8ce4..cfb0000 100644
--- a/Smoke/funcs.h
+++ b/Smoke/funcs.h
@@ -12,6 +12,8 @@
#define round(x) (int)(x < 0 ? x - 0.5 : x + 0.5)
+#define percentage(a, b) (min(a, b) / max(a, b))
+
#define FALSE 0
#define TRUE !FALSE
diff --git a/Smoke/glyphs.c b/Smoke/glyphs.c
index 2c60aa0..c2b9840 100644
--- a/Smoke/glyphs.c
+++ b/Smoke/glyphs.c
@@ -37,12 +37,12 @@ int glyphs_get_num_colors(void)
return glyphs_num_colors;
}
-void glyphs_set_map(int colormap)
+void glyphs_set_colormap(int colormap)
{
glyphs_colormap = colormap;
}
-int glyphs_get_map(void)
+int glyphs_get_colormap(void)
{
return glyphs_colormap;
}
diff --git a/Smoke/gtk.c b/Smoke/gtk.c
index 9c91164..51016dd 100644
--- a/Smoke/gtk.c
+++ b/Smoke/gtk.c
@@ -45,16 +45,20 @@
#include <GL/gl.h>
#include <GL/glu.h>
-#include <rfftw.h> //the numerical simulation FFTW library
-
+#include <rfftw.h> //the numerical simulation FFTW library
#include "fluids.h"
+
#include "palette.h"
#include "renderer_gl.h"
-#include "seedpoint.h"
-
#include "gtk_colormap.h"
#include "gtk_glyphs.h"
+#include "gtk_divergence.h"
+#include "gtk_isolines.h"
+#include "gtk_heightplots.h"
+#include "gtk_streamlines.h"
+
+#include "gtk_main.h"
/**************************************************************************
* The following section contains all the macro definitions.
@@ -423,10 +427,6 @@ key_press_event (GtkWidget *widget,
}
break;
- case GDK_m:
- scalar_col++; if (scalar_col > PALETTE_OLIVER) scalar_col = PALETTE_BLACKWHITE;
- break;
-
case GDK_a:
// g_print ("a key\n");
toggle_animation (widget);
@@ -549,7 +549,7 @@ visibility_notify_event (GtkWidget *widget,
static void
toggle_animation (GtkWidget *widget)
{
- frozen = animate = !animate;
+ animate = !animate;
if (animate)
{
@@ -586,13 +586,6 @@ create_popup_menu (GtkWidget *drawing_area)
G_CALLBACK (toggle_animation), drawing_area);
gtk_widget_show (menu_item);
- /* Toggle glyphs */
-// menu_item = gtk_menu_item_new_with_label ("Glyphs");
-// gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-// g_signal_connect_swapped (G_OBJECT (menu_item), "activate",
-// G_CALLBACK (set_glyph_usage), drawing_area);
-// gtk_widget_show (menu_item);
-
/* Quit */
menu_item = gtk_menu_item_new_with_label ("Quit");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
@@ -602,178 +595,8 @@ create_popup_menu (GtkWidget *drawing_area)
return menu;
}
-
-
-void show_settings(GtkWidget *notebook)
-{
-
-}
#endif
-static gboolean select_render_smoke(GtkWidget *button, gpointer data) {
- smoke_set_render(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
-}
-
-
-static gboolean select_render_glyphs(GtkWidget *button, gpointer data) {
- glyphs_set_render(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
-}
-
-static gboolean
-select_palette(GtkComboBox *combo, gpointer data) {
- g_print("combo: %d\n", gtk_combo_box_get_active(combo));
- selectColor(gtk_combo_box_get_active(combo));
-}
-
-/*
- * Draw main notebook page
- */
-GtkWidget *create_main_page(void)
-{
- /* in reality a page is really just a vbox filled with other widgets
- */
- GtkWidget *page;
- GtkWidget *frame;
- GtkWidget *box;
- GtkWidget *button;
- GtkWidget *combo;
- GSList *dataset_group;
-
- page = gtk_vbox_new(FALSE, 0);
-
-
- box = gtk_vbox_new(FALSE, 0);
- button = gtk_check_button_new_with_label("Draw Smoke");
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
- g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(select_render_smoke), NULL);
- gtk_box_pack_start (GTK_BOX(box), button, TRUE, TRUE, 0);
- gtk_widget_show(button);
-
- button = gtk_check_button_new_with_label("Draw Glyphs");
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
- g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(select_render_glyphs), NULL);
- gtk_box_pack_start (GTK_BOX(box), button, TRUE, TRUE, 0);
- gtk_widget_show(button);
-
- gtk_box_pack_start (GTK_BOX(page), box, FALSE, TRUE, 0);
- gtk_widget_show(box);
-
-
- frame = gtk_frame_new("Dataset");
-
- box = gtk_hbox_new(FALSE, 0);
-
- button = gtk_radio_button_new_with_label (NULL, "Rho");
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
- g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_dataset), (gpointer)DATASET_RHO);
- gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
- gtk_widget_show(button);
-
- dataset_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
-
- button = gtk_radio_button_new_with_label(dataset_group, "Velocity");
- g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_dataset), (gpointer)DATASET_VEL);
- gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
- gtk_widget_show(button);
-
- button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button), "Force");
- g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_dataset), (gpointer)DATASET_FORCE);
- gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
- gtk_widget_show(button);
-
- gtk_container_add(GTK_CONTAINER(frame), box);
- gtk_widget_show(box);
-
- gtk_box_pack_start (GTK_BOX(page), frame, FALSE, TRUE, 0);
- gtk_widget_show(frame);
-
- frame = gtk_frame_new("Colormap");
-
- box = gtk_hbox_new(FALSE, 0);
-
- combo = gtk_combo_box_new_text();
-
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Black & White");
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Rainbow");
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Bands");
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Wilrik");
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Oliver");
-
- g_signal_connect(combo, "changed",
- G_CALLBACK(select_palette), (gpointer)NULL);
-
- gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
-
- gtk_box_pack_start(GTK_BOX(box), combo, FALSE, TRUE, 0);
- gtk_widget_show(combo);
-
- gtk_container_add(GTK_CONTAINER(frame), box);
- gtk_widget_show(box);
-
- gtk_box_pack_start(GTK_BOX(page), frame, FALSE, TRUE, 0);
-
- gtk_widget_show(frame);
-
- return page;
-}
-
-GtkWidget *create_divergence_page(void)
-{
- /* in reality a page is really just a vbox filled with other widgets
- */
- GtkWidget *page;
-
- page = gtk_vbox_new(FALSE, 0);
-
- return page;
-}
-
-/*
- * Draw isolines notebook page
- */
-GtkWidget *create_isolines_page(void)
-{
- /* in reality a page is really just a vbox filled with other widgets
- */
- GtkWidget *page;
-
- page = gtk_vbox_new(FALSE, 0);
-
- return page;
-}
-/*
- * Draw height plots notebook page
- */
-GtkWidget *create_height_plots_page(void)
-{
- /* in reality a page is really just a vbox filled with other widgets
- */
- GtkWidget *page;
-
- page = gtk_vbox_new(FALSE, 0);
-
- return page;
-}
-
-GtkWidget *create_stream_tubes_page(void)
-{
- int i, max;
- GtkWidget *page;
-
- page = gtk_vbox_new(FALSE, 0);
-
- return page;
-}
-
-GtkWidget *create_animated_textures_page(void)
-{
- int i, max;
- GtkWidget *page;
-
- page = gtk_vbox_new(FALSE, 0);
-
- return page;
-}
/***
*** Creates the simple application window with one
@@ -909,7 +732,7 @@ create_window (GdkGLConfig *glconfig)
gtk_notebook_append_page(GTK_NOTEBOOK(settings_notebook), notebook_page, notebook_page_label);
- notebook_page_label = gtk_label_new("Colormaps");
+ notebook_page_label = gtk_label_new("Colormap");
gtk_widget_show(notebook_page_label);
notebook_page = create_colormap_page();
@@ -941,26 +764,26 @@ create_window (GdkGLConfig *glconfig)
gtk_notebook_append_page(GTK_NOTEBOOK(settings_notebook), notebook_page, notebook_page_label);
- notebook_page_label = gtk_label_new("Height plots");
+ notebook_page_label = gtk_label_new("Height Plots");
gtk_widget_show(notebook_page_label);
- notebook_page = create_height_plots_page();
+ notebook_page = create_heightplots_page();
gtk_widget_show(notebook_page);
gtk_notebook_append_page(GTK_NOTEBOOK(settings_notebook), notebook_page, notebook_page_label);
- notebook_page_label = gtk_label_new("Stream tubes");
+ notebook_page_label = gtk_label_new("Stream Tubes");
gtk_widget_show(notebook_page_label);
- notebook_page = create_stream_tubes_page();
+ notebook_page = create_streamlines_page();
gtk_widget_show(notebook_page);
gtk_notebook_append_page(GTK_NOTEBOOK(settings_notebook), notebook_page, notebook_page_label);
- notebook_page_label = gtk_label_new("Animated Textures");
+ notebook_page_label = gtk_label_new("Flow Vis");
gtk_widget_show(notebook_page_label);
- notebook_page = create_animated_textures_page();
+ notebook_page = create_flowvis_page();
gtk_widget_show(notebook_page);
gtk_notebook_append_page(GTK_NOTEBOOK(settings_notebook), notebook_page, notebook_page_label);
diff --git a/Smoke/gtk_colormap.c b/Smoke/gtk_colormap.c
index 7be65a8..5a1894d 100644
--- a/Smoke/gtk_colormap.c
+++ b/Smoke/gtk_colormap.c
@@ -9,7 +9,7 @@
static gboolean select_colormap(GtkComboBox *combo, gpointer data)
{
- colormap_set_map(gtk_combo_box_get_active(combo));
+ colormap_set_colormap(gtk_combo_box_get_active(combo));
}
diff --git a/Smoke/gtk_divergence.c b/Smoke/gtk_divergence.c
new file mode 100644
index 0000000..5a72acc
--- /dev/null
+++ b/Smoke/gtk_divergence.c
@@ -0,0 +1,29 @@
+#include <gtk/gtk.h>
+
+
+#include "gtk_divergence.h"
+
+
+static gboolean select_colormap(GtkComboBox *combo, gpointer data)
+{
+ divergence_set_colormap(gtk_combo_box_get_active(combo));
+}
+
+
+static gboolean select_num_colors(GtkRange *adjustment, gpointer data)
+{
+ divergence_set_num_colors((int)gtk_range_get_value(adjustment));
+}
+
+
+
+GtkWidget *create_divergence_page(void)
+{
+ /* in reality a page is really just a vbox filled with other widgets
+ */
+ GtkWidget *page;
+
+ page = gtk_vbox_new(FALSE, 0);
+
+ return page;
+}
diff --git a/Smoke/gtk_divergence.h b/Smoke/gtk_divergence.h
new file mode 100644
index 0000000..a244571
--- /dev/null
+++ b/Smoke/gtk_divergence.h
@@ -0,0 +1,6 @@
+#ifndef _GTK_DIVERGENCE_H
+#define _GTK_DIVERGENCE_H
+
+GtkWidget *create_divergence_page(void);
+
+#endif
diff --git a/Smoke/gtk_flowvis.c b/Smoke/gtk_flowvis.c
new file mode 100644
index 0000000..7a56f4f
--- /dev/null
+++ b/Smoke/gtk_flowvis.c
@@ -0,0 +1,29 @@
+#include <gtk/gtk.h>
+
+
+#include "gtk_flowvis.h"
+
+
+static gboolean select_colormap(GtkComboBox *combo, gpointer data)
+{
+ flowvis_set_colormap(gtk_combo_box_get_active(combo));
+}
+
+
+static gboolean select_num_colors(GtkRange *adjustment, gpointer data)
+{
+ flowvis_set_num_colors((int)gtk_range_get_value(adjustment));
+}
+
+
+
+GtkWidget *create_flowvis_page(void)
+{
+ /* in reality a page is really just a vbox filled with other widgets
+ */
+ GtkWidget *page;
+
+ page = gtk_vbox_new(FALSE, 0);
+
+ return page;
+}
diff --git a/Smoke/gtk_flowvis.h b/Smoke/gtk_flowvis.h
new file mode 100644
index 0000000..c98a6aa
--- /dev/null
+++ b/Smoke/gtk_flowvis.h
@@ -0,0 +1,6 @@
+#ifndef _GTK_FLOWVIS_H
+#define _GTK_FLOWVIS_H
+
+GtkWidget *create_flowvis_page(void);
+
+#endif
diff --git a/Smoke/gtk_glyphs.c b/Smoke/gtk_glyphs.c
index 9ea1f14..b3bebe9 100644
--- a/Smoke/gtk_glyphs.c
+++ b/Smoke/gtk_glyphs.c
@@ -12,7 +12,7 @@
static gboolean select_colormap(GtkComboBox *combo, gpointer data)
{
- glyphs_set_map(gtk_combo_box_get_active(combo));
+ glyphs_set_colormap(gtk_combo_box_get_active(combo));
}
diff --git a/Smoke/gtk_heightplots.c b/Smoke/gtk_heightplots.c
new file mode 100644
index 0000000..9e3d52a
--- /dev/null
+++ b/Smoke/gtk_heightplots.c
@@ -0,0 +1,29 @@
+#include <gtk/gtk.h>
+
+
+#include "gtk_heightplots.h"
+
+
+static gboolean select_colormap(GtkComboBox *combo, gpointer data)
+{
+ heightplots_set_colormap(gtk_combo_box_get_active(combo));
+}
+
+
+static gboolean select_num_colors(GtkRange *adjustment, gpointer data)
+{
+ heightplots_set_num_colors((int)gtk_range_get_value(adjustment));
+}
+
+
+
+GtkWidget *create_heightplots_page(void)
+{
+ /* in reality a page is really just a vbox filled with other widgets
+ */
+ GtkWidget *page;
+
+ page = gtk_vbox_new(FALSE, 0);
+
+ return page;
+}
diff --git a/Smoke/gtk_heightplots.h b/Smoke/gtk_heightplots.h
new file mode 100644
index 0000000..634ed72
--- /dev/null
+++ b/Smoke/gtk_heightplots.h
@@ -0,0 +1,6 @@
+#ifndef _GTK_HEIGHTPLOTS_H
+#define _GTK_HEIGHTPLOTS_H
+
+GtkWidget *create_heightplots_page(void);
+
+#endif
diff --git a/Smoke/gtk_isolines.c b/Smoke/gtk_isolines.c
new file mode 100644
index 0000000..647d393
--- /dev/null
+++ b/Smoke/gtk_isolines.c
@@ -0,0 +1,143 @@
+#include <gtk/gtk.h>
+
+#include <rfftw.h>
+#include "fluids.h"
+
+
+#include "palette.h"
+#include "glyphs.h"
+
+#include "gtk_isolines.h"
+
+
+static gboolean select_colormap(GtkComboBox *combo, gpointer data)
+{
+ isolines_set_colormap(gtk_combo_box_get_active(combo));
+}
+
+
+static gboolean select_num_colors(GtkRange *adjustment, gpointer data)
+{
+ isolines_set_num_colors((int)gtk_range_get_value(adjustment));
+}
+
+
+GtkWidget *create_isolines_page(void)
+{
+ /* in reality a page is really just a vbox filled with other widgets
+ */
+ GtkWidget *page;
+ GtkWidget *frame;
+ GtkWidget *box;
+ GtkWidget *label;
+ GtkWidget *button;
+ GtkWidget *combo;
+ GtkAdjustment *color_adjustment;
+ GtkWidget *color_scale;
+ GSList *dataset_group;
+
+ page = gtk_vbox_new(FALSE, 0);
+
+ frame = gtk_frame_new("Scalarset");
+
+ box = gtk_hbox_new(FALSE, 0);
+
+ button = gtk_radio_button_new_with_label (NULL, "Rho");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
+ g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_scalar), (gpointer)SCALAR_RHO);
+ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ dataset_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
+
+ button = gtk_radio_button_new_with_label(dataset_group, "Velocity");
+ g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_scalar), (gpointer)SCALAR_VEL);
+ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button), "Force");
+ g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_scalar), (gpointer)SCALAR_FORCE);
+ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ gtk_container_add(GTK_CONTAINER(frame), box);
+ gtk_widget_show(box);
+
+ gtk_box_pack_start (GTK_BOX(page), frame, FALSE, TRUE, 0);
+ gtk_widget_show(frame);
+
+ frame = gtk_frame_new("Vectorset");
+
+ box = gtk_hbox_new(FALSE, 0);
+
+ button = gtk_radio_button_new_with_label(NULL, "Velocity");
+ // g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_vector), (gpointer)VECTOR_VEL);
+ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ dataset_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
+
+ button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button), "Force");
+ // g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(set_glyph_vector), (gpointer)VECTOR_FORCE);
+ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ gtk_container_add(GTK_CONTAINER(frame), box);
+ gtk_widget_show(box);
+
+ gtk_box_pack_start (GTK_BOX(page), frame, FALSE, TRUE, 0);
+ gtk_widget_show(frame);
+
+
+ frame = gtk_frame_new("Colors");
+
+ box = gtk_vbox_new(FALSE, 0);
+
+
+ label = gtk_label_new("Colormap");
+
+ gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0);
+ gtk_widget_show(label);
+
+
+ combo = gtk_combo_box_new_text();
+
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Black & White");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Rainbow");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Bands");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Wilrik");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Oliver");
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
+ g_signal_connect(combo, "changed", G_CALLBACK(select_colormap), (gpointer)NULL);
+
+ gtk_box_pack_start(GTK_BOX(box), combo, FALSE, TRUE, 0);
+ gtk_widget_show(combo);
+
+
+ label = gtk_label_new("Number of Colors");
+
+ gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0);
+ gtk_widget_show(label);
+
+
+ color_adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(
+ PALETTE_MAXCOLORS, 1, PALETTE_MAXCOLORS +1, 0.5, 5, 1));
+ color_scale = gtk_hscale_new(color_adjustment);
+ gtk_scale_set_digits(GTK_SCALE(color_scale), 0);
+ g_signal_connect(GTK_RANGE(color_scale), "value-changed", G_CALLBACK(select_num_colors), NULL);
+
+ gtk_box_pack_start(GTK_BOX(box), color_scale, FALSE, TRUE, 0);
+ gtk_widget_show(color_scale);
+
+
+ gtk_container_add(GTK_CONTAINER(frame), box);
+ gtk_widget_show(box);
+
+ gtk_box_pack_start(GTK_BOX(page), frame, FALSE, TRUE, 0);
+
+ gtk_widget_show(frame);
+
+
+ return page;
+}
diff --git a/Smoke/gtk_isolines.h b/Smoke/gtk_isolines.h
new file mode 100644
index 0000000..c800cd0
--- /dev/null
+++ b/Smoke/gtk_isolines.h
@@ -0,0 +1,6 @@
+#ifndef _GTK_ISOLINES_H
+#define _GTK_ISOLINES_H
+
+GtkWidget *create_isolines_page(void);
+
+#endif
diff --git a/Smoke/gtk_main.c b/Smoke/gtk_main.c
new file mode 100644
index 0000000..81e4d8c
--- /dev/null
+++ b/Smoke/gtk_main.c
@@ -0,0 +1,91 @@
+#include <gtk/gtk.h>
+
+
+#include <rfftw.h>
+#include "fluids.h"
+
+
+#include "gtk_main.h"
+
+
+
+static gboolean select_render_smoke(GtkWidget *button, gpointer data) {
+ smoke_set_render(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
+}
+
+
+static gboolean select_render_glyphs(GtkWidget *button, gpointer data) {
+ glyphs_set_render(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
+}
+
+static gboolean select_render_isolines(GtkWidget *button, gpointer data) {
+ isolines_set_render(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));
+}
+
+
+GtkWidget *create_main_page(void)
+{
+ /* in reality a page is really just a vbox filled with other widgets
+ */
+ GtkWidget *page;
+ GtkWidget *frame;
+ GtkWidget *box;
+ GtkWidget *button;
+ GtkWidget *combo;
+ GSList *dataset_group;
+
+ page = gtk_vbox_new(FALSE, 0);
+
+ box = gtk_vbox_new(FALSE, 0);
+ button = gtk_check_button_new_with_label("Draw Smoke");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
+ g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(select_render_smoke), NULL);
+ gtk_box_pack_start (GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ button = gtk_check_button_new_with_label("Draw Glyphs");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
+ g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(select_render_glyphs), NULL);
+ gtk_box_pack_start (GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ button = gtk_check_button_new_with_label("Draw Isolines");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
+ g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(select_render_isolines), NULL);
+ gtk_box_pack_start (GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ gtk_box_pack_start (GTK_BOX(page), box, FALSE, TRUE, 0);
+ gtk_widget_show(box);
+
+
+ frame = gtk_frame_new("Dataset");
+
+ box = gtk_hbox_new(FALSE, 0);
+
+ button = gtk_radio_button_new_with_label (NULL, "Rho");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
+ g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_dataset), (gpointer)DATASET_RHO);
+ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ dataset_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button));
+
+ button = gtk_radio_button_new_with_label(dataset_group, "Velocity");
+ g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_dataset), (gpointer)DATASET_VEL);
+ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button), "Force");
+ g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_dataset), (gpointer)DATASET_FORCE);
+ gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0);
+ gtk_widget_show(button);
+
+ gtk_container_add(GTK_CONTAINER(frame), box);
+ gtk_widget_show(box);
+
+ gtk_box_pack_start (GTK_BOX(page), frame, FALSE, TRUE, 0);
+ gtk_widget_show(frame);
+
+ return page;
+}
diff --git a/Smoke/gtk_main.h b/Smoke/gtk_main.h
new file mode 100644
index 0000000..e404129
--- /dev/null
+++ b/Smoke/gtk_main.h
@@ -0,0 +1,6 @@
+#ifndef _GTK_MAIN_H
+#define _GTK_MAIN_H
+
+GtkWidget *create_main_page(void);
+
+#endif
diff --git a/Smoke/gtk_streamlines.c b/Smoke/gtk_streamlines.c
new file mode 100644
index 0000000..67a6661
--- /dev/null
+++ b/Smoke/gtk_streamlines.c
@@ -0,0 +1,93 @@
+#include <gtk/gtk.h>
+
+#include <rfftw.h>
+#include "fluids.h"
+
+
+#include "palette.h"
+#include "streamlines.h"
+
+#include "gtk_streamlines.h"
+
+
+
+static gboolean select_colormap(GtkComboBox *combo, gpointer data)
+{
+ streamlines_set_colormap(gtk_combo_box_get_active(combo));
+}
+
+
+static gboolean select_num_colors(GtkRange *adjustment, gpointer data)
+{
+ streamlines_set_num_colors((int)gtk_range_get_value(adjustment));
+}
+
+
+GtkWidget *create_streamlines_page(void)
+{
+ /* in reality a page is really just a vbox filled with other widgets
+ */
+ GtkWidget *page;
+ GtkWidget *frame;
+ GtkWidget *box;
+ GtkWidget *label;
+ GtkWidget *button;
+ GtkWidget *combo;
+ GtkAdjustment *color_adjustment;
+ GtkWidget *color_scale;
+ GSList *dataset_group;
+
+ page = gtk_vbox_new(FALSE, 0);
+
+ frame = gtk_frame_new("Colors");
+
+ box = gtk_vbox_new(FALSE, 0);
+
+
+ label = gtk_label_new("Colormap");
+
+ gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0);
+ gtk_widget_show(label);
+
+
+ combo = gtk_combo_box_new_text();
+
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Black & White");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Rainbow");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Bands");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Wilrik");
+ gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Oliver");
+
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
+ g_signal_connect(combo, "changed", G_CALLBACK(select_colormap), (gpointer)NULL);
+
+ gtk_box_pack_start(GTK_BOX(box), combo, FALSE, TRUE, 0);
+ gtk_widget_show(combo);
+
+
+ label = gtk_label_new("Number of Colors");
+
+ gtk_box_pack_start(GTK_BOX(box), label, FALSE, TRUE, 0);
+ gtk_widget_show(label);
+
+
+ color_adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(
+ PALETTE_MAXCOLORS, 1, PALETTE_MAXCOLORS +1, 0.5, 5, 1));
+ color_scale = gtk_hscale_new(color_adjustment);
+ gtk_scale_set_digits(GTK_SCALE(color_scale), 0);
+ g_signal_connect(GTK_RANGE(color_scale), "value-changed", G_CALLBACK(select_num_colors), NULL);
+
+ gtk_box_pack_start(GTK_BOX(box), color_scale, FALSE, TRUE, 0);
+ gtk_widget_show(color_scale);
+
+
+ gtk_container_add(GTK_CONTAINER(frame), box);
+ gtk_widget_show(box);
+
+ gtk_box_pack_start(GTK_BOX(page), frame, FALSE, TRUE, 0);
+
+ gtk_widget_show(frame);
+
+
+ return page;
+}
diff --git a/Smoke/gtk_streamlines.h b/Smoke/gtk_streamlines.h
new file mode 100644
index 0000000..f828b62
--- /dev/null
+++ b/Smoke/gtk_streamlines.h
@@ -0,0 +1,6 @@
+#ifndef _GTK_STREAMLINES_H
+#define _GTK_STREAMLINES_H
+
+GtkWidget *create_streamlines_page(void);
+
+#endif
diff --git a/Smoke/heightplots.c b/Smoke/heightplots.c
new file mode 100644
index 0000000..57d9054
--- /dev/null
+++ b/Smoke/heightplots.c
@@ -0,0 +1,58 @@
+#ifdef G_OS_WIN32
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+
+#include "funcs.h"
+#include "palette.h"
+
+#include "heightplots.h"
+
+
+static int heightplots_render = FALSE;
+
+static int heightplots_num_colors = PALETTE_MAXCOLORS;
+
+static int heightplots_colormap = PALETTE_BLACKWHITE;
+
+
+void heightplots_set_render(int render_heightplots)
+{
+ heightplots_render = render_heightplots;
+}
+
+int heightplots_get_render(void)
+{
+ return heightplots_render;
+}
+
+void heightplots_set_num_colors(int num_colors)
+{
+ heightplots_num_colors = num_colors;
+}
+
+int heightplots_get_num_colors(void)
+{
+ return heightplots_num_colors;
+}
+
+void heightplots_set_colormap(int colormap)
+{
+ heightplots_colormap = colormap;
+}
+
+int heightplots_get_colormap(void)
+{
+ return heightplots_colormap;
+}
+
+
+struct color4f heightplots_get_color(float value)
+{
+ struct color4f return_value;
+
+ return_value = set_palette(heightplots_colormap, value, heightplots_num_colors);
+
+ return return_value;
+}
diff --git a/Smoke/heightplots.h b/Smoke/heightplots.h
new file mode 100644
index 0000000..6bdaa51
--- /dev/null
+++ b/Smoke/heightplots.h
@@ -0,0 +1,16 @@
+#ifndef _HEIGHTPLOTS_H
+#define _HEIGHTPLOTS_H
+
+void heightplots_set_render(int render_heightplots);
+int heightplots_get_render(void);
+
+void heightplots_set_num_colors(int num_colors);
+int heightplots_get_num_colors(void);
+
+void heightplots_set_colormap(int colormap);
+int heightplots_get_colormap(void);
+
+
+struct color4f heightplots_get_color(float value);
+
+#endif
diff --git a/Smoke/isolines.c b/Smoke/isolines.c
new file mode 100644
index 0000000..5355b83
--- /dev/null
+++ b/Smoke/isolines.c
@@ -0,0 +1,58 @@
+#ifdef G_OS_WIN32
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+
+#include "funcs.h"
+#include "palette.h"
+
+#include "isolines.h"
+
+
+static int isolines_render = FALSE;
+
+static int isolines_num_colors = PALETTE_MAXCOLORS;
+
+static int isolines_colormap = PALETTE_BLACKWHITE;
+
+
+void isolines_set_render(int render_isolines)
+{
+ isolines_render = render_isolines;
+}
+
+int isolines_get_render(void)
+{
+ return isolines_render;
+}
+
+void isolines_set_num_colors(int num_colors)
+{
+ isolines_num_colors = num_colors;
+}
+
+int isolines_get_num_colors(void)
+{
+ return isolines_num_colors;
+}
+
+void isolines_set_colormap(int colormap)
+{
+ isolines_colormap = colormap;
+}
+
+int isolines_get_colormap(void)
+{
+ return isolines_colormap;
+}
+
+
+struct color4f isolines_get_color(float value)
+{
+ struct color4f return_value;
+
+ return_value = set_palette(isolines_colormap, value, isolines_num_colors);
+
+ return return_value;
+}
diff --git a/Smoke/isolines.h b/Smoke/isolines.h
new file mode 100644
index 0000000..f47b645
--- /dev/null
+++ b/Smoke/isolines.h
@@ -0,0 +1,16 @@
+#ifndef _ISOLINES_H
+#define _ISOLINES_H
+
+void isolines_set_render(int render_isolines);
+int isolines_get_render(void);
+
+void isolines_set_num_colors(int num_colors);
+int isolines_get_num_colors(void);
+
+void isolines_set_colormap(int colormap);
+int isolines_get_colormap(void);
+
+
+struct color4f isolines_get_color(float value);
+
+#endif
diff --git a/Smoke/palette.c b/Smoke/palette.c
index e5727c9..fbf4c25 100644
--- a/Smoke/palette.c
+++ b/Smoke/palette.c
@@ -6,10 +6,101 @@
#include <math.h>
+
#include "funcs.h"
+
#include "palette.h"
+void HSVtoRGB(float *r, float *g, float *b, float h, float s, float v)
+{
+ int i;
+ float f, p, q, t;
+
+ if( s == 0 ) {
+ // achromatic (grey)
+ *r = *g = *b = v;
+ return;
+ }
+
+ h /= 60; // sector 0 to 5
+ i = floor(h);
+ f = h - i; // factorial part of h
+ p = v * (1 - s);
+ q = v * (1 - s * f);
+ t = v * (1 - s * (1 - f));
+
+ switch(i) {
+ case 0:
+ *r = v;
+ *g = t;
+ *b = p;
+ break;
+ case 1:
+ *r = q;
+ *g = v;
+ *b = p;
+ break;
+ case 2:
+ *r = p;
+ *g = v;
+ *b = t;
+ break;
+ case 3:
+ *r = p;
+ *g = q;
+ *b = v;
+ break;
+ case 4:
+ *r = t;
+ *g = p;
+ *b = v;
+ break;
+ default: // case 5:
+ *r = v;
+ *g = p;
+ *b = q;
+ break;
+ }
+
+}
+
+// r,g,b values are from 0 to 1
+// h = [0,360], s = [0,1], v = [0,1]
+// if s == 0, then h = -1 (undefined)
+void RGBtoHSV(float r, float g, float b, float *h, float *s, float *v)
+{
+ float min, max, delta;
+
+ min = MIN3(r, g, b);
+ max = MAX3(r, g, b);
+ *v = max; // v
+
+ delta = max - min;
+
+ if(max != 0) {
+ *s = delta / max; // s
+ } else {
+ // r = g = b = 0 // s = 0, v is undefined
+ *s = 0;
+ *h = -1;
+ return;
+ }
+
+ if(r == max) {
+ *h = ( g - b ) / delta; // between yellow & magenta
+ } else if(g == max) {
+ *h = 2 + (b - r) / delta; // between cyan & yellow
+ } else {
+ *h = 4 + (r - g) / delta; // between magenta & cyan
+ }
+ *h *= 60; // degrees
+ if(*h < 0) {
+ *h += 360;
+ }
+}
+
+
//rainbow: Implements a color palette, mapping the scalar 'value' to a rainbow color RGB
void rainbow(float value, float *R, float *G, float *B)
{
diff --git a/Smoke/palette.h b/Smoke/palette.h
index b5c7941..46d8e5a 100644
--- a/Smoke/palette.h
+++ b/Smoke/palette.h
@@ -17,6 +17,11 @@ struct color4f {
float a;
};
+
+void HSVtoRGB(float *r, float *g, float *b, float h, float s, float v);
+void RGBtoHSV(float r, float g, float b, float *h, float *s, float *v);
+
+
struct color4f set_palette(int colormap_sort, float value, int num_colors);
#endif
diff --git a/Smoke/renderer_gl.c b/Smoke/renderer_gl.c
index 0a15d42..2e56b04 100644
--- a/Smoke/renderer_gl.c
+++ b/Smoke/renderer_gl.c
@@ -17,6 +17,9 @@
#include "palette.h"
#include "colormap.h"
#include "glyphs.h"
+#include "isolines.h"
+
+#include "seedpoint.h"
#include "renderer_gl.h"
@@ -153,7 +156,7 @@ static void render_smoke(void)
}
-void render_glyph(float x_value, float y_value, float i, float j)
+static void render_glyph(float x_value, float y_value, float i, float j)
{
float x0, y0, z0, x1, y1, z1, x_dev, y_dev, size, length;
float scale = (float)((float)DIM / (float)get_var_dims()) / 6;
@@ -253,7 +256,7 @@ void render_glyph(float x_value, float y_value, float i, float j)
glDeleteLists(startList, 1);
}
-void draw_glyphs(void)
+static void draw_glyphs(void)
{
int i, j, idx;
float value, scale, idxcf, idxrf;
@@ -302,6 +305,173 @@ void draw_glyphs(void)
}
+static void render_isolines(void)
+{
+ fftw_real wn = (fftw_real)winWidth / (fftw_real)(DIM + 1); // Grid cell width
+ fftw_real hn = (fftw_real)winHeight / (fftw_real)(DIM + 1); // Grid cell height
+
+ if (glyph_scalar == SCALAR_RHO)
+ {
+ int count;
+ float iso_scale;
+
+ if (isolines_nr) {
+ iso_scale = fabs(threshold1 - threshold2) / isolines_nr;
+ } else {
+ iso_scale = 0.0f;
+ }
+
+ for (count = 0; count < isolines_nr; count++)
+ {
+ int idx;
+ int i, j;
+ float v0, v1, v2, v3;
+ float x0, y0, x1, y1, x_offset, y_offset;
+ int state = 0;
+ static int prev_state = 0;
+ struct color4f color;
+ float threshold;
+
+ v0 = v1 = v2 = v3 = 0.0f;
+ x0 = y0 = x1 = y1 = 0.0f;
+
+ threshold = min(threshold1, threshold2) + count * iso_scale;
+
+ if (isolines_nr == 1) glLineWidth(2.0f);
+ else glLineWidth(2.0f);
+ glBegin(GL_LINES);
+
+ for (i = 0; i < DIM - 1; i++)
+ {
+ for (j = 0; j < DIM - 1; j++)
+ {
+ state = 0;
+ idx = (j * DIM) + i;
+ color = isolines_get_color(get_dataset(idx));
+ glColor4f(color.r, color.g, color.b, 1.0f);
+
+ v0 = get_dataset(idx + DIM);
+ v1 = get_dataset(idx + 1 + DIM);
+ v2 = get_dataset(idx + 1);
+ v3 = get_dataset(idx);
+
+ if (v0 >= threshold) { state += 1; }
+ if (v1 >= threshold) { state += 2; }
+ if (v2 >= threshold) { state += 4; }
+ if (v3 >= threshold) { state += 8; }
+
+ x_offset = wn + (fftw_real)i * wn;
+ y_offset = wn + (fftw_real)j * hn;
+
+ switch (state)
+ {
+ case 5:
+ case 10:
+ x0 = 0;
+ y0 = percentage(fabs(v3 - v0), threshold) * hn;
+ x1 = percentage(fabs(v1 - v0), threshold) * wn;
+ y1 = hn;
+ if (x0 != y0 != x1 != y1 != 0.0f) {
+ glVertex3i(x_offset + x0, y_offset + y0, 0.0f);
+ glVertex3i(x_offset + x1, y_offset + y1, 0.0f);
+ }
+ // no break !!
+ case 4:
+ case 11:
+ x0 = percentage(fabs(v3 - v2), threshold) * wn;
+ y0 = 0;
+ x1 = wn;
+ y1 = percentage(fabs(v2 - v1), threshold) * hn;
+ break;
+ case 6:
+ case 9:
+ x0 = percentage(fabs(v3 - v2), threshold) * wn;
+ y0 = 0;
+ x1 = percentage(fabs(v1 - v0), threshold) * wn;
+ y1 = hn;
+ break;
+ case 7:
+ case 8:
+ x0 = percentage(fabs(v3 - v2), threshold) * wn;
+ y0 = 0;
+ x1 = 0;
+ y1 = percentage(fabs(v3 - v0), threshold) * hn;
+ break;
+ case 3:
+ case 12:
+ x0 = 0;
+ y0 = percentage(fabs(v3 - v0), threshold) * hn;
+ x1 = wn;
+ y1 = percentage(fabs(v2 - v1), threshold) * hn;
+ break;
+ case 2:
+ case 13:
+ x0 = percentage(fabs(v1 - v0), threshold) * wn;
+ y0 = hn;
+ x1 = wn;
+ y1 = percentage(fabs(v2 - v1), threshold) * hn;
+ break;
+ case 1:
+ case 14:
+ x0 = 0;
+ y0 = percentage(fabs(v3 - v0), threshold) * hn;
+ x1 = percentage(fabs(v1 - v0), threshold) * wn;
+ y1 = hn;
+ break;
+ case 0: case 15: default:
+ x0 = y0 = x1 = y1 = 0.0f;
+ break;
+ }
+
+ // draw line
+ if (x0 != y0 != x1 != y1 != 0.0f)
+ {
+ glVertex3i(x_offset + x0, y_offset + y0, 0.0f);
+ glVertex3i(x_offset + x1, y_offset + y1, 0.0f);
+ }
+
+ }
+ }
+
+ glEnd();
+ }
+ }
+}
+
+
+static void render_streamlines(void)
+{
+ int i, j, k, l, idx;
+ float v;
+ struct point p;
+ int *frame_history;
+ fftw_real cell_x, cell_y;
+
+ i = j = k = l = 0;
+
+ for (i = 0; i < get_cur_seedpoint(); i++)
+ {
+ p = get_seedpoint(i);
+
+ while (j < DIM)
+ {
+ frame_history = frame_hist[j];
+
+ cell_x = (fftw_real)winWidth / (fftw_real)(DIM + 1); // Grid cell width
+ cell_y = (fftw_real)winHeight / (fftw_real)(DIM + 1); // Grid cell heigh
+
+ cell_x = round(p.x / cell_x);
+ cell_y = round(p.y / cell_y);
+
+ idx = cell_x + (cell_y * DIM) + (j * DIM * DIM);
+ //v = frame_history[idx];
+
+ j++;
+ }
+ }
+}
+
+
void zoom_in(int zoom)
{
z_pos += zoom;
@@ -323,7 +493,8 @@ void visualize(void)
render_legend();
- // Rotate field
+ /* Rotate field
+ */
glLoadIdentity();
glTranslatef(x_pos, y_pos, z_pos);
glRotatef(x_rot, 1.0f, 0.0f, 0.0f);
@@ -332,32 +503,21 @@ void visualize(void)
glTranslatef(-(wn*DIM)/2, -(hn*DIM)/2, 0.0f);
- // draw isolines
- if (glyph_scalar == SCALAR_RHO)
- {
- int count;
- float iso_scale;
-
- if (isolines_nr) iso_scale = fabs(threshold1 - threshold2) / isolines_nr;
- else iso_scale = 0.0f;
-
- for (count = 0; count < isolines_nr; count++)
- {
- draw_isolines(min(threshold1, threshold2) + count * iso_scale);
- }
+ if (isolines_get_render()) {
+ render_isolines();
}
- // draw the smoke
- if (smoke_get_render())
- {
+ if (smoke_get_render()) {
render_smoke();
}
- if (glyphs_get_render())
- {
+ if (glyphs_get_render()) {
draw_glyphs();
}
render_seedpoints();
- render_streamlines();
+
+ if (streamlines_get_render()) {
+ render_streamlines();
+ }
}
diff --git a/Smoke/smoke.bin b/Smoke/smoke.bin
index 4c2ab2f..02062ff 100755
--- a/Smoke/smoke.bin
+++ b/Smoke/smoke.bin
Binary files differ
diff --git a/Smoke/streamlines.c b/Smoke/streamlines.c
index 59f9b33..acfc016 100644
--- a/Smoke/streamlines.c
+++ b/Smoke/streamlines.c
@@ -1,47 +1,58 @@
-// Includes
-
#ifdef G_OS_WIN32
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
#endif
-#include <rfftw.h>
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "fluids.h"
-#include "streamlines.h"
-#include "seedpoint.h"
#include "funcs.h"
+#include "palette.h"
+
+#include "streamlines.h"
+
+
+static int streamlines_render = FALSE;
-void render_streamlines(void)
+static int streamlines_num_colors = PALETTE_MAXCOLORS;
+
+static int streamlines_colormap = PALETTE_BLACKWHITE;
+
+
+void streamlines_set_render(int render_streamlines)
{
- int i, j, k, l, idx;
- float v;
- struct point p;
- int *frame_history;
- fftw_real cell_x, cell_y;
+ streamlines_render = render_streamlines;
+}
- i = j = k = l = 0;
+int streamlines_get_render(void)
+{
+ return streamlines_render;
+}
- for (i = 0; i < get_cur_seedpoint(); i++)
- {
- p = get_seedpoint(i);
+void streamlines_set_num_colors(int num_colors)
+{
+ streamlines_num_colors = num_colors;
+}
- while (j < DIM)
- {
- frame_history = frame_hist[j];
+int streamlines_get_num_colors(void)
+{
+ return streamlines_num_colors;
+}
- cell_x = (fftw_real)winWidth / (fftw_real)(DIM + 1); // Grid cell width
- cell_y = (fftw_real)winHeight / (fftw_real)(DIM + 1); // Grid cell heigh
+void streamlines_set_colormap(int colormap)
+{
+ streamlines_colormap = colormap;
+}
- cell_x = round(p.x / cell_x);
- cell_y = round(p.y / cell_y);
+int streamlines_get_colormap(void)
+{
+ return streamlines_colormap;
+}
+
+
+struct color4f streamlines_get_color(float value)
+{
+ struct color4f return_value;
- idx = cell_x + (cell_y * DIM) + (j * DIM * DIM);
- //v = frame_history[idx];
+ return_value = set_palette(streamlines_colormap, value, streamlines_num_colors);
- j++;
- }
- }
+ return return_value;
}
diff --git a/Smoke/streamlines.h b/Smoke/streamlines.h
index f2c2816..dc253aa 100644
--- a/Smoke/streamlines.h
+++ b/Smoke/streamlines.h
@@ -1,7 +1,16 @@
-#ifndef _STREAMLINES_H
-#define _STREAMLINES_H
-
-void render_streamlines(void);
-
-#endif
-
+#ifndef _STREAMLINES_H
+#define _STREAMLINES_H
+
+void streamlines_set_render(int render_streamlines);
+int streamlines_get_render(void);
+
+void streamlines_set_num_colors(int num_colors);
+int streamlines_get_num_colors(void);
+
+void streamlines_set_colormap(int colormap);
+int streamlines_get_colormap(void);
+
+
+struct color4f streamlines_get_color(float value);
+
+#endif
diff --git a/Smoke/template.c b/Smoke/template.c
new file mode 100644
index 0000000..c873256
--- /dev/null
+++ b/Smoke/template.c
@@ -0,0 +1,58 @@
+#ifdef G_OS_WIN32
+#define WIN32_LEAN_AND_MEAN 1
+#include <windows.h>
+#endif
+
+
+#include "funcs.h"
+#include "palette.h"
+
+#include ".h"
+
+
+static int _render = FALSE;
+
+static int _num_colors = PALETTE_MAXCOLORS;
+
+static int _colormap = PALETTE_BLACKWHITE;
+
+
+void _set_render(int render_)
+{
+ _render = render_;
+}
+
+int _get_render(void)
+{
+ return _render;
+}
+
+void _set_num_colors(int num_colors)
+{
+ _num_colors = num_colors;
+}
+
+int _get_num_colors(void)
+{
+ return _num_colors;
+}
+
+void _set_colormap(int colormap)
+{
+ _colormap = colormap;
+}
+
+int _get_colormap(void)
+{
+ return _colormap;
+}
+
+
+struct color4f _get_color(float value)
+{
+ struct color4f return_value;
+
+ return_value = set_palette(_colormap, value, _num_colors);
+
+ return return_value;
+}
diff --git a/Smoke/template.h b/Smoke/template.h
new file mode 100644
index 0000000..cb9907c
--- /dev/null
+++ b/Smoke/template.h
@@ -0,0 +1,16 @@
+#ifndef __H
+#define __H
+
+void _set_render(int render_);
+int _get_render(void);
+
+void _set_num_colors(int num_colors);
+int _get_num_colors(void);
+
+void _set_colormap(int colormap);
+int _get_colormap(void);
+
+
+struct color4f _get_color(float value);
+
+#endif