BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
bseproject.hh
Go to the documentation of this file.
00001  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
00002 #ifndef __BSE_PROJECT_H__
00003 #define __BSE_PROJECT_H__
00004 
00005 #include        <bse/bsecontainer.hh>
00006 
00007 G_BEGIN_DECLS
00008 
00009 
00010 /* --- object type macros --- */
00011 #define BSE_TYPE_PROJECT              (BSE_TYPE_ID (BseProject))
00012 #define BSE_PROJECT(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_PROJECT, BseProject))
00013 #define BSE_PROJECT_CLASS(class)      (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_PROJECT, BseProjectClass))
00014 #define BSE_IS_PROJECT(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_PROJECT))
00015 #define BSE_IS_PROJECT_CLASS(class)   (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_PROJECT))
00016 #define BSE_PROJECT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_PROJECT, BseProjectClass))
00017 
00018 
00019 /* --- BseProject object --- */
00020 typedef enum {
00021   BSE_PROJECT_INACTIVE,
00022   BSE_PROJECT_ACTIVE,
00023   BSE_PROJECT_PLAYING
00024 } BseProjectState;
00025 
00026 struct BseProject : BseContainer {
00027   GSList             *supers;
00028   GSList             *items;
00029   guint               in_undo : 1;
00030   guint               in_redo : 1;
00031   BseUndoStack       *undo_stack;
00032   BseUndoStack       *redo_stack;
00033   BseProjectState     state;
00034   guint               deactivate_timer;
00035   gint64              deactivate_usecs;
00036   guint64             deactivate_min_tick;
00037   BseMidiReceiver    *midi_receiver;
00038 };
00039 struct BseProjectClass : BseContainerClass
00040 {};
00041 
00042 BseErrorType    bse_project_activate            (BseProject     *project);
00043 void            bse_project_start_playback      (BseProject     *project);
00044 void            bse_project_stop_playback       (BseProject     *project);
00045 void            bse_project_check_auto_stop     (BseProject     *project);
00046 void            bse_project_deactivate          (BseProject     *project);
00047 void            bse_project_set_auto_deactivate (BseProject     *project,
00048                                                  gint64          usecs);
00049 void            bse_project_keep_activated      (BseProject     *project,
00050                                                  guint64         min_tick);
00051 void            bse_project_state_changed       (BseProject     *project,
00052                                                  BseProjectState state);
00053 BseStringSeq*   bse_project_list_upaths         (BseProject     *project,
00054                                                  GType           item_type);
00055 BseErrorType    bse_project_restore             (BseProject     *project,
00056                                                  BseStorage     *storage);
00057 BseErrorType    bse_project_store_bse           (BseProject     *project,
00058                                                  BseSuper       *super,
00059                                                  const gchar    *bse_file,
00060                                                  gboolean        self_contained);
00061 BseObject*      bse_project_upath_resolver      (gpointer        project /* func_data */,
00062                                                  GType           required_type,
00063                                                  const gchar    *upath,
00064                                                  gchar         **error_p);
00065 BseItem*        bse_project_lookup_typed_item   (BseProject     *project,
00066                                                  GType           item_type,
00067                                                  const gchar    *uname);
00068 BseWaveRepo*    bse_project_get_wave_repo       (BseProject     *project);
00069 BseSong*        bse_project_get_song            (BseProject     *project);
00070 BseSNet*        bse_project_create_intern_synth (BseProject     *project,
00071                                                  const gchar    *synth_name,
00072                                                  GType           check_type);
00073 BseCSynth*      bse_project_create_intern_csynth(BseProject     *project,
00074                                                  const char     *base_name);
00075 BseMidiNotifier*bse_project_get_midi_notifier   (BseProject     *project);
00076 void            bse_project_clear_undo          (BseProject     *project);
00077 void            bse_project_clean_dirty         (BseProject     *project);
00078 void    bse_project_push_undo_silent_deactivate (BseProject     *self);
00079 
00080 
00081 G_END_DECLS
00082 
00083 #endif /* __BSE_PROJECT_H__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines