It's 2020...
[terminatorX.git] / src / tX_event.cc
1 /*
2     terminatorX - realtime audio scratching software
3     Copyright (C) 1999-2020  Alexander K├Ânig
4  
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9  
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14  
15     You should have received a copy of the GNU General Public License
16     along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  
18     File: tX_event.cc
19  
20     Description: This implements the sequencer events.
21 */ 
22
23 #include <tX_event.h>
24 #include <tX_global.h>
25
26 void tX_event :: store (FILE *rc, gzFile rz, char *indent) {
27         tX_store("%s<event pid=\"%i\" value=\"%lf\" time=\"%i\"/>\n", indent, sp->get_persistence_id(), value, timestamp);
28 }
29
30 tX_event* tX_event :: load_event (xmlDocPtr doc, xmlNodePtr node) {
31         unsigned int sp_persistence_id;
32         char *buffer;
33         float value;
34         guint32 timestamp;
35         tX_event *event=NULL;
36         tX_seqpar *sp=NULL;
37         
38         buffer=(char *) xmlGetProp(node, (xmlChar *) "pid");
39         if (buffer) sscanf(buffer, "%i", &sp_persistence_id);
40         
41         buffer=(char *) xmlGetProp(node, (xmlChar *) "value");
42         if (buffer) sscanf(buffer, "%f", &value);
43         
44         buffer=(char *) xmlGetProp(node, (xmlChar *) "time");
45         if (buffer) sscanf(buffer, "%i", &timestamp);
46
47         sp=tX_seqpar::get_sp_by_persistence_id(sp_persistence_id);
48         
49         if (sp) {
50                 event=new tX_event(timestamp, sp, value);
51         } else {
52                 tX_error("failed to resolve event at %i - pid [%i]. Event lost.", timestamp, sp_persistence_id);
53         }
54         
55         return event;
56 }