It's 2020...
[terminatorX.git] / src / tX_flash.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_flash.h
19  
20     Description: Header to tX_flash.c
21 */    
22
23
24 #ifndef __GTK_TX_FLASH_H__
25 #define __GTK_TX_FLASH_H__
26 #include <gdk/gdk.h>
27 #include <gtk/gtk.h>
28
29 #include "tX_types.h"
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif /* __cplusplus */
34
35
36 #define GTK_TX_FLASH(obj) G_TYPE_CHECK_INSTANCE_CAST (obj, gtk_tx_flash_get_type(), GtkTxFlash)
37 #define GTK_TX_FLASH_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_tx_flash_get_type(), GtkTxFlashClass)
38 #define GTK_IS_TX_FLASH(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj, gtk_tx_flash_get_type())
39
40 typedef struct _GtkTxFlash GtkTxFlash;
41 typedef struct _GtkTxFlashClass GtkTxFlashClass;
42
43 struct flash_channel {
44         int last_level;
45         int max;
46         int x1;
47         int x2;
48 };
49
50 struct _GtkTxFlash {
51         GtkWidget widget;
52         GdkRGBA colors[5];      
53         int levels;
54         int red_level;
55         f_prec level_value;
56         int max_cycles;
57         int center_expand;
58         struct flash_channel channel[2];
59         cairo_surface_t* surface;
60 };
61
62 struct _GtkTxFlashClass {
63         GtkWidgetClass parent_class;
64 };
65
66 GtkWidget* gtk_tx_flash_new();
67 GType gtk_tx_flash_get_type (void);
68 void gtk_tx_flash_set_level (GtkWidget *widget, f_prec left_channel, f_prec right_channel);
69 void gtk_tx_flash_clear (GtkWidget *widget);
70 void gtk_tx_flash_update_colors(GtkTxFlash *tx);
71
72 #ifdef __cplusplus
73 }
74 #endif /* __cplusplus */
75 #endif