annotate Plugins/Visualization/paranormal/pn/pnvis.c @ 1591:02841f72b897 trunk

[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.
author chainsaw
date Thu, 24 Aug 2006 11:40:00 -0700
parents 4319ae8c8f69
children 752949e9aec4
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;
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
158 xmlNodePtr actuators_node, actuator_node, tptr;
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
159 PnActuator *root_actuator = NULL;
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
160
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
161 g_return_if_fail (user_object != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
162 g_return_if_fail (PN_IS_VIS (user_object));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
163 g_return_if_fail (node != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
164
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
165 vis = (PnVis *) user_object;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
166
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
167 /* find the 'Actuators' node */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
168 for (actuators_node = node->xmlChildrenNode; actuators_node; actuators_node = actuators_node->next)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
169 if (g_strcasecmp (actuators_node->name, "Actuators") == 0)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
170 break;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
171 if (! actuators_node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
172 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
173 pn_error ("unable to load a PnVis from xml node \"%s\"", node->name);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
174 return;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
175 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
176
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
177 /* get the root actuator's node */
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
178 for (actuator_node = actuators_node->xmlChildrenNode; actuator_node != NULL && !g_strcasecmp(actuator_node->name, "text");
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
179 actuator_node = actuator_node->next);
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
180 if (! actuator_node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
181 goto done;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
182
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
183 /* Create a new actuator (reworked by nenolod) */
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
184 #if 0
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
185 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
186 {
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
187 xmlNodePtr ttptr;
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
188
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
189 for (ttptr = tptr; ttptr != NULL; ttptr = ttptr->xmlChildrenNode)
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
190 }
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
191 #endif
1527
e05ee730df6b [svn] - possible tweak to make loading work?
nenolod
parents: 1526
diff changeset
192
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
193 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
194 if (!root_actuator)
1531
4319ae8c8f69 [svn] - ok, with this commit, loading now works =)
nenolod
parents: 1527
diff changeset
195 pn_error ("Unknown actuator \"%s\" -> '%s'", actuator_node->name, actuator_node->content);
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
196
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
197 pn_vis_set_root_actuator (vis, root_actuator);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
198
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
199 done:
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
200 if (parent_class->load_thyself)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
201 parent_class->load_thyself (user_object, node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
202 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
203
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
204 PnVis*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
205 pn_vis_new (guint image_width, guint image_height)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
206 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
207 PnVis *vis;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
208
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
209 g_return_val_if_fail (image_width > 0, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
210 g_return_val_if_fail (image_height > 0, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
211
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
212 vis = (PnVis *) g_object_new (PN_TYPE_VIS, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
213 pn_vis_set_image_size (vis, image_width, image_height);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
214
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
215 return vis;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
216 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
217
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
218 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
219 pn_vis_set_root_actuator (PnVis *vis, PnActuator *actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
220 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
221 g_return_if_fail (vis != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
222 g_return_if_fail (PN_IS_VIS (vis));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
223 g_return_if_fail (actuator != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
224 g_return_if_fail (PN_IS_ACTUATOR (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
225
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
226 if (vis->root_actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
227 pn_object_unref (PN_OBJECT (vis->root_actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
228
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
229 vis->root_actuator = actuator;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
230
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
231 pn_object_ref (PN_OBJECT (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
232 pn_object_sink (PN_OBJECT (actuator));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
233 pn_user_object_set_owner (PN_USER_OBJECT (actuator), PN_USER_OBJECT (vis));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
234
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
235 pn_actuator_prepare (actuator, vis->root_image);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
236 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
237
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
238 PnActuator*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
239 pn_vis_get_root_actuator (PnVis *vis)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
240 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
241 g_return_val_if_fail (vis != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
242 g_return_val_if_fail (PN_IS_VIS (vis), NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
243
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
244 return vis->root_actuator;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
245 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
246
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
247 void
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
248 pn_vis_set_image_size (PnVis *vis, guint width, guint height)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
249 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
250 g_return_if_fail (vis != NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
251 g_return_if_fail (PN_IS_VIS (vis));
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
252
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
253 pn_image_set_size (vis->root_image, width, height);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
254
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
255 if (vis->root_actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
256 pn_actuator_prepare (vis->root_actuator, vis->root_image);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
257 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
258
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
259 gboolean
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
260 pn_vis_save_to_file (PnVis *vis, const gchar *fname)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
261 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
262 xmlDocPtr doc;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
263
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
264 doc = xmlNewDoc ((xmlChar *) "1.0");
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
265
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
266 doc->xmlRootNode = xmlNewDocNode (doc, NULL, (xmlChar *) "BUG", NULL);
1507
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
267
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
268 pn_user_object_save_thyself (PN_USER_OBJECT (vis), doc->xmlRootNode);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
269
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
270 if ( xmlSaveFile (fname, doc) == -1)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
271 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
272 xmlFreeDoc (doc);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
273 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
274 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
275
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
276 xmlFreeDoc (doc);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
277 return TRUE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
278 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
279
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
280 gboolean
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
281 pn_vis_load_from_file (PnVis *vis, const gchar *fname)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
282 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
283 xmlDocPtr doc;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
284 xmlNodePtr root_node;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
285 xmlNsPtr ns;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
286
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
287 doc = xmlParseFile (fname);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
288 if (! doc)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
289 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
290 pn_error ("unable to parse file \"%s\"", fname);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
291 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
292 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
293
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
294 root_node = xmlDocGetRootElement (doc);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
295 if (! root_node)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
296 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
297 pn_error ("no root element for file \"%s\"", fname);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
298 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
299 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
300
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
301 ns = xmlSearchNsByHref (doc, root_node, PN_XML_NS_HREF);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
302 if (! ns)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
303 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
304 pn_error ("invalid file format: paranormal namespace not found");
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
305 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
306 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
307
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
308 if (g_strcasecmp (root_node->name, pn_user_object_get_name (PN_USER_OBJECT (vis))))
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
309 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
310 pn_error ("invalid file format: this file does not contain a Paranormal visualization");
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
311 return FALSE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
312 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
313
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
314 pn_user_object_load_thyself (PN_USER_OBJECT (vis), root_node);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
315
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
316 return TRUE;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
317 }
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
318
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
319 PnImage*
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
320 pn_vis_render (PnVis *vis, PnAudioData *audio_data)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
321 {
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
322 g_return_val_if_fail (vis != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
323 g_return_val_if_fail (PN_IS_VIS (vis), NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
324 g_return_val_if_fail (audio_data != NULL, NULL);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
325 /* g_return_val_if_fail (PN_IS_AUDIO_DATA (audio_data), NULL); */
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
326
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
327 if (vis->root_actuator)
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
328 pn_actuator_execute (vis->root_actuator,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
329 vis->root_image,
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
330 audio_data);
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
331
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
332 return vis->root_image;
0c5fdcf3f947 [svn] - incomplete stuff
nenolod
parents:
diff changeset
333 }