annotate Plugins/Visualization/paranormal/pn/pnactuator.c @ 1523:aa1e05d66f6d trunk

[svn] - it might help if i actually ran bison on the script parser eh :)
author nenolod
date Mon, 07 Aug 2006 21:47:55 -0700
parents 0c5fdcf3f947
children 31865cb4e7b6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
1 /* Paranormal - A highly customizable audio visualization library
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
2 * Copyright (C) 2001 Jamie Gennis <jgennis@mindspring.com>
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
3 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
4 * This library is free software; you can redistribute it and/or
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
5 * modify it under the terms of the GNU Library General Public
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
6 * License as published by the Free Software Foundation; either
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
7 * version 2 of the License, or (at your option) any later version.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
8 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
9 * This library is distributed in the hope that it will be useful,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
12 * Library General Public License for more details.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
13 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
14 * You should have received a copy of the GNU Library General Public
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
15 * License along with this library; if not, write to the Free
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
16 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
17 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
18
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
19 #include <config.h>
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
20
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
21 #include <glib.h>
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
22 #include "pnactuator.h"
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
23 #include "pnerror.h"
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
24
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
25 static void pn_actuator_class_init (PnActuatorClass *class);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
26 static void pn_actuator_init (PnActuator *actuator,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
27 PnActuatorClass *class);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
28
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
29 /* GObject signals */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
30 static void pn_actuator_finalize (GObject *gobject);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
31
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
32 /* PnObject signals */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
33 static void pn_actuator_destroy (PnObject *object);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
34
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
35 /* PnUserObject methods */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
36 static void pn_actuator_save_thyself (PnUserObject *user_object,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
37 xmlNodePtr node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
38 static void pn_actuator_load_thyself (PnUserObject *user_object,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
39 xmlNodePtr node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
40
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
41 static PnUserObjectClass *parent_class = NULL;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
42
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
43 GType
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
44 pn_actuator_get_type (void)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
45 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
46 static GType actuator_type = 0;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
47
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
48 if (! actuator_type)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
49 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
50 static const GTypeInfo actuator_info =
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
51 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
52 sizeof (PnActuatorClass),
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
53 NULL, /* base_init */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
54 NULL, /* base_finalize */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
55 (GClassInitFunc) pn_actuator_class_init,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
56 NULL, /* class_finalize */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
57 NULL, /* class_data */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
58 sizeof (PnActuator),
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
59 0, /* n_preallocs */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
60 (GInstanceInitFunc) pn_actuator_init
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
61 };
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
62
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
63 /* FIXME: should this be dynamic? */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
64 actuator_type = g_type_register_static (PN_TYPE_USER_OBJECT,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
65 "PnActuator",
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
66 &actuator_info,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
67 G_TYPE_FLAG_ABSTRACT);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
68 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
69 return actuator_type;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
70 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
71
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
72 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
73 pn_actuator_class_init (PnActuatorClass *class)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
74 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
75 GObjectClass *gobject_class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
76 PnObjectClass *object_class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
77 PnUserObjectClass *user_object_class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
78
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
79
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
80 parent_class = g_type_class_peek_parent (class);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
81
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
82 gobject_class = (GObjectClass *) class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
83 object_class = (PnObjectClass *) class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
84 user_object_class = (PnUserObjectClass *) class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
85
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
86 /* GObject signals */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
87 gobject_class->finalize = pn_actuator_finalize;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
88
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
89 /* PnObject signals */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
90 object_class->destroy = pn_actuator_destroy;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
91
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
92 /* PnUserObject methods */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
93 user_object_class->save_thyself = pn_actuator_save_thyself;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
94 user_object_class->load_thyself = pn_actuator_load_thyself;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
95 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
96
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
97 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
98 pn_actuator_init (PnActuator *actuator, PnActuatorClass *class)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
99 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
100 actuator->options = g_array_new (FALSE, FALSE, sizeof (PnOption *));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
101 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
102
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
103 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
104 pn_actuator_destroy (PnObject *object)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
105 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
106 PnActuator *actuator = (PnActuator *) object;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
107 gint i;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
108
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
109 for (i=0; i < actuator->options->len; i++)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
110 pn_object_unref (g_array_index (actuator->options, PnObject *, i));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
111 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
112
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
113 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
114 pn_actuator_finalize (GObject *gobject)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
115 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
116 PnActuator *actuator = (PnActuator *) gobject;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
117
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
118 g_array_free (actuator->options, FALSE);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
119
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
120 if (G_OBJECT_CLASS (parent_class)->finalize)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
121 G_OBJECT_CLASS (parent_class)->finalize (gobject);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
122 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
123
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
124 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
125 pn_actuator_save_thyself (PnUserObject *user_object, xmlNodePtr node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
126 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
127 PnActuator *actuator;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
128 gint i;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
129 xmlNodePtr options_node, option_node;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
130 PnOption *option;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
131
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
132 g_return_if_fail (user_object != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
133 g_return_if_fail (PN_IS_ACTUATOR (user_object));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
134 g_return_if_fail (node != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
135
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
136 actuator = (PnActuator *) user_object;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
137
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
138 options_node = xmlNewChild (node, NULL, "Options", NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
139
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
140 /* Save all the options */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
141 for (i=0; i < actuator->options->len; i++)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
142 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
143 option = g_array_index (actuator->options, PnOption *, i);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
144 option_node = xmlNewChild (options_node, NULL, "BUG", NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
145 pn_user_object_save_thyself (PN_USER_OBJECT (option), option_node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
146 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
147
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
148 if (parent_class->save_thyself)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
149 parent_class->save_thyself (user_object, node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
150 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
151
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
152 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
153 pn_actuator_load_thyself (PnUserObject *user_object, const xmlNodePtr node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
154 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
155 PnActuator *actuator;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
156 xmlNodePtr options_node, option_node;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
157 PnOption *option;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
158
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
159 g_return_if_fail (user_object != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
160 g_return_if_fail (PN_IS_ACTUATOR (user_object));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
161 g_return_if_fail (node != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
162
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
163 actuator = (PnActuator *) user_object;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
164
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
165 /* FIXME: should these 'xmlChildrenNode' be 'xmlRootNode'? */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
166
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
167 /* find the 'options' node */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
168 for (options_node = node->xmlChildrenNode; options_node; options_node = options_node->next)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
169 if (g_strcasecmp (options_node->name, "Options") == 0)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
170 break;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
171
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
172 /* load each of the options */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
173 if (options_node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
174 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
175 for (option_node = options_node->xmlChildrenNode; option_node; option_node = option_node->next)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
176 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
177 option = pn_actuator_get_option_by_name (actuator, option_node->name);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
178 if (option)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
179 pn_user_object_load_thyself (PN_USER_OBJECT (option), option_node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
180 else
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
181 pn_error ("unknown actuator option ecountered in actuator \"%s\": %s",
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
182 node->name,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
183 option_node->name);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
184 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
185 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
186
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
187 if (parent_class->load_thyself)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
188 parent_class->load_thyself (user_object, node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
189 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
190
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
191 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
192 * pn_actuator_add_option
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
193 * @actuator: a #PnActuator
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
194 * @option: the #PnOption to add
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
195 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
196 * Adds a #PnOption to the actuator.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
197 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
198 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
199 pn_actuator_add_option (PnActuator *actuator, PnOption *option)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
200 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
201 g_return_if_fail (actuator != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
202 g_return_if_fail (PN_IS_ACTUATOR (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
203 g_return_if_fail (option != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
204 g_return_if_fail (PN_IS_OPTION (option));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
205 g_return_if_fail (! pn_actuator_get_option_by_name (actuator, PN_USER_OBJECT_NAME (option)));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
206
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
207 g_array_append_val (actuator->options, option);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
208 pn_object_ref (PN_OBJECT (option));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
209 pn_object_sink (PN_OBJECT (option));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
210 pn_user_object_set_owner (PN_USER_OBJECT (option), PN_USER_OBJECT (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
211 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
212
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
213 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
214 * pn_actuator_get_option_by_index
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
215 * @actuator: a #PnActuator
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
216 * @index: the index of the option to retrieve
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
217 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
218 * Retrieves a #PnOption associated with the actuator based on
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
219 * the index of the option. Indices start at 0 and are determined
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
220 * by the order in which the options were added.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
221 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
222 * Returns: The #PnOption at index @index
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
223 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
224 PnOption*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
225 pn_actuator_get_option_by_index (PnActuator *actuator, guint index)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
226 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
227 g_return_val_if_fail (actuator != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
228 g_return_val_if_fail (PN_IS_ACTUATOR (actuator), NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
229 g_return_val_if_fail (index < actuator->options->len, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
230
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
231 return g_array_index (actuator->options, PnOption *, index);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
232 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
233
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
234 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
235 * pn_actuator_get_option_by_name
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
236 * @actuator: a #PnActuator
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
237 * @name: the name of the option to retrieve
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
238 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
239 * Retrieves the first #PnOption associated with the actuator
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
240 * based on the name of the option.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
241 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
242 * Returns: The first #PnOption with the name @name
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
243 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
244 PnOption*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
245 pn_actuator_get_option_by_name (PnActuator *actuator, const gchar *name)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
246 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
247 gint i;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
248 PnOption *option;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
249
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
250 g_return_val_if_fail (actuator != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
251 g_return_val_if_fail (PN_IS_ACTUATOR (actuator), NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
252 g_return_val_if_fail (name != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
253
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
254 for (i=0; i < actuator->options->len; i++)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
255 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
256 option = g_array_index (actuator->options, PnOption *, i);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
257 if (g_strcasecmp (pn_user_object_get_name (PN_USER_OBJECT (option)), name) == 0)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
258 return option;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
259 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
260
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
261 return NULL;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
262 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
263
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
264 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
265 * pn_actuator_prepare
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
266 * @actuator: a #PnActuator
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
267 * @image: the #PnImage for which the actuator should prepare
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
268 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
269 * Prepares an actuator to act upon a given #PnImage.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
270 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
271 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
272 pn_actuator_prepare (PnActuator *actuator, PnImage *image)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
273 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
274 PnActuatorClass *class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
275
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
276 g_return_if_fail (actuator != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
277 g_return_if_fail (PN_IS_ACTUATOR (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
278 g_return_if_fail (image != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
279 g_return_if_fail (PN_IS_IMAGE (image));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
280
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
281 class = PN_ACTUATOR_GET_CLASS (actuator);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
282
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
283 if (class->prepare)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
284 class->prepare (actuator, image);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
285 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
286
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
287 /**
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
288 * pn_actuator_execute
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
289 * @actuator: a #PnActuator
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
290 * @image: the #PnImage to act upon
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
291 * @audio_data: the #PnAudioData to use when basing effects on sound
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
292 *
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
293 * Causes the actuator to perform its function on @image. The pn_actuator_prepare()
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
294 * *MUST* have previously been called with the same @actuator and @image arguments.
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
295 */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
296 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
297 pn_actuator_execute (PnActuator *actuator, PnImage *image, PnAudioData *audio_data)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
298 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
299 PnActuatorClass *class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
300
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
301 g_return_if_fail (actuator != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
302 g_return_if_fail (PN_IS_ACTUATOR (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
303 g_return_if_fail (image != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
304 g_return_if_fail (PN_IS_IMAGE (image));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
305 g_return_if_fail (audio_data != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
306 /* g_return_if_fail (PN_IS_AUDIO_DATA (audio_data)); */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
307
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
308 class = PN_ACTUATOR_GET_CLASS (actuator);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
309
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
310 if (class->execute)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
311 class->execute (actuator, image, audio_data);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
312 }