10#ifndef __GUI_BACKEND_MIXER_SELECTIONS_H__
11#define __GUI_BACKEND_MIXER_SELECTIONS_H__
27#define MIXER_SELECTIONS_SCHEMA_VERSION 1
29#define MIXER_SELECTIONS (PROJECT->mixer_selections)
31#define MIXER_SELECTIONS_MAX_SLOTS 60
44 int slots[MIXER_SELECTIONS_MAX_SLOTS];
58static const cyaml_schema_field_t mixer_selections_fields_schema[] = {
63 plugin_slot_type_strings),
68 CYAML_FIELD_SEQUENCE_COUNT (
83static const cyaml_schema_value_t mixer_selections_schema = {
86 mixer_selections_fields_schema),
90mixer_selections_init_loaded (
95mixer_selections_new (
void);
109 bool src_is_project);
179mixer_selections_contains_uninstantiated_plugin (
200 const bool fire_events);
213 bool publish_events);
249 const int pub_events);
API for Channel, representing a channel strip on the mixer.
A region in the timeline.
Track * mixer_selections_get_track(const MixerSelections *const self)
Get current Track.
NONNULL Plugin * mixer_selections_get_first_plugin(MixerSelections *self)
Returns the first selected plugin if any is selected, otherwise NULL.
int mixer_selections_get_lowest_slot(MixerSelections *ms)
Gets lowest slot in the selections.
NONNULL void mixer_selections_remove_slot(MixerSelections *ms, int slot, PluginSlotType type, bool publish_events)
Removes a slot from the selections.
NONNULL void mixer_selections_paste_to_slot(MixerSelections *ms, Channel *ch, PluginSlotType type, int slot)
Paste the selections starting at the slot in the given channel.
bool mixer_selections_contains_slot(MixerSelections *ms, PluginSlotType type, int slot)
Returns if the slot is selected or not.
MixerSelections * mixer_selections_clone(MixerSelections *src, bool src_is_project)
Clone the struct for copying, undoing, etc.
NONNULL void mixer_selections_sort(MixerSelections *self, bool asc)
Sorts the selections by slot index.
int mixer_selections_has_any(MixerSelections *ms)
Returns if there are any selections.
bool mixer_selections_contains_plugin(MixerSelections *ms, Plugin *pl)
Returns if the plugin is selected or not.
NONNULL bool mixer_selections_can_be_pasted(MixerSelections *self, Channel *ch, PluginSlotType type, int slot)
Returns whether the selections can be pasted to MixerWidget.paste_slot.
void mixer_selections_add_slot(MixerSelections *ms, Track *track, PluginSlotType type, int slot, bool clone_pl, const bool fire_events)
Adds a slot to the selections.
NONNULL void mixer_selections_clear(MixerSelections *ms, const int pub_events)
Clears selections.
int mixer_selections_get_plugins(const MixerSelections *const self, GPtrArray *arr, bool from_cache)
Fills in the array with the plugins in the selections.
int mixer_selections_get_highest_slot(MixerSelections *ms)
Gets highest slot in the selections.
#define YAML_VALUE_PTR(cc, fields_schema)
Schema to be used as a pointer.
#define YAML_FIELD_FIXED_SIZE_PTR_ARRAY_VAR_COUNT(owner, member, schema)
Fixed-width array of pointers with variable count.
API for Region's specific to instrument Track's.
A Channel is part of a Track (excluding Tracks that don't have Channels) and contains information rel...
Selections to be used for the timeline's current selections, copying, undoing, etc.
int slots[MIXER_SELECTIONS_MAX_SLOTS]
Slots selected.
Plugin * plugins[MIXER_SELECTIONS_MAX_SLOTS]
Cache, used in actions.
int has_any
Whether any slot is selected.
unsigned int track_name_hash
Channel selected.
The base plugin Inheriting plugins must have this as a child.
Track to be inserted into the Project's Tracklist.