It's 2020...
[terminatorX.git] / src / tX_event.h
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.h
19  
20     Description: Header to tX_event.cc
21 */ 
22
23 #ifndef _h_tx_event_
24 #define _h_tx_event_ 1
25
26 #include "tX_seqpar.h"
27 #include "tX_vtt.h"
28 #include <stdio.h>
29 #include <glib.h>
30 #include "tX_types.h"
31
32 #include <libxml/xmlmemory.h>
33 #include <libxml/parser.h>
34
35 class tX_event
36 {
37         private:
38         guint32                 timestamp;
39         tX_seqpar               *sp;
40         float                   value;
41         
42         public:
43         tX_event(guint32 time, tX_seqpar *sp_in, float val) : 
44                 timestamp(time),sp(sp_in),value(val) {}
45
46 #ifdef ENABLE_TX_LEGACY         
47         tX_event(FILE *input);
48 #endif          
49         static tX_event* load_event(xmlDocPtr, xmlNodePtr);
50         
51         void store(FILE *rc, gzFile rz, char *indent);
52
53         tX_seqpar *get_sp() { return sp; }
54         guint32 get_timestamp() { return timestamp; }
55         float get_value() { return value; }
56         void set_value(float val) { value=val; }
57
58         const char *get_vtt_name() { return sp->get_vtt_name(); }
59         const char *get_seqpar_name() { return sp->get_name(); }
60
61         void playback() {
62                 if (sp->is_untouched()) sp->exec_value(value);
63         }
64 };
65
66 #endif