NAP
sequenceaudiotrackview.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 #include <utility>
8 
9 #include "sequencetrackview.h"
10 #include "sequencetracksegmentcurve.h"
11 #include "sequencecontrollercurve.h"
12 #include "sequenceguiservice.h"
13 
14 namespace nap
15 {
17 
18  // forward declares
19  class SequencePlayerAudioOutput;
20  class SequenceAudioGUIService;
21 
26  class NAPAPI SequenceAudioTrackView final : public SequenceTrackView
27  {
28  RTTI_ENABLE(SequenceTrackView)
29  public:
37 
38  // make this class explicitly non-copyable
40  SequenceAudioTrackView& operator=(const SequenceAudioTrackView&) = delete;
41 
42  protected:
47  virtual void showInspectorContent(const SequenceTrack& track) override;
48 
54  virtual void showTrackContent(const SequenceTrack& track, const ImVec2& trackTopLeft) override;
55 
56  private:
65  bool pasteClipboard(const std::string& trackID, double time, utility::ErrorState& errorState);
66 
70  void handleAssignOutputIDToTrack();
71 
75  void handleSegmentDrag();
76 
80  void handleSegmentInsert();
81 
85  void handleEditSegment();
86 
90  void handleLeftHandlerDrag();
91 
95  void handleRightHandlerDrag();
96 
100  void handleLoadPresetPopup();
101 
105  std::unordered_map<std::string, std::vector<std::vector<ImVec2>>> mWaveformCache;
106 
112  SequencePlayerAudioOutput* getAudioOutputForTrack(const std::string& trackID);
113 
119  std::vector<std::string> getAudioBuffersForTrack(const std::string& trackID);
120 
121  // pointer to sequence audio gui service
122  SequenceAudioGUIService* mAudioGUIService = nullptr;
123  };
124 
126  // Audio Clipboards
128 
129  namespace sequenceguiclipboard
130  {
135  {
136  RTTI_ENABLE(Clipboard)
137  public:
143  AudioSegmentClipboard(const rttr::type& type, std::string sequenceName)
144  : Clipboard(type), mSequenceName(std::move(sequenceName))
145  {
146  };
147 
148 
153  const std::string& getSequenceName() const
154  {
155  return mSequenceName;
156  }
157 
158 
159  private:
160  std::string mSequenceName;
161  };
162  }
163 }
164 
165 #include "sequenceaudiotrackview_guiactions.h"
166 
nap::sequenceguiclipboard::AudioSegmentClipboard
Definition: sequenceaudiotrackview.h:134
nap::SequenceEditorGUIState
Definition: sequenceeditorguistate.h:23
nap::SequenceAudioTrackView
Definition: sequenceaudiotrackview.h:26
nap::utility::ErrorState
Definition: errorstate.h:19
nap::SequenceGUIService
Definition: sequenceguiservice.h:59
nap::SequenceTrack
Definition: sequencetrack.h:22
nap::SequenceAudioGUIService
Definition: sequenceaudioguiservice.h:18
nap::sequenceguiclipboard::Clipboard
Definition: sequenceeditorguiclipboard.h:28
nap::SequencePlayerAudioOutput
Definition: sequenceplayeraudiooutput.h:42
nap::sequenceguiclipboard::AudioSegmentClipboard::getSequenceName
const std::string & getSequenceName() const
Definition: sequenceaudiotrackview.h:153
nap::SequenceTrackView
Definition: sequencetrackview.h:30
nap::SequenceEditorGUIView
Definition: sequenceeditorgui.h:82
nap
Definition: templateapp.h:17
nap::sequenceguiclipboard::AudioSegmentClipboard::AudioSegmentClipboard
AudioSegmentClipboard(const rttr::type &type, std::string sequenceName)
Definition: sequenceaudiotrackview.h:143