diff options
author | Florian Jung <flo@windfisch.org> | 2013-09-18 23:54:35 +0200 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2013-09-18 23:54:35 +0200 |
commit | b3fc353a09496ee0aea7099d72e6963f4c2fc774 (patch) | |
tree | 83ab91e988c59076d81ebddc09e8ff274dee8af5 /muse2/muse/functions.h | |
parent | 48a93993cfce160fb7d4cf0b67b4b77e22db19e5 (diff) | |
parent | 85a51421d44f3893a1010f77e0418caf6be70235 (diff) |
Merge branch 'audiomsg_overhaul' (nonshared eventlists and more)
This introduces the following changes:
- Clone Parts no more share their eventlist. Instead, all changes
made to one clone are replicated to the other clones' eventlists
- audio/song->msg{Add,Delete,Change}{Part,Event,Track} have been
replaced by the corresponding UndoOp operations.
- Enforcing of const-correctness: No GUI code may ever gain
writable access to audio/midi/song data structures. Access
must *always* go through applyOperationGroup. This is now
enforced.
- Removed a bunch of DELETETHIS or REMOVE or otherwise commented
out code
- Removed dead code
- Removed unused Audio Messages (that should go through applyOpGroup
anyway.)
Diffstat (limited to 'muse2/muse/functions.h')
-rw-r--r-- | muse2/muse/functions.h | 77 |
1 files changed, 40 insertions, 37 deletions
diff --git a/muse2/muse/functions.h b/muse2/muse/functions.h index 31c91fe4..28e178da 100644 --- a/muse2/muse/functions.h +++ b/muse2/muse/functions.h @@ -39,36 +39,36 @@ class QMimeData; namespace MusECore { class Undo; -std::set<Part*> partlist_to_set(PartList* pl); -std::set<Part*> part_to_set(Part* p); -std::map<Event*, Part*> get_events(const std::set<Part*>& parts, int range); +std::set<const Part*> partlist_to_set(PartList* pl); +std::set<const Part*> part_to_set(const Part* p); +std::map<const Event*, const Part*> get_events(const std::set<const Part*>& parts, int range); //these functions simply do their job, non-interactively -bool modify_velocity(const std::set<Part*>& parts, int range, int rate, int offset=0); -bool modify_off_velocity(const std::set<Part*>& parts, int range, int rate, int offset=0); -bool modify_notelen(const std::set<Part*>& parts, int range, int rate, int offset=0); -bool quantize_notes(const std::set<Part*>& parts, int range, int raster, bool len=false, int strength=100, int swing=0, int threshold=0); -bool erase_notes(const std::set<Part*>& parts, int range, int velo_threshold=0, bool velo_thres_used=false, int len_threshold=0, bool len_thres_used=false); -bool delete_overlaps(const std::set<Part*>& parts, int range); -bool set_notelen(const std::set<Part*>& parts, int range, int len); -bool move_notes(const std::set<Part*>& parts, int range, signed int ticks); -bool transpose_notes(const std::set<Part*>& parts, int range, signed int halftonesteps); -bool crescendo(const std::set<Part*>& parts, int range, int start_val, int end_val, bool absolute); -bool legato(const std::set<Part*>& parts, int range, int min_len=1, bool dont_shorten=false); +bool modify_velocity(const std::set<const Part*>& parts, int range, int rate, int offset=0); +bool modify_off_velocity(const std::set<const Part*>& parts, int range, int rate, int offset=0); +bool modify_notelen(const std::set<const Part*>& parts, int range, int rate, int offset=0); +bool quantize_notes(const std::set<const Part*>& parts, int range, int raster, bool len=false, int strength=100, int swing=0, int threshold=0); +bool erase_notes(const std::set<const Part*>& parts, int range, int velo_threshold=0, bool velo_thres_used=false, int len_threshold=0, bool len_thres_used=false); +bool delete_overlaps(const std::set<const Part*>& parts, int range); +bool set_notelen(const std::set<const Part*>& parts, int range, int len); +bool move_notes(const std::set<const Part*>& parts, int range, signed int ticks); +bool transpose_notes(const std::set<const Part*>& parts, int range, signed int halftonesteps); +bool crescendo(const std::set<const Part*>& parts, int range, int start_val, int end_val, bool absolute); +bool legato(const std::set<const Part*>& parts, int range, int min_len=1, bool dont_shorten=false); //the below functions automatically open the dialog //they return true if you click "ok" and false if "abort" -bool modify_velocity(const std::set<Part*>& parts); -bool modify_notelen(const std::set<Part*>& parts); -bool quantize_notes(const std::set<Part*>& parts); -bool set_notelen(const std::set<Part*>& parts); -bool move_notes(const std::set<Part*>& parts); -bool transpose_notes(const std::set<Part*>& parts); -bool crescendo(const std::set<Part*>& parts); -bool erase_notes(const std::set<Part*>& parts); -bool delete_overlaps(const std::set<Part*>& parts); -bool legato(const std::set<Part*>& parts); +bool modify_velocity(const std::set<const Part*>& parts); +bool modify_notelen(const std::set<const Part*>& parts); +bool quantize_notes(const std::set<const Part*>& parts); +bool set_notelen(const std::set<const Part*>& parts); +bool move_notes(const std::set<const Part*>& parts); +bool transpose_notes(const std::set<const Part*>& parts); +bool crescendo(const std::set<const Part*>& parts); +bool erase_notes(const std::set<const Part*>& parts); +bool delete_overlaps(const std::set<const Part*>& parts); +bool legato(const std::set<const Part*>& parts); //the below functions operate on selected parts bool modify_velocity(); @@ -84,29 +84,32 @@ bool legato(); //functions for copy'n'paste -void copy_notes(const std::set<Part*>& parts, int range); -bool paste_notes(Part* paste_into_part=NULL); // shows a dialog -void paste_notes(int max_distance=3072, bool always_new_part=false, bool never_new_part=false, Part* paste_into_part=NULL, int amount=1, int raster=3072); -QMimeData* selected_events_to_mime(const std::set<Part*>& parts, int range); -QMimeData* parts_to_mime(const std::set<Part*>& parts); +void copy_notes(const std::set<const Part*>& parts, int range); +bool paste_notes(const Part* paste_into_part=NULL); // shows a dialog +void paste_notes(int max_distance=3072, bool always_new_part=false, bool never_new_part=false, const Part* paste_into_part=NULL, int amount=1, int raster=3072); +QMimeData* selected_events_to_mime(const std::set<const Part*>& parts, int range); +QMimeData* parts_to_mime(const std::set<const Part*>& parts); -void paste_at(const QString& pt, int pos, int max_distance=3072, bool always_new_part=false, bool never_new_part=false, Part* paste_into_part=NULL, int amount=1, int raster=3072); +void paste_at(const QString& pt, int pos, int max_distance=3072, bool always_new_part=false, bool never_new_part=false, const Part* paste_into_part=NULL, int amount=1, int raster=3072); //functions for selections -void select_all(const std::set<Part*>& parts); -void select_none(const std::set<Part*>& parts); -void select_invert(const std::set<Part*>& parts); -void select_in_loop(const std::set<Part*>& parts); -void select_not_in_loop(const std::set<Part*>& parts); +void select_all(const std::set<const Part*>& parts); +void select_none(const std::set<const Part*>& parts); +void select_invert(const std::set<const Part*>& parts); +void select_in_loop(const std::set<const Part*>& parts); +void select_not_in_loop(const std::set<const Part*>& parts); //functions for parts void shrink_parts(int raster=-1); //negative values mean "config.division" void expand_parts(int raster=-1); -void schedule_resize_all_same_len_clone_parts(Part* part, unsigned new_len, Undo& operations); +void schedule_resize_all_same_len_clone_parts(const Part* part, unsigned new_len, Undo& operations); void clean_parts(); +bool merge_with_next_part(const Part* part); bool merge_selected_parts(); -bool merge_parts(const std::set<Part*>& parts); +bool merge_parts(const std::set<const Part*>& parts); +bool split_part(const Part* part, int tick); +bool delete_selected_parts(); // internal QMimeData* file_to_mimedata(FILE *datafile, QString mimeType); |