//------------------------------------------------------------------------ // 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