annotate src/iris/theme_flash.c @ 224:f6bdf10fe48c trunk

[svn] - shoutcast streams don't have a length.
author nenolod
date Sun, 05 Nov 2006 12:50:07 -0800
parents a578bf9b2851
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
116
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
1 /* Iris - visualization plugin for XMMS
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
2 * Copyright (C) 2004 Marc Pompl (marc.pompl@lynorics.de)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
3 *
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
7 * (at your option) any later version.
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
8 *
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
9 * This program is distributed in the hope that it will be useful,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
12 * GNU General Public License for more details.
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
13 *
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
15 * along with this program; if not, write to the Free Software
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
17 */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
18
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
19 #include <stdlib.h>
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
20 #include <stdio.h>
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
21 #include <math.h>
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
22 #include <GL/gl.h>
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
23 #include <audacious/configdb.h>
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
24 #include "iris.h"
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
25 #include "particle.h"
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
26
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
27 static GLuint texture[1]; /* Storage For Our Particle Texture */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
28
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
29 static gboolean flash_already_initialized = FALSE;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
30
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
31 static float flash_timer = 0; /* timer for flash */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
32
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
33 static struct
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
34 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
35 gboolean flash_on_beat;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
36 int flash_timer;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
37 GLfloat speed;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
38 GLfloat r1, r2, r3;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
39 GLfloat m,n,o;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
40 GLfloat f,g,h;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
41 GLfloat t;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
42 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
43 conf_private, conf_private_new;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
44
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
45 static config_theme conf = {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
46 (config_global *) NULL,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
47 &conf_private
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
48 };
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
49
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
50 static config_theme conf_new = {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
51 (config_global *) NULL,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
52 &conf_private_new
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
53 };
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
54
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
55 static char flash_flash_on_beat[] = "flashlight_flash_on_beat";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
56 static char flash_flash_timer[] = "flashlight_flash_timer";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
57 static char flash_speed[] = "flashlight_speed";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
58
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
59 static void config_read (ConfigDb *, char *);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
60 static void config_write (ConfigDb *, char *);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
61 static void config_default (void);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
62 static void config_create (GtkWidget *);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
63 static void init_draw_mode (void);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
64 static GLfloat get_x_angle (void);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
65 static void draw_one_frame (gboolean);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
66
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
67 iris_theme theme_flash = {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
68 "Flash light",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
69 "flash lights moving by a lissajou figure\n",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
70 "Marc Pompl (marc.pompl@lynorics.de)",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
71 "flashlight",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
72 &conf,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
73 &conf_new,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
74 sizeof (conf_private),
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
75 config_read,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
76 config_write,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
77 config_default,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
78 config_create,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
79 NULL,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
80 NULL,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
81 init_draw_mode,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
82 get_x_angle,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
83 draw_one_frame
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
84 };
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
85
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
86 /* Create our particle structure */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
87 typedef struct
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
88 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
89 GLint active; /* Active (Yes/No) */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
90 GLfloat life; /* Particle Life */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
91 GLfloat fade; /* Fade Speed */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
92
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
93 GLfloat r; /* Red Value */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
94 GLfloat g; /* Green Value */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
95 GLfloat b; /* Blue Value */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
96
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
97 GLfloat fr; /* Red Flash Value */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
98 GLfloat fg; /* Green Flash Value */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
99 GLfloat fb; /* Blue Flash Value */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
100
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
101 GLfloat x; /* X Position */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
102 GLfloat y; /* Y Position */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
103 GLfloat z; /* Z Position */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
104
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
105 GLfloat xi; /* X Direction */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
106 GLfloat yi; /* Y Direction */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
107 GLfloat zi; /* Z Direction */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
108
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
109 GLfloat xg; /* X Gravity */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
110 GLfloat yg; /* Y Gravity */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
111 GLfloat zg; /* Z Gravity */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
112 } particle;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
113
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
114 /* Rainbow of colors */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
115 static GLfloat flash_colors[16][3] =
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
116 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
117 { 1.0f, 0.5f, 0.5f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
118 { 1.0f, 0.75f, 0.5f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
119 { 1.0f, 1.0f, 0.5f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
120
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
121 { 0.75f, 1.0f, 0.5f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
122
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
123 { 0.5f, 1.0f, 0.5f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
124 { 0.5f, 1.0f, 0.75f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
125 { 0.5f, 1.0f, 1.0f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
126
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
127 { 0.5f, 0.75f, 1.0f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
128 { 0.5f, 0.5f, 1.0f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
129 { 0.75f, 0.5f, 1.0f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
130
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
131 { 1.0f, 0.5f, 1.0f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
132 { 1.0f, 0.5f, 0.75f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
133 { 0.75f, 0.5f, 0.75f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
134
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
135 { 0.5f, 0.5f, 0.5f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
136 { 0.75f, 0.75f, 0.75f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
137 { 1.0f, 1.0f, 1.0f},
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
138 };
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
139
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
140 /* Our beloved array of particles */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
141 static particle particles[NUM_BANDS];
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
142
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
143 void FlashColor( int num )
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
144 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
145 GLfloat dr;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
146 GLfloat dg;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
147 GLfloat db;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
148 dr = 1-particles[num].r;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
149 dg = 1-particles[num].g;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
150 db = 1-particles[num].b;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
151 particles[num].fr = 1-dr*dr;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
152 particles[num].fg = 1-dg*dg;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
153 particles[num].fb = 1-db*db;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
154 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
155
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
156 /* function to "load" a GL texture */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
157 void flash_loadTexture( )
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
158 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
159 /* Create The Texture */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
160 glGenTextures( 1, &texture[0] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
161
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
162 /* Typical Texture Generation Using Data From The Bitmap */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
163 glBindTexture( GL_TEXTURE_2D, texture[0] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
164
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
165 /* Generate The Texture */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
166 glTexImage2D( GL_TEXTURE_2D, 0, 3, particle_image.width,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
167 particle_image.height, 0, GL_RGBA,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
168 GL_UNSIGNED_BYTE, particle_image.pixel_data );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
169
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
170 /* Linear Filtering */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
171 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
172 glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
173 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
174
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
175 /* function to reset one particle to initial state */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
176 void ResetFlash( int num, GLfloat xDir, GLfloat yDir, GLfloat zDir )
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
177 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
178 /* Make the particels active */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
179 particles[num].active = TRUE;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
180 /* Give the particles life */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
181 particles[num].life = 1.0f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
182 /* Random Fade Speed */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
183 particles[num].fade = ( GLfloat )( rand( ) *150 )/ (RAND_MAX + 1.0) / 1000.0f + 0.003f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
184 /* Select Red Rainbow Color */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
185 particles[num].r = flash_colors[num][0];
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
186 /* Select Green Rainbow Color */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
187 particles[num].g = flash_colors[num][1];
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
188 /* Select Blue Rainbow Color */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
189 particles[num].b = flash_colors[num][2];
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
190 /* Set the position on the X axis */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
191 particles[num].x = 0.0f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
192 /* Set the position on the Y axis */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
193 particles[num].y = 0.0f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
194 /* Set the position on the Z axis */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
195 particles[num].z = 0.0f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
196 /* Random Speed On X Axis */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
197 particles[num].xi = xDir;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
198 /* Random Speed On Y Axi */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
199 particles[num].yi = yDir;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
200 /* Random Speed On Z Axis */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
201 particles[num].zi = zDir;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
202 /* Set Horizontal Pull To Zero */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
203 particles[num].xg = 0.0f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
204 /* Set Vertical Pull Downward */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
205 particles[num].yg = -0.8f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
206 /* Set Pull On Z Axis To Zero */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
207 particles[num].zg = 0.0f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
208 FlashColor(num);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
209 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
210
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
211 static void initFlash ( int num, GLfloat value )
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
212 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
213 GLfloat xi, yi, zi;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
214 xi = num;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
215 yi = 0;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
216 zi = 0;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
217 ResetFlash( num, xi, yi, zi );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
218 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
219
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
220 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
221 init_draw_mode ()
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
222 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
223 int loop;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
224 conf.global->transparency = TRUE;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
225 //conf.global->wireframe = FALSE;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
226
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
227 flash_loadTexture();
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
228 /* Enable smooth shading */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
229 glShadeModel( GL_SMOOTH );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
230
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
231 /* Set the background black */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
232 //glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
233
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
234 /* Depth buffer setup */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
235 //glClearDepth( 1.0f );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
236
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
237 /* Enables Depth Testing */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
238 glDisable( GL_DEPTH_TEST );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
239
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
240 /* Enable Blending */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
241 glEnable( GL_BLEND );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
242
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
243 glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
244
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
245 /* Type Of Blending To Perform */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
246 glBlendFunc( GL_SRC_ALPHA, GL_ONE );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
247
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
248 /* Really Nice Perspective Calculations */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
249 glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
250 /* Really Nice Point Smoothing */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
251 glHint( GL_POINT_SMOOTH_HINT, GL_NICEST );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
252
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
253 /* Enable Texture Mapping */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
254 glEnable( GL_TEXTURE_2D );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
255 /* Select Our Texture */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
256 glBindTexture( GL_TEXTURE_2D, texture[0] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
257 if (!flash_already_initialized)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
258 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
259 for (loop=0; loop<NUM_BANDS; loop++)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
260 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
261 initFlash(loop,0);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
262 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
263 conf_private.f = 1;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
264 conf_private.g = 1;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
265 conf_private.h = 2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
266 conf_private.m = conf_private.n = conf_private.o = 0;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
267 conf_private.t = 0.0f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
268 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
269 flash_already_initialized = TRUE;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
270 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
271
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
272
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
273 static GLfloat
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
274 get_x_angle ()
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
275 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
276 return (15.0 + (int) (40.0 * rand () / (RAND_MAX + 1.0)));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
277 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
278
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
279 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
280 draw_one_frame (gboolean beat)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
281 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
282 int loop;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
283 if (beat)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
284 flash_timer = conf_private.flash_timer;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
285 conf_private.t += conf_private.speed;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
286 /* Modify each of the particles */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
287 for ( loop = 0; loop < NUM_BANDS; loop++ )
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
288 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
289 GLfloat x;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
290 GLfloat y;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
291 GLfloat z;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
292 /* compute the position by a lissajou */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
293 GLfloat t1 = (GLfloat)((conf_private.t+loop)/2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
294 conf_private.r1 = (GLfloat)(cos(t1)*sin(t1-loop)*5.0f);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
295 conf_private.r2 = (GLfloat)(sin(t1)*cos(t1)*5.0f);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
296 conf_private.r3 = (GLfloat)(cos(t1+conf_private.t)*sin(t1+loop)*5.0f);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
297 x = (conf_private.r1*cos(conf_private.m*t1+conf_private.f));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
298 y = (conf_private.r2*sin(conf_private.n*t1+conf_private.g));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
299 z = (conf_private.r3*sin(conf_private.o*t1+conf_private.h));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
300
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
301 if (particles[loop].active)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
302 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
303 /* Draw The Particle Using Our RGB Values,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
304 * Fade The Particle Based On It's Life
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
305 */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
306 if ((conf_private.flash_on_beat) && (flash_timer>0))
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
307 glColor4f( particles[loop].fr,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
308 particles[loop].fg,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
309 particles[loop].fb,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
310 1.0f );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
311 else
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
312 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
313 glColor4f( particles[loop].r,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
314 particles[loop].g,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
315 particles[loop].b,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
316 1.0f );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
317 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
318
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
319 /* Build Quad From A Triangle Strip */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
320 glBegin( GL_TRIANGLE_STRIP );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
321 /* Top Right */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
322 glTexCoord2d( 1, 1 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
323 glVertex3f( x + datas.data1[loop], y + datas.data1[loop], z );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
324 /* Top Left */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
325 glTexCoord2d( 0, 1 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
326 glVertex3f( x - datas.data1[loop], y + datas.data1[loop], z );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
327 /* Bottom Right */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
328 glTexCoord2d( 1, 0 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
329 glVertex3f( x + datas.data1[loop], y - datas.data1[loop], z );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
330 /* Bottom Left */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
331 glTexCoord2d( 0, 0 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
332 glVertex3f( x - datas.data1[loop], y - datas.data1[loop], z );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
333 glEnd( );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
334
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
335 glBegin( GL_TRIANGLE_STRIP );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
336 /* Top Right */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
337 glTexCoord2d( 1, 1 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
338 glVertex3f( x, y + datas.data1[loop], z+datas.data1[loop] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
339 /* Top Left */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
340 glTexCoord2d( 0, 1 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
341 glVertex3f( x, y + datas.data1[loop], z-datas.data1[loop] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
342 /* Bottom Right */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
343 glTexCoord2d( 1, 0 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
344 glVertex3f( x, y - datas.data1[loop], z+datas.data1[loop] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
345 /* Bottom Left */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
346 glTexCoord2d( 0, 0 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
347 glVertex3f( x, y - datas.data1[loop], z-datas.data1[loop] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
348 glEnd( );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
349
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
350 glBegin( GL_TRIANGLE_STRIP );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
351 /* Top Right */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
352 glTexCoord2d( 1, 1 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
353 glVertex3f( x+datas.data1[loop], y, z+datas.data1[loop] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
354 /* Top Left */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
355 glTexCoord2d( 0, 1 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
356 glVertex3f( x+datas.data1[loop], y, z-datas.data1[loop] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
357 /* Bottom Right */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
358 glTexCoord2d( 1, 0 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
359 glVertex3f( x-datas.data1[loop], y, z+datas.data1[loop] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
360 /* Bottom Left */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
361 glTexCoord2d( 0, 0 );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
362 glVertex3f( x-datas.data1[loop], y, z-datas.data1[loop] );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
363 glEnd( );
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
364 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
365 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
366
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
367 if (flash_timer>0)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
368 flash_timer --;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
369 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
370
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
371
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
372 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
373 config_read (ConfigDb * db, char *section_name)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
374 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
375 config_default();
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
376 bmp_cfg_db_get_bool (db, section_name, flash_flash_on_beat, &conf_private.flash_on_beat);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
377 bmp_cfg_db_get_int (db, section_name, flash_flash_timer, &conf_private.flash_timer);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
378 bmp_cfg_db_get_float (db, section_name, flash_speed, &conf_private.speed);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
379 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
380
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
381
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
382 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
383 config_write (ConfigDb * db, char *section_name)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
384 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
385 bmp_cfg_db_set_bool (db, section_name, flash_flash_on_beat, conf_private.flash_on_beat);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
386 bmp_cfg_db_set_int (db, section_name, flash_flash_timer, conf_private.flash_timer);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
387 bmp_cfg_db_set_float (db, section_name, flash_speed, conf_private.speed);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
388 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
389
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
390
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
391 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
392 config_default ()
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
393 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
394 conf_private.flash_on_beat = TRUE;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
395 conf_private.flash_timer = 8;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
396 conf_private.speed = 0.01f;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
397 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
398
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
399 void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
400 flash_flash_toggled (GtkWidget * widget, gpointer data)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
401 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
402 conf_private_new.flash_on_beat = !conf_private_new.flash_on_beat;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
403 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
404
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
405 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
406 flash_value_flash (GtkAdjustment * adj)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
407 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
408 conf_private_new.flash_timer = (int)adj->value;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
409 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
410
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
411 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
412 value_speed (GtkAdjustment * adj)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
413 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
414 conf_private_new.speed = (GLfloat) (adj->value/1000);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
415 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
416
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
417 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
418 config_create (GtkWidget * vbox)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
419 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
420 GtkWidget *hbox;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
421 GtkWidget *button;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
422 GtkWidget *label;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
423 GtkObject *adjustment;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
424 GtkWidget *hscale;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
425
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
426 memcpy (&conf_private_new, &conf_private, sizeof (conf_private_new));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
427
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
428 /* flash on beat */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
429 hbox = gtk_hbox_new (FALSE, 2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
430 gtk_widget_show (hbox);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
431 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
432
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
433 button = gtk_check_button_new_with_label ("Flash on beats");
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
434 gtk_widget_show (button);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
435 gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
436 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
437 conf_private_new.flash_on_beat);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
438 gtk_signal_connect (GTK_OBJECT (button), "toggled",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
439 GTK_SIGNAL_FUNC (flash_flash_toggled), NULL);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
440
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
441 /* number of frame for the flash to propagate */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
442 hbox = gtk_hbox_new (FALSE, 2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
443 gtk_widget_show (hbox);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
444 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
445
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
446 label = gtk_label_new ("Flash propagation timer (in frames)");
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
447 gtk_widget_show (label);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
448 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
449
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
450 hbox = gtk_hbox_new (FALSE, 2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
451 gtk_widget_show (hbox);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
452 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
453
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
454 adjustment =
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
455 gtk_adjustment_new (conf_private_new.flash_timer, 1, 50, 1, 5, 0);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
456 hscale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
457 gtk_scale_set_digits (GTK_SCALE (hscale), 0);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
458 gtk_widget_set_usize (GTK_WIDGET (hscale), 200, 25);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
459 gtk_box_pack_start (GTK_BOX (hbox), hscale, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
460 gtk_widget_show (hscale);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
461 gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
462 GTK_SIGNAL_FUNC (flash_value_flash), NULL);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
463
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
464 /* speed */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
465 hbox = gtk_hbox_new (FALSE, 2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
466 gtk_widget_show (hbox);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
467 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
468
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
469 label = gtk_label_new ("Speed");
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
470 gtk_widget_show (label);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
471 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
472
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
473 hbox = gtk_hbox_new (FALSE, 2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
474 gtk_widget_show (hbox);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
475 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
476
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
477 adjustment =
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
478 gtk_adjustment_new (conf_private_new.speed*1000, 1, 100, 1, 5, 0);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
479 hscale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
480 gtk_scale_set_digits (GTK_SCALE (hscale), 0);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
481 gtk_widget_set_usize (GTK_WIDGET (hscale), 200, 25);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
482 gtk_box_pack_start (GTK_BOX (hbox), hscale, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
483 gtk_widget_show (hscale);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
484 gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
485 GTK_SIGNAL_FUNC (value_speed), NULL);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
486 }