annotate Plugins/Visualization/paranormal/pn/pnvis.c @ 1717:837983bac90f trunk

[svn] Fixed a lot of warnings that only showed up on *BSD.
author js
date Sat, 16 Sep 2006 16:26:54 -0700
parents 752949e9aec4
children
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 "pnvis.h"
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
23 #include "pnactuatorfactory.h"
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
24 #include "pnerror.h"
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
25
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
26 static void pn_vis_class_init (PnVisClass *class);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
27 static void pn_vis_init (PnVis *vis,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
28 PnVisClass *class);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
29
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
30 /* GObject signals */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
31 static void pn_vis_finalize (GObject *gobject);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
32
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
33 /* PnObject signals */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
34 static void pn_vis_destroy (PnObject *object);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
35
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
36 /* PnUserObject methods */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
37 static void pn_vis_save_thyself (PnUserObject *user_object,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
38 xmlNodePtr node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
39 static void pn_vis_load_thyself (PnUserObject *user_object,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
40 xmlNodePtr node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
41
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
42 static PnUserObjectClass *parent_class = NULL;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
43
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
44 GType
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
45 pn_vis_get_type (void)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
46 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
47 static GType vis_type = 0;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
48
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
49 if (! vis_type)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
50 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
51 static const GTypeInfo vis_info =
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
52 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
53 sizeof (PnVisClass),
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
54 NULL, /* base_init */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
55 NULL, /* base_finalize */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
56 (GClassInitFunc) pn_vis_class_init,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
57 NULL, /* class_finalize */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
58 NULL, /* class_data */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
59 sizeof (PnVis),
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
60 0, /* n_preallocs */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
61 (GInstanceInitFunc) pn_vis_init
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
62 };
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
63
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
64 /* FIXME: should this be dynamic? */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
65 vis_type = g_type_register_static (PN_TYPE_USER_OBJECT,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
66 "PnVis",
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
67 &vis_info,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
68 0);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
69 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
70 return vis_type;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
71 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
72
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
73 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
74 pn_vis_class_init (PnVisClass *class)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
75 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
76 GObjectClass *gobject_class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
77 PnObjectClass *object_class;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
78 PnUserObjectClass *user_object_class;
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_vis_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_vis_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_vis_save_thyself;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
94 user_object_class->load_thyself = pn_vis_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_vis_init (PnVis *vis, PnVisClass *class)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
99 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
100 /* Set a name for xml stuffs */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
101 pn_user_object_set_name (PN_USER_OBJECT (vis), "Paranormal_Visualization");
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
102
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
103 /* Create a new image context */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
104 vis->root_image = pn_image_new ();
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
105 pn_object_ref (PN_OBJECT (vis->root_image));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
106 pn_object_sink (PN_OBJECT (vis->root_image));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
107 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
108
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
109 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
110 pn_vis_destroy (PnObject *object)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
111 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
112 PnVis *vis = (PnVis *) object;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
113
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
114 if (vis->root_actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
115 pn_object_unref (PN_OBJECT (vis->root_actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
116
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
117 if (vis->root_image)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
118 pn_object_unref (PN_OBJECT (vis->root_image));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
119 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
120
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
121 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
122 pn_vis_finalize (GObject *gobject)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
123 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
124 PnVis *vis;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
125
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
126 vis = (PnVis *) gobject;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
127 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
128
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
129 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
130 pn_vis_save_thyself (PnUserObject *user_object, xmlNodePtr node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
131 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
132 PnVis *vis;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
133 xmlNsPtr ns;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
134 xmlNodePtr actuators_node, actuator_node;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
135
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
136 g_return_if_fail (user_object != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
137 g_return_if_fail (PN_IS_VIS (user_object));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
138 g_return_if_fail (node != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
139
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
140 vis = (PnVis *) user_object;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
141
1591
02841f72b897 [svn] Cast variable to proper type before passing it into libxml2. Include necessary header to make this possible. Resolves 35 pointer signedness warnings on PPC.
chainsaw
parents: 1531
diff changeset
142 ns = xmlNewNs (node, PN_XML_NS_HREF, (xmlChar *) "pn");
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
143 xmlSetNs (node, ns);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
144
1591
02841f72b897 [svn] Cast variable to proper type before passing it into libxml2. Include necessary header to make this possible. Resolves 35 pointer signedness warnings on PPC.
chainsaw
parents: 1531
diff changeset
145 actuators_node = xmlNewChild (node, NULL, (xmlChar *) "Actuators", NULL);
02841f72b897 [svn] Cast variable to proper type before passing it into libxml2. Include necessary header to make this possible. Resolves 35 pointer signedness warnings on PPC.
chainsaw
parents: 1531
diff changeset
146 actuator_node = xmlNewChild (actuators_node, NULL, (xmlChar *) user_object->name, NULL);
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
147 if (vis->root_actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
148 pn_user_object_save_thyself (PN_USER_OBJECT (vis->root_actuator), actuator_node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
149
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
150 if (parent_class->save_thyself)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
151 parent_class->save_thyself (user_object, node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
152 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
153
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
154 static void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
155 pn_vis_load_thyself (PnUserObject *user_object, const xmlNodePtr node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
156 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
157 PnVis *vis;
1592
752949e9aec4 [svn] Actually cast variables to glib types before feeding them into glib compare functions. Resolves another 16 signedness warnings on PPC.
chainsaw
parents: 1591
diff changeset
158 xmlNodePtr actuators_node, actuator_node;
752949e9aec4 [svn] Actually cast variables to glib types before feeding them into glib compare functions. Resolves another 16 signedness warnings on PPC.
chainsaw
parents: 1591
diff changeset
159 #if 0
752949e9aec4 [svn] Actually cast variables to glib types before feeding them into glib compare functions. Resolves another 16 signedness warnings on PPC.
chainsaw
parents: 1591
diff changeset
160 , tptr;
752949e9aec4 [svn] Actually cast variables to glib types before feeding them into glib compare functions. Resolves another 16 signedness warnings on PPC.
chainsaw
parents: 1591
diff changeset
161 #endif
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
162 PnActuator *root_actuator = NULL;
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
163
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
164 g_return_if_fail (user_object != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
165 g_return_if_fail (PN_IS_VIS (user_object));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
166 g_return_if_fail (node != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
167
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
168 vis = (PnVis *) user_object;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
169
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
170 /* find the 'Actuators' node */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
171 for (actuators_node = node->xmlChildrenNode; actuators_node; actuators_node = actuators_node->next)
1592
752949e9aec4 [svn] Actually cast variables to glib types before feeding them into glib compare functions. Resolves another 16 signedness warnings on PPC.
chainsaw
parents: 1591
diff changeset
172 if (g_strcasecmp ((gchar *) actuators_node->name, "Actuators") == 0)
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
173 break;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
174 if (! actuators_node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
175 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
176 pn_error ("unable to load a PnVis from xml node \"%s\"", node->name);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
177 return;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
178 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
179
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
180 /* get the root actuator's node */
1592
752949e9aec4 [svn] Actually cast variables to glib types before feeding them into glib compare functions. Resolves another 16 signedness warnings on PPC.
chainsaw
parents: 1591
diff changeset
181 for (actuator_node = actuators_node->xmlChildrenNode; actuator_node != NULL && !g_strcasecmp((gchar *) actuator_node->name, "text");
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
182 actuator_node = actuator_node->next);
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
183 if (! actuator_node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
184 goto done;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
185
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
186 /* Create a new actuator (reworked by nenolod) */
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
187 #if 0
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
188 for (tptr = actuator_node; tptr != NULL && root_actuator == NULL; tptr = tptr->next)
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
189 {
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
190 xmlNodePtr ttptr;
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
191
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
192 for (ttptr = tptr; ttptr != NULL; ttptr = ttptr->xmlChildrenNode)
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
193 }
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
194 #endif
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
195
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
196 root_actuator = pn_actuator_factory_new_actuator_from_xml (actuator_node);
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
197 if (!root_actuator)
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
198 pn_error ("Unknown actuator \"%s\" -> '%s'", actuator_node->name, actuator_node->content);
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
199
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
200 pn_vis_set_root_actuator (vis, root_actuator);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
201
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
202 done:
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
203 if (parent_class->load_thyself)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
204 parent_class->load_thyself (user_object, node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
205 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
206
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
207 PnVis*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
208 pn_vis_new (guint image_width, guint image_height)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
209 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
210 PnVis *vis;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
211
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
212 g_return_val_if_fail (image_width > 0, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
213 g_return_val_if_fail (image_height > 0, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
214
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
215 vis = (PnVis *) g_object_new (PN_TYPE_VIS, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
216 pn_vis_set_image_size (vis, image_width, image_height);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
217
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
218 return vis;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
219 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
220
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
221 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
222 pn_vis_set_root_actuator (PnVis *vis, PnActuator *actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
223 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
224 g_return_if_fail (vis != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
225 g_return_if_fail (PN_IS_VIS (vis));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
226 g_return_if_fail (actuator != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
227 g_return_if_fail (PN_IS_ACTUATOR (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
228
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
229 if (vis->root_actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
230 pn_object_unref (PN_OBJECT (vis->root_actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
231
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
232 vis->root_actuator = actuator;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
233
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
234 pn_object_ref (PN_OBJECT (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
235 pn_object_sink (PN_OBJECT (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
236 pn_user_object_set_owner (PN_USER_OBJECT (actuator), PN_USER_OBJECT (vis));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
237
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
238 pn_actuator_prepare (actuator, vis->root_image);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
239 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
240
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
241 PnActuator*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
242 pn_vis_get_root_actuator (PnVis *vis)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
243 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
244 g_return_val_if_fail (vis != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
245 g_return_val_if_fail (PN_IS_VIS (vis), NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
246
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
247 return vis->root_actuator;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
248 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
249
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
250 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
251 pn_vis_set_image_size (PnVis *vis, guint width, guint height)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
252 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
253 g_return_if_fail (vis != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
254 g_return_if_fail (PN_IS_VIS (vis));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
255
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
256 pn_image_set_size (vis->root_image, width, height);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
257
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
258 if (vis->root_actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
259 pn_actuator_prepare (vis->root_actuator, vis->root_image);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
260 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
261
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
262 gboolean
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
263 pn_vis_save_to_file (PnVis *vis, const gchar *fname)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
264 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
265 xmlDocPtr doc;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
266
1591
02841f72b897 [svn] Cast variable to proper type before passing it into libxml2. Include necessary header to make this possible. Resolves 35 pointer signedness warnings on PPC.
chainsaw
parents: 1531
diff changeset
267 doc = xmlNewDoc ((xmlChar *) "1.0");
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
268
1591
02841f72b897 [svn] Cast variable to proper type before passing it into libxml2. Include necessary header to make this possible. Resolves 35 pointer signedness warnings on PPC.
chainsaw
parents: 1531
diff changeset
269 doc->xmlRootNode = xmlNewDocNode (doc, NULL, (xmlChar *) "BUG", NULL);
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
270
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
271 pn_user_object_save_thyself (PN_USER_OBJECT (vis), doc->xmlRootNode);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
272
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
273 if ( xmlSaveFile (fname, doc) == -1)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
274 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
275 xmlFreeDoc (doc);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
276 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
277 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
278
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
279 xmlFreeDoc (doc);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
280 return TRUE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
281 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
282
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
283 gboolean
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
284 pn_vis_load_from_file (PnVis *vis, const gchar *fname)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
285 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
286 xmlDocPtr doc;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
287 xmlNodePtr root_node;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
288 xmlNsPtr ns;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
289
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
290 doc = xmlParseFile (fname);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
291 if (! doc)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
292 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
293 pn_error ("unable to parse file \"%s\"", fname);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
294 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
295 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
296
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
297 root_node = xmlDocGetRootElement (doc);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
298 if (! root_node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
299 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
300 pn_error ("no root element for file \"%s\"", fname);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
301 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
302 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
303
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
304 ns = xmlSearchNsByHref (doc, root_node, PN_XML_NS_HREF);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
305 if (! ns)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
306 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
307 pn_error ("invalid file format: paranormal namespace not found");
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
308 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
309 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
310
1592
752949e9aec4 [svn] Actually cast variables to glib types before feeding them into glib compare functions. Resolves another 16 signedness warnings on PPC.
chainsaw
parents: 1591
diff changeset
311 if (g_strcasecmp ((gchar *) root_node->name, pn_user_object_get_name (PN_USER_OBJECT (vis))))
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
312 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
313 pn_error ("invalid file format: this file does not contain a Paranormal visualization");
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
314 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
315 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
316
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
317 pn_user_object_load_thyself (PN_USER_OBJECT (vis), root_node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
318
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
319 return TRUE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
320 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
321
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
322 PnImage*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
323 pn_vis_render (PnVis *vis, PnAudioData *audio_data)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
324 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
325 g_return_val_if_fail (vis != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
326 g_return_val_if_fail (PN_IS_VIS (vis), NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
327 g_return_val_if_fail (audio_data != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
328 /* g_return_val_if_fail (PN_IS_AUDIO_DATA (audio_data), NULL); */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
329
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
330 if (vis->root_actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
331 pn_actuator_execute (vis->root_actuator,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
332 vis->root_image,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
333 audio_data);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
334
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
335 return vis->root_image;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
336 }