summaryrefslogtreecommitdiff
path: root/libs/appleutility/CoreAudio/AudioUnits/AUPublic/AUCarbonViewBase/AUCarbonViewBase.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/appleutility/CoreAudio/AudioUnits/AUPublic/AUCarbonViewBase/AUCarbonViewBase.h')
-rw-r--r--libs/appleutility/CoreAudio/AudioUnits/AUPublic/AUCarbonViewBase/AUCarbonViewBase.h188
1 files changed, 188 insertions, 0 deletions
diff --git a/libs/appleutility/CoreAudio/AudioUnits/AUPublic/AUCarbonViewBase/AUCarbonViewBase.h b/libs/appleutility/CoreAudio/AudioUnits/AUPublic/AUCarbonViewBase/AUCarbonViewBase.h
new file mode 100644
index 0000000000..910e53ffa6
--- /dev/null
+++ b/libs/appleutility/CoreAudio/AudioUnits/AUPublic/AUCarbonViewBase/AUCarbonViewBase.h
@@ -0,0 +1,188 @@
+/*
+ File: AUCarbonViewBase.h
+ Abstract: Part of CoreAudio Utility Classes
+ Version: 1.1
+
+ Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple
+ Inc. ("Apple") in consideration of your agreement to the following
+ terms, and your use, installation, modification or redistribution of
+ this Apple software constitutes acceptance of these terms. If you do
+ not agree with these terms, please do not use, install, modify or
+ redistribute this Apple software.
+
+ In consideration of your agreement to abide by the following terms, and
+ subject to these terms, Apple grants you a personal, non-exclusive
+ license, under Apple's copyrights in this original Apple software (the
+ "Apple Software"), to use, reproduce, modify and redistribute the Apple
+ Software, with or without modifications, in source and/or binary forms;
+ provided that if you redistribute the Apple Software in its entirety and
+ without modifications, you must retain this notice and the following
+ text and disclaimers in all such redistributions of the Apple Software.
+ Neither the name, trademarks, service marks or logos of Apple Inc. may
+ be used to endorse or promote products derived from the Apple Software
+ without specific prior written permission from Apple. Except as
+ expressly stated in this notice, no other rights or licenses, express or
+ implied, are granted by Apple herein, including but not limited to any
+ patent rights that may be infringed by your derivative works or by other
+ works in which the Apple Software may be incorporated.
+
+ The Apple Software is provided by Apple on an "AS IS" basis. APPLE
+ MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
+ THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
+ OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
+
+ IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
+ MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
+ AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
+ STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+ Copyright (C) 2014 Apple Inc. All Rights Reserved.
+
+*/
+#ifndef __AUCarbonViewBase_h__
+#define __AUCarbonViewBase_h__
+
+#include <vector>
+#include "AUCarbonViewControl.h"
+#include "ComponentBase.h"
+
+static const Float32 kDefaultNotificationInterval = 0.100;
+
+ /*! @class AUCarbonViewBase */
+class AUCarbonViewBase : public ComponentBase, public CarbonEventHandler
+{
+public:
+ /*! @ctor AUCarbonViewBase */
+ AUCarbonViewBase ( AudioUnitCarbonView inInstance,
+ Float32 inNotificationInterval = kDefaultNotificationInterval /* in seconds */);
+ /*! @dtor ~AUCarbonViewBase */
+ virtual ~AUCarbonViewBase();
+
+ // AUViewBase overrides
+ /*! @method CreateCarbonView */
+ virtual OSStatus CreateCarbonView (AudioUnit inAudioUnit, WindowRef inWindow, ControlRef inParentControl, const Float32Point &inLocation, const Float32Point &inSize, ControlRef &outParentControl);
+
+ // our own virtual methods
+ /*! @method CreateUI */
+ virtual OSStatus CreateUI (Float32 inXOffset, Float32 inYOffset);
+
+ /*! @method HandleEvent */
+ virtual bool HandleEvent (EventHandlerCallRef inHandlerRef, EventRef event);
+
+ /*! @method GetEditAudioUnit */
+ const AudioUnit GetEditAudioUnit () const { return mEditAudioUnit; }
+ //
+ /*! @method ComponentEntryDispatch */
+ static OSStatus ComponentEntryDispatch (
+ ComponentParameters * params,
+ AUCarbonViewBase * This);
+
+ /*! @method AddCarbonControl */
+ void AddCarbonControl (
+ AUCarbonViewControl::ControlType type,
+ const CAAUParameter & param,
+ ControlRef control);
+
+ /*! @method GetCarbonWindow */
+ WindowRef GetCarbonWindow () { return mCarbonWindow; }
+ /*! @method GetCarbonPane */
+ ControlRef GetCarbonPane () { return mCarbonPane; }
+ /*! @method EmbedControl */
+ OSStatus EmbedControl (ControlRef ctl);
+
+ /*! @method TellListener */
+ void TellListener (const CAAUParameter &auvp, AudioUnitCarbonViewEventID event, void *evpar);
+
+ // pass in true if wanting an update to the view and you're calling this from a thread
+ // that is safe to do UI in.
+ // If you don't know, pass in false!
+ /*! @method Update */
+ void Update (bool inUIThread);
+
+ /*! @method GetXOffset */
+ Float32 GetXOffset () { return mXOffset; }
+ /*! @method GetYOffset */
+ Float32 GetYOffset () { return mYOffset; }
+
+ /*! @method ClearControls */
+ void ClearControls ();
+
+ /*! @method IsCompositWindow */
+ bool IsCompositWindow () const { return mCompositWindow; }
+
+protected:
+#if !__LP64__
+ /*! @method SetEventListener */
+ void SetEventListener (AudioUnitCarbonViewEventListener listener, void *userData)
+ {
+ mEventListener = listener;
+ mEventListenerUserData = userData;
+ }
+#endif
+
+ /*! @method AddControl */
+ void AddControl (AUCarbonViewControl *control);
+ /*! @method RemoveControl */
+ void RemoveControl (AUCarbonViewControl *control);
+
+ OSStatus CreateEventLoopTimer (Float32 inDelay, Float32 inInterval);
+
+ /*! @method ParameterListener */
+ static void ParameterListener (void * inCallbackRefCon,
+ void * inObject,
+ const AudioUnitEvent * inEvent,
+ UInt64 inEventHostTime,
+ Float32 inParameterValue);
+
+ static pascal void TheTimerProc ( EventLoopTimerRef inTimer,
+ void * inUserData);
+
+ virtual void RespondToEventTimer (EventLoopTimerRef inTimer);
+
+ /*! @var mEditAudioUnit */
+ AudioUnit mEditAudioUnit; // the AU we're controlling
+ /*! @var mParameterListener */
+ AUEventListenerRef mParameterListener;
+
+#if !__LP64__
+ /*! @var mEventListener */
+ AudioUnitCarbonViewEventListener
+ mEventListener;
+#endif
+
+ /*! @var mEventListenerUserData */
+ void * mEventListenerUserData;
+
+private:
+ typedef std::vector<AUCarbonViewControl *> ControlList;
+ /*! @var mControlList */
+ ControlList mControlList;
+
+ EventLoopTimerRef mTimerRef;
+
+ EventLoopTimerUPP mTimerUPP;
+
+protected:
+ /*! @var mCarbonWindow */
+ WindowRef mCarbonWindow;
+ /*! @var mCarbonPane */
+ ControlRef mCarbonPane; // user pane, contains all other controls
+ /*! @var mBottomRight */
+ Point mBottomRight; // largest width and height of child controls
+ /*! @var mXOffset */
+ Float32 mXOffset;
+ /*! @var mYOffset */
+ Float32 mYOffset;
+ /*! @var mCompositWindow */
+ bool mCompositWindow;
+ /*! @var mCurrentScrollPoint */
+ HIPoint mCurrentScrollPoint; // needed for scrolling
+};
+
+
+#endif // __AUCarbonViewBase_h__