martin@0: //----------------------------------------------------------------------------- martin@0: // VSTGUI: Graphical User Interface Framework for VST plugins : martin@0: // martin@0: // Version 3.5 martin@0: // martin@0: //----------------------------------------------------------------------------- martin@0: // VSTGUI LICENSE martin@0: // © 2008, Steinberg Media Technologies, All Rights Reserved martin@0: //----------------------------------------------------------------------------- martin@0: // Redistribution and use in source and binary forms, with or without modification, martin@0: // are permitted provided that the following conditions are met: martin@0: // martin@0: // * Redistributions of source code must retain the above copyright notice, martin@0: // this list of conditions and the following disclaimer. martin@0: // * Redistributions in binary form must reproduce the above copyright notice, martin@0: // this list of conditions and the following disclaimer in the documentation martin@0: // and/or other materials provided with the distribution. martin@0: // * Neither the name of the Steinberg Media Technologies nor the names of its martin@0: // contributors may be used to endorse or promote products derived from this martin@0: // software without specific prior written permission. martin@0: // martin@0: // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND martin@0: // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED martin@0: // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. martin@0: // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, martin@0: // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, martin@0: // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, martin@0: // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF martin@0: // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE martin@0: // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED martin@0: // OF THE POSSIBILITY OF SUCH DAMAGE. martin@0: //----------------------------------------------------------------------------- martin@0: martin@0: #ifndef __MyEditor__ martin@0: #define __MyEditor__ martin@0: martin@0: #include "aeffguieditor.h" martin@0: #include martin@0: #include "SoundField.h" martin@0: //#include martin@0: //#include martin@0: #include "SoundFieldParameters.h" martin@0: #include "MyPlot.h" martin@0: martin@0: martin@0: class MyEditor : public AEffGUIEditor, public CControlListener martin@0: { martin@0: public: martin@0: MyEditor (void*); martin@0: martin@0: // from AEffGUIEditor martin@0: bool open (void* ptr); martin@0: void close (); martin@0: void setParameter (VstInt32 index, float value); martin@0: void setParameterAutomated(); martin@0: void getParameterDisplay (VstInt32 index, char *text); martin@0: martin@0: // from CControlListener martin@0: void valueChanged (CControl* pControl); martin@0: martin@0: martin@0: martin@0: CControl* controls[kNumParameters]; martin@0: char displayText; martin@0: martin@0: CTextLabel* paramMode; martin@0: CTextLabel* paramModeSelect; martin@0: CTextLabel* paramWidth; martin@0: CTextLabel* paramPattern; martin@0: CTextLabel* paramRotate; martin@0: CTextLabel* paramTilt; martin@0: CTextLabel* paramTumble; martin@0: CTextLabel* paramZoom; martin@0: CTextLabel* paramZoomMethod; martin@0: CTextLabel* paramRearVerb; martin@0: CTextLabel* paramHiVerb; martin@0: CTextLabel* paramModeStereo; martin@0: martin@0: martin@0: //CDrawContext* stereoPlotDraw; martin@0: martin@0: MyPlot *PolarPlot; martin@0: martin@0: martin@0: // own function martin@0: void transformsDisplay(int &transformsHoz, int &transformsEl, int &transformsSep, CFrame* newFrame); martin@0: void zoomDisplay(int &zoomHoz, int &zoomEl, int &zoomSep, CFrame* newFrame); martin@0: void stereoDisplay(int &stereoHoz, int &stereoEl, int &stereoSep, CFrame* newFrame); martin@0: void nameDisplay(int &nameHoz, int &nameEl, int &nameSep, CFrame* newFrame); martin@0: void stereoPlot(int &plotHoz, int &plotEl); martin@0: void suspendDisplay(); martin@0: void resumeDisplay(); martin@0: martin@0: martin@0: protected: martin@0: int textDepth, textDepthLarge, labelOffset, displayOffset; martin@0: martin@0: CAnimKnob *knobRotate; martin@0: CAnimKnob *knobTilt; martin@0: CAnimKnob *knobTumble; martin@0: CHorizontalSwitch *knobZoomMethod; martin@0: CAnimKnob *knobZoom; martin@0: CAnimKnob *knobWidth; martin@0: CAnimKnob *knobPattern; martin@0: CHorizontalSwitch *knobMode; martin@0: CAnimKnob *knobRearVerb; martin@0: CAnimKnob *knobHiVerb; martin@0: martin@0: CRect frameSize; martin@0: CRect DisplaySize; martin@0: CRect LabelSize; martin@0: CRect r; martin@0: martin@0: CColor kDisplayText; martin@0: CColor kDisplayBackground; martin@0: CColor kLabelText; martin@0: CColor kBlank; martin@0: martin@0: martin@0: CBitmap* knob_360; martin@0: CBitmap* knob_red; martin@0: CBitmap* knob_blue; martin@0: CBitmap* knob_red_blue; martin@0: CBitmap* knob_mode2; martin@0: CBitmap* knob_mode4; martin@0: martin@0: CBitmap *bRotations; martin@0: CBitmap *bZoom; martin@0: CBitmap *bStereo; martin@0: CBitmap *bName; martin@0: martin@0: CTextLabel* suspend; martin@0: CTextLabel* bitMode; martin@0: }; martin@0: martin@0: martin@0: martin@0: martin@0: #endif // __MyEditor__ martin@0: