145 lines
4.9 KiB
C
145 lines
4.9 KiB
C
|
//------------------------------------------------------------------------
|
||
|
// Project : VST SDK
|
||
|
//
|
||
|
// Category : Interfaces
|
||
|
// Filename : pluginterfaces/vst/ivstinterappaudio.h
|
||
|
// Created by : Steinberg, 08/2013
|
||
|
// Description : VST InterAppAudio Interfaces
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// This file is part of a Steinberg SDK. It is subject to the license terms
|
||
|
// in the LICENSE file found in the top-level directory of this distribution
|
||
|
// and at www.steinberg.net/sdklicenses.
|
||
|
// No part of the SDK, including this file, may be copied, modified, propagated,
|
||
|
// or distributed except according to the terms contained in the LICENSE file.
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "pluginterfaces/base/funknown.h"
|
||
|
|
||
|
//------------------------------------------------------------------------
|
||
|
namespace Steinberg {
|
||
|
struct ViewRect;
|
||
|
namespace Vst {
|
||
|
struct Event;
|
||
|
class IInterAppAudioPresetManager;
|
||
|
|
||
|
//------------------------------------------------------------------------
|
||
|
/** Inter-App Audio host Interface.
|
||
|
\ingroup vstIHost vst360
|
||
|
- [host imp]
|
||
|
- [passed as 'context' to IPluginBase::initialize () ]
|
||
|
- [released: 3.6.0]
|
||
|
- [optional]
|
||
|
|
||
|
Implemented by the InterAppAudio Wrapper. */
|
||
|
//------------------------------------------------------------------------
|
||
|
class IInterAppAudioHost: public FUnknown
|
||
|
{
|
||
|
public:
|
||
|
/** get the size of the screen
|
||
|
* @param size size of the screen
|
||
|
* @param scale scale of the screen
|
||
|
* @return kResultTrue on success
|
||
|
*/
|
||
|
virtual tresult PLUGIN_API getScreenSize (ViewRect* size, float* scale) = 0;
|
||
|
|
||
|
/** get status of connection
|
||
|
* @return kResultTrue if an Inter-App Audio connection is established
|
||
|
*/
|
||
|
virtual tresult PLUGIN_API connectedToHost () = 0;
|
||
|
|
||
|
/** switch to the host.
|
||
|
* @return kResultTrue on success
|
||
|
*/
|
||
|
virtual tresult PLUGIN_API switchToHost () = 0;
|
||
|
|
||
|
/** send a remote control event to the host
|
||
|
* @param event event type, see AudioUnitRemoteControlEvent in the iOS SDK documentation for possible types
|
||
|
* @return kResultTrue on success
|
||
|
*/
|
||
|
virtual tresult PLUGIN_API sendRemoteControlEvent (uint32 event) = 0;
|
||
|
|
||
|
/** ask for the host icon.
|
||
|
* @param icon pointer to a CGImageRef
|
||
|
* @return kResultTrue on success
|
||
|
*/
|
||
|
virtual tresult PLUGIN_API getHostIcon (void** icon) = 0;
|
||
|
|
||
|
/** schedule an event from the user interface thread
|
||
|
* @param event the event to schedule
|
||
|
* @return kResultTrue on success
|
||
|
*/
|
||
|
virtual tresult PLUGIN_API scheduleEventFromUI (Event& event) = 0;
|
||
|
|
||
|
/** get the preset manager
|
||
|
* @param cid class ID to use by the preset manager
|
||
|
* @return the preset manager. Needs to be released by called.
|
||
|
*/
|
||
|
virtual IInterAppAudioPresetManager* PLUGIN_API createPresetManager (const TUID& cid) = 0;
|
||
|
|
||
|
/** show the settings view
|
||
|
* currently includes MIDI settings and Tempo setting
|
||
|
* @return kResultTrue on success
|
||
|
*/
|
||
|
virtual tresult PLUGIN_API showSettingsView () = 0;
|
||
|
|
||
|
//------------------------------------------------------------------------
|
||
|
static const FUID iid;
|
||
|
};
|
||
|
|
||
|
DECLARE_CLASS_IID (IInterAppAudioHost, 0x0CE5743D, 0x68DF415E, 0xAE285BD4, 0xE2CDC8FD)
|
||
|
|
||
|
//------------------------------------------------------------------------
|
||
|
/** Extended Plug-in interface IEditController for Inter-App Audio connection state change notifications
|
||
|
\ingroup vstIPlug vst360
|
||
|
- [plug imp]
|
||
|
- [extends IEditController]
|
||
|
- [released: 3.6.0]
|
||
|
*/
|
||
|
//------------------------------------------------------------------------
|
||
|
class IInterAppAudioConnectionNotification : public FUnknown
|
||
|
{
|
||
|
public:
|
||
|
/** called when the Inter-App Audio connection state changes
|
||
|
* @param newState true if an Inter-App Audio connection is established, otherwise false
|
||
|
*/
|
||
|
virtual void PLUGIN_API onInterAppAudioConnectionStateChange (TBool newState) = 0;
|
||
|
|
||
|
//------------------------------------------------------------------------
|
||
|
static const FUID iid;
|
||
|
};
|
||
|
|
||
|
DECLARE_CLASS_IID (IInterAppAudioConnectionNotification, 0x6020C72D, 0x5FC24AA1, 0xB0950DB5, 0xD7D6D5CF)
|
||
|
|
||
|
//------------------------------------------------------------------------
|
||
|
/** Extended Plug-in interface IEditController for Inter-App Audio Preset Management
|
||
|
\ingroup vstIPlug vst360
|
||
|
- [plug imp]
|
||
|
- [extends IEditController]
|
||
|
- [released: 3.6.0]
|
||
|
*/
|
||
|
//------------------------------------------------------------------------
|
||
|
class IInterAppAudioPresetManager : public FUnknown
|
||
|
{
|
||
|
public:
|
||
|
/** TODO */
|
||
|
virtual tresult PLUGIN_API runLoadPresetBrowser () = 0;
|
||
|
/** TODO */
|
||
|
virtual tresult PLUGIN_API runSavePresetBrowser () = 0;
|
||
|
/** TODO */
|
||
|
virtual tresult PLUGIN_API loadNextPreset () = 0;
|
||
|
/** TODO */
|
||
|
virtual tresult PLUGIN_API loadPreviousPreset () = 0;
|
||
|
|
||
|
//------------------------------------------------------------------------
|
||
|
static const FUID iid;
|
||
|
};
|
||
|
|
||
|
DECLARE_CLASS_IID (IInterAppAudioPresetManager, 0xADE6FCC4, 0x46C94E1D, 0xB3B49A80, 0xC93FEFDD)
|
||
|
|
||
|
//------------------------------------------------------------------------
|
||
|
} // namespace Vst
|
||
|
} // namespace Steinberg
|