annotate src/iris/theme_original.c @ 121:b59bca84e3cd trunk

[svn] - add xmms-alarm port
author nenolod
date Thu, 26 Oct 2006 00:10:28 -0700
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) 2000-2002 Cédric DELFOSSE (cdelfosse@free.fr)
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 <math.h>
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
21 #include <GL/gl.h>
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
22 #include <audacious/configdb.h>
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
23 #include "iris.h"
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
24
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
25 GLfloat jump[16] =
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
26 { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
27 0.0
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
28 };
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
29
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
30 xz xz1, xz2, xz3, xz4;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
31
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
32 static int draw_mode = 0; // the drawing mode
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
33
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
34 static struct
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
35 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
36 int draw_mode;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
37 int angle_step;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
38 gboolean wave_on_beat;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
39 GLfloat wave_height;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
40 int wave_timer;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
41 GLfloat radius;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
42 GLfloat interband;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
43 GLfloat linelength;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
44 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
45 conf_private, conf_private_new;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
46
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
47 static config_theme conf = {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
48 (config_global *) NULL,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
49 &conf_private
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
50 };
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
51
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
52 static config_theme conf_new = {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
53 (config_global *) NULL,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
54 &conf_private_new
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
55 };
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
56
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
57 static char original_draw_mode[] = "original_draw_mode";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
58 static char original_angle_step[] = "original_angle_step";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
59 static char original_wave_on_beat[] = "original_wave_on_beat";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
60 static char original_wave_height[] = "original_wave_height";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
61 static char original_wave_timer[] = "original_wave_timer";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
62 static char original_radius[] = "original_radius";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
63 static char original_interband[] = "original_interband";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
64 static char original_linelength[] = "original_linelength";
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
65
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
66 static void config_read (ConfigDb *, char *);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
67 static void config_write (ConfigDb *, char *);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
68 static void config_default (void);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
69 static void config_create (GtkWidget *);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
70 static void init_draw_mode (void);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
71 static GLfloat get_x_angle (void);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
72 static void draw_one_frame (gboolean);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
73
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
74 iris_theme theme_original = {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
75 "Original",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
76 "A 360 degrees spectrum analyzer",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
77 "Cédric Delfosse (cdelfosse@free.fr)",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
78 "original",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
79 &conf,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
80 &conf_new,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
81 sizeof (conf_private),
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
82 config_read,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
83 config_write,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
84 config_default,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
85 config_create,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
86 NULL,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
87 NULL,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
88 init_draw_mode,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
89 get_x_angle,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
90 draw_one_frame
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
91 };
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
92
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
93
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
94 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
95 shift_jump ()
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
96 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
97 int i;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
98
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
99 for (i = 15; i > 0; i--)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
100 jump[i] = jump[i - 1];
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
101 jump[0] = 0.0;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
102 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
103
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
104
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
105 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
106 init_draw_mode ()
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
107 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
108 draw_mode = 1 + (int) (3.0 * rand () / (RAND_MAX + 1.0));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
109 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
110
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
111
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
112 static GLfloat
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
113 get_x_angle ()
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
114 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
115 if (draw_mode == 3)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
116 return (45.0 + (int) (30.0 * rand () / (RAND_MAX + 1.0)));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
117 else
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
118 return (55.0 + (int) (35.0 * rand () / (RAND_MAX + 1.0)));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
119 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
120
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
121
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
122 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
123 draw_one_frame (gboolean beat)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
124 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
125 static unsigned int cpt = 0;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
126 static float a = 1.0;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
127 static float b = 1.0;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
128 int d = 0;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
129 float step;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
130 float rad = (float) ((2 * M_PI * d) / 360);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
131 float cosv = a * (float) cos (rad);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
132 float sinv = b * (float) sin (rad);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
133
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
134 if ((conf_private.wave_on_beat) && (beat))
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
135 jump[0] = conf_private.wave_height;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
136
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
137
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
138 glBegin (GL_QUADS);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
139 for (d = 0, step = 0; d < 360; d = d + conf_private.angle_step)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
140 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
141 int l;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
142 float rad2 = (float) ((2 * M_PI * (d + conf_private.angle_step)) / 360);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
143 float cosv2 = a * (float) cos (rad2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
144 float sinv2 = b * (float) sin (rad2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
145
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
146 for (l = 0; l < 16; l++)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
147 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
148 int i;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
149 GLfloat red, green, blue;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
150 xz xz1, xz2, xz3, xz4;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
151
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
152 GLfloat y;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
153 GLfloat u = (float) (l * conf_private.interband * cosv);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
154 GLfloat v = (float) (l * conf_private.interband * sinv);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
155 GLfloat u2 = (float) (l * conf_private.interband * cosv2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
156 GLfloat v2 = (float) (l * conf_private.interband * sinv2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
157
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
158 xz1.x = u + (conf_private.radius + conf_private.linelength) * cosv;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
159 xz1.z = v + (conf_private.radius + conf_private.linelength) * sinv;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
160 xz2.x = u + conf_private.radius * cosv;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
161 xz2.z = v + conf_private.radius * sinv;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
162 xz3.x =
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
163 u2 + (conf_private.radius + conf_private.linelength) * cosv2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
164 xz3.z =
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
165 v2 + (conf_private.radius + conf_private.linelength) * sinv2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
166 xz4.x = u2 + conf_private.radius * cosv2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
167 xz4.z = v2 + conf_private.radius * sinv2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
168
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
169 // calculate the height of the bar
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
170 // this makes a fade with the past drawn values
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
171 for (i = 0, y = 0; i < conf_private.angle_step; i++)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
172 y += datas.data360[d + i][l];
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
173 y /= (float) conf_private.angle_step;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
174
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
175 // get the color associated with the height of the bar
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
176 if (y != 0.0)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
177 get_color (&red, &green, &blue, &y);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
178 else
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
179 break; // we draw nothing if the signal is null
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
180
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
181 y *= 4; // should be in the config ?
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
182
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
183 if (conf_private.wave_on_beat)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
184 y += jump[l];
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
185
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
186 switch (draw_mode)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
187 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
188 case 1:
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
189 // draw a bar
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
190 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
191 glColor4f (red / 2, green / 2, blue / 2, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
192 bar_side (y, &xz1, &xz2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
193 bar_side (y, &xz3, &xz4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
194 bar_side (y, &xz1, &xz3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
195 bar_side (y, &xz2, &xz4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
196 if (jump[l])
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
197 glColor4f (config.color_flash_red, config.color_flash_green,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
198 config.color_flash_blue, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
199 else
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
200 glColor4f (red, green, blue, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
201 bar_top_or_bottom (y, &xz1, &xz2, &xz3, &xz4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
202
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
203 break;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
204 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
205 case 2:
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
206 // draw only the top of a bar
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
207 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
208 if (jump[l])
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
209 glColor4f (config.color_flash_red, config.color_flash_green,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
210 config.color_flash_blue, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
211 else
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
212 glColor4f (red, green, blue, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
213 bar_top_or_bottom (y, &xz1, &xz2, &xz3, &xz4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
214
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
215 break;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
216 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
217 case 3:
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
218 // draw only a side of a bar
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
219 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
220 if (jump[l])
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
221 glColor4f (config.color_flash_red, config.color_flash_green,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
222 config.color_flash_blue, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
223 else
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
224 glColor4f (red, green, blue, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
225 bar_side (y, &xz3, &xz4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
226
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
227 break;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
228 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
229 case 4:
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
230 //draw only another side of a bar
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
231 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
232 if (jump[l])
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
233 glColor4f (config.color_flash_red, config.color_flash_green,
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
234 config.color_flash_blue, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
235 else
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
236 glColor4f (red, green, blue, 0.3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
237 bar_side (y, &xz1, &xz3);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
238
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
239 break;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
240 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
241
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
242 } // switch
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
243
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
244 } // for(l=0
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
245
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
246 rad = rad2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
247 cosv = cosv2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
248 sinv = sinv2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
249
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
250 } // for(d=0
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
251
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
252 if (!cpt)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
253 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
254 shift_jump ();
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
255 cpt = conf_private.wave_timer;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
256 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
257 cpt--;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
258
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
259 glEnd ();
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
260
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
261 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
262
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
263
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
264 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
265 config_read (ConfigDb * db, char *section_name)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
266 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
267 bmp_cfg_db_get_int (db, section_name, original_draw_mode, &conf_private.draw_mode);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
268 bmp_cfg_db_get_int (db, section_name, original_angle_step, &conf_private.angle_step);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
269 bmp_cfg_db_get_bool (db, section_name, original_wave_on_beat, &conf_private.wave_on_beat);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
270 bmp_cfg_db_get_float (db, section_name, original_wave_height, &conf_private.wave_height);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
271 bmp_cfg_db_get_int (db, section_name, original_wave_timer, &conf_private.wave_timer);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
272 bmp_cfg_db_get_float (db, section_name, original_radius, &conf_private.radius);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
273 bmp_cfg_db_get_float (db, section_name, original_interband, &conf_private.interband);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
274 bmp_cfg_db_get_float (db, section_name, original_linelength, &conf_private.linelength);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
275 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
276
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
277
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
278 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
279 config_write (ConfigDb * db, char *section_name)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
280 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
281 bmp_cfg_db_set_int (db, section_name, original_draw_mode, conf_private.draw_mode);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
282 bmp_cfg_db_set_int (db, section_name, original_angle_step, conf_private.angle_step);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
283 bmp_cfg_db_set_bool (db, section_name, original_wave_on_beat, conf_private.wave_on_beat);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
284 bmp_cfg_db_set_float (db, section_name, original_wave_height, conf_private.wave_height);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
285 bmp_cfg_db_set_int (db, section_name, original_wave_timer, conf_private.wave_timer);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
286 bmp_cfg_db_set_float (db, section_name, original_radius, conf_private.radius);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
287 bmp_cfg_db_set_float (db, section_name, original_interband, conf_private.interband);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
288 bmp_cfg_db_set_float (db, section_name, original_linelength, conf_private.linelength);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
289 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
290
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
291
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
292 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
293 config_default ()
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
294 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
295 conf_private.draw_mode = 2;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
296 conf_private.angle_step = 8;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
297 conf_private.wave_on_beat = TRUE;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
298 conf_private.wave_height = 0.5;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
299 conf_private.wave_timer = 5;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
300 conf_private.radius = 0.4;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
301 conf_private.interband = 0.25;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
302 conf_private.linelength = 0.11;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
303 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
304
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
305
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
306 void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
307 jumpbeat_toggled (GtkWidget * widget, gpointer data)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
308 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
309 conf_private_new.wave_on_beat = !conf_private_new.wave_on_beat;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
310 }
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
311
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
312
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
313 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
314 value_jump_speed (GtkAdjustment * adj)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
315 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
316 conf_private_new.wave_timer = (int) adj->value;
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
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
320 static void
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
321 config_create (GtkWidget * vbox)
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
322 {
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
323 GtkWidget *hbox;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
324 GtkWidget *button;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
325 GtkWidget *label;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
326 GtkObject *adjustment;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
327 GtkWidget *hscale;
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
328
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
329 memcpy (&conf_private_new, &conf_private, sizeof (conf_private_new));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
330
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
331 /* wave on beat */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
332 hbox = gtk_hbox_new (FALSE, 2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
333 gtk_widget_show (hbox);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
334 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
335
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
336 button = gtk_check_button_new_with_label ("Wave on beats");
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
337 gtk_widget_show (button);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
338 gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
339 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
340 conf_private_new.wave_on_beat);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
341 gtk_signal_connect (GTK_OBJECT (button), "toggled",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
342 GTK_SIGNAL_FUNC (jumpbeat_toggled), NULL);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
343
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
344 /* number of frame for the wave to propagate */
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
345 hbox = gtk_hbox_new (FALSE, 2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
346 gtk_widget_show (hbox);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
347 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
348
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
349 label = gtk_label_new ("Wave propagation timer (in frames)");
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
350 gtk_widget_show (label);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
351 gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
352
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
353 hbox = gtk_hbox_new (FALSE, 2);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
354 gtk_widget_show (hbox);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
355 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
356
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
357 adjustment =
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
358 gtk_adjustment_new (conf_private_new.wave_timer, 1, 50, 1, 5, 0);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
359 hscale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
360 gtk_scale_set_digits (GTK_SCALE (hscale), 0);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
361 gtk_widget_set_usize (GTK_WIDGET (hscale), 200, 25);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
362 gtk_box_pack_start (GTK_BOX (hbox), hscale, FALSE, FALSE, 4);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
363 gtk_widget_show (hscale);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
364 gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
365 GTK_SIGNAL_FUNC (value_jump_speed), NULL);
a578bf9b2851 [svn] - iris vis plugin port
nenolod
parents:
diff changeset
366 }