BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html 00002 #ifndef __BST_WAVE_EDITOR_H__ 00003 #define __BST_WAVE_EDITOR_H__ 00004 00005 #include "bstqsampler.hh" 00006 #include "bstplayback.hh" 00007 00008 #ifdef __cplusplus 00009 extern "C" { 00010 #endif /* __cplusplus */ 00011 00012 00013 /* --- Gtk+ type macros --- */ 00014 #define BST_TYPE_WAVE_EDITOR (bst_wave_editor_get_type ()) 00015 #define BST_WAVE_EDITOR(object) (GTK_CHECK_CAST ((object), BST_TYPE_WAVE_EDITOR, BstWaveEditor)) 00016 #define BST_WAVE_EDITOR_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), BST_TYPE_WAVE_EDITOR, BstWaveEditorClass)) 00017 #define BST_IS_WAVE_EDITOR(object) (GTK_CHECK_TYPE ((object), BST_TYPE_WAVE_EDITOR)) 00018 #define BST_IS_WAVE_EDITOR_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), BST_TYPE_WAVE_EDITOR)) 00019 #define BST_WAVE_EDITOR_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), BST_TYPE_WAVE_EDITOR, BstWaveEditorClass)) 00020 00021 00022 /* --- structures & typedefs --- */ 00023 typedef struct _BstWaveEditor BstWaveEditor; 00024 typedef struct _BstWaveEditorClass BstWaveEditorClass; 00025 struct _BstWaveEditor 00026 { 00027 GtkVBox parent_object; 00028 GtkWidget *main_vbox; 00029 00030 GxkListWrapper *chunk_wrapper; 00031 GtkWidget *tree; 00032 GtkWidget *qsampler_parent; 00033 GtkWidget *gmask_parent; 00034 GtkAdjustment *zoom_adjustment; 00035 GtkAdjustment *vscale_adjustment; 00036 guint draw_mode; 00037 00038 /* preview (playback) */ 00039 BstPlayBackHandle *phandle; 00040 guint playback_length; 00041 guint auto_scroll_mode; 00042 GtkWidget *preview_on; 00043 GtkWidget *preview_off; 00044 guint playback_marker; 00045 SfiNum tick_stamp; 00046 guint pcm_pos; 00047 gdouble pcm_per_tick; 00048 00049 SfiProxy wave; 00050 00051 /* editable sample view */ 00052 SfiProxy esample; 00053 guint esample_open : 1; 00054 guint ignore_playpos : 1; 00055 GtkWidget *qsampler_hscroll; 00056 GtkWidget *qsampler_playpos; 00057 guint n_qsamplers; 00058 BstQSampler **qsamplers; 00059 }; 00060 struct _BstWaveEditorClass 00061 { 00062 GtkVBoxClass parent_class; 00063 }; 00064 00065 00066 /* --- prototypes --- */ 00067 GtkType bst_wave_editor_get_type (void); 00068 GtkWidget* bst_wave_editor_new (SfiProxy wave); 00069 void bst_wave_editor_set_wave (BstWaveEditor *self, 00070 SfiProxy wave); 00071 void bst_wave_editor_rebuild (BstWaveEditor *wave_editor); 00072 void bst_wave_editor_set_esample (BstWaveEditor *self, 00073 SfiProxy editable_sample); 00074 00075 00076 #ifdef __cplusplus 00077 } 00078 #endif /* __cplusplus */ 00079 00080 #endif /* __BST_WAVE_EDITOR_H__ */