Jamba C++ API 8.0.0
Loading...
Searching...
No Matches
TransportControlHandler.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2026 pongasoft
3 *
4 * Licensed under the Apache License, Version 2.0 or the MIT license,
5 * at your option. You may not use this file except in compliance with
6 * one of these licenses. You may obtain copies of the licenses at:
7 *
8 * https://www.apache.org/licenses/LICENSE-2.0
9 * https://opensource.org/licenses/MIT
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 * License for the specific language governing permissions and limitations under
15 * the License.
16 *
17 * @author Yan Pujante
18 */
19
20#ifndef JAMBA_ITRANSPORTCONTROLHANDLER_H
21#define JAMBA_ITRANSPORTCONTROLHANDLER_H
22
23#include <pluginterfaces/vst/ivsttransportcontrol.h>
24
25using namespace Steinberg::Vst;
26
27namespace pongasoft::VST::GUI {
28
49{
50public:
51 explicit TransportControlHandler(ITransportControl *iTransportControl)
52 : fTransportControl{iTransportControl}
53 {
54 }
55
56 tresult playbackStart() const { return executeAction(ITransportControl::Action::PlaybackStart); }
57 bool hasPlaybackStart() const { return hasAction(ITransportControl::Action::PlaybackStart); }
58
59 tresult playbackStop() const { return executeAction(ITransportControl::Action::PlaybackStop); }
60 bool hasPlaybackStop() const { return hasAction(ITransportControl::Action::PlaybackStop); }
61
62 tresult locate(TransportPosition *iPosition) const { return executeAction(ITransportControl::Action::Locate, iPosition); }
63 bool hasLocate() const { return hasAction(ITransportControl::Action::Locate); }
64
65 tresult locateAndPlaybackStart(TransportPosition *iPosition) const { return executeAction(ITransportControl::Action::LocateAndPlaybackStart, iPosition); }
66 bool hasLocateAndPlaybackStart() const { return hasAction(ITransportControl::Action::LocateAndPlaybackStart); }
67
68 tresult playbackStopAndLocate(TransportPosition *iPosition) const { return executeAction(ITransportControl::Action::PlaybackStopAndLocate, iPosition); }
69 bool hasPlaybackStopAndLocate() const { return hasAction(ITransportControl::Action::PlaybackStopAndLocate); }
70
71 tresult recordOnPlaybackStart() const { return executeAction(ITransportControl::Action::RecordOnPlaybackStart); }
72 bool hasRecordOnPlaybackStart() const { return hasAction(ITransportControl::Action::RecordOnPlaybackStart); }
73
74 tresult locateAndRecordOnPlaybackStart(TransportPosition *iPosition) const { return executeAction(ITransportControl::Action::LocateAndRecordOnPlaybackStart, iPosition); }
75 bool hasLocateAndRecordOnPlaybackStart() const { return hasAction(ITransportControl::Action::LocateAndRecordOnPlaybackStart); }
76
77 tresult recordOff() const { return executeAction(ITransportControl::Action::RecordOff); }
78 bool hasRecordOff() const { return hasAction(ITransportControl::Action::RecordOff); }
79
80 tresult recordOffPlaybackStop() const { return executeAction(ITransportControl::Action::RecordOffPlaybackStop); }
81 bool hasRecordOffPlaybackStop() const { return hasAction(ITransportControl::Action::RecordOffPlaybackStop); }
82
83 tresult recordOffPlaybackStopAndLocate(TransportPosition *iPosition) const { return executeAction(ITransportControl::Action::RecordOffPlaybackStopAndLocate, iPosition); }
84 bool hasRecordOffPlaybackStopAndLocate() const { return hasAction(ITransportControl::Action::RecordOffPlaybackStopAndLocate); }
85
86 tresult setCycleStart(TransportPosition *iPosition) const { return executeAction(ITransportControl::Action::SetCycleStart, iPosition); }
87 bool hasSetCycleStart() const { return hasAction(ITransportControl::Action::SetCycleStart); }
88
89 tresult setCycleEnd(TransportPosition *iPosition) const { return executeAction(ITransportControl::Action::SetCycleEnd, iPosition); }
90 bool hasSetCycleEnd() const { return hasAction(ITransportControl::Action::SetCycleEnd); }
91
92 tresult cycleOn() const { return executeAction(ITransportControl::Action::CycleOn); }
93 bool hasCycleOn() const { return hasAction(ITransportControl::Action::CycleOn); }
94
95 tresult cycleOff() const { return executeAction(ITransportControl::Action::CycleOff); }
96 bool hasCycleOff() const { return hasAction(ITransportControl::Action::CycleOff); }
97
98private:
99 // ---- Functions
100 // Returns `true` if the action is supported (note that we don't distinguish between not supported and
101 // not implemented which is not very relevant for this API)
102 bool hasAction(ITransportControl::Action iAction) const
103 {
104 return fTransportControl && fTransportControl->isActionSupported(iAction) == kResultOk;
105 }
106
107 tresult executeAction(ITransportControl::Action iAction, TransportPosition *iPosition = nullptr) const
108 {
110 return fTransportControl->requestAction(iAction, iPosition);
111 return kNotImplemented;
112 }
113
114 // ---- Members
115 ITransportControl *fTransportControl;
116};
117
118}
119
120#endif //JAMBA_ITRANSPORTCONTROLHANDLER_H
tresult setCycleStart(TransportPosition *iPosition) const
Definition TransportControlHandler.h:86
bool hasPlaybackStop() const
Definition TransportControlHandler.h:60
tresult recordOffPlaybackStopAndLocate(TransportPosition *iPosition) const
Definition TransportControlHandler.h:83
bool hasRecordOnPlaybackStart() const
Definition TransportControlHandler.h:72
bool hasCycleOn() const
Definition TransportControlHandler.h:93
bool hasRecordOff() const
Definition TransportControlHandler.h:78
tresult locateAndRecordOnPlaybackStart(TransportPosition *iPosition) const
Definition TransportControlHandler.h:74
bool hasSetCycleEnd() const
Definition TransportControlHandler.h:90
bool hasPlaybackStart() const
Definition TransportControlHandler.h:57
bool hasPlaybackStopAndLocate() const
Definition TransportControlHandler.h:69
bool hasCycleOff() const
Definition TransportControlHandler.h:96
bool hasLocate() const
Definition TransportControlHandler.h:63
bool hasRecordOffPlaybackStopAndLocate() const
Definition TransportControlHandler.h:84
tresult playbackStop() const
Definition TransportControlHandler.h:59
tresult executeAction(ITransportControl::Action iAction, TransportPosition *iPosition=nullptr) const
Definition TransportControlHandler.h:107
tresult setCycleEnd(TransportPosition *iPosition) const
Definition TransportControlHandler.h:89
tresult locateAndPlaybackStart(TransportPosition *iPosition) const
Definition TransportControlHandler.h:65
tresult playbackStart() const
Definition TransportControlHandler.h:56
ITransportControl * fTransportControl
Definition TransportControlHandler.h:115
bool hasLocateAndRecordOnPlaybackStart() const
Definition TransportControlHandler.h:75
tresult recordOnPlaybackStart() const
Definition TransportControlHandler.h:71
bool hasLocateAndPlaybackStart() const
Definition TransportControlHandler.h:66
tresult cycleOff() const
Definition TransportControlHandler.h:95
bool hasSetCycleStart() const
Definition TransportControlHandler.h:87
tresult locate(TransportPosition *iPosition) const
Definition TransportControlHandler.h:62
tresult cycleOn() const
Definition TransportControlHandler.h:92
tresult recordOffPlaybackStop() const
Definition TransportControlHandler.h:80
bool hasAction(ITransportControl::Action iAction) const
Definition TransportControlHandler.h:102
tresult recordOff() const
Definition TransportControlHandler.h:77
TransportControlHandler(ITransportControl *iTransportControl)
Definition TransportControlHandler.h:51
bool hasRecordOffPlaybackStop() const
Definition TransportControlHandler.h:81
tresult playbackStopAndLocate(TransportPosition *iPosition) const
Definition TransportControlHandler.h:68
Definition DrawContext.cpp:25