You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.2KB

  1. #include "rack.hpp"
  2. #include "../ModuleDragType.hpp"
  3. using namespace rack;
  4. namespace rack_plugin_rcm {
  5. struct Auditioner;
  6. struct PatternData;
  7. struct Transport;
  8. struct WidgetState;
  9. struct UnderlyingRollAreaWidget;
  10. struct PianoRollDragType : ModuleDragType {
  11. PianoRollDragType();
  12. virtual ~PianoRollDragType();
  13. };
  14. struct PlayPositionDragging : public PianoRollDragType {
  15. Auditioner* auditioner;
  16. UnderlyingRollAreaWidget* widget;
  17. Transport* transport;
  18. PlayPositionDragging(Auditioner* auditioner, UnderlyingRollAreaWidget* widget, Transport* transport);
  19. virtual ~PlayPositionDragging();
  20. void setNote(Vec mouseRel);
  21. void onDragMove(EventDragMove& e) override;
  22. };
  23. struct LockMeasureDragging : public PianoRollDragType {
  24. std::chrono::time_point<std::chrono::high_resolution_clock> longPressStart;
  25. WidgetState* state;
  26. Transport* transport;
  27. LockMeasureDragging(WidgetState* state, Transport* transport);
  28. virtual ~LockMeasureDragging();
  29. void onDragMove(EventDragMove& e) override;
  30. };
  31. struct KeyboardDragging : public PianoRollDragType {
  32. float offset = 0;
  33. WidgetState* state;
  34. KeyboardDragging(WidgetState* state);
  35. virtual ~KeyboardDragging();
  36. void onDragMove(EventDragMove& e) override;
  37. };
  38. struct NotePaintDragging : public PianoRollDragType {
  39. int lastDragBeatDiv = -1000;
  40. int lastDragPitch = -1000;
  41. bool makeStepsActive = true;
  42. int retriggerBeatDiv = 0;
  43. UnderlyingRollAreaWidget* widget;
  44. PatternData* patternData;
  45. Transport* transport;
  46. Auditioner* auditioner;
  47. NotePaintDragging(UnderlyingRollAreaWidget* widget, PatternData* patternData, Transport* transport, Auditioner* auditioner);
  48. virtual ~NotePaintDragging();
  49. void onDragMove(EventDragMove& e) override;
  50. };
  51. struct VelocityDragging : public PianoRollDragType {
  52. UnderlyingRollAreaWidget* widget;
  53. PatternData* patternData;
  54. Transport* transport;
  55. WidgetState* state;
  56. int pattern;
  57. int measure;
  58. int division;
  59. bool showLow = false;
  60. VelocityDragging(UnderlyingRollAreaWidget* widget, PatternData* patternData, Transport* transport, WidgetState* state, int pattern, int measure, int division);
  61. virtual ~VelocityDragging();
  62. void onDragMove(EventDragMove& e) override;
  63. };
  64. } // namespace rack_plugin_rcm