aboutsummaryrefslogtreecommitdiffstats
path: root/vstgui/vstcontrols.h
diff options
context:
space:
mode:
Diffstat (limited to 'vstgui/vstcontrols.h')
-rw-r--r--vstgui/vstcontrols.h994
1 files changed, 994 insertions, 0 deletions
diff --git a/vstgui/vstcontrols.h b/vstgui/vstcontrols.h
new file mode 100644
index 0000000..0505f82
--- /dev/null
+++ b/vstgui/vstcontrols.h
@@ -0,0 +1,994 @@
+/* ----------------------------------------------------------------------------
+ * VSTGUI for X11/LV2/PNG
+ * Author: Dave Robillard
+ * Released under the revised BSD license, as below
+ * ----------------------------------------------------------------------------
+ *
+ * Based on:
+ * ----------------------------------------------------------------------------
+ * VSTGUIL: Graphical User Interface Framework for VST plugins on LINUX
+ * Version: 0.1, Date: 2007/01/21
+ * Author: kRAkEn/gORe
+ *
+ * Which was based on:
+ * ----------------------------------------------------------------------------
+ * VSTGUI: Graphical User Interface Framework for VST plugins
+ * Version 3.0 $Date: 2005/08/12 12:45:00 $
+ * ----------------------------------------------------------------------------
+ * VSTGUI LICENSE
+ * 2004, Steinberg Media Technologies, All Rights Reserved
+ * ----------------------------------------------------------------------------
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Steinberg Media Technologies nor the names of
+ * its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ * ----------------------------------------------------------------------------
+ */
+
+#ifndef __vstcontrols__
+#define __vstcontrols__
+
+#ifndef __vstgui__
+#include "vstgui.h"
+#endif
+
+//------------------
+// defines
+//------------------
+#ifndef kPI
+#define kPI 3.14159265358979323846
+#endif
+
+#ifndef k2PI
+#define k2PI 6.28318530717958647692
+#endif
+
+#ifndef kPI_2
+#define kPI_2 1.57079632679489661923f
+#endif
+
+#ifndef kPI_4
+#define kPI_4 0.78539816339744830962
+#endif
+
+#ifndef kE
+#define kE 2.7182818284590452354
+#endif
+
+#ifndef kLN2
+#define kLN2 0.69314718055994530942
+#endif
+
+#ifndef kSQRT2
+#define kSQRT2 1.41421356237309504880
+#endif
+
+//------------------
+// CControlEnum type
+//------------------
+enum CControlEnum
+{
+ kHorizontal = 1 << 0,
+ kVertical = 1 << 1,
+ kShadowText = 1 << 2,
+ kLeft = 1 << 3,
+ kRight = 1 << 4,
+ kTop = 1 << 5,
+ kBottom = 1 << 6,
+ k3DIn = 1 << 7,
+ k3DOut = 1 << 8,
+ kPopupStyle = 1 << 9,
+ kCheckStyle = 1 << 10,
+ kMultipleCheckStyle,
+ kNoTextStyle = 1 << 11,
+ kNoDrawStyle = 1 << 12,
+ kDoubleClickStyle = 1 << 13,
+ kNoFrame = 1 << 14
+};
+
+//---------------------------
+// Some defines for Menu item
+//---------------------------
+#define kMenuTitle "-T"
+#define kMenuSeparator "-"
+#define kMenuDisable "-G"
+#define kMenuSubMenu "-M"
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+class CControlListener
+{
+public:
+ virtual ~CControlListener () {}
+
+ virtual void valueChanged (VSTGUI::CDrawContext *pContext, VSTGUI::CControl *pControl) = 0;
+ virtual long controlModifierClicked (VSTGUI::CDrawContext *pContext, VSTGUI::CControl *pControl, long button) { return 0; } // return 1 if you want the control to not handle it, otherwise 0
+};
+
+class AudioEffectX;
+
+//-----------------------------------------------------------------------------
+namespace VSTGUI {
+//-----------------------------------------------------------------------------
+
+//-----------------------------------------------------------------------------
+// CControl Declaration
+//! base class of all VSTGUI controls
+//-----------------------------------------------------------------------------
+class CControl : public CView
+{
+public:
+ CControl (const CRect &size, CControlListener *listener = 0, long tag = 0,
+ CBitmap *pBackground = 0);
+ virtual ~CControl ();
+
+ virtual void draw (CDrawContext *pContext) = 0;
+ virtual void doIdleStuff () { if (pParentFrame) pParentFrame->doIdleStuff (); }
+
+ virtual void setValue (float val) { value = val; }
+ virtual float getValue () const { return value; };
+
+ virtual void setMin (float val) { vmin = val; }
+ virtual float getMin () const { return vmin; }
+ virtual void setMax (float val) { vmax = val; }
+ virtual float getMax () const { return vmax; }
+
+ virtual void setOldValue (float val) { oldValue = val; }
+ virtual float getOldValue (void) const { return oldValue; }
+ virtual void setDefaultValue (float val) { defaultValue = val; }
+ virtual float getDefaultValue (void) const { return defaultValue; }
+
+ virtual void setTag (long val) { tag = val; }
+ virtual long getTag () const { return tag; }
+
+ virtual bool isDirty () const;
+ virtual void setDirty (const bool val = true);
+
+ virtual void beginEdit ();
+ virtual void endEdit ();
+
+ virtual void setBackOffset (CPoint &offset);
+ virtual void copyBackOffset ();
+
+ virtual void setWheelInc (float val) { wheelInc = val; }
+ virtual float getWheelInc () const { return wheelInc; }
+
+ virtual void bounceValue ();
+ virtual bool checkDefaultValue (CDrawContext *pContext, long button);
+
+ CControlListener* getListener () const { return listener; }
+ void setListener (CControlListener* l) { listener = l; }
+ bool isDoubleClick ();
+
+ CLASS_METHODS(CControl, CView)
+
+protected:
+ CControlListener *listener;
+ long tag;
+ float oldValue;
+ float defaultValue;
+ float value;
+ float vmin;
+ float vmax;
+ float wheelInc;
+
+ long lastTicks;
+ long delta;
+
+ CPoint backOffset;
+};
+
+
+//-----------------------------------------------------------------------------
+// COnOffButton Declaration
+//! a button control with 2 states
+//-----------------------------------------------------------------------------
+class COnOffButton : public CControl
+{
+public:
+ COnOffButton (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, long style = kPreListenerUpdate);
+ virtual ~COnOffButton ();
+
+ virtual void draw (CDrawContext*);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+
+ virtual long getStyle () const { return style; }
+ virtual void setStyle (long newStyle) { style = newStyle; }
+
+ enum {
+ kPreListenerUpdate, ///< listener will be called after doIdleStuff was called
+ kPostListenerUpdate ///< listener will be called before doIdleStuff is called
+ };
+
+ CLASS_METHODS(COnOffButton, CControl)
+protected:
+ long style;
+};
+
+
+//-----------------------------------------------------------------------------
+// CParamDisplay Declaration
+//! a parameter display control
+//-----------------------------------------------------------------------------
+class CParamDisplay : public CControl
+{
+public:
+ CParamDisplay (const CRect &size, CBitmap *background = 0, const long style = 0);
+ virtual ~CParamDisplay ();
+
+ virtual void setFont (CFont fontID);
+ CFont getFont () const { return fontID; }
+
+ virtual void setFontColor (CColor color);
+ CColor getFontColor () const { return fontColor; }
+
+ virtual void setBackColor (CColor color);
+ CColor getBackColor () const { return backColor; }
+
+ virtual void setFrameColor (CColor color);
+ CColor getFrameColor () const { return frameColor; }
+
+ virtual void setShadowColor (CColor color);
+ CColor getShadowColor () const { return shadowColor; }
+
+ virtual void setHoriAlign (CHoriTxtAlign hAlign);
+
+ virtual void setStringConvert (void (*convert) (float value, char *string));
+ virtual void setStringConvert (void (*convert) (float value, char *string, void *userDta),
+ void *userData);
+ virtual void setString2FloatConvert (void (*convert) (char *string, float &output));
+
+ virtual void setStyle (long val);
+ long getStyle () const { return style; }
+
+ virtual void setTxtFace (CTxtFace val);
+ CTxtFace getTxtFace () const { return txtFace; }
+
+ virtual void draw (CDrawContext *pContext);
+
+ virtual void setTextTransparency (bool val) { bTextTransparencyEnabled = val; }
+ bool getTextTransparency () const { return bTextTransparencyEnabled; }
+
+ CLASS_METHODS(CParamDisplay, CControl)
+
+protected:
+ void drawText (CDrawContext *pContext, char *string, CBitmap *newBack = 0);
+
+ void (*stringConvert) (float value, char *string);
+ void (*stringConvert2) (float value, char *string, void *userData);
+ void (*string2FloatConvert) (char *string, float &output);
+ void *userData;
+
+ CHoriTxtAlign horiTxtAlign;
+ long style;
+
+ CFont fontID;
+ CTxtFace txtFace;
+ CColor fontColor;
+ CColor backColor;
+ CColor frameColor;
+ CColor shadowColor;
+ bool bTextTransparencyEnabled;
+};
+
+
+//-----------------------------------------------------------------------------
+// CLabel Declaration
+//! a text label
+//-----------------------------------------------------------------------------
+class CTextLabel : public CParamDisplay
+{
+public:
+ CTextLabel (const CRect& size, const char* txt = 0, CBitmap* background = 0, const long style = 0);
+ ~CTextLabel ();
+
+ virtual void setText (const char* txt);
+ virtual const char* getText () const;
+
+ virtual void draw (CDrawContext *pContext);
+
+ CLASS_METHODS(CTextLabel, CParamDisplay)
+
+protected:
+ void freeText ();
+ char* text;
+};
+
+//-----------------------------------------------------------------------------
+// CTextEdit Declaration
+//! a text edit control
+//-----------------------------------------------------------------------------
+class CTextEdit : public CParamDisplay
+{
+public:
+ CTextEdit (const CRect &size, CControlListener *listener, long tag, const char *txt = 0,
+ CBitmap *background = 0, const long style = 0);
+ virtual ~CTextEdit ();
+
+ virtual void setText (char *txt);
+ virtual void getText (char *txt) const;
+
+ virtual void draw (CDrawContext *pContext);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+
+ virtual void setTextEditConvert (void (*editConvert) (char *input, char *string));
+ virtual void setTextEditConvert (void (*editConvert2) (char *input, char *string,
+ void *userDta), void *userData);
+
+ virtual void takeFocus (CDrawContext *pContext = 0);
+ virtual void looseFocus (CDrawContext *pContext = 0);
+
+ void *platformFontColor;
+ void *platformControl;
+ bool bWasReturnPressed;
+
+ CLASS_METHODS(CTextEdit, CParamDisplay)
+
+protected:
+ void *platformFont;
+ char text[256];
+
+ void (*editConvert) (char *input, char *string);
+ void (*editConvert2) (char *input, char *string, void *userData);
+};
+
+
+//-----------------------------------------------------------------------------
+// COptionMenuScheme Declaration
+//-----------------------------------------------------------------------------
+class COptionMenuScheme : public CReferenceCounter
+{
+public:
+ COptionMenuScheme ();
+ virtual ~COptionMenuScheme ();
+
+ enum { kChecked = 0x01, kDisabled = 0x02, kSelected = 0x04, kSubMenu = 0x08, kTitle = 0x10 };
+
+ virtual void getItemSize (const char* text, CDrawContext* pContext, CPoint& size);
+ virtual void drawItem (const char* text, long itemId, long state, CDrawContext* pContext, const CRect& rect);
+
+ void setColors (CColor back, CColor select, CColor text, CColor htext, CColor dtext)
+ { backgroundColor = back; selectionColor = select; textColor = text;
+ hiliteTextColor = htext; disableTextColor = dtext;}
+
+ void setFont (CFont f) { font = f; }
+protected:
+
+ CColor backgroundColor;
+ CColor selectionColor;
+ CColor textColor;
+ CColor hiliteTextColor;
+ CColor disableTextColor;
+ CFont font;
+
+ virtual void drawItemBack (CDrawContext* pContext, const CRect& rect, bool hilite);
+};
+
+//-----------------------------------------------------------------------------
+extern COptionMenuScheme* gOptionMenuScheme;
+
+//-----------------------------------------------------------------------------
+// COptionMenu Declaration
+//! a popup menu control
+//-----------------------------------------------------------------------------
+class COptionMenu : public CParamDisplay
+{
+public:
+ COptionMenu (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background = 0, CBitmap *bgWhenClick = 0,
+ const long style = 0);
+ virtual ~COptionMenu ();
+
+ enum { MAX_ENTRY = 1024 };
+
+ virtual void setValue (float val);
+ virtual bool addEntry (COptionMenu *subMenu, char *txt);
+ virtual bool addEntry (char *txt, long index = -1);
+ virtual long getCurrent (char *txt = 0, bool countSeparator = true) const;
+ virtual bool setCurrent (long index, bool countSeparator = true);
+ virtual bool getEntry (long index, char *txt) const;
+ virtual bool setEntry (long index, char *txt);
+ virtual bool removeEntry (long index);
+ virtual bool removeAllEntry ();
+ virtual long getNbEntries () const { return nbEntries; }
+ virtual long getIndex (char *txt) const;
+
+ virtual bool checkEntry (long index, bool state);
+ virtual bool checkEntryAlone (long index);
+ virtual bool isCheckEntry (long index) const;
+
+ virtual void draw (CDrawContext *pContext);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+
+ virtual void takeFocus (CDrawContext *pContext = 0);
+ virtual void looseFocus (CDrawContext *pContext = 0);
+
+ virtual void setNbItemsPerColumn (long val) { nbItemsPerColumn = val; }
+ virtual long getNbItemsPerColumn () const { return nbItemsPerColumn; }
+
+ void setCurrentSelected (void *itemSelected);
+
+ long getLastResult () const { return lastResult; }
+ COptionMenu *getLastItemMenu (long &idxInMenu) const;
+
+ void setScheme (COptionMenuScheme* s) { scheme = s; }
+ virtual COptionMenuScheme* getScheme () const { return scheme; }
+
+ virtual void setPrefixNumbers (long preCount);
+
+ COptionMenu* getSubMenu (long idx) const;
+
+ CLASS_METHODS(COptionMenu, CParamDisplay)
+
+protected:
+ COptionMenu *getItemMenu (long idx, long &idxInMenu, long &offsetIdx);
+ void removeItems ();
+ void *appendItems (long &offsetIdx);
+
+ void *platformControl;
+
+ bool allocateMenu (long nb);
+ bool allocateSubMenu (long nb);
+
+ char **entry;
+ COptionMenu **submenuEntry;
+ bool *check;
+
+ void *itemWidget[MAX_ENTRY];
+
+ long nbEntries;
+ long nbSubMenus;
+ long currentIndex;
+ CBitmap *bgWhenClick;
+ long lastButton;
+ long nbItemsPerColumn;
+ long nbAllocated;
+ long nbSubMenuAllocated;
+ long lastResult;
+ long prefixNumbers;
+ COptionMenu *lastMenu;
+ COptionMenuScheme* scheme;
+};
+
+
+//-----------------------------------------------------------------------------
+// CKnob Declaration
+//! a knob control
+//-----------------------------------------------------------------------------
+class CKnob : public CControl
+{
+public:
+ CKnob (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CBitmap *handle, const CPoint &offset);
+ virtual ~CKnob ();
+
+ virtual void draw (CDrawContext *pContext);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+ virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance);
+ virtual long onKeyDown (VstKeyCode& keyCode);
+
+ virtual void drawHandle (CDrawContext *pContext);
+
+ virtual void setStartAngle (float val);
+ virtual float getStartAngle () const { return startAngle; }
+
+ virtual void setRangeAngle (float val);
+ virtual float getRangeAngle () const { return rangeAngle; }
+
+ virtual void valueToPoint (CPoint &point) const;
+ virtual float valueFromPoint (CPoint &point) const;
+
+ virtual void setInsetValue (long val) { inset = val; }
+
+ virtual void setColorShadowHandle (CColor color);
+ virtual void setColorHandle (CColor color);
+
+ virtual void setHandleBitmap (CBitmap *bitmap);
+
+ virtual void setZoomFactor (float val) { zoomFactor = val; }
+ virtual float getZoomFactor () const { return zoomFactor; }
+
+ CLASS_METHODS(CKnob, CControl)
+
+protected:
+ void compute ();
+
+ CPoint offset;
+ CColor colorHandle, colorShadowHandle;
+
+ CBitmap *pHandle;
+ long inset;
+ float startAngle, rangeAngle, halfAngle;
+ float aCoef, bCoef;
+ float radius;
+ float zoomFactor;
+};
+
+//-----------------------------------------------------------------------------
+// CAnimKnob Declaration
+//! a bitmap knob control
+//-----------------------------------------------------------------------------
+class CAnimKnob : public CKnob
+{
+public:
+ CAnimKnob (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CPoint &offset);
+ CAnimKnob (const CRect &size, CControlListener *listener, long tag,
+ long subPixmaps, // number of subPixmaps
+ CCoord heightOfOneImage, // pixel
+ CBitmap *background, CPoint &offset);
+ virtual ~CAnimKnob ();
+
+ virtual bool isDirty () const;
+
+ virtual void draw (CDrawContext* pContext);
+
+ void setInverseBitmap (bool val) { bInverseBitmap = val; }
+
+ CLASS_METHODS(CAnimKnob, CKnob)
+
+protected:
+ long subPixmaps; // number of subPixmaps
+ CCoord heightOfOneImage;
+ bool bInverseBitmap;
+ CPoint lastDrawnPoint;
+};
+
+//-----------------------------------------------------------------------------
+// CVerticalSwitch Declaration
+//! a vertical switch control
+//-----------------------------------------------------------------------------
+class CVerticalSwitch : public CControl
+{
+public:
+ CVerticalSwitch (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CPoint &offset);
+ CVerticalSwitch (const CRect &size, CControlListener *listener, long tag,
+ long subPixmaps, // number of subPixmaps
+ CCoord heightOfOneImage, // pixel
+ long iMaxPositions,
+ CBitmap *background, CPoint &offset);
+ virtual ~CVerticalSwitch ();
+
+ virtual void draw (CDrawContext*);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+
+ CLASS_METHODS(CVerticalSwitch, CControl)
+
+protected:
+ CPoint offset;
+ long subPixmaps; // number of subPixmaps
+ CCoord heightOfOneImage;
+ long iMaxPositions;
+};
+
+
+//-----------------------------------------------------------------------------
+// CHorizontalSwitch Declaration
+//! a horizontal switch control
+//-----------------------------------------------------------------------------
+class CHorizontalSwitch : public CControl
+{
+public:
+ CHorizontalSwitch (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CPoint &offset);
+ CHorizontalSwitch (const CRect &size, CControlListener *listener, long tag,
+ long subPixmaps, // number of subPixmaps
+ CCoord heightOfOneImage, // pixel
+ long iMaxPositions,
+ CBitmap *background, CPoint &offset);
+ virtual ~CHorizontalSwitch ();
+
+ virtual void draw (CDrawContext*);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+
+ CLASS_METHODS(CHorizontalSwitch, CControl)
+
+protected:
+ CPoint offset;
+ long subPixmaps; // number of subPixmaps
+ long iMaxPositions;
+ CCoord heightOfOneImage;
+};
+
+
+//-----------------------------------------------------------------------------
+// CRockerSwitch Declaration
+//! a switch control with 3 sub bitmaps
+//-----------------------------------------------------------------------------
+class CRockerSwitch : public CControl
+{
+public:
+ CRockerSwitch (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CPoint &offset, const long style = kHorizontal);
+ CRockerSwitch (const CRect &size, CControlListener *listener, long tag,
+ CCoord heightOfOneImage, // pixel
+ CBitmap *background, CPoint &offset, const long style = kHorizontal);
+ virtual ~CRockerSwitch ();
+
+ virtual void draw (CDrawContext*);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+ virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance);
+
+ CLASS_METHODS(CRockerSwitch, CControl)
+
+protected:
+ CPoint offset;
+ CCoord heightOfOneImage;
+ long style;
+};
+
+
+//-----------------------------------------------------------------------------
+// CMovieBitmap Declaration
+//! a bitmap control that displays different bitmaps according to its current value
+//-----------------------------------------------------------------------------
+class CMovieBitmap : public CControl
+{
+public:
+ CMovieBitmap (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CPoint &offset);
+ CMovieBitmap (const CRect &size, CControlListener *listener, long tag,
+ long subPixmaps, // number of subPixmaps
+ CCoord heightOfOneImage, // pixel
+ CBitmap *background, CPoint &offset);
+ virtual ~CMovieBitmap ();
+
+ virtual void draw (CDrawContext*);
+
+ CLASS_METHODS(CMovieBitmap, CControl)
+
+protected:
+ CPoint offset;
+ long subPixmaps; // number of subPixmaps
+ CCoord heightOfOneImage;
+};
+
+
+//-----------------------------------------------------------------------------
+// CMovieButton Declaration
+//! a bi-states button with 2 subbitmaps
+//-----------------------------------------------------------------------------
+class CMovieButton : public CControl
+{
+public:
+ CMovieButton (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CPoint &offset);
+ CMovieButton (const CRect &size, CControlListener *listener, long tag,
+ CCoord heightOfOneImage, // pixel
+ CBitmap *background, CPoint &offset);
+ virtual ~CMovieButton ();
+
+ virtual void draw (CDrawContext*);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+
+ CLASS_METHODS(CMovieButton, CControl)
+
+protected:
+ CPoint offset;
+ CCoord heightOfOneImage;
+ float buttonState;
+};
+
+
+//-----------------------------------------------------------------------------
+// CAutoAnimation Declaration
+//!
+//-----------------------------------------------------------------------------
+class CAutoAnimation : public CControl
+{
+public:
+ CAutoAnimation (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CPoint &offset);
+ CAutoAnimation (const CRect &size, CControlListener *listener, long tag,
+ long subPixmaps, // number of subPixmaps...
+ CCoord heightOfOneImage, // pixel
+ CBitmap *background, CPoint &offset);
+ virtual ~CAutoAnimation ();
+
+ virtual void draw (CDrawContext*);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+
+ virtual void openWindow (void);
+ virtual void closeWindow (void);
+
+ virtual void nextPixmap (void);
+ virtual void previousPixmap (void);
+
+ bool isWindowOpened () const { return bWindowOpened; }
+
+ CLASS_METHODS(CAutoAnimation, CControl)
+
+protected:
+ CPoint offset;
+
+ long subPixmaps;
+ CCoord heightOfOneImage;
+ CCoord totalHeightOfBitmap;
+
+ bool bWindowOpened;
+};
+
+
+//-----------------------------------------------------------------------------
+// CSlider Declaration
+//! a slider control
+//-----------------------------------------------------------------------------
+class CSlider : public CControl
+{
+public:
+ CSlider (const CRect &size, CControlListener *listener, long tag,
+ long iMinPos, // min position in pixel
+ long iMaxPos, // max position in pixel
+ CBitmap *handle, // handle bitmap
+ CBitmap *background, // background bitmap
+ CPoint &offset, // offset in the background
+ const long style = kLeft|kHorizontal); // style (kBottom,kRight,kTop,kLeft,kHorizontal,kVertical)
+
+ CSlider (const CRect &rect, CControlListener *listener, long tag,
+ CPoint &offsetHandle, // handle offset
+ long rangeHandle, // size of handle range
+ CBitmap *handle, // handle bitmap
+ CBitmap *background, // background bitmap
+ CPoint &offset, // offset in the background
+ const long style = kLeft|kHorizontal); // style (kBottom,kRight,kTop,kLeft,kHorizontal,kVertical)
+
+ virtual ~CSlider ();
+
+ virtual bool attached (CView *parent);
+ virtual bool removed (CView *parent);
+ virtual void draw (CDrawContext*);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+ virtual bool onWheel (CDrawContext *pContext, const CPoint &where, float distance);
+ virtual long onKeyDown (VstKeyCode& keyCode);
+
+ virtual void setDrawTransparentHandle (bool val) { bDrawTransparentEnabled = val; }
+ virtual void setFreeClick (bool val) { bFreeClick = val; }
+ virtual bool getFreeClick () const { return bFreeClick; }
+ virtual void setOffsetHandle (CPoint &val);
+
+ virtual void setHandle (CBitmap* pHandle);
+ virtual CBitmap *getHandle () const { return pHandle; }
+
+ virtual void setZoomFactor (float val) { zoomFactor = val; }
+ virtual float getZoomFactor () const { return zoomFactor; }
+
+ CLASS_METHODS(CSlider, CControl)
+
+protected:
+ CPoint offset;
+ CPoint offsetHandle;
+
+ CBitmap *pHandle;
+ COffscreenContext *pOScreen;
+
+ long style;
+
+ CCoord widthOfSlider; // size of the handle-slider
+ CCoord heightOfSlider;
+ CCoord rangeHandle;
+ CCoord minTmp;
+ CCoord maxTmp;
+ CCoord minPos;
+ CCoord widthControl;
+ CCoord heightControl;
+ float zoomFactor;
+
+ bool bDrawTransparentEnabled;
+ bool bFreeClick;
+};
+
+//-----------------------------------------------------------------------------
+// CVerticalSlider Declaration
+//! a vertical slider control
+//-----------------------------------------------------------------------------
+class CVerticalSlider : public CSlider
+{
+public:
+ CVerticalSlider (const CRect &size, CControlListener *listener, long tag,
+ long iMinPos, // min Y position in pixel
+ long iMaxPos, // max Y position in pixel
+ CBitmap *handle, // bitmap slider
+ CBitmap *background, // bitmap background
+ CPoint &offset, // offset in the background
+ const long style = kBottom); // style (kBottom, kTop))
+
+ CVerticalSlider (const CRect &rect, CControlListener *listener, long tag,
+ CPoint &offsetHandle, // handle offset
+ long rangeHandle, // size of handle range
+ CBitmap *handle, // bitmap of slider
+ CBitmap *background, // bitmap of background
+ CPoint &offset, // offset in the background
+ const long style = kBottom); // style (kBottom, kTop)
+};
+
+//-----------------------------------------------------------------------------
+// CHorizontalSlider Declaration
+//! a horizontal slider control
+//-----------------------------------------------------------------------------
+class CHorizontalSlider : public CSlider
+{
+public:
+ CHorizontalSlider (const CRect &size, CControlListener *listener, long tag,
+ long iMinPos, // min X position in pixel
+ long iMaxPos, // max X position in pixel
+ CBitmap *handle, // bitmap slider
+ CBitmap *background, // bitmap background
+ CPoint &offset, // offset in the background
+ const long style = kRight); // style (kRight, kLeft)
+
+ CHorizontalSlider (const CRect &rect, CControlListener *listener, long tag,
+ CPoint &offsetHandle, // handle offset
+ long rangeHandle, // size of handle range
+ CBitmap *handle, // bitmap of slider
+ CBitmap *background, // bitmap of background
+ CPoint &offset, // offset in the background
+ const long style = kRight); // style (kRight, kLeft)
+};
+
+
+//-----------------------------------------------------------------------------
+// CSpecialDigit Declaration
+//! special display with custom numbers (0...9)
+//-----------------------------------------------------------------------------
+class CSpecialDigit : public CControl
+{
+public:
+ CSpecialDigit (const CRect &size, CControlListener *listener, long tag, // tag identifier
+ long dwPos, // actual value
+ long iNumbers, // amount of numbers (max 7)
+ long *xpos, // array of all XPOS
+ long *ypos, // array of all YPOS
+ long width, // width of ONE number
+ long height, // height of ONE number
+ CBitmap *background); // bitmap numbers
+ virtual ~CSpecialDigit ();
+
+ virtual void draw (CDrawContext*);
+
+ virtual float getNormValue (void) const;
+
+ CLASS_METHODS(CSpecialDigit, CControl)
+
+protected:
+ long iNumbers; // amount of numbers
+ long xpos[7]; // array of all XPOS, max 7 possible
+ long ypos[7]; // array of all YPOS, max 7 possible
+ long width; // width of ONE number
+ long height; // height of ONE number
+};
+
+
+//-----------------------------------------------------------------------------
+// CKickButton Declaration
+//!
+//-----------------------------------------------------------------------------
+class CKickButton : public CControl
+{
+public:
+ CKickButton (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background, CPoint &offset);
+ CKickButton (const CRect &size, CControlListener *listener, long tag,
+ CCoord heightOfOneImage, // pixel
+ CBitmap *background, CPoint &offset);
+ virtual ~CKickButton ();
+
+ virtual void draw (CDrawContext*);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+
+ CLASS_METHODS(CKickButton, CControl)
+
+protected:
+ CPoint offset;
+ CCoord heightOfOneImage;
+};
+
+
+//-----------------------------------------------------------------------------
+// CSplashScreen Declaration
+//!
+//-----------------------------------------------------------------------------
+class CSplashScreen : public CControl
+{
+public:
+ CSplashScreen (const CRect &size, CControlListener *listener, long tag,
+ CBitmap *background,
+ CRect &toDisplay,
+ CPoint &offset);
+ virtual ~CSplashScreen ();
+
+ virtual void draw (CDrawContext*);
+ virtual bool hitTest (const CPoint& where, const long buttons = -1);
+ virtual void mouse (CDrawContext *pContext, CPoint &where, long button = -1);
+ virtual void unSplash ();
+
+ void setBitmapTransparency (unsigned char transparency);
+
+ CLASS_METHODS(CSplashScreen, CControl)
+
+protected:
+ CRect toDisplay;
+ CRect keepSize;
+ CPoint offset;
+ unsigned char bitmapTransparency;
+};
+
+
+//-----------------------------------------------------------------------------
+// CVuMeter Declaration
+//!
+//-----------------------------------------------------------------------------
+class CVuMeter : public CControl
+{
+public:
+ CVuMeter (const CRect& size, CBitmap *onBitmap, CBitmap *offBitmap,
+ long nbLed, const long style = kVertical);
+ virtual ~CVuMeter ();
+
+ virtual void setDecreaseStepValue (float value) { decreaseValue = value; }
+
+ virtual bool attached (CView *parent);
+ virtual bool removed (CView *parent);
+ virtual void draw (CDrawContext *pContext);
+ virtual void setDirty (const bool val = true);
+
+ void setUseOffscreen (bool val = true);
+ bool getUseOffscreen () const { return bUseOffscreen; }
+
+ CLASS_METHODS(CVuMeter, CControl)
+
+protected:
+ CBitmap *onBitmap;
+ CBitmap *offBitmap;
+ COffscreenContext *pOScreen;
+
+ long nbLed;
+ long style;
+ float decreaseValue;
+ bool bUseOffscreen;
+
+ CRect rectOn;
+ CRect rectOff;
+};
+
+
+#if !PLUGGUI
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+class CFileSelector
+{
+public:
+ CFileSelector (AudioEffectX* effect);
+ virtual ~CFileSelector ();
+
+ long run (VstFileSelect *vstFileSelect);
+
+protected:
+ AudioEffectX* effect;
+ VstFileSelect *vstFileSelect;
+};
+#endif
+
+} // namespace VSTGUI
+
+#endif // __vstcontrol__