Mercurial > hg > ambi-plugin
view Source/GUI.cpp @ 0:2fa9c10568d1
Initial setup.
author | martinm_home <martin.morrell@eecs.qmul.ac.uk> |
---|---|
date | Tue, 14 Aug 2012 09:34:15 +0100 |
parents | |
children | 503cbcdd0b2a |
line wrap: on
line source
//----------------------------------------------------------------------------- // VSTGUI: Graphical User Interface Framework for VST plugins : // // Version 3.5 // //----------------------------------------------------------------------------- // VSTGUI LICENSE // © 2008, 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. //----------------------------------------------------------------------------- #include "GUI.h" #include <stdio.h> #include <vstgui.h> //------------------------------------------------------------------------------------ AEffGUIEditor* createEditor (AudioEffectX* effect) { return new MyEditor (effect); } //------------------------------------------------------------------------------------ MyEditor::MyEditor (void* ptr) : AEffGUIEditor (ptr) { //CBitmap* plugin_background = new CBitmap ("icme_plugin.png"); rect.left = 0; rect.top = 0; rect.right = 545;//plugin_background->getWidth (); rect.bottom = 360;//plugin_background->getHeight (); } //------------------------------------------------------------------------------------ bool MyEditor::open (void* ptr) { //Knob Images knob_360 = new CBitmap ("360_knob.png"); knob_red = new CBitmap ("red_knob.png"); knob_blue = new CBitmap ("blue_knob.png"); knob_red_blue = new CBitmap ("red_blue_knob.png"); knob_mode2 = new CBitmap ("mode2_knob.png"); knob_mode4 = new CBitmap ("mode4_knob.png"); bRotations = new CBitmap ("rotations.png"); bZoom = new CBitmap ("zoom.png"); bStereo = new CBitmap ("stereo.png"); bName = new CBitmap ("my_name.png"); //-- first we create the frame //CBitmap* plugin_background = new CBitmap ("icme_plugin.png"); //CRect frameSize (0, 0, plugin_background->getWidth (), plugin_background->getHeight ()); frameSize (0, 0, 545, 360); CFrame* newFrame = new CFrame (frameSize, ptr, this); newFrame->setBackgroundColor (CColor(23,25,26,255)); //CColor(47,51,53,255) //-- IMPLEMENTATION OF SWITCHES AND KNOBS --// //-- TEXT DISPLAYES FOR SWITCHES AND KNOBS --// kDisplayText = CColor(255,255,255,255);//(R,G,B,Alpha) kDisplayBackground = CColor(94,102,106,255);//(R,G,B,Alpha) kLabelText = CColor(82,116,193,255);//(R,G,B,Alpha) kBlank = CColor(0,0,0,0); textDepth = 15; textDepthLarge = 20; labelOffset = -20; displayOffset = 7; //Transforms int transformsSep = 25; int transformsHoz = transformsSep; int transformsEl = 50; transformsDisplay(transformsHoz, transformsEl, transformsSep, newFrame); //Zooming //int zoomHoz = transformsHoz+ 0.5*(knob_red_blue->getWidth()+transformsSep); //int zoomEl = transformsEl + textDepth + textDepthLarge + knob_red_blue->getHeight()/110+ 40 ; int zoomHoz = transformsHoz + 3*knob_red_blue->getWidth() + 6*transformsSep; int zoomEl = transformsEl; int zoomSep = transformsSep; zoomDisplay(zoomHoz, zoomEl, zoomSep, newFrame); //Stereo Decoding int stereoHoz = transformsHoz; int stereoEl = transformsEl + knob_mode2->getHeight()/2 + displayOffset + textDepth + 2*transformsSep; int stereoSep = transformsSep; stereoDisplay(stereoHoz, stereoEl, stereoSep, newFrame); //My Name nameDisplay(stereoHoz, stereoEl, stereoSep, newFrame); //Stereo Plot // CRect size (20, 150, 50, 180); // CPoint offset (0, 0); // CBitmap* hPolarPlot = new CBitmap ("pink.png"); //PolarPlot = new MyPlot(mySize, this, 0, pink, offset); //PolarPlot = new MyPlot; //Forget Images knob_360->forget(); knob_red->forget(); knob_blue->forget(); knob_red_blue->forget(); knob_mode2->forget(); knob_mode4->forget(); bRotations->forget (); bZoom->forget (); bStereo->forget (); bName->forget (); //-- remember our controls so that we can sync them with the state of the effect controls[kRotate] = knobRotate; controls[kTilt] = knobTilt; controls[kTumble] = knobTumble; controls[kZoomMethod] = knobZoomMethod; controls[kZoom] = knobZoom; controls[kWidth] = knobWidth; controls[kPattern] = knobPattern; controls[kMode] = knobMode; controls[kRearVerb] = knobRearVerb; controls[kHiVerb] = knobHiVerb; //newFrame->addView (new LineStyleTestView (CRect (0, 0, 0, 0))); //-- set the member frame to the newly created frame //-- we do it this way because it is possible that the setParameter method is called //-- in between of constructing the frame and it's controls frame = newFrame; //-- sync parameters for (int i = 0; i < kNumParameters; i++) setParameter (i, effect->getParameter (i)); return true; } //------------------------------------------------------------------------------------ void MyEditor::close () { //-- on close we need to delete the frame object. //-- once again we make sure that the member frame variable is set to zero before we delete it //-- so that calls to setParameter won't crash. } //------------------------------------------------------------------------------------ void MyEditor::transformsDisplay(int &transformsHoz, int &transformsEl, int &transformsSep, CFrame* newFrame) { CRect transSize = CRect (0, 0, bRotations->getWidth (),bRotations->getHeight ()); transSize.offset(transformsHoz-transformsSep/2, transformsEl+labelOffset-textDepthLarge); CView* transforms_view = new CView (transSize); transforms_view->setBackground (bRotations); newFrame->addView (transforms_view); //Rotate r (0, 0, knob_red_blue->getWidth (), knob_red_blue->getHeight () / 101); r.offset(transformsHoz, transformsEl); knobRotate = new CAnimKnob (r, this, kRotate, 101, knob_360->getHeight () / 101, knob_360, CPoint (0, 0));//101, 64, newFrame->addView (knobRotate); //knobRotate->forget (); //Tilt r.offset(knob_red_blue->getWidth()+transformsSep, 0); knobTilt = new CAnimKnob (r, this, kTilt, 101, knob_360->getHeight () / 101, knob_360, CPoint (0, 0)); newFrame->addView (knobTilt); //knobTilt->forget (); //Tumble r.offset(knob_red_blue->getWidth()+transformsSep, 0); knobTumble = new CAnimKnob (r, this, kTumble, 101, knob_360->getHeight () / 101, knob_360, CPoint (0, 0)); newFrame->addView (knobTumble); //knobTumble->forget (); //--CTextLabel-------------------------------------- //Label Rotate LabelSize (0, 0, knob_red_blue->getWidth (), textDepth); LabelSize.offset (transformsHoz, transformsEl+labelOffset); CTextLabel* labelRotate = new CTextLabel (LabelSize, 0, 0, kCenterText); labelRotate->setFont (kNormalFontSmall); labelRotate->setFontColor (kLabelText); labelRotate->setBackColor (kBlank); labelRotate->setFrameColor (kBlank); labelRotate->setText("Rotate"); newFrame->addView (labelRotate); //Label Tilt LabelSize.offset (knob_red_blue->getWidth()+transformsSep, 0); CTextLabel* labelTilt = new CTextLabel (LabelSize, 0, 0, kCenterText); labelTilt->setFont (kNormalFontSmall); labelTilt->setFontColor (kLabelText); labelTilt->setBackColor (kBlank); labelTilt->setFrameColor (kBlank); labelTilt->setText("Tilt"); newFrame->addView (labelTilt); //Label Tumble LabelSize.offset (knob_red_blue->getWidth()+transformsSep, 0); CTextLabel* labelTumble = new CTextLabel (LabelSize, 0, 0, kCenterText); labelTumble->setFont (kNormalFontSmall); labelTumble->setFontColor (kLabelText); labelTumble->setBackColor (kBlank); labelTumble->setFrameColor (kBlank); labelTumble->setText("Tumble"); newFrame->addView (labelTumble); //Label Section LabelSize (0, 0, knob_red_blue->getWidth ()*3 + transformsSep*2, textDepthLarge); LabelSize.offset (transformsHoz, transformsEl+labelOffset - textDepthLarge); CTextLabel* labelTransforms = new CTextLabel (LabelSize, 0, 0, kCenterText); labelTransforms->setFont (kNormalFontBig); labelTransforms->setFontColor (kLabelText); labelTransforms->setBackColor (kBlank); labelTransforms->setFrameColor (kBlank); labelTransforms->setText("Transforms"); newFrame->addView (labelTransforms); //--CTextLabel-------------------------------------- //Rotate Value DisplaySize (0, 0, knob_red_blue->getWidth (), textDepth); DisplaySize.offset (transformsHoz, transformsEl+knob_red_blue->getHeight()/110+displayOffset); paramRotate = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramRotate->setHoriAlign(kCenterText); paramRotate->setFont (kNormalFontVerySmall); paramRotate->setFontColor (kDisplayText); paramRotate->setBackColor (kDisplayBackground); paramRotate->setFrameColor (kBlackCColor); newFrame->addView (paramRotate); paramRotate->setText("TEST"); //Tilt Value DisplaySize.offset (knob_red_blue->getWidth()+transformsSep, 0); paramTilt = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramTilt->setHoriAlign(kCenterText); paramTilt->setFont (kNormalFontVerySmall); paramTilt->setFontColor (kDisplayText); paramTilt->setBackColor (kDisplayBackground); paramTilt->setFrameColor (kBlackCColor); newFrame->addView (paramTilt); //Tumble Value DisplaySize.offset (knob_red_blue->getWidth()+transformsSep, 0); paramTumble = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramTumble->setHoriAlign(kCenterText); paramTumble->setFont (kNormalFontVerySmall); paramTumble->setFontColor (kDisplayText); paramTumble->setBackColor (kDisplayBackground); paramTumble->setFrameColor (kBlackCColor); newFrame->addView (paramTumble); } //------------------------------------------------------------------------------------ void MyEditor::zoomDisplay(int &zoomHoz, int &zoomEl, int &zoomSep, CFrame* newFrame) { CRect zoomSize = CRect (0, 0, bZoom->getWidth (),bZoom->getHeight ()); zoomSize.offset(zoomHoz-zoomSep/2, zoomEl+labelOffset-textDepthLarge); CView* zoom_view = new CView (zoomSize); zoom_view->setBackground (bZoom); newFrame->addView (zoom_view); //ZoomMethod CRect r (0, 0, knob_red_blue->getWidth (), knob_red_blue->getHeight () / 101); r.offset(zoomHoz, zoomEl); knobZoomMethod = new CHorizontalSwitch (r, this, kZoomMethod, 4, knob_mode4->getHeight () / 4, 4, knob_mode4, CPoint (0, 0)); newFrame->addView (knobZoomMethod); //knobZoomMethod->forget (); //Zoom r.offset(knob_mode4->getWidth()+zoomSep, 0); knobZoom = new CAnimKnob (r, this, kZoom, 101, knob_red_blue->getHeight () / 101, knob_red_blue, CPoint (0, 0)); newFrame->addView (knobZoom); //knobZoom->forget (); //--CTextLabel-------------------------------------- //Label ZoomMethod LabelSize (0, 0, knob_red_blue->getWidth (), textDepth); LabelSize.offset (zoomHoz, zoomEl+labelOffset); CTextLabel* labelZoomMethod = new CTextLabel (LabelSize, 0, 0, kCenterText); labelZoomMethod->setFont (kNormalFontSmall); labelZoomMethod->setFontColor (kLabelText); labelZoomMethod->setBackColor (kBlank); labelZoomMethod->setFrameColor (kBlank); labelZoomMethod->setText("Zoom Type"); newFrame->addView (labelZoomMethod); //Label Zoom LabelSize.offset (knob_mode4->getWidth()+zoomSep, 0); CTextLabel* labelZoom = new CTextLabel (LabelSize, 0, 0, kCenterText); labelZoom->setFont (kNormalFontSmall); labelZoom->setFontColor (kLabelText); labelZoom->setBackColor (kBlank); labelZoom->setFrameColor (kBlank); labelZoom->setText("Zoom"); newFrame->addView (labelZoom); //Label Section LabelSize (0, 0, knob_red_blue->getWidth ()*2 + zoomSep*1, textDepthLarge); LabelSize.offset (zoomHoz, zoomEl+labelOffset - textDepthLarge); CTextLabel* labelTransforms = new CTextLabel (LabelSize, 0, 0, kCenterText); labelTransforms->setFont (kNormalFontBig); labelTransforms->setFontColor (kLabelText); labelTransforms->setBackColor (kBlank); labelTransforms->setFrameColor (kBlank); labelTransforms->setText("Zooming"); newFrame->addView (labelTransforms); //--CTextLabel-------------------------------------- //Zoom Method DisplaySize (0, 0, knob_red_blue->getWidth (), textDepth); DisplaySize.offset (zoomHoz, zoomEl+knob_red_blue->getHeight()/110+displayOffset); paramZoomMethod = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramZoomMethod->setHoriAlign(kCenterText); paramZoomMethod->setFont (kNormalFontVerySmall); paramZoomMethod->setFontColor (kDisplayText); paramZoomMethod->setBackColor (kDisplayBackground); paramZoomMethod->setFrameColor (kBlackCColor); newFrame->addView (paramZoomMethod); //Zoom Value DisplaySize.offset (knob_red_blue->getWidth()+zoomSep, 0); paramZoom = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramZoom->setHoriAlign(kCenterText); paramZoom->setFont (kNormalFontVerySmall); paramZoom->setFontColor (kDisplayText); paramZoom->setBackColor (kDisplayBackground); paramZoom->setFrameColor (kBlackCColor); newFrame->addView (paramZoom); } //------------------------------------------------------------------------------------ void MyEditor::stereoDisplay(int &stereoHoz, int &stereoEl, int &stereoSep, CFrame* newFrame) { CRect stereoSize = CRect (0, 0, bStereo->getWidth (),bStereo->getHeight ()); stereoSize.offset(stereoHoz-stereoSep/2, stereoEl+labelOffset-textDepthLarge); CView* stereo_view = new CView (stereoSize); stereo_view->setBackground (bStereo); newFrame->addView (stereo_view); //Mode r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2); r.offset(stereoHoz, stereoEl); knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0)); newFrame->addView (knobMode); //knobMode->forget (); //Width r.offset(knob_mode2->getWidth()+stereoSep, 0); knobWidth = new CAnimKnob (r, this, kWidth, 101, knob_red->getHeight () / 101, knob_red, CPoint (0, 0)); newFrame->addView (knobWidth); //knobWidth->forget (); //Pattern r.offset(knob_red_blue->getWidth()+stereoSep, 0); knobPattern = new CAnimKnob (r, this, kPattern, 101, knob_blue->getHeight () / 101, knob_blue, CPoint (0, 0)); newFrame->addView (knobPattern); //knobPattern->forget (); //RearVerb r.offset(knob_mode2->getWidth()+stereoSep*4, 0); knobRearVerb = new CAnimKnob (r, this, kRearVerb, 101, knob_red_blue->getHeight () / 101, knob_red, CPoint (0, 0)); newFrame->addView (knobRearVerb); //knobRearVerb->forget (); //HiVerb r.offset(knob_red_blue->getWidth()+stereoSep, 0); knobHiVerb = new CAnimKnob (r, this, kHiVerb, 101, knob_red_blue->getHeight () / 101, knob_blue, CPoint (0, 0)); newFrame->addView (knobHiVerb); //knobHiVerb->forget (); //--CTextLabel-------------------------------------- //Label Mode LabelSize (0, 0, knob_red_blue->getWidth (), textDepth); LabelSize.offset (stereoHoz, stereoEl+labelOffset); CTextLabel* labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText); labelMode->setFont (kNormalFontSmall); labelMode->setFontColor (kLabelText); labelMode->setBackColor (kBlank); labelMode->setFrameColor (kBlank); labelMode->setText("Mode"); newFrame->addView (labelMode); //Label Width LabelSize.offset (knob_red_blue->getWidth()+stereoSep, 0); CTextLabel* labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText); labelWidth->setFont (kNormalFontSmall); labelWidth->setFontColor (kLabelText); labelWidth->setBackColor (kBlank); labelWidth->setFrameColor (kBlank); labelWidth->setText("Width"); newFrame->addView (labelWidth); //Label Pattern LabelSize.offset (knob_red_blue->getWidth()+stereoSep, 0); CTextLabel* labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText); labelPattern->setFont (kNormalFontSmall); labelPattern->setFontColor (kLabelText); labelPattern->setBackColor (kBlank); labelPattern->setFrameColor (kBlank); labelPattern->setText("Pattern"); newFrame->addView (labelPattern); //Label RearVerb LabelSize.offset (knob_red_blue->getWidth()+stereoSep*4, 0); CTextLabel* labelRearVerb = new CTextLabel (LabelSize, 0, 0, kCenterText); labelRearVerb->setFont (kNormalFontSmall); labelRearVerb->setFontColor (kLabelText); labelRearVerb->setBackColor (kBlank); labelRearVerb->setFrameColor (kBlank); labelRearVerb->setText("RearVerb"); newFrame->addView (labelRearVerb); //Label HiVerb LabelSize.offset (knob_red_blue->getWidth()+stereoSep, 0); CTextLabel* labelHiVerb = new CTextLabel (LabelSize, 0, 0, kCenterText); labelHiVerb->setFont (kNormalFontSmall); labelHiVerb->setFontColor (kLabelText); labelHiVerb->setBackColor (kBlank); labelHiVerb->setFrameColor (kBlank); labelHiVerb->setText("HiVerb"); newFrame->addView (labelHiVerb); //Label Section LabelSize (0, 0, knob_red_blue->getWidth ()*5 + stereoSep*7, textDepthLarge); LabelSize.offset (stereoHoz, stereoEl+labelOffset - textDepthLarge); CTextLabel* labelStereo = new CTextLabel (LabelSize, 0, 0, kCenterText); labelStereo->setFont (kNormalFontBig); labelStereo->setFontColor (kLabelText); labelStereo->setBackColor (kBlank); labelStereo->setFrameColor (kBlank); labelStereo->setText("Stereo Decoding & Reverb"); newFrame->addView (labelStereo); //--CTextLabel-------------------------------------- //Mode Value DisplaySize (0, 0, knob_red_blue->getWidth (), textDepth); DisplaySize.offset (stereoHoz, stereoEl+knob_red_blue->getHeight()/110+displayOffset); paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramMode->setHoriAlign(kCenterText); paramMode->setFont (kNormalFontVerySmall); paramMode->setFontColor (kDisplayText); paramMode->setBackColor (kDisplayBackground); paramMode->setFrameColor (kBlackCColor); newFrame->addView (paramMode); paramMode->forget(); //Width Value DisplaySize.offset (knob_red_blue->getWidth()+stereoSep, 0); paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramWidth->setHoriAlign(kCenterText); paramWidth->setFont (kNormalFontVerySmall); paramWidth->setFontColor (kDisplayText); paramWidth->setBackColor (kDisplayBackground); paramWidth->setFrameColor (kBlackCColor); newFrame->addView (paramWidth); paramWidth->forget(); //Pattern Value DisplaySize.offset (knob_red_blue->getWidth()+stereoSep, 0); paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramPattern->setHoriAlign(kCenterText); paramPattern->setFont (kNormalFontVerySmall); paramPattern->setFontColor (kDisplayText); paramPattern->setBackColor (kDisplayBackground); paramPattern->setFrameColor (kBlackCColor); newFrame->addView (paramPattern); paramPattern->forget(); //RearVerb Value DisplaySize.offset (knob_red_blue->getWidth()+stereoSep*4, 0); paramRearVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramRearVerb->setHoriAlign(kCenterText); paramRearVerb->setFont (kNormalFontVerySmall); paramRearVerb->setFontColor (kDisplayText); paramRearVerb->setBackColor (kDisplayBackground); paramRearVerb->setFrameColor (kBlackCColor); newFrame->addView (paramRearVerb); paramRearVerb->forget(); //HiVerb Value DisplaySize.offset (knob_red_blue->getWidth()+stereoSep, 0); paramHiVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramHiVerb->setHoriAlign(kCenterText); paramHiVerb->setFont (kNormalFontVerySmall); paramHiVerb->setFontColor (kDisplayText); paramHiVerb->setBackColor (kDisplayBackground); paramHiVerb->setFrameColor (kBlackCColor); newFrame->addView (paramHiVerb); paramHiVerb->forget(); //ModeStereo Value DisplaySize.offset (-7*stereoSep-4*knob_red->getWidth(), 0); paramModeStereo = new CTextLabel (DisplaySize, 0, 0, kCenterText); paramModeStereo->setHoriAlign(kCenterText); paramModeStereo->setFont (kNormalFontVerySmall); paramModeStereo->setFontColor (kDisplayText); paramModeStereo->setBackColor (kDisplayBackground); paramModeStereo->setFrameColor (kBlackCColor); newFrame->addView (paramModeStereo); paramModeStereo->forget(); } //------------------------------------------------------------------------------------ void MyEditor::nameDisplay(int &nameHoz, int &nameEl, int &nameSep, CFrame* newFrame) { CRect nameSize = CRect (0, 0, bName->getWidth (),bName->getHeight ()); nameSize.offset(nameHoz-nameSep/2, nameEl+knob_mode2->getHeight()/2+displayOffset+textDepth+nameSep/2); CView* name_view = new CView (nameSize); name_view->setBackground (bName); newFrame->addView (name_view); LabelSize (0, 0, 160, textDepth); LabelSize.offset(nameHoz, nameEl+knob_mode2->getHeight()/2+displayOffset+textDepth+nameSep/2+40); //LabelSize.offset (nameHoz, nameEl+labelOffset); CTextLabel *vendor_version = new CTextLabel(LabelSize, 0, 0, kLeftText); char text[100]; int i1=(int)floor(VERSION/1000.0); int i2= (int)floor((VERSION-i1*1000)/100.0); int i3= (int)floor((VERSION-i1*1000-i2*100)/10.0); int i4= (int)floor(VERSION-i1*1000-i2*100-i3*10); sprintf(text, "Version: %d.%d.%d.%d", i1, i2,i3,i4); vendor_version->setText(text); vendor_version->setFont (kNormalFontSmall); vendor_version->setFontColor (kLabelText); vendor_version->setHoriAlign(kLeftText); vendor_version->setBackColor (kBlank); vendor_version->setFrameColor (kBlank); newFrame->addView (vendor_version); vendor_version->forget(); LabelSize.offset(0, -20); bitMode = new CTextLabel(LabelSize, 0, 0, kLeftText); int b = effect->getParameter(50); sprintf(text,"Bit Mode: %d", b); bitMode->setText(text); bitMode->setFont (kNormalFontSmall); bitMode->setFontColor (kLabelText); bitMode->setHoriAlign(kLeftText); bitMode->setBackColor (kBlank); bitMode->setFrameColor (kBlank); newFrame->addView (bitMode); } //------------------------------------------------------------------------------------ void MyEditor::stereoPlot(int &plotHoz, int &plotEl) { } //------------------------------------------------------------------------------------ void MyEditor::suspendDisplay() { suspend = new CTextLabel(frameSize, 0, 0, kCenterText); suspend->setBackColor(CColor(23,25,26,150)); suspend->setFont (kNormalFontVeryBig); suspend->setFontColor (CColor (255,255,255,255)); suspend->setText("Currently Suspended"); getFrame()->addView (suspend); } //------------------------------------------------------------------------------------ void MyEditor::resumeDisplay() { getFrame()->removeView(suspend); } //------------------------------------------------------------------------------------ void MyEditor::valueChanged (CControl* pControl) { //-- valueChanged is called whenever the user changes one of the controls in the User Interface (UI) effect->setParameterAutomated (pControl->getTag (), pControl->getValue ()); //Change the display directly by the knob. Not accurate due to the internal parameter not being used, so the value shown and internally used might not match. setParameter (pControl->getTag (), pControl->getValue ()); } //------------------------------------------------------------------------------------ void MyEditor::setParameter (VstInt32 index, float value) { //paramModeStereo->setText("tits"); //-- setParameter is called when the host automates one of the effects parameter. //-- The UI should reflect this state so we set the value of the control to the new value. //-- VSTGUI will automaticly redraw changed controls in the next idle (as this call happens to be in the process thread). if (frame && index < kNumParameters) { //First write the value into the GUI value container controls[index]->setValue (value); //Call getParameterDisplay to get the char to display getParameterDisplay (index, &displayText); } else if (frame && index == 100) { suspendDisplay(); } else if (frame && index == 101) { resumeDisplay(); } } //------------------------------------------------------------------------ void MyEditor::getParameterDisplay (VstInt32 index, char *text) //GET display value shown for Parameters { effect->getParameterDisplay(index, text); switch (index) { case kMode : paramModeStereo->setText(text); break; case kWidth: paramWidth->setText(text); break; case kPattern: paramPattern->setText(text); break; case kRotate : paramRotate->setText(text); break; case kTilt: paramTilt->setText(text); break; case kTumble: paramTumble->setText(text); break; case kZoom: paramZoom->setText(text); break; case kZoomMethod: paramZoomMethod->setText(text); break; case kRearVerb : paramRearVerb->setText(text); break; case kHiVerb : paramHiVerb->setText(text); break; } } //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------