annotate Source/GUI.cpp @ 13:989865d55c73 tip

Commit.
author martinm_home <martin.morrell@eecs.qmul.ac.uk>
date Thu, 27 Sep 2012 23:30:29 +0100
parents 87dc3d84c120
children
rev   line source
martin@0 1 //-----------------------------------------------------------------------------
martin@0 2 // VSTGUI: Graphical User Interface Framework for VST plugins :
martin@0 3 //
martin@0 4 // Version 3.5
martin@0 5 //
martin@0 6 //-----------------------------------------------------------------------------
martin@0 7 // VSTGUI LICENSE
martin@0 8 // © 2008, Steinberg Media Technologies, All Rights Reserved
martin@0 9 //-----------------------------------------------------------------------------
martin@0 10 // Redistribution and use in source and binary forms, with or without modification,
martin@0 11 // are permitted provided that the following conditions are met:
martin@0 12 //
martin@0 13 // * Redistributions of source code must retain the above copyright notice,
martin@0 14 // this list of conditions and the following disclaimer.
martin@0 15 // * Redistributions in binary form must reproduce the above copyright notice,
martin@0 16 // this list of conditions and the following disclaimer in the documentation
martin@0 17 // and/or other materials provided with the distribution.
martin@0 18 // * Neither the name of the Steinberg Media Technologies nor the names of its
martin@0 19 // contributors may be used to endorse or promote products derived from this
martin@0 20 // software without specific prior written permission.
martin@0 21 //
martin@0 22 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
martin@0 23 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
martin@0 24 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
martin@0 25 // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
martin@0 26 // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
martin@0 27 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
martin@0 28 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
martin@0 29 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
martin@0 30 // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
martin@0 31 // OF THE POSSIBILITY OF SUCH DAMAGE.
martin@0 32 //-----------------------------------------------------------------------------
martin@0 33
martin@0 34 #include "GUI.h"
martin@0 35 #include <stdio.h>
martin@0 36 #include <vstgui.h>
martin@7 37 #define _USE_MATH_DEFINES
martin@7 38 #include <cmath>
martin@7 39
martin@0 40
martin@0 41
martin@0 42
martin@0 43
martin@0 44 //------------------------------------------------------------------------------------
martin@0 45 AEffGUIEditor* createEditor (AudioEffectX* effect)
martin@0 46 {
martin@0 47 return new MyEditor (effect);
martin@0 48 }
martin@0 49
martin@0 50 //------------------------------------------------------------------------------------
martin@0 51 MyEditor::MyEditor (void* ptr)
martin@0 52 : AEffGUIEditor (ptr)
martin@0 53 {
martin@0 54 rect.left = 0;
martin@0 55 rect.top = 0;
martin@9 56 rect.right = 578;
martin@9 57 rect.bottom = 502;
martin@0 58 }
martin@0 59
martin@0 60 //------------------------------------------------------------------------------------
martin@0 61 bool MyEditor::open (void* ptr)
martin@0 62 {
martin@0 63 //Knob Images
martin@0 64 knob_360 = new CBitmap ("360_knob.png");
martin@0 65 knob_red = new CBitmap ("red_knob.png");
martin@0 66 knob_blue = new CBitmap ("blue_knob.png");
martin@0 67 knob_red_blue = new CBitmap ("red_blue_knob.png");
martin@9 68 knob_blue_red = new CBitmap("blue_red_knob.png");
martin@0 69 knob_mode2 = new CBitmap ("mode2_knob.png");
martin@9 70 knob_mode2b = new CBitmap ("mode2b_knob.png");
martin@0 71 knob_mode4 = new CBitmap ("mode4_knob.png");
martin@8 72 knob_mode5 = new CBitmap ("mode5_knob.png");
martin@0 73
martin@9 74 //Create the main frame
martin@9 75 frameSize (0, 0, 578, 502);
martin@0 76 CFrame* newFrame = new CFrame (frameSize, ptr, this);
martin@6 77 newFrame->setBackgroundColor (CColor(23,25,26,255));
martin@7 78 newFrame->setDirty();
martin@6 79
martin@9 80 //Set up the Colours that are used
martin@0 81 kDisplayText = CColor(255,255,255,255);//(R,G,B,Alpha)
martin@0 82 kDisplayBackground = CColor(94,102,106,255);//(R,G,B,Alpha)
martin@0 83 kLabelText = CColor(82,116,193,255);//(R,G,B,Alpha)
martin@0 84 kBlank = CColor(0,0,0,0);
martin@0 85
martin@9 86
martin@0 87
martin@0 88
martin@0 89 //Transforms
martin@9 90 transformsDisplay(newFrame);
martin@0 91
martin@0 92 //Zooming
martin@9 93 zoomDisplay(newFrame);
martin@0 94
martin@8 95 //Polar Plot
martin@9 96 plotDisplay(newFrame);
martin@7 97
martin@8 98 //Settings
martin@9 99 settingsDisplay(newFrame);
martin@7 100
martin@6 101 //Info Display
martin@9 102 nameDisplay(newFrame);
martin@0 103
martin@8 104
martin@0 105
martin@0 106
martin@9 107 //Create main frame
martin@0 108 frame = newFrame;
martin@0 109
martin@9 110
martin@0 111 //-- sync parameters
martin@10 112 myPlot->decoder_mode5x = effect->getParameter(103); //Sync the hidden 5.x decoder mode first
martin@9 113 for (int i = 0; i <= 4; i++) //Sync Transforms & Zoom
martin@9 114 setParameter (i, effect->getParameter (i));
martin@9 115 for (int i = 18; i <= 19; i++) //Sync Decoder Mode & Output Type
martin@9 116 setParameter (i, effect->getParameter (i));
martin@9 117
martin@0 118
martin@0 119 return true;
martin@0 120 }
martin@0 121
martin@0 122
martin@0 123
martin@0 124 //------------------------------------------------------------------------------------
martin@0 125 void MyEditor::close ()
martin@0 126 {
martin@10 127 knob_360->forget();
martin@10 128 knob_red->forget();
martin@10 129 knob_blue->forget();
martin@10 130 knob_red_blue->forget();
martin@10 131 knob_blue_red->forget();
martin@10 132 knob_mode2->forget();
martin@10 133 knob_mode2b->forget();
martin@10 134 knob_mode4->forget();
martin@10 135 knob_mode5->forget();
martin@10 136
martin@0 137 //-- on close we need to delete the frame object.
martin@0 138 //-- once again we make sure that the member frame variable is set to zero before we delete it
martin@0 139 //-- so that calls to setParameter won't crash.
martin@10 140 CFrame* oldFrame = frame;
martin@10 141 frame = 0;
martin@10 142 oldFrame->forget();
martin@6 143 }
martin@6 144
martin@6 145
martin@6 146
martin@6 147
martin@0 148 //------------------------------------------------------------------------------------
martin@9 149 void MyEditor::transformsDisplay(CFrame* newFrame)
martin@0 150 {
martin@9 151 //FIRST OFF - define a top coordinate
martin@9 152 int hPos = cSep;
martin@9 153 int ePos = cSep;
martin@9 154
martin@9 155
martin@9 156 bTransforms = new CBitmap ("transforms.png");
martin@9 157
martin@9 158 CRect transSize = CRect (0, 0, bTransforms->getWidth (),bTransforms->getHeight ());
martin@9 159 transSize.offset(hPos, ePos);//transformsEl+labelOffset-textDepthLarge
martin@0 160 CView* transforms_view = new CView (transSize);
martin@9 161 transforms_view->setBackground (bTransforms);
martin@0 162 newFrame->addView (transforms_view);
martin@10 163 newFrame->remember();
martin@0 164
martin@0 165 //Rotate
martin@9 166 r (0, 0, knob_red_blue->getWidth (), knob_red_blue->getHeight () / IMAGE);
martin@9 167 r.offset(hPos+cSep, ePos+kOffset);
martin@10 168 knobRotate = new CAnimKnob (r, this, kRotate, IMAGE, knob_360->getHeight () / IMAGE, knob_360, CPoint (0, 0));
martin@0 169 newFrame->addView (knobRotate);
martin@10 170 newFrame->remember();
martin@0 171
martin@0 172 //Tilt
martin@9 173 r.offset(knob_red_blue->getWidth()+cSep, 0);
martin@9 174 knobTilt = new CAnimKnob (r, this, kTilt, IMAGE, knob_360->getHeight () / IMAGE, knob_360, CPoint (0, 0));
martin@0 175 newFrame->addView (knobTilt);
martin@10 176 newFrame->remember();
martin@0 177
martin@0 178 //Tumble
martin@9 179 r.offset(knob_red_blue->getWidth()+cSep, 0);
martin@9 180 knobTumble = new CAnimKnob (r, this, kTumble, IMAGE, knob_360->getHeight () / IMAGE, knob_360, CPoint (0, 0));
martin@0 181 newFrame->addView (knobTumble);
martin@10 182 newFrame->remember();
martin@0 183
martin@9 184
martin@0 185
martin@10 186
martin@0 187
martin@0 188 //--CTextLabel--------------------------------------
martin@0 189 //Label Rotate
martin@9 190 LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 191 LabelSize.offset (hPos+cSep, ePos+lOffset);
martin@0 192 CTextLabel* labelRotate = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 193 labelRotate->setFont (kNormalFontSmall);
martin@0 194 labelRotate->setFontColor (kLabelText);
martin@0 195 labelRotate->setBackColor (kBlank);
martin@0 196 labelRotate->setFrameColor (kBlank);
martin@0 197 labelRotate->setText("Rotate");
martin@0 198 newFrame->addView (labelRotate);
martin@10 199 newFrame->remember();
martin@0 200
martin@0 201 //Label Tilt
martin@9 202 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@0 203 CTextLabel* labelTilt = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 204 labelTilt->setFont (kNormalFontSmall);
martin@0 205 labelTilt->setFontColor (kLabelText);
martin@0 206 labelTilt->setBackColor (kBlank);
martin@0 207 labelTilt->setFrameColor (kBlank);
martin@0 208 labelTilt->setText("Tilt");
martin@0 209 newFrame->addView (labelTilt);
martin@10 210 newFrame->remember();
martin@0 211
martin@0 212 //Label Tumble
martin@9 213 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@0 214 CTextLabel* labelTumble = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 215 labelTumble->setFont (kNormalFontSmall);
martin@0 216 labelTumble->setFontColor (kLabelText);
martin@0 217 labelTumble->setBackColor (kBlank);
martin@0 218 labelTumble->setFrameColor (kBlank);
martin@0 219 labelTumble->setText("Tumble");
martin@0 220 newFrame->addView (labelTumble);
martin@10 221 newFrame->remember();
martin@0 222
martin@9 223
martin@0 224 //Label Section
martin@9 225 LabelSize (0, 0, bTransforms->getWidth(), tDepthLarge);
martin@9 226 LabelSize.offset (hPos, ePos+tOffset);
martin@0 227 CTextLabel* labelTransforms = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 228 labelTransforms->setFont (kNormalFontBig);
martin@0 229 labelTransforms->setFontColor (kLabelText);
martin@0 230 labelTransforms->setBackColor (kBlank);
martin@0 231 labelTransforms->setFrameColor (kBlank);
martin@0 232 labelTransforms->setText("Transforms");
martin@0 233 newFrame->addView (labelTransforms);
martin@10 234 newFrame->remember();
martin@0 235
martin@0 236
martin@0 237
martin@9 238
martin@0 239 //--CTextLabel--------------------------------------
martin@0 240 //Rotate Value
martin@9 241 DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 242 DisplaySize.offset (hPos+cSep, ePos+pOffset);
martin@0 243 paramRotate = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 244 paramRotate->setHoriAlign(kCenterText);
martin@0 245 paramRotate->setFont (kNormalFontVerySmall);
martin@0 246 paramRotate->setFontColor (kDisplayText);
martin@0 247 paramRotate->setBackColor (kDisplayBackground);
martin@0 248 paramRotate->setFrameColor (kBlackCColor);
martin@10 249 newFrame->addView (paramRotate);
martin@10 250 newFrame->remember();
martin@0 251
martin@0 252
martin@0 253 //Tilt Value
martin@9 254 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@0 255 paramTilt = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 256 paramTilt->setHoriAlign(kCenterText);
martin@0 257 paramTilt->setFont (kNormalFontVerySmall);
martin@0 258 paramTilt->setFontColor (kDisplayText);
martin@0 259 paramTilt->setBackColor (kDisplayBackground);
martin@0 260 paramTilt->setFrameColor (kBlackCColor);
martin@10 261 newFrame->addView (paramTilt);
martin@10 262 newFrame->remember();
martin@0 263
martin@0 264
martin@0 265 //Tumble Value
martin@9 266 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@0 267 paramTumble = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 268 paramTumble->setHoriAlign(kCenterText);
martin@0 269 paramTumble->setFont (kNormalFontVerySmall);
martin@0 270 paramTumble->setFontColor (kDisplayText);
martin@0 271 paramTumble->setBackColor (kDisplayBackground);
martin@0 272 paramTumble->setFrameColor (kBlackCColor);
martin@10 273 newFrame->addView (paramTumble);
martin@10 274 newFrame->remember();
martin@10 275
martin@10 276
martin@10 277 //-- remember our controls so that we can sync them with the state of the effect
martin@10 278 controls[kRotate] = knobRotate;
martin@10 279 controls[kTilt] = knobTilt;
martin@10 280 controls[kTumble] = knobTumble;
martin@10 281
martin@10 282 //Forget this section's Background, Knobs, Labels
martin@10 283 bTransforms->forget();
martin@10 284 knobRotate->forget ();
martin@10 285 knobTilt->forget ();
martin@10 286 knobTumble->forget ();
martin@10 287 labelRotate->forget();
martin@10 288 labelTilt->forget();
martin@10 289 labelTumble->forget();
martin@10 290 labelTransforms->forget();
martin@10 291 paramRotate->forget();
martin@10 292 paramTilt->forget();
martin@10 293 paramTumble->forget();
martin@0 294 }
martin@0 295
martin@0 296
martin@0 297 //------------------------------------------------------------------------------------
martin@9 298 void MyEditor::zoomDisplay(CFrame* newFrame)
martin@0 299 {
martin@9 300 //FIRST OFF - define a top coordinate
martin@9 301 int hPos = 402;
martin@9 302 int ePos = cSep;
martin@9 303
martin@9 304 bZoom = new CBitmap ("zoom.png");
martin@9 305
martin@0 306 CRect zoomSize = CRect (0, 0, bZoom->getWidth (),bZoom->getHeight ());
martin@9 307 zoomSize.offset(hPos, ePos);
martin@0 308 CView* zoom_view = new CView (zoomSize);
martin@0 309 zoom_view->setBackground (bZoom);
martin@0 310 newFrame->addView (zoom_view);
martin@10 311 newFrame->remember();
martin@0 312
martin@0 313 //ZoomMethod
martin@9 314 CRect r (0, 0, knob_red_blue->getWidth (), knob_red_blue->getHeight () / IMAGE);
martin@9 315 r.offset(hPos+cSep, kOffset+cSep);
martin@0 316 knobZoomMethod = new CHorizontalSwitch (r, this, kZoomMethod, 4, knob_mode4->getHeight () / 4, 4, knob_mode4, CPoint (0, 0));
martin@0 317 newFrame->addView (knobZoomMethod);
martin@10 318 newFrame->remember();
martin@0 319
martin@0 320 //Zoom
martin@9 321 r.offset(knob_mode4->getWidth()+cSep, 0);
martin@9 322 knobZoom = new CAnimKnob (r, this, kZoom, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red_blue, CPoint (0, 0));
martin@0 323 newFrame->addView (knobZoom);
martin@10 324 newFrame->remember();
martin@0 325
martin@0 326
martin@0 327 //--CTextLabel--------------------------------------
martin@0 328 //Label ZoomMethod
martin@9 329 LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 330 LabelSize.offset (hPos+cSep, ePos+lOffset);
martin@0 331 CTextLabel* labelZoomMethod = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 332 labelZoomMethod->setFont (kNormalFontSmall);
martin@0 333 labelZoomMethod->setFontColor (kLabelText);
martin@0 334 labelZoomMethod->setBackColor (kBlank);
martin@0 335 labelZoomMethod->setFrameColor (kBlank);
martin@0 336 labelZoomMethod->setText("Zoom Type");
martin@0 337 newFrame->addView (labelZoomMethod);
martin@10 338 newFrame->remember();
martin@0 339
martin@0 340 //Label Zoom
martin@9 341 LabelSize.offset (knob_mode4->getWidth()+cSep, 0);
martin@0 342 CTextLabel* labelZoom = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 343 labelZoom->setFont (kNormalFontSmall);
martin@0 344 labelZoom->setFontColor (kLabelText);
martin@0 345 labelZoom->setBackColor (kBlank);
martin@0 346 labelZoom->setFrameColor (kBlank);
martin@0 347 labelZoom->setText("Zoom");
martin@0 348 newFrame->addView (labelZoom);
martin@10 349 newFrame->remember();
martin@0 350
martin@0 351 //Label Section
martin@9 352 LabelSize (0, 0, bZoom->getWidth(), tDepthLarge);
martin@9 353 LabelSize.offset (hPos, ePos+tOffset);
martin@10 354 CTextLabel* labelZooming = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@10 355 labelZooming->setFont (kNormalFontBig);
martin@10 356 labelZooming->setFontColor (kLabelText);
martin@10 357 labelZooming->setBackColor (kBlank);
martin@10 358 labelZooming->setFrameColor (kBlank);
martin@10 359 labelZooming->setText("Zooming");
martin@10 360 newFrame->addView (labelZooming);
martin@10 361 newFrame->remember();
martin@0 362
martin@0 363
martin@0 364 //--CTextLabel--------------------------------------
martin@0 365 //Zoom Method
martin@9 366 DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 367 DisplaySize.offset (hPos+cSep, ePos+pOffset);
martin@0 368 paramZoomMethod = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 369 paramZoomMethod->setHoriAlign(kCenterText);
martin@0 370 paramZoomMethod->setFont (kNormalFontVerySmall);
martin@0 371 paramZoomMethod->setFontColor (kDisplayText);
martin@0 372 paramZoomMethod->setBackColor (kDisplayBackground);
martin@0 373 paramZoomMethod->setFrameColor (kBlackCColor);
martin@10 374 newFrame->addView (paramZoomMethod);
martin@10 375 newFrame->remember();
martin@0 376
martin@0 377 //Zoom Value
martin@9 378 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@0 379 paramZoom = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 380 paramZoom->setHoriAlign(kCenterText);
martin@0 381 paramZoom->setFont (kNormalFontVerySmall);
martin@0 382 paramZoom->setFontColor (kDisplayText);
martin@0 383 paramZoom->setBackColor (kDisplayBackground);
martin@0 384 paramZoom->setFrameColor (kBlackCColor);
martin@10 385 newFrame->addView (paramZoom);
martin@10 386 newFrame->remember();
martin@0 387
martin@10 388
martin@10 389 //-- remember our controls so that we can sync them with the state of the effect
martin@10 390 controls[kZoom] = knobZoom;
martin@10 391 controls[kZoomMethod] = knobZoomMethod;
martin@10 392
martin@10 393 //Forget this section's Background, Knobs, Labels
martin@10 394 bZoom->forget();
martin@10 395 knobZoomMethod->forget();
martin@10 396 knobZoom->forget();
martin@10 397 labelZoomMethod->forget();
martin@10 398 labelZoom->forget();
martin@10 399 labelZooming->forget();
martin@10 400 paramZoomMethod->forget();
martin@10 401 paramZoom->forget();
martin@0 402 }
martin@0 403
martin@0 404
martin@0 405 //------------------------------------------------------------------------------------
martin@9 406 void MyEditor::stereoDisplay()
martin@0 407 {
martin@9 408 //FIRST OFF - define a top coordinate
martin@9 409 int hPos = cSep;
martin@9 410 int ePos = 288;
martin@6 411
martin@0 412
martin@9 413 bControls = new CBitmap ("controls.png");
martin@9 414
martin@9 415 CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
martin@9 416 controlSize.offset(hPos, ePos);
martin@9 417
martin@9 418 control_view = new CView (controlSize);
martin@9 419 control_view->setBackground (bControls);
martin@9 420 getFrame()->addView (control_view);
martin@10 421 getFrame()->remember();
martin@9 422
martin@9 423
martin@9 424
martin@0 425 //Mode
martin@0 426 r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
martin@9 427 r.offset(hPos+cSep,ePos+kOffset);
martin@0 428 knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
martin@9 429 getFrame()->addView (knobMode);
martin@10 430 getFrame()->remember();
martin@0 431
martin@0 432 //Width
martin@9 433 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 434 knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 435 getFrame()->addView (knobWidth);
martin@10 436 getFrame()->remember();
martin@0 437
martin@0 438 //Pattern
martin@9 439 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 440 knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 441 getFrame()->addView (knobPattern);
martin@10 442 getFrame()->remember();
martin@9 443
martin@0 444 //RearVerb
martin@9 445 r.offset(2*knob_mode2->getWidth()+2*cSep+10, 0);
martin@9 446 knobRearVerb = new CAnimKnob (r, this, kRearVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 447 getFrame()->addView (knobRearVerb);
martin@10 448 getFrame()->remember();
martin@0 449
martin@0 450 //HiVerb
martin@9 451 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 452 knobHiVerb = new CAnimKnob (r, this, kHiVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 453 getFrame()->addView (knobHiVerb);
martin@10 454 getFrame()->remember();
martin@0 455
martin@0 456
martin@9 457
martin@0 458
martin@0 459
martin@0 460 //--CTextLabel--------------------------------------
martin@0 461 //Label Mode
martin@9 462 LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 463 LabelSize.offset (hPos+cSep, ePos+lOffset);
martin@9 464 labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 465 labelMode->setFont (kNormalFontSmall);
martin@0 466 labelMode->setFontColor (kLabelText);
martin@0 467 labelMode->setBackColor (kBlank);
martin@0 468 labelMode->setFrameColor (kBlank);
martin@0 469 labelMode->setText("Mode");
martin@10 470 getFrame()->addView (labelMode);
martin@10 471 getFrame()->remember();
martin@0 472
martin@0 473 //Label Width
martin@9 474 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 475 labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 476 labelWidth->setFont (kNormalFontSmall);
martin@0 477 labelWidth->setFontColor (kLabelText);
martin@0 478 labelWidth->setBackColor (kBlank);
martin@0 479 labelWidth->setFrameColor (kBlank);
martin@0 480 labelWidth->setText("Width");
martin@9 481 getFrame()->addView (labelWidth);
martin@10 482 getFrame()->remember();
martin@0 483
martin@0 484 //Label Pattern
martin@9 485 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 486 labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 487 labelPattern->setFont (kNormalFontSmall);
martin@0 488 labelPattern->setFontColor (kLabelText);
martin@0 489 labelPattern->setBackColor (kBlank);
martin@0 490 labelPattern->setFrameColor (kBlank);
martin@0 491 labelPattern->setText("Pattern");
martin@9 492 getFrame()->addView (labelPattern);
martin@10 493 getFrame()->remember();
martin@0 494
martin@0 495 //Label RearVerb
martin@9 496 LabelSize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0);
martin@9 497 labelRearVerb = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 498 labelRearVerb->setFont (kNormalFontSmall);
martin@0 499 labelRearVerb->setFontColor (kLabelText);
martin@0 500 labelRearVerb->setBackColor (kBlank);
martin@0 501 labelRearVerb->setFrameColor (kBlank);
martin@0 502 labelRearVerb->setText("RearVerb");
martin@9 503 getFrame()->addView (labelRearVerb);
martin@10 504 getFrame()->remember();
martin@0 505
martin@0 506 //Label HiVerb
martin@9 507 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 508 labelHiVerb = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@0 509 labelHiVerb->setFont (kNormalFontSmall);
martin@0 510 labelHiVerb->setFontColor (kLabelText);
martin@0 511 labelHiVerb->setBackColor (kBlank);
martin@0 512 labelHiVerb->setFrameColor (kBlank);
martin@0 513 labelHiVerb->setText("HiVerb");
martin@9 514 getFrame()->addView (labelHiVerb);
martin@10 515 getFrame()->remember();
martin@0 516
martin@0 517
martin@0 518
martin@9 519
martin@0 520
martin@0 521 //Label Section
martin@9 522 LabelSize (0, 0, bControls->getWidth(), tDepthLarge);
martin@9 523 LabelSize.offset (hPos, ePos+tOffset);
martin@9 524 decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 525 decoderLabel1->setFont (kNormalFontBig);
martin@9 526 decoderLabel1->setFontColor (kLabelText);
martin@9 527 decoderLabel1->setBackColor (kBlank);
martin@9 528 decoderLabel1->setFrameColor (kBlank);
martin@9 529 decoderLabel1->setText("Stereo Decoding & Reverb");
martin@9 530 getFrame()->addView (decoderLabel1);
martin@10 531 getFrame()->remember();
martin@0 532
martin@0 533
martin@9 534
martin@0 535 //--CTextLabel--------------------------------------
martin@0 536 //Mode Value
martin@9 537 DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 538 DisplaySize.offset (hPos+cSep, ePos+pOffset);
martin@7 539 paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 540 paramMode->setHoriAlign(kCenterText);
martin@0 541 paramMode->setFont (kNormalFontVerySmall);
martin@0 542 paramMode->setFontColor (kDisplayText);
martin@0 543 paramMode->setBackColor (kDisplayBackground);
martin@0 544 paramMode->setFrameColor (kBlackCColor);
martin@9 545 getFrame()->addView (paramMode);
martin@10 546 getFrame()->remember();
martin@9 547
martin@0 548
martin@0 549 //Width Value
martin@9 550 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@0 551 paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 552 paramWidth->setHoriAlign(kCenterText);
martin@0 553 paramWidth->setFont (kNormalFontVerySmall);
martin@0 554 paramWidth->setFontColor (kDisplayText);
martin@0 555 paramWidth->setBackColor (kDisplayBackground);
martin@0 556 paramWidth->setFrameColor (kBlackCColor);
martin@9 557 getFrame()->addView (paramWidth);
martin@10 558 getFrame()->remember();
martin@0 559
martin@0 560 //Pattern Value
martin@9 561 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@0 562 paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 563 paramPattern->setHoriAlign(kCenterText);
martin@0 564 paramPattern->setFont (kNormalFontVerySmall);
martin@0 565 paramPattern->setFontColor (kDisplayText);
martin@0 566 paramPattern->setBackColor (kDisplayBackground);
martin@0 567 paramPattern->setFrameColor (kBlackCColor);
martin@9 568 getFrame()->addView (paramPattern);
martin@10 569 getFrame()->remember();
martin@0 570
martin@0 571 //RearVerb Value
martin@9 572 DisplaySize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0);
martin@0 573 paramRearVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 574 paramRearVerb->setHoriAlign(kCenterText);
martin@0 575 paramRearVerb->setFont (kNormalFontVerySmall);
martin@0 576 paramRearVerb->setFontColor (kDisplayText);
martin@0 577 paramRearVerb->setBackColor (kDisplayBackground);
martin@0 578 paramRearVerb->setFrameColor (kBlackCColor);
martin@9 579 getFrame()->addView (paramRearVerb);
martin@10 580 getFrame()->remember();
martin@0 581
martin@0 582 //HiVerb Value
martin@9 583 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@0 584 paramHiVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@0 585 paramHiVerb->setHoriAlign(kCenterText);
martin@0 586 paramHiVerb->setFont (kNormalFontVerySmall);
martin@0 587 paramHiVerb->setFontColor (kDisplayText);
martin@0 588 paramHiVerb->setBackColor (kDisplayBackground);
martin@0 589 paramHiVerb->setFrameColor (kBlackCColor);
martin@9 590 getFrame()->addView (paramHiVerb);
martin@10 591 getFrame()->remember();
martin@9 592
martin@9 593 controls[kMode] = knobMode;
martin@9 594 controls[kWidth] = knobWidth;
martin@9 595 controls[kPattern] = knobPattern;
martin@9 596 controls[kRearVerb] = knobRearVerb;
martin@12 597 controls[kHiVerb] = knobHiVerb;
martin@10 598
martin@10 599 //Forget Label, Knobs etc.
martin@10 600 bControls->forget();
martin@0 601 }
martin@0 602
martin@0 603
martin@0 604
martin@0 605 //------------------------------------------------------------------------------------
martin@9 606 void MyEditor::twooneDisplay()
martin@0 607 {
martin@9 608 //FIRST OFF - define a top coordinate
martin@9 609 int hPos = cSep;
martin@9 610 int ePos = 288;
martin@9 611 int hPos2 = cSep+37;
martin@9 612 int ePos2 = 150;
martin@9 613
martin@9 614
martin@9 615 bControls = new CBitmap ("controls.png");
martin@9 616 CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
martin@9 617 controlSize.offset(cSep, cSep+(cSep+bControls->getHeight())*2);
martin@9 618 control_view = new CView (controlSize);
martin@9 619 control_view->setBackground (bControls);
martin@9 620 getFrame()->addView (control_view);
martin@10 621 getFrame()->remember();
martin@10 622
martin@9 623
martin@9 624 bControls2 = new CBitmap ("controls2.png");
martin@9 625 controlSize = CRect (0, 0, bControls2->getWidth (),bControls2->getHeight ());
martin@9 626 controlSize.offset(hPos2, ePos2);
martin@9 627 control_view2 = new CView (controlSize);
martin@9 628 control_view2->setBackground (bControls2);
martin@9 629 getFrame()->addView (control_view2);
martin@10 630 getFrame()->remember();
martin@9 631
martin@9 632
martin@9 633 //Mode
martin@9 634 r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
martin@9 635 r.offset(hPos+cSep,ePos+kOffset);
martin@9 636 knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
martin@9 637 getFrame()->addView (knobMode);
martin@10 638 getFrame()->remember();
martin@9 639
martin@9 640 //Width
martin@9 641 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 642 knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 643 getFrame()->addView (knobWidth);
martin@10 644 getFrame()->remember();
martin@9 645
martin@9 646 //Pattern
martin@9 647 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 648 knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 649 getFrame()->addView (knobPattern);
martin@10 650 getFrame()->remember();
martin@9 651
martin@9 652 //RearVerb
martin@9 653 r.offset(2*knob_mode2->getWidth()+2*cSep+10, 0);
martin@9 654 knobRearVerb = new CAnimKnob (r, this, kRearVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 655 getFrame()->addView (knobRearVerb);
martin@10 656 getFrame()->remember();
martin@9 657
martin@9 658 //HiVerb
martin@9 659 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 660 knobHiVerb = new CAnimKnob (r, this, kHiVerb, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 661 getFrame()->addView (knobHiVerb);
martin@10 662 getFrame()->remember();
martin@9 663
martin@9 664 //SubGain
martin@9 665 r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
martin@9 666 r.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+kOffset);
martin@9 667 knobSubGain = new CAnimKnob (r, this, kSubGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
martin@9 668 getFrame()->addView (knobSubGain);
martin@10 669 getFrame()->remember();
martin@9 670
martin@9 671 //FC
martin@9 672 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 673 knobFc = new CAnimKnob (r, this, kFc, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 674 getFrame()->addView (knobFc);
martin@10 675 getFrame()->remember();
martin@9 676
martin@9 677
martin@9 678
martin@9 679
martin@9 680
martin@9 681 //--CTextLabel--------------------------------------
martin@9 682 //Label Mode
martin@9 683 LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 684 LabelSize.offset (hPos+cSep, ePos+lOffset);
martin@9 685 labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 686 labelMode->setFont (kNormalFontSmall);
martin@9 687 labelMode->setFontColor (kLabelText);
martin@9 688 labelMode->setBackColor (kBlank);
martin@9 689 labelMode->setFrameColor (kBlank);
martin@9 690 labelMode->setText("Mode");
martin@9 691 getFrame()->addView (labelMode);
martin@10 692 getFrame()->remember();
martin@9 693
martin@9 694 //Label Width
martin@9 695 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 696 labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 697 labelWidth->setFont (kNormalFontSmall);
martin@9 698 labelWidth->setFontColor (kLabelText);
martin@9 699 labelWidth->setBackColor (kBlank);
martin@9 700 labelWidth->setFrameColor (kBlank);
martin@9 701 labelWidth->setText("Width");
martin@9 702 getFrame()->addView (labelWidth);
martin@10 703 getFrame()->remember();
martin@9 704
martin@9 705 //Label Pattern
martin@9 706 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 707 labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 708 labelPattern->setFont (kNormalFontSmall);
martin@9 709 labelPattern->setFontColor (kLabelText);
martin@9 710 labelPattern->setBackColor (kBlank);
martin@9 711 labelPattern->setFrameColor (kBlank);
martin@9 712 labelPattern->setText("Pattern");
martin@9 713 getFrame()->addView (labelPattern);
martin@10 714 getFrame()->remember();
martin@9 715
martin@9 716 //Label RearVerb
martin@9 717 LabelSize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0);
martin@9 718 labelRearVerb = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 719 labelRearVerb->setFont (kNormalFontSmall);
martin@9 720 labelRearVerb->setFontColor (kLabelText);
martin@9 721 labelRearVerb->setBackColor (kBlank);
martin@9 722 labelRearVerb->setFrameColor (kBlank);
martin@9 723 labelRearVerb->setText("RearVerb");
martin@9 724 getFrame()->addView (labelRearVerb);
martin@10 725 getFrame()->remember();
martin@9 726
martin@9 727 //Label HiVerb
martin@9 728 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 729 labelHiVerb = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 730 labelHiVerb->setFont (kNormalFontSmall);
martin@9 731 labelHiVerb->setFontColor (kLabelText);
martin@9 732 labelHiVerb->setBackColor (kBlank);
martin@9 733 labelHiVerb->setFrameColor (kBlank);
martin@9 734 labelHiVerb->setText("HiVerb");
martin@9 735 getFrame()->addView (labelHiVerb);
martin@10 736 getFrame()->remember();
martin@9 737
martin@9 738 //Label SubGain
martin@9 739 LabelSize(0, 0, knob_mode2->getWidth (), tDepth);
martin@9 740 LabelSize.offset (hPos2+2*cSep+knob_mode2->getWidth (), ePos2+lOffset);
martin@9 741 labelSubGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 742 labelSubGain->setFont (kNormalFontSmall);
martin@9 743 labelSubGain->setFontColor (kLabelText);
martin@9 744 labelSubGain->setBackColor (kBlank);
martin@9 745 labelSubGain->setFrameColor (kBlank);
martin@9 746 labelSubGain->setText("SubGain");
martin@9 747 getFrame()->addView (labelSubGain);
martin@10 748 getFrame()->remember();
martin@9 749
martin@9 750 //Label Fc
martin@9 751 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 752 labelFc = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 753 labelFc->setFont (kNormalFontSmall);
martin@9 754 labelFc->setFontColor (kLabelText);
martin@9 755 labelFc->setBackColor (kBlank);
martin@9 756 labelFc->setFrameColor (kBlank);
martin@9 757 labelFc->setText("xOver");
martin@9 758 getFrame()->addView (labelFc);
martin@10 759 getFrame()->remember();
martin@9 760
martin@9 761
martin@9 762
martin@9 763
martin@9 764
martin@9 765 //Label Section
martin@9 766 LabelSize (0, 0, bControls2->getWidth(), tDepthLarge);
martin@9 767 LabelSize.offset (hPos2, ePos2+tOffset);
martin@9 768 decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 769 decoderLabel1->setFont (kNormalFontBig);
martin@9 770 decoderLabel1->setFontColor (kLabelText);
martin@9 771 decoderLabel1->setBackColor (kBlank);
martin@9 772 decoderLabel1->setFrameColor (kBlank);
martin@9 773 decoderLabel1->setText("2.1 Decoding & Reverb");
martin@9 774 getFrame()->addView (decoderLabel1);
martin@10 775 getFrame()->remember();
martin@9 776
martin@9 777
martin@9 778
martin@9 779 //--CTextLabel--------------------------------------
martin@9 780 //Mode Value
martin@9 781 DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 782 DisplaySize.offset (hPos+cSep, ePos+pOffset);
martin@9 783 paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 784 paramMode->setHoriAlign(kCenterText);
martin@9 785 paramMode->setFont (kNormalFontVerySmall);
martin@9 786 paramMode->setFontColor (kDisplayText);
martin@9 787 paramMode->setBackColor (kDisplayBackground);
martin@9 788 paramMode->setFrameColor (kBlackCColor);
martin@9 789 getFrame()->addView (paramMode);
martin@10 790 getFrame()->remember();
martin@9 791
martin@9 792 //Width Value
martin@9 793 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 794 paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 795 paramWidth->setHoriAlign(kCenterText);
martin@9 796 paramWidth->setFont (kNormalFontVerySmall);
martin@9 797 paramWidth->setFontColor (kDisplayText);
martin@9 798 paramWidth->setBackColor (kDisplayBackground);
martin@9 799 paramWidth->setFrameColor (kBlackCColor);
martin@9 800 getFrame()->addView (paramWidth);
martin@10 801 getFrame()->remember();
martin@9 802
martin@9 803 //Pattern Value
martin@9 804 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 805 paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 806 paramPattern->setHoriAlign(kCenterText);
martin@9 807 paramPattern->setFont (kNormalFontVerySmall);
martin@9 808 paramPattern->setFontColor (kDisplayText);
martin@9 809 paramPattern->setBackColor (kDisplayBackground);
martin@9 810 paramPattern->setFrameColor (kBlackCColor);
martin@9 811 getFrame()->addView (paramPattern);
martin@10 812 getFrame()->remember();
martin@9 813
martin@9 814 //RearVerb Value
martin@9 815 DisplaySize.offset (2*knob_mode2->getWidth()+2*cSep+10, 0);
martin@9 816 paramRearVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 817 paramRearVerb->setHoriAlign(kCenterText);
martin@9 818 paramRearVerb->setFont (kNormalFontVerySmall);
martin@9 819 paramRearVerb->setFontColor (kDisplayText);
martin@9 820 paramRearVerb->setBackColor (kDisplayBackground);
martin@9 821 paramRearVerb->setFrameColor (kBlackCColor);
martin@9 822 getFrame()->addView (paramRearVerb);
martin@10 823 getFrame()->remember();
martin@9 824
martin@9 825 //HiVerb Value
martin@9 826 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 827 paramHiVerb = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 828 paramHiVerb->setHoriAlign(kCenterText);
martin@9 829 paramHiVerb->setFont (kNormalFontVerySmall);
martin@9 830 paramHiVerb->setFontColor (kDisplayText);
martin@9 831 paramHiVerb->setBackColor (kDisplayBackground);
martin@9 832 paramHiVerb->setFrameColor (kBlackCColor);
martin@9 833 getFrame()->addView (paramHiVerb);
martin@10 834 getFrame()->remember();
martin@9 835
martin@9 836 //SubGain Value
martin@9 837 DisplaySize(0, 0, knob_mode2->getWidth (), tDepth);
martin@9 838 DisplaySize.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+pOffset);
martin@9 839 paramSubGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 840 paramSubGain->setHoriAlign(kCenterText);
martin@9 841 paramSubGain->setFont (kNormalFontVerySmall);
martin@9 842 paramSubGain->setFontColor (kDisplayText);
martin@9 843 paramSubGain->setBackColor (kDisplayBackground);
martin@9 844 paramSubGain->setFrameColor (kBlackCColor);
martin@9 845 getFrame()->addView (paramSubGain);
martin@10 846 getFrame()->remember();
martin@9 847
martin@9 848 //Fc Value
martin@9 849 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 850 paramFc = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 851 paramFc->setHoriAlign(kCenterText);
martin@9 852 paramFc->setFont (kNormalFontVerySmall);
martin@9 853 paramFc->setFontColor (kDisplayText);
martin@9 854 paramFc->setBackColor (kDisplayBackground);
martin@9 855 paramFc->setFrameColor (kBlackCColor);
martin@9 856 getFrame()->addView (paramFc);
martin@10 857 getFrame()->remember();
martin@9 858
martin@9 859 controls[kMode] = knobMode;
martin@9 860 controls[kWidth] = knobWidth;
martin@9 861 controls[kPattern] = knobPattern;
martin@9 862 controls[kRearVerb] = knobRearVerb;
martin@9 863 controls[kHiVerb] = knobHiVerb;
martin@9 864 controls[kSubGain] = knobSubGain;
martin@9 865 controls[kFc] = knobFc;
martin@12 866
martin@10 867
martin@10 868 //Forget Label, Knobs etc.
martin@10 869 bControls->forget();
martin@10 870 bControls2->forget();
martin@9 871 }
martin@9 872
martin@9 873
martin@9 874
martin@9 875 //------------------------------------------------------------------------------------
martin@9 876 void MyEditor::fourDisplay()
martin@9 877 {
martin@9 878 //FIRST OFF - define a top coordinate
martin@9 879 int hPos = cSep;
martin@9 880 int ePos = 288;
martin@9 881
martin@9 882
martin@9 883 bControls = new CBitmap ("controls.png");
martin@9 884 CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
martin@9 885 controlSize.offset(cSep, cSep+(cSep+bControls->getHeight())*2);
martin@9 886 control_view = new CView (controlSize);
martin@9 887 control_view->setBackground (bControls);
martin@9 888 getFrame()->addView (control_view);
martin@10 889 getFrame()->remember();
martin@9 890
martin@9 891
martin@9 892
martin@9 893 //Mode
martin@9 894 r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
martin@9 895 r.offset(hPos+cSep,ePos+kOffset);
martin@9 896 knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
martin@9 897 getFrame()->addView (knobMode);
martin@10 898 getFrame()->remember();
martin@9 899
martin@9 900 //Width
martin@9 901 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 902 knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 903 getFrame()->addView (knobWidth);
martin@10 904 getFrame()->remember();
martin@9 905
martin@9 906 //Pattern
martin@9 907 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 908 knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 909 getFrame()->addView (knobPattern);
martin@10 910 getFrame()->remember();
martin@9 911
martin@9 912
martin@9 913 //Surround Mode
martin@9 914 r.offset(knob_mode2->getWidth()+cSep+10, 0);
martin@9 915 knobSurroundMode = new CHorizontalSwitch (r, this, kSurroundMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
martin@9 916 getFrame()->addView (knobSurroundMode);
martin@10 917 getFrame()->remember();
martin@9 918
martin@9 919 //Surround Width
martin@9 920 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 921 knobSurroundWidth = new CAnimKnob (r, this, kSurroundWidth, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 922 getFrame()->addView (knobSurroundWidth);
martin@10 923 getFrame()->remember();
martin@9 924
martin@9 925 //Surround Pattern
martin@9 926 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 927 knobSurroundPattern = new CAnimKnob (r, this, kSurroundPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 928 getFrame()->addView (knobSurroundPattern);
martin@10 929 getFrame()->remember();
martin@9 930
martin@9 931 //Surround Gain
martin@9 932 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 933 knobSurroundGain = new CAnimKnob (r, this, kSurroundGain, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
martin@9 934 getFrame()->addView (knobSurroundGain);
martin@10 935 getFrame()->remember();
martin@9 936
martin@9 937
martin@9 938
martin@9 939
martin@9 940
martin@9 941 //--CTextLabel--------------------------------------
martin@9 942 //Label Mode
martin@9 943 LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 944 LabelSize.offset (hPos+cSep, ePos+lOffset);
martin@9 945 labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 946 labelMode->setFont (kNormalFontSmall);
martin@9 947 labelMode->setFontColor (kLabelText);
martin@9 948 labelMode->setBackColor (kBlank);
martin@9 949 labelMode->setFrameColor (kBlank);
martin@9 950 labelMode->setText("Mode");
martin@9 951 getFrame()->addView (labelMode);
martin@10 952 getFrame()->remember();
martin@9 953
martin@9 954 //Label Width
martin@9 955 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 956 labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 957 labelWidth->setFont (kNormalFontSmall);
martin@9 958 labelWidth->setFontColor (kLabelText);
martin@9 959 labelWidth->setBackColor (kBlank);
martin@9 960 labelWidth->setFrameColor (kBlank);
martin@9 961 labelWidth->setText("Width");
martin@9 962 getFrame()->addView (labelWidth);
martin@10 963 getFrame()->remember();
martin@9 964
martin@9 965 //Label Pattern
martin@9 966 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 967 labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 968 labelPattern->setFont (kNormalFontSmall);
martin@9 969 labelPattern->setFontColor (kLabelText);
martin@9 970 labelPattern->setBackColor (kBlank);
martin@9 971 labelPattern->setFrameColor (kBlank);
martin@9 972 labelPattern->setText("Pattern");
martin@9 973 getFrame()->addView (labelPattern);
martin@10 974 getFrame()->remember();
martin@9 975
martin@9 976 //Label Surround Mode
martin@9 977 LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0);
martin@9 978 labelSurMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 979 labelSurMode->setFont (kNormalFontSmall);
martin@9 980 labelSurMode->setFontColor (kLabelText);
martin@9 981 labelSurMode->setBackColor (kBlank);
martin@9 982 labelSurMode->setFrameColor (kBlank);
martin@9 983 labelSurMode->setText("SurMode");
martin@9 984 getFrame()->addView (labelSurMode);
martin@10 985 getFrame()->remember();
martin@9 986
martin@9 987 //Label Surround Width
martin@9 988 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 989 labelSurWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 990 labelSurWidth->setFont (kNormalFontSmall);
martin@9 991 labelSurWidth->setFontColor (kLabelText);
martin@9 992 labelSurWidth->setBackColor (kBlank);
martin@9 993 labelSurWidth->setFrameColor (kBlank);
martin@9 994 labelSurWidth->setText("SurWidth");
martin@9 995 getFrame()->addView (labelSurWidth);
martin@10 996 getFrame()->remember();
martin@9 997
martin@9 998 //Label Surround Pattern
martin@9 999 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1000 labelSurPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1001 labelSurPattern->setFont (kNormalFontSmall);
martin@9 1002 labelSurPattern->setFontColor (kLabelText);
martin@9 1003 labelSurPattern->setBackColor (kBlank);
martin@9 1004 labelSurPattern->setFrameColor (kBlank);
martin@9 1005 labelSurPattern->setText("SurPattern");
martin@9 1006 getFrame()->addView (labelSurPattern);
martin@10 1007 getFrame()->remember();
martin@9 1008
martin@9 1009 //Label Surround Gain
martin@9 1010 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1011 labelSurGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1012 labelSurGain->setFont (kNormalFontSmall);
martin@9 1013 labelSurGain->setFontColor (kLabelText);
martin@9 1014 labelSurGain->setBackColor (kBlank);
martin@9 1015 labelSurGain->setFrameColor (kBlank);
martin@9 1016 labelSurGain->setText("SurGain");
martin@9 1017 getFrame()->addView (labelSurGain);
martin@10 1018 getFrame()->remember();
martin@9 1019
martin@9 1020
martin@9 1021
martin@9 1022
martin@9 1023 //Label Section
martin@9 1024 LabelSize (0, 0, bControls->getWidth(), tDepthLarge);
martin@9 1025 LabelSize.offset (hPos, ePos+tOffset);
martin@9 1026 decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1027 decoderLabel1->setFont (kNormalFontBig);
martin@9 1028 decoderLabel1->setFontColor (kLabelText);
martin@9 1029 decoderLabel1->setBackColor (kBlank);
martin@9 1030 decoderLabel1->setFrameColor (kBlank);
martin@9 1031 decoderLabel1->setText("4.0 Decoding");
martin@9 1032 getFrame()->addView (decoderLabel1);
martin@10 1033 getFrame()->remember();
martin@9 1034
martin@9 1035
martin@9 1036
martin@9 1037 //--CTextLabel--------------------------------------
martin@9 1038 //Mode Value
martin@9 1039 DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 1040 DisplaySize.offset (hPos+cSep, ePos+pOffset);
martin@9 1041 paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1042 paramMode->setHoriAlign(kCenterText);
martin@9 1043 paramMode->setFont (kNormalFontVerySmall);
martin@9 1044 paramMode->setFontColor (kDisplayText);
martin@9 1045 paramMode->setBackColor (kDisplayBackground);
martin@9 1046 paramMode->setFrameColor (kBlackCColor);
martin@9 1047 getFrame()->addView (paramMode);
martin@10 1048 getFrame()->remember();
martin@9 1049
martin@9 1050 //Width Value
martin@9 1051 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1052 paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1053 paramWidth->setHoriAlign(kCenterText);
martin@9 1054 paramWidth->setFont (kNormalFontVerySmall);
martin@9 1055 paramWidth->setFontColor (kDisplayText);
martin@9 1056 paramWidth->setBackColor (kDisplayBackground);
martin@9 1057 paramWidth->setFrameColor (kBlackCColor);
martin@9 1058 getFrame()->addView (paramWidth);
martin@10 1059 getFrame()->remember();
martin@9 1060
martin@9 1061 //Pattern Value
martin@9 1062 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1063 paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1064 paramPattern->setHoriAlign(kCenterText);
martin@9 1065 paramPattern->setFont (kNormalFontVerySmall);
martin@9 1066 paramPattern->setFontColor (kDisplayText);
martin@9 1067 paramPattern->setBackColor (kDisplayBackground);
martin@9 1068 paramPattern->setFrameColor (kBlackCColor);
martin@9 1069 getFrame()->addView (paramPattern);
martin@10 1070 getFrame()->remember();
martin@9 1071
martin@9 1072 //SurMode Value
martin@9 1073 DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0);
martin@9 1074 paramSurMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1075 paramSurMode->setHoriAlign(kCenterText);
martin@9 1076 paramSurMode->setFont (kNormalFontVerySmall);
martin@9 1077 paramSurMode->setFontColor (kDisplayText);
martin@9 1078 paramSurMode->setBackColor (kDisplayBackground);
martin@9 1079 paramSurMode->setFrameColor (kBlackCColor);
martin@9 1080 getFrame()->addView (paramSurMode);
martin@10 1081 getFrame()->remember();
martin@9 1082
martin@9 1083 //SurWidth Value
martin@9 1084 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1085 paramSurWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1086 paramSurWidth->setHoriAlign(kCenterText);
martin@9 1087 paramSurWidth->setFont (kNormalFontVerySmall);
martin@9 1088 paramSurWidth->setFontColor (kDisplayText);
martin@9 1089 paramSurWidth->setBackColor (kDisplayBackground);
martin@9 1090 paramSurWidth->setFrameColor (kBlackCColor);
martin@9 1091 getFrame()->addView (paramSurWidth);
martin@10 1092 getFrame()->remember();
martin@9 1093
martin@9 1094 //SurPattern Value
martin@9 1095 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1096 paramSurPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1097 paramSurPattern->setHoriAlign(kCenterText);
martin@9 1098 paramSurPattern->setFont (kNormalFontVerySmall);
martin@9 1099 paramSurPattern->setFontColor (kDisplayText);
martin@9 1100 paramSurPattern->setBackColor (kDisplayBackground);
martin@9 1101 paramSurPattern->setFrameColor (kBlackCColor);
martin@9 1102 getFrame()->addView (paramSurPattern);
martin@10 1103 getFrame()->remember();
martin@9 1104
martin@9 1105 //SurWidth Value
martin@9 1106 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1107 paramSurGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1108 paramSurGain->setHoriAlign(kCenterText);
martin@9 1109 paramSurGain->setFont (kNormalFontVerySmall);
martin@9 1110 paramSurGain->setFontColor (kDisplayText);
martin@9 1111 paramSurGain->setBackColor (kDisplayBackground);
martin@9 1112 paramSurGain->setFrameColor (kBlackCColor);
martin@9 1113 getFrame()->addView (paramSurGain);
martin@10 1114 getFrame()->remember();
martin@9 1115
martin@9 1116 controls[kMode] = knobMode;
martin@9 1117 controls[kWidth] = knobWidth;
martin@9 1118 controls[kPattern] = knobPattern;
martin@9 1119 controls[kSurroundMode] = knobSurroundMode;
martin@9 1120 controls[kSurroundPattern] = knobSurroundPattern;
martin@9 1121 controls[kSurroundWidth] = knobSurroundWidth;
martin@9 1122 controls[kSurroundGain] = knobSurroundGain;
martin@10 1123
martin@10 1124 //Forget Label, Knobs etc.
martin@10 1125 bControls->forget();
martin@9 1126 }
martin@9 1127
martin@9 1128
martin@9 1129
martin@9 1130
martin@9 1131
martin@9 1132 //------------------------------------------------------------------------------------
martin@9 1133 void MyEditor::fiveDisplay()
martin@9 1134 {
martin@9 1135 //FIRST OFF - define a top coordinate
martin@9 1136 int hPos = cSep;
martin@9 1137 int ePos = 288;
martin@9 1138 int hPos2 = cSep+37;
martin@9 1139 int ePos2 = 150;
martin@9 1140
martin@9 1141
martin@9 1142 bControls = new CBitmap ("controls.png");
martin@9 1143 CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
martin@9 1144 controlSize.offset(cSep, cSep+(cSep+bControls->getHeight())*2);
martin@9 1145 control_view = new CView (controlSize);
martin@9 1146 control_view->setBackground (bControls);
martin@9 1147 getFrame()->addView (control_view);
martin@10 1148 getFrame()->remember();
martin@9 1149
martin@9 1150 bControls2 = new CBitmap ("controls2.png");
martin@9 1151 controlSize = CRect (0, 0, bControls2->getWidth (),bControls2->getHeight ());
martin@9 1152 controlSize.offset(hPos2, ePos2);
martin@9 1153 control_view2 = new CView (controlSize);
martin@9 1154 control_view2->setBackground (bControls2);
martin@9 1155 getFrame()->addView (control_view2);
martin@10 1156 getFrame()->remember();
martin@9 1157
martin@9 1158
martin@9 1159 //Mode
martin@9 1160 r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
martin@9 1161 r.offset(hPos+cSep,ePos+kOffset);
martin@9 1162 knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
martin@9 1163 getFrame()->addView (knobMode);
martin@10 1164 getFrame()->remember();
martin@9 1165
martin@9 1166 //Width
martin@9 1167 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1168 knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 1169 getFrame()->addView (knobWidth);
martin@10 1170 getFrame()->remember();
martin@9 1171
martin@9 1172 //Pattern
martin@9 1173 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1174 knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 1175 getFrame()->addView (knobPattern);
martin@10 1176 getFrame()->remember();
martin@9 1177
martin@9 1178
martin@9 1179 //Surround Mode
martin@9 1180 r.offset(knob_mode2->getWidth()+cSep+10, 0);
martin@9 1181 knobSurroundMode = new CHorizontalSwitch (r, this, kSurroundMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
martin@9 1182 getFrame()->addView (knobSurroundMode);
martin@10 1183 getFrame()->remember();
martin@9 1184
martin@9 1185 //Surround Width
martin@9 1186 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1187 knobSurroundWidth = new CAnimKnob (r, this, kSurroundWidth, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 1188 getFrame()->addView (knobSurroundWidth);
martin@10 1189 getFrame()->remember();
martin@9 1190
martin@9 1191 //Surround Pattern
martin@9 1192 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1193 knobSurroundPattern = new CAnimKnob (r, this, kSurroundPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 1194 getFrame()->addView (knobSurroundPattern);
martin@10 1195 getFrame()->remember();
martin@9 1196
martin@9 1197 //Surround Gain
martin@9 1198 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1199 knobSurroundGain = new CAnimKnob (r, this, kSurroundGain, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
martin@9 1200 getFrame()->addView (knobSurroundGain);
martin@10 1201 getFrame()->remember();
martin@9 1202
martin@9 1203
martin@9 1204
martin@9 1205
martin@9 1206 //Centre Pattern
martin@9 1207 r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
martin@9 1208 r.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+kOffset);
martin@9 1209 knobCentrePattern = new CAnimKnob (r, this, kCentrePattern, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 1210 getFrame()->addView (knobCentrePattern);
martin@10 1211 getFrame()->remember();
martin@9 1212
martin@9 1213 //Centre Gain
martin@9 1214 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1215 knobCentreGain = new CAnimKnob (r, this, kCentreGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
martin@9 1216 getFrame()->addView (knobCentreGain);
martin@10 1217 getFrame()->remember();
martin@9 1218
martin@9 1219
martin@9 1220
martin@9 1221
martin@9 1222
martin@9 1223
martin@9 1224 //--CTextLabel--------------------------------------
martin@9 1225 //Label Mode
martin@9 1226 LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 1227 LabelSize.offset (hPos+cSep, ePos+lOffset);
martin@9 1228 labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1229 labelMode->setFont (kNormalFontSmall);
martin@9 1230 labelMode->setFontColor (kLabelText);
martin@9 1231 labelMode->setBackColor (kBlank);
martin@9 1232 labelMode->setFrameColor (kBlank);
martin@9 1233 labelMode->setText("Mode");
martin@9 1234 getFrame()->addView (labelMode);
martin@10 1235 getFrame()->remember();
martin@9 1236
martin@9 1237 //Label Width
martin@9 1238 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1239 labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1240 labelWidth->setFont (kNormalFontSmall);
martin@9 1241 labelWidth->setFontColor (kLabelText);
martin@9 1242 labelWidth->setBackColor (kBlank);
martin@9 1243 labelWidth->setFrameColor (kBlank);
martin@9 1244 labelWidth->setText("Width");
martin@9 1245 getFrame()->addView (labelWidth);
martin@10 1246 getFrame()->remember();
martin@9 1247
martin@9 1248 //Label Pattern
martin@9 1249 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1250 labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1251 labelPattern->setFont (kNormalFontSmall);
martin@9 1252 labelPattern->setFontColor (kLabelText);
martin@9 1253 labelPattern->setBackColor (kBlank);
martin@9 1254 labelPattern->setFrameColor (kBlank);
martin@9 1255 labelPattern->setText("Pattern");
martin@9 1256 getFrame()->addView (labelPattern);
martin@10 1257 getFrame()->remember();
martin@9 1258
martin@9 1259 //Label Surround Mode
martin@9 1260 LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0);
martin@9 1261 labelSurMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1262 labelSurMode->setFont (kNormalFontSmall);
martin@9 1263 labelSurMode->setFontColor (kLabelText);
martin@9 1264 labelSurMode->setBackColor (kBlank);
martin@9 1265 labelSurMode->setFrameColor (kBlank);
martin@9 1266 labelSurMode->setText("SurMode");
martin@9 1267 getFrame()->addView (labelSurMode);
martin@10 1268 getFrame()->remember();
martin@9 1269
martin@9 1270 //Label Surround Width
martin@9 1271 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1272 labelSurWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1273 labelSurWidth->setFont (kNormalFontSmall);
martin@9 1274 labelSurWidth->setFontColor (kLabelText);
martin@9 1275 labelSurWidth->setBackColor (kBlank);
martin@9 1276 labelSurWidth->setFrameColor (kBlank);
martin@9 1277 labelSurWidth->setText("SurWidth");
martin@9 1278 getFrame()->addView (labelSurWidth);
martin@10 1279 getFrame()->remember();
martin@9 1280
martin@9 1281 //Label Surround Pattern
martin@9 1282 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1283 labelSurPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1284 labelSurPattern->setFont (kNormalFontSmall);
martin@9 1285 labelSurPattern->setFontColor (kLabelText);
martin@9 1286 labelSurPattern->setBackColor (kBlank);
martin@9 1287 labelSurPattern->setFrameColor (kBlank);
martin@9 1288 labelSurPattern->setText("SurPattern");
martin@9 1289 getFrame()->addView (labelSurPattern);
martin@10 1290 getFrame()->remember();
martin@9 1291
martin@9 1292 //Label Surround Gain
martin@9 1293 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1294 labelSurGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1295 labelSurGain->setFont (kNormalFontSmall);
martin@9 1296 labelSurGain->setFontColor (kLabelText);
martin@9 1297 labelSurGain->setBackColor (kBlank);
martin@9 1298 labelSurGain->setFrameColor (kBlank);
martin@9 1299 labelSurGain->setText("SurGain");
martin@9 1300 getFrame()->addView (labelSurGain);
martin@10 1301 getFrame()->remember();
martin@9 1302
martin@9 1303
martin@9 1304 //Label Centre Pattern
martin@9 1305 LabelSize(0, 0, knob_mode2->getWidth (), tDepth);
martin@9 1306 LabelSize.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+lOffset);
martin@9 1307 labelCtrPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1308 labelCtrPattern->setFont (kNormalFontSmall);
martin@9 1309 labelCtrPattern->setFontColor (kLabelText);
martin@9 1310 labelCtrPattern->setBackColor (kBlank);
martin@9 1311 labelCtrPattern->setFrameColor (kBlank);
martin@9 1312 labelCtrPattern->setText("CtrPattern");
martin@9 1313 getFrame()->addView (labelCtrPattern);
martin@10 1314 getFrame()->remember();
martin@9 1315
martin@9 1316 //Label Centre Gain
martin@9 1317 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1318 labelCtreGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1319 labelCtreGain->setFont (kNormalFontSmall);
martin@9 1320 labelCtreGain->setFontColor (kLabelText);
martin@9 1321 labelCtreGain->setBackColor (kBlank);
martin@9 1322 labelCtreGain->setFrameColor (kBlank);
martin@9 1323 labelCtreGain->setText("CtrGain");
martin@9 1324 getFrame()->addView (labelCtreGain);
martin@10 1325 getFrame()->remember();
martin@9 1326
martin@9 1327
martin@9 1328
martin@9 1329
martin@9 1330
martin@9 1331 //Label Section
martin@9 1332 LabelSize (0, 0, bControls2->getWidth(), tDepthLarge);
martin@9 1333 LabelSize.offset (hPos2, ePos2+tOffset);
martin@9 1334 decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1335 decoderLabel1->setFont (kNormalFontBig);
martin@9 1336 decoderLabel1->setFontColor (kLabelText);
martin@9 1337 decoderLabel1->setBackColor (kBlank);
martin@9 1338 decoderLabel1->setFrameColor (kBlank);
martin@9 1339 decoderLabel1->setText("5.0 Decoding");
martin@9 1340 getFrame()->addView (decoderLabel1);
martin@10 1341 getFrame()->remember();
martin@9 1342
martin@9 1343
martin@9 1344
martin@9 1345 //--CTextLabel--------------------------------------
martin@9 1346 //Mode Value
martin@9 1347 DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 1348 DisplaySize.offset (hPos+cSep, ePos+pOffset);
martin@9 1349 paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1350 paramMode->setHoriAlign(kCenterText);
martin@9 1351 paramMode->setFont (kNormalFontVerySmall);
martin@9 1352 paramMode->setFontColor (kDisplayText);
martin@9 1353 paramMode->setBackColor (kDisplayBackground);
martin@9 1354 paramMode->setFrameColor (kBlackCColor);
martin@9 1355 getFrame()->addView (paramMode);
martin@10 1356 getFrame()->remember();
martin@9 1357
martin@9 1358 //Width Value
martin@9 1359 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1360 paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1361 paramWidth->setHoriAlign(kCenterText);
martin@9 1362 paramWidth->setFont (kNormalFontVerySmall);
martin@9 1363 paramWidth->setFontColor (kDisplayText);
martin@9 1364 paramWidth->setBackColor (kDisplayBackground);
martin@9 1365 paramWidth->setFrameColor (kBlackCColor);
martin@9 1366 getFrame()->addView (paramWidth);
martin@10 1367 getFrame()->remember();
martin@9 1368
martin@9 1369 //Pattern Value
martin@9 1370 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1371 paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1372 paramPattern->setHoriAlign(kCenterText);
martin@9 1373 paramPattern->setFont (kNormalFontVerySmall);
martin@9 1374 paramPattern->setFontColor (kDisplayText);
martin@9 1375 paramPattern->setBackColor (kDisplayBackground);
martin@9 1376 paramPattern->setFrameColor (kBlackCColor);
martin@9 1377 getFrame()->addView (paramPattern);
martin@10 1378 getFrame()->remember();
martin@9 1379
martin@9 1380 //SurMode Value
martin@9 1381 DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0);
martin@9 1382 paramSurMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1383 paramSurMode->setHoriAlign(kCenterText);
martin@9 1384 paramSurMode->setFont (kNormalFontVerySmall);
martin@9 1385 paramSurMode->setFontColor (kDisplayText);
martin@9 1386 paramSurMode->setBackColor (kDisplayBackground);
martin@9 1387 paramSurMode->setFrameColor (kBlackCColor);
martin@9 1388 getFrame()->addView (paramSurMode);
martin@10 1389 getFrame()->remember();
martin@9 1390
martin@9 1391 //SurWidth Value
martin@9 1392 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1393 paramSurWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1394 paramSurWidth->setHoriAlign(kCenterText);
martin@9 1395 paramSurWidth->setFont (kNormalFontVerySmall);
martin@9 1396 paramSurWidth->setFontColor (kDisplayText);
martin@9 1397 paramSurWidth->setBackColor (kDisplayBackground);
martin@9 1398 paramSurWidth->setFrameColor (kBlackCColor);
martin@9 1399 getFrame()->addView (paramSurWidth);
martin@10 1400 getFrame()->remember();
martin@9 1401
martin@9 1402 //SurPattern Value
martin@9 1403 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1404 paramSurPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1405 paramSurPattern->setHoriAlign(kCenterText);
martin@9 1406 paramSurPattern->setFont (kNormalFontVerySmall);
martin@9 1407 paramSurPattern->setFontColor (kDisplayText);
martin@9 1408 paramSurPattern->setBackColor (kDisplayBackground);
martin@9 1409 paramSurPattern->setFrameColor (kBlackCColor);
martin@9 1410 getFrame()->addView (paramSurPattern);
martin@10 1411 getFrame()->remember();
martin@9 1412
martin@9 1413 //SurWidth Value
martin@9 1414 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1415 paramSurGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1416 paramSurGain->setHoriAlign(kCenterText);
martin@9 1417 paramSurGain->setFont (kNormalFontVerySmall);
martin@9 1418 paramSurGain->setFontColor (kDisplayText);
martin@9 1419 paramSurGain->setBackColor (kDisplayBackground);
martin@9 1420 paramSurGain->setFrameColor (kBlackCColor);
martin@9 1421 getFrame()->addView (paramSurGain);
martin@10 1422 getFrame()->remember();
martin@9 1423
martin@9 1424
martin@9 1425 //CtrPattern Value
martin@9 1426 DisplaySize(0, 0, knob_mode2->getWidth (), tDepth);
martin@9 1427 DisplaySize.offset(hPos2+2*cSep+knob_mode2->getWidth (), ePos2+pOffset);
martin@9 1428 paramCtrPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1429 paramCtrPattern->setHoriAlign(kCenterText);
martin@9 1430 paramCtrPattern->setFont (kNormalFontVerySmall);
martin@9 1431 paramCtrPattern->setFontColor (kDisplayText);
martin@9 1432 paramCtrPattern->setBackColor (kDisplayBackground);
martin@9 1433 paramCtrPattern->setFrameColor (kBlackCColor);
martin@9 1434 getFrame()->addView (paramCtrPattern);
martin@10 1435 getFrame()->remember();
martin@9 1436
martin@9 1437 //CtrGain Value
martin@9 1438 DisplaySize.offset(knob_red_blue->getWidth()+cSep, 0);
martin@9 1439 paramCtrGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1440 paramCtrGain->setHoriAlign(kCenterText);
martin@9 1441 paramCtrGain->setFont (kNormalFontVerySmall);
martin@9 1442 paramCtrGain->setFontColor (kDisplayText);
martin@9 1443 paramCtrGain->setBackColor (kDisplayBackground);
martin@9 1444 paramCtrGain->setFrameColor (kBlackCColor);
martin@9 1445 getFrame()->addView (paramCtrGain);
martin@10 1446 getFrame()->remember();
martin@9 1447
martin@9 1448 controls[kMode] = knobMode;
martin@9 1449 controls[kWidth] = knobWidth;
martin@9 1450 controls[kPattern] = knobPattern;
martin@9 1451 controls[kCentrePattern] = knobCentrePattern;
martin@9 1452 controls[kCentreGain] =knobCentreGain;
martin@9 1453 controls[kSurroundMode] = knobSurroundMode;
martin@9 1454 controls[kSurroundPattern] = knobSurroundPattern;
martin@9 1455 controls[kSurroundWidth] = knobSurroundWidth;
martin@9 1456 controls[kSurroundGain] = knobSurroundGain;
martin@10 1457
martin@10 1458 //Forget Label, Knobs etc.
martin@10 1459 bControls->forget();
martin@10 1460 bControls2->forget();
martin@9 1461 }
martin@9 1462
martin@9 1463
martin@9 1464
martin@9 1465
martin@9 1466
martin@9 1467
martin@9 1468 //------------------------------------------------------------------------------------
martin@9 1469 void MyEditor::fiveoneDisplay()
martin@9 1470 {
martin@9 1471 //FIRST OFF - define a top coordinate
martin@9 1472 int hPos = cSep;
martin@9 1473 int ePos = 288;
martin@9 1474 int hPos2 = cSep+37;
martin@9 1475 int ePos2 = 150;
martin@9 1476
martin@9 1477
martin@9 1478 bControls = new CBitmap ("controls.png");
martin@9 1479 CRect controlSize = CRect (0, 0, bControls->getWidth (),bControls->getHeight ());
martin@9 1480 controlSize.offset(cSep, cSep+(cSep+bControls->getHeight())*2);
martin@9 1481 control_view = new CView (controlSize);
martin@9 1482 control_view->setBackground (bControls);
martin@9 1483 getFrame()->addView (control_view);
martin@10 1484 getFrame()->remember();
martin@9 1485
martin@9 1486 bControls2 = new CBitmap ("controls2.png");
martin@9 1487 controlSize = CRect (0, 0, bControls2->getWidth (),bControls2->getHeight ());
martin@9 1488 controlSize.offset(hPos2, ePos2);
martin@9 1489 control_view2 = new CView (controlSize);
martin@9 1490 control_view2->setBackground (bControls2);
martin@9 1491 getFrame()->addView (control_view2);
martin@10 1492 getFrame()->remember();
martin@9 1493
martin@9 1494
martin@9 1495 //Mode
martin@9 1496 r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
martin@9 1497 r.offset(hPos+cSep,ePos+kOffset);
martin@9 1498 knobMode = new CHorizontalSwitch (r, this, kMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
martin@9 1499 getFrame()->addView (knobMode);
martin@10 1500 getFrame()->remember();
martin@9 1501
martin@9 1502 //Width
martin@9 1503 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1504 knobWidth = new CAnimKnob (r, this, kWidth, IMAGE, knob_red->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 1505 getFrame()->addView (knobWidth);
martin@10 1506 getFrame()->remember();
martin@9 1507
martin@9 1508 //Pattern
martin@9 1509 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1510 knobPattern = new CAnimKnob (r, this, kPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 1511 getFrame()->addView (knobPattern);
martin@10 1512 getFrame()->remember();
martin@9 1513
martin@9 1514
martin@9 1515 //Surround Mode
martin@9 1516 r.offset(knob_mode2->getWidth()+cSep+10, 0);
martin@9 1517 knobSurroundMode = new CHorizontalSwitch (r, this, kSurroundMode, 2, knob_mode2->getHeight () / 2, 2, knob_mode2, CPoint (0, 0));
martin@9 1518 getFrame()->addView (knobSurroundMode);
martin@10 1519 getFrame()->remember();
martin@9 1520
martin@9 1521 //Surround Width
martin@9 1522 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1523 knobSurroundWidth = new CAnimKnob (r, this, kSurroundWidth, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_red, CPoint (0, 0));
martin@9 1524 getFrame()->addView (knobSurroundWidth);
martin@10 1525 getFrame()->remember();
martin@9 1526
martin@9 1527 //Surround Pattern
martin@9 1528 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1529 knobSurroundPattern = new CAnimKnob (r, this, kSurroundPattern, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 1530 getFrame()->addView (knobSurroundPattern);
martin@10 1531 getFrame()->remember();
martin@9 1532
martin@9 1533 //Surround Gain
martin@9 1534 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1535 knobSurroundGain = new CAnimKnob (r, this, kSurroundGain, IMAGE, knob_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
martin@9 1536 getFrame()->addView (knobSurroundGain);
martin@10 1537 getFrame()->remember();
martin@9 1538
martin@9 1539
martin@9 1540
martin@9 1541
martin@9 1542
martin@9 1543 //Centre Pattern
martin@9 1544 r (0, 0, knob_mode2->getWidth (), knob_mode2->getHeight () / 2);
martin@9 1545 r.offset(hPos2+cSep, ePos2+kOffset);
martin@9 1546 knobCentrePattern = new CAnimKnob (r, this, kCentrePattern, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 1547 getFrame()->addView (knobCentrePattern);
martin@10 1548 getFrame()->remember();
martin@9 1549
martin@9 1550 //Centre Gain
martin@9 1551 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1552 knobCentreGain = new CAnimKnob (r, this, kCentreGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
martin@9 1553 getFrame()->addView (knobCentreGain);
martin@10 1554 getFrame()->remember();
martin@9 1555
martin@9 1556 //SubGain
martin@9 1557 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1558 knobSubGain = new CAnimKnob (r, this, kSubGain, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue_red, CPoint (0, 0));
martin@9 1559 getFrame()->addView (knobSubGain);
martin@10 1560 getFrame()->remember();
martin@10 1561
martin@9 1562 //FC
martin@9 1563 r.offset(knob_mode2->getWidth()+cSep, 0);
martin@9 1564 knobFc = new CAnimKnob (r, this, kFc, IMAGE, knob_red_blue->getHeight () / IMAGE, knob_blue, CPoint (0, 0));
martin@9 1565 getFrame()->addView (knobFc);
martin@10 1566 getFrame()->remember();
martin@9 1567
martin@9 1568
martin@9 1569
martin@9 1570
martin@9 1571
martin@9 1572
martin@9 1573 //--CTextLabel--------------------------------------
martin@9 1574 //Label Mode
martin@9 1575 LabelSize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 1576 LabelSize.offset (hPos+cSep, ePos+lOffset);
martin@9 1577 labelMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1578 labelMode->setFont (kNormalFontSmall);
martin@9 1579 labelMode->setFontColor (kLabelText);
martin@9 1580 labelMode->setBackColor (kBlank);
martin@9 1581 labelMode->setFrameColor (kBlank);
martin@9 1582 labelMode->setText("Mode");
martin@9 1583 getFrame()->addView (labelMode);
martin@10 1584 getFrame()->remember();
martin@9 1585
martin@9 1586 //Label Width
martin@9 1587 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1588 labelWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1589 labelWidth->setFont (kNormalFontSmall);
martin@9 1590 labelWidth->setFontColor (kLabelText);
martin@9 1591 labelWidth->setBackColor (kBlank);
martin@9 1592 labelWidth->setFrameColor (kBlank);
martin@9 1593 labelWidth->setText("Width");
martin@9 1594 getFrame()->addView (labelWidth);
martin@10 1595 getFrame()->remember();
martin@9 1596
martin@9 1597 //Label Pattern
martin@9 1598 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1599 labelPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1600 labelPattern->setFont (kNormalFontSmall);
martin@9 1601 labelPattern->setFontColor (kLabelText);
martin@9 1602 labelPattern->setBackColor (kBlank);
martin@9 1603 labelPattern->setFrameColor (kBlank);
martin@9 1604 labelPattern->setText("Pattern");
martin@9 1605 getFrame()->addView (labelPattern);
martin@10 1606 getFrame()->remember();
martin@9 1607
martin@9 1608 //Label Surround Mode
martin@9 1609 LabelSize.offset (knob_mode2->getWidth()+cSep+10, 0);
martin@9 1610 labelSurMode = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1611 labelSurMode->setFont (kNormalFontSmall);
martin@9 1612 labelSurMode->setFontColor (kLabelText);
martin@9 1613 labelSurMode->setBackColor (kBlank);
martin@9 1614 labelSurMode->setFrameColor (kBlank);
martin@9 1615 labelSurMode->setText("SurMode");
martin@9 1616 getFrame()->addView (labelSurMode);
martin@10 1617 getFrame()->remember();
martin@9 1618
martin@9 1619 //Label Surround Width
martin@9 1620 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1621 labelSurWidth = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1622 labelSurWidth->setFont (kNormalFontSmall);
martin@9 1623 labelSurWidth->setFontColor (kLabelText);
martin@9 1624 labelSurWidth->setBackColor (kBlank);
martin@9 1625 labelSurWidth->setFrameColor (kBlank);
martin@9 1626 labelSurWidth->setText("SurWidth");
martin@9 1627 getFrame()->addView (labelSurWidth);
martin@10 1628 getFrame()->remember();
martin@9 1629
martin@9 1630 //Label Surround Pattern
martin@9 1631 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1632 labelSurPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1633 labelSurPattern->setFont (kNormalFontSmall);
martin@9 1634 labelSurPattern->setFontColor (kLabelText);
martin@9 1635 labelSurPattern->setBackColor (kBlank);
martin@9 1636 labelSurPattern->setFrameColor (kBlank);
martin@9 1637 labelSurPattern->setText("SurPattern");
martin@9 1638 getFrame()->addView (labelSurPattern);
martin@10 1639 getFrame()->remember();
martin@9 1640
martin@9 1641 //Label Surround Gain
martin@9 1642 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1643 labelSurGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1644 labelSurGain->setFont (kNormalFontSmall);
martin@9 1645 labelSurGain->setFontColor (kLabelText);
martin@9 1646 labelSurGain->setBackColor (kBlank);
martin@9 1647 labelSurGain->setFrameColor (kBlank);
martin@9 1648 labelSurGain->setText("SurGain");
martin@9 1649 getFrame()->addView (labelSurGain);
martin@10 1650 getFrame()->remember();
martin@9 1651
martin@9 1652
martin@9 1653 //Label Centre Pattern
martin@9 1654 LabelSize(0, 0, knob_mode2->getWidth (), tDepth);
martin@9 1655 LabelSize.offset (hPos2+cSep, ePos2+lOffset);
martin@9 1656 labelCtrPattern = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1657 labelCtrPattern->setFont (kNormalFontSmall);
martin@9 1658 labelCtrPattern->setFontColor (kLabelText);
martin@9 1659 labelCtrPattern->setBackColor (kBlank);
martin@9 1660 labelCtrPattern->setFrameColor (kBlank);
martin@9 1661 labelCtrPattern->setText("CtrPattern");
martin@9 1662 getFrame()->addView (labelCtrPattern);
martin@10 1663 getFrame()->remember();
martin@9 1664
martin@9 1665 //Label Centre Gain
martin@9 1666 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1667 labelCtreGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1668 labelCtreGain->setFont (kNormalFontSmall);
martin@9 1669 labelCtreGain->setFontColor (kLabelText);
martin@9 1670 labelCtreGain->setBackColor (kBlank);
martin@9 1671 labelCtreGain->setFrameColor (kBlank);
martin@9 1672 labelCtreGain->setText("CtrGain");
martin@9 1673 getFrame()->addView (labelCtreGain);
martin@10 1674 getFrame()->remember();
martin@9 1675
martin@9 1676 //Label SubGain
martin@9 1677 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1678 labelSubGain = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1679 labelSubGain->setFont (kNormalFontSmall);
martin@9 1680 labelSubGain->setFontColor (kLabelText);
martin@9 1681 labelSubGain->setBackColor (kBlank);
martin@9 1682 labelSubGain->setFrameColor (kBlank);
martin@9 1683 labelSubGain->setText("SubGain");
martin@9 1684 getFrame()->addView (labelSubGain);
martin@10 1685 getFrame()->remember();
martin@10 1686
martin@9 1687 //Label Fc
martin@9 1688 LabelSize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1689 labelFc = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1690 labelFc->setFont (kNormalFontSmall);
martin@9 1691 labelFc->setFontColor (kLabelText);
martin@9 1692 labelFc->setBackColor (kBlank);
martin@9 1693 labelFc->setFrameColor (kBlank);
martin@9 1694 labelFc->setText("xOver");
martin@9 1695 getFrame()->addView (labelFc);
martin@10 1696 getFrame()->remember();
martin@9 1697
martin@9 1698
martin@9 1699
martin@9 1700
martin@9 1701
martin@9 1702 //Label Section
martin@9 1703 LabelSize (0, 0, bControls2->getWidth(), tDepthLarge);
martin@9 1704 LabelSize.offset (hPos2, ePos2+tOffset);
martin@9 1705 decoderLabel1 = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 1706 decoderLabel1->setFont (kNormalFontBig);
martin@9 1707 decoderLabel1->setFontColor (kLabelText);
martin@9 1708 decoderLabel1->setBackColor (kBlank);
martin@9 1709 decoderLabel1->setFrameColor (kBlank);
martin@9 1710 decoderLabel1->setText("5.1 Decoding");
martin@9 1711 getFrame()->addView (decoderLabel1);
martin@10 1712 getFrame()->remember();
martin@9 1713
martin@9 1714
martin@9 1715
martin@9 1716 //--CTextLabel--------------------------------------
martin@9 1717 //Mode Value
martin@9 1718 DisplaySize (0, 0, knob_red_blue->getWidth (), tDepth);
martin@9 1719 DisplaySize.offset (hPos+cSep, ePos+pOffset);
martin@9 1720 paramMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1721 paramMode->setHoriAlign(kCenterText);
martin@9 1722 paramMode->setFont (kNormalFontVerySmall);
martin@9 1723 paramMode->setFontColor (kDisplayText);
martin@9 1724 paramMode->setBackColor (kDisplayBackground);
martin@9 1725 paramMode->setFrameColor (kBlackCColor);
martin@9 1726 getFrame()->addView (paramMode);
martin@10 1727 getFrame()->remember();
martin@9 1728
martin@9 1729 //Width Value
martin@9 1730 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1731 paramWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1732 paramWidth->setHoriAlign(kCenterText);
martin@9 1733 paramWidth->setFont (kNormalFontVerySmall);
martin@9 1734 paramWidth->setFontColor (kDisplayText);
martin@9 1735 paramWidth->setBackColor (kDisplayBackground);
martin@9 1736 paramWidth->setFrameColor (kBlackCColor);
martin@9 1737 getFrame()->addView (paramWidth);
martin@10 1738 getFrame()->remember();
martin@9 1739
martin@9 1740 //Pattern Value
martin@9 1741 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1742 paramPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1743 paramPattern->setHoriAlign(kCenterText);
martin@9 1744 paramPattern->setFont (kNormalFontVerySmall);
martin@9 1745 paramPattern->setFontColor (kDisplayText);
martin@9 1746 paramPattern->setBackColor (kDisplayBackground);
martin@9 1747 paramPattern->setFrameColor (kBlackCColor);
martin@9 1748 getFrame()->addView (paramPattern);
martin@10 1749 getFrame()->remember();
martin@9 1750
martin@9 1751 //SurMode Value
martin@9 1752 DisplaySize.offset (knob_mode2->getWidth()+cSep+10, 0);
martin@9 1753 paramSurMode = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1754 paramSurMode->setHoriAlign(kCenterText);
martin@9 1755 paramSurMode->setFont (kNormalFontVerySmall);
martin@9 1756 paramSurMode->setFontColor (kDisplayText);
martin@9 1757 paramSurMode->setBackColor (kDisplayBackground);
martin@9 1758 paramSurMode->setFrameColor (kBlackCColor);
martin@9 1759 getFrame()->addView (paramSurMode);
martin@10 1760 getFrame()->remember();
martin@9 1761
martin@9 1762 //SurWidth Value
martin@9 1763 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1764 paramSurWidth = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1765 paramSurWidth->setHoriAlign(kCenterText);
martin@9 1766 paramSurWidth->setFont (kNormalFontVerySmall);
martin@9 1767 paramSurWidth->setFontColor (kDisplayText);
martin@9 1768 paramSurWidth->setBackColor (kDisplayBackground);
martin@9 1769 paramSurWidth->setFrameColor (kBlackCColor);
martin@9 1770 getFrame()->addView (paramSurWidth);
martin@10 1771 getFrame()->remember();
martin@9 1772
martin@9 1773 //SurPattern Value
martin@9 1774 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1775 paramSurPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1776 paramSurPattern->setHoriAlign(kCenterText);
martin@9 1777 paramSurPattern->setFont (kNormalFontVerySmall);
martin@9 1778 paramSurPattern->setFontColor (kDisplayText);
martin@9 1779 paramSurPattern->setBackColor (kDisplayBackground);
martin@9 1780 paramSurPattern->setFrameColor (kBlackCColor);
martin@9 1781 getFrame()->addView (paramSurPattern);
martin@10 1782 getFrame()->remember();
martin@9 1783
martin@9 1784 //SurWidth Value
martin@9 1785 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1786 paramSurGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1787 paramSurGain->setHoriAlign(kCenterText);
martin@9 1788 paramSurGain->setFont (kNormalFontVerySmall);
martin@9 1789 paramSurGain->setFontColor (kDisplayText);
martin@9 1790 paramSurGain->setBackColor (kDisplayBackground);
martin@9 1791 paramSurGain->setFrameColor (kBlackCColor);
martin@9 1792 getFrame()->addView (paramSurGain);
martin@10 1793 getFrame()->remember();
martin@9 1794
martin@9 1795
martin@9 1796 //CtrPattern Value
martin@9 1797 DisplaySize(0, 0, knob_mode2->getWidth (), tDepth);
martin@9 1798 DisplaySize.offset(hPos2+cSep, ePos2+pOffset);
martin@9 1799 paramCtrPattern = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1800 paramCtrPattern->setHoriAlign(kCenterText);
martin@9 1801 paramCtrPattern->setFont (kNormalFontVerySmall);
martin@9 1802 paramCtrPattern->setFontColor (kDisplayText);
martin@9 1803 paramCtrPattern->setBackColor (kDisplayBackground);
martin@9 1804 paramCtrPattern->setFrameColor (kBlackCColor);
martin@9 1805 getFrame()->addView (paramCtrPattern);
martin@10 1806 getFrame()->remember();
martin@9 1807
martin@9 1808 //CtrGain Value
martin@9 1809 DisplaySize.offset(knob_red_blue->getWidth()+cSep, 0);
martin@9 1810 paramCtrGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1811 paramCtrGain->setHoriAlign(kCenterText);
martin@9 1812 paramCtrGain->setFont (kNormalFontVerySmall);
martin@9 1813 paramCtrGain->setFontColor (kDisplayText);
martin@9 1814 paramCtrGain->setBackColor (kDisplayBackground);
martin@9 1815 paramCtrGain->setFrameColor (kBlackCColor);
martin@9 1816 getFrame()->addView (paramCtrGain);
martin@10 1817 getFrame()->remember();
martin@9 1818
martin@9 1819 //SubGain Value
martin@9 1820 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1821 paramSubGain = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1822 paramSubGain->setHoriAlign(kCenterText);
martin@9 1823 paramSubGain->setFont (kNormalFontVerySmall);
martin@9 1824 paramSubGain->setFontColor (kDisplayText);
martin@9 1825 paramSubGain->setBackColor (kDisplayBackground);
martin@9 1826 paramSubGain->setFrameColor (kBlackCColor);
martin@9 1827 getFrame()->addView (paramSubGain);
martin@10 1828 getFrame()->remember();
martin@9 1829
martin@9 1830 //Fc Value
martin@9 1831 DisplaySize.offset (knob_red_blue->getWidth()+cSep, 0);
martin@9 1832 paramFc = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 1833 paramFc->setHoriAlign(kCenterText);
martin@9 1834 paramFc->setFont (kNormalFontVerySmall);
martin@9 1835 paramFc->setFontColor (kDisplayText);
martin@9 1836 paramFc->setBackColor (kDisplayBackground);
martin@9 1837 paramFc->setFrameColor (kBlackCColor);
martin@9 1838 getFrame()->addView (paramFc);
martin@10 1839 getFrame()->remember();
martin@10 1840
martin@9 1841
martin@9 1842 controls[kMode] = knobMode;
martin@9 1843 controls[kWidth] = knobWidth;
martin@9 1844 controls[kPattern] = knobPattern;
martin@9 1845 controls[kCentrePattern] = knobCentrePattern;
martin@9 1846 controls[kCentreGain] =knobCentreGain;
martin@9 1847 controls[kSubGain] = knobSubGain;
martin@9 1848 controls[kFc] = knobFc;
martin@9 1849 controls[kSurroundMode] = knobSurroundMode;
martin@9 1850 controls[kSurroundPattern] = knobSurroundPattern;
martin@9 1851 controls[kSurroundWidth] = knobSurroundWidth;
martin@9 1852 controls[kSurroundGain] = knobSurroundGain;
martin@10 1853
martin@10 1854 //Forget Label, Knobs etc.
martin@10 1855 bControls->forget();
martin@10 1856 bControls2->forget();
martin@9 1857 }
martin@9 1858
martin@9 1859
martin@9 1860
martin@9 1861 //------------------------------------------------------------------------------------
martin@9 1862 void MyEditor::hellerDisplay()
martin@9 1863 {
martin@9 1864 heller1 = new CTextLabel(control_view->getViewSize(), 0, 0, kCenterText);
martin@9 1865 heller1->setBackColor(CColor(23,25,26,200));
martin@9 1866 heller1->setFont (kNormalFontVeryBig);
martin@9 1867 heller1->setFontColor (CColor (255,255,255,255));
martin@9 1868 if (myPlot->decoder_mode5x==1) {
martin@9 1869 heller1->setText("Heller 1 Decoder");
martin@9 1870 }
martin@9 1871 else if (myPlot->decoder_mode5x==2){
martin@9 1872 heller1->setText("Heller 2 Decoder");
martin@9 1873 }
martin@9 1874 getFrame()->addView (heller1);
martin@10 1875 getFrame()->remember();
martin@9 1876
martin@9 1877 heller2 = new CTextLabel(control_view2->getViewSize(), 0, 0, kCenterText);
martin@9 1878 heller2->setBackColor(CColor(23,25,26,200));
martin@9 1879 heller2->setFont (kNormalFontVeryBig);
martin@9 1880 heller2->setFontColor (CColor (255,255,255,255));
martin@9 1881 getFrame()->addView (heller2);
martin@10 1882 getFrame()->remember();
martin@9 1883 };
martin@9 1884
martin@9 1885
martin@9 1886
martin@9 1887 //------------------------------------------------------------------------------------
martin@9 1888 void MyEditor::nameDisplay(CFrame* newFrame)
martin@9 1889 {
martin@9 1890 //FIRST OFF - define a top coordinate
martin@9 1891 int hPos = cSep;
martin@9 1892 int ePos = 426;
martin@9 1893
martin@9 1894
martin@6 1895 bName = new CBitmap ("my_name.png");
martin@6 1896
martin@6 1897
martin@0 1898 CRect nameSize = CRect (0, 0, bName->getWidth (),bName->getHeight ());
martin@9 1899 nameSize.offset(hPos, ePos);
martin@0 1900 CView* name_view = new CView (nameSize);
martin@0 1901 name_view->setBackground (bName);
martin@0 1902 newFrame->addView (name_view);
martin@10 1903 newFrame->remember();
martin@0 1904
martin@9 1905 LabelSize (0, 0, 160, tDepth);
martin@9 1906 LabelSize.offset(hPos+cSep, ePos+cSep+tDepth+10);
martin@0 1907 CTextLabel *vendor_version = new CTextLabel(LabelSize, 0, 0, kLeftText);
martin@10 1908 CTextLabel *bitMode = new CTextLabel(LabelSize, 0, 0, kLeftText);
martin@0 1909
martin@0 1910 char text[100];
martin@0 1911 int i1=(int)floor(VERSION/1000.0);
martin@0 1912 int i2= (int)floor((VERSION-i1*1000)/100.0);
martin@0 1913 int i3= (int)floor((VERSION-i1*1000-i2*100)/10.0);
martin@0 1914 int i4= (int)floor(VERSION-i1*1000-i2*100-i3*10);
martin@0 1915 sprintf(text, "Version: %d.%d.%d.%d", i1, i2,i3,i4);
martin@0 1916 vendor_version->setText(text);
martin@0 1917 vendor_version->setFont (kNormalFontSmall);
martin@0 1918 vendor_version->setFontColor (kLabelText);
martin@0 1919 vendor_version->setHoriAlign(kLeftText);
martin@0 1920 vendor_version->setBackColor (kBlank);
martin@0 1921 vendor_version->setFrameColor (kBlank);
martin@0 1922 newFrame->addView (vendor_version);
martin@10 1923 newFrame->remember();
martin@0 1924
martin@9 1925 LabelSize.offset(0, -(tDepth+10));
martin@0 1926 bitMode = new CTextLabel(LabelSize, 0, 0, kLeftText);
martin@9 1927 sprintf(text,"Bit Mode: %d", (int)effect->getParameter(102));
martin@0 1928 bitMode->setText(text);
martin@0 1929 bitMode->setFont (kNormalFontSmall);
martin@10 1930 bitMode->setFontColor (kLabelText);
martin@0 1931 bitMode->setHoriAlign(kLeftText);
martin@0 1932 bitMode->setBackColor (kBlank);
martin@0 1933 bitMode->setFrameColor (kBlank);
martin@10 1934
martin@10 1935 //Forget labels and background
martin@10 1936 bName->forget ();
martin@10 1937 vendor_version->forget();
martin@0 1938 newFrame->addView (bitMode);
martin@10 1939 newFrame->remember();
martin@0 1940 }
martin@0 1941
martin@0 1942
martin@0 1943
martin@0 1944
martin@0 1945 //------------------------------------------------------------------------------------
martin@9 1946 void MyEditor::plotDisplay(CFrame* newFrame)
martin@0 1947 {
martin@9 1948 //FIRST OFF - define a top coordinate
martin@9 1949 int hPos = 264;
martin@9 1950 int ePos = cSep;
martin@9 1951
martin@9 1952 bPlot = new CBitmap ("plot.png");
martin@9 1953
martin@9 1954
martin@9 1955 CRect plotArea (0, 0, bPlot->getWidth (),bPlot->getHeight ());
martin@9 1956 plotArea.offset(hPos, ePos);
martin@7 1957 CView* plotBackground = new CView (plotArea);
martin@9 1958 plotBackground->setBackground(bPlot);
martin@7 1959 newFrame->addView (plotBackground);
martin@10 1960 newFrame->remember();
martin@0 1961
martin@7 1962
martin@9 1963 CRect plotSize (0, 0, bPlot->getWidth (), bPlot->getHeight ());
martin@9 1964 plotSize.offset(hPos, ePos);
martin@7 1965 myPlot = new polarPlot(plotSize);
martin@7 1966 newFrame->addView (myPlot);
martin@10 1967 newFrame->remember();
martin@0 1968 }
martin@0 1969
martin@0 1970
martin@0 1971 //------------------------------------------------------------------------------------
martin@9 1972 void MyEditor::settingsDisplay(CFrame* newFrame)
martin@8 1973 {
martin@9 1974 //FIRST OFF - define a top coordinate
martin@9 1975 int hPos = 402;
martin@9 1976 int ePos = 150;
martin@9 1977
martin@9 1978 bSettings = new CBitmap ("zoom.png");
martin@9 1979
martin@9 1980 CRect plotArea (0, 0, bSettings->getWidth (),bSettings->getHeight ());
martin@9 1981 plotArea.offset(hPos, ePos);
martin@8 1982 CView* settingsBackground = new CView (plotArea);
martin@9 1983 settingsBackground->setBackground(bSettings);
martin@8 1984 newFrame->addView (settingsBackground);
martin@10 1985 newFrame->remember();
martin@10 1986
martin@8 1987
martin@8 1988 //Decoder Mode Knob
martin@8 1989 r (0, 0, knob_mode5->getWidth (), knob_mode5->getHeight () / 5);
martin@9 1990 r.offset(hPos+cSep, ePos+kOffset);
martin@8 1991 knobDecoder = new CHorizontalSwitch (r, this, kDecoderMode, 5, knob_mode5->getHeight () / 5, 5, knob_mode5, CPoint (0, 0));
martin@8 1992 newFrame->addView (knobDecoder);
martin@10 1993 newFrame->remember();
martin@8 1994
martin@9 1995 //Channel Order Knob
martin@9 1996 r.offset(knob_mode5->getWidth()+cSep, 0);
martin@9 1997 knobChannel = new CHorizontalSwitch (r, this, kChannelOrder, 2, knob_mode2b->getHeight () / 2, 2, knob_mode2b, CPoint (0, 0));
martin@9 1998 newFrame->addView (knobChannel);
martin@10 1999 newFrame->remember();
martin@9 2000
martin@9 2001
martin@9 2002
martin@8 2003 //Label Decoder Mode
martin@9 2004 LabelSize (0, 0, knob_mode5->getWidth (), tDepth);
martin@9 2005 LabelSize.offset (hPos+cSep, ePos+lOffset);
martin@8 2006 CTextLabel* labelDecoder = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@8 2007 labelDecoder->setFont (kNormalFontSmall);
martin@8 2008 labelDecoder->setFontColor (kLabelText);
martin@8 2009 labelDecoder->setBackColor (kBlank);
martin@8 2010 labelDecoder->setFrameColor (kBlank);
martin@8 2011 labelDecoder->setText("Decoding");
martin@8 2012 newFrame->addView (labelDecoder);
martin@10 2013 newFrame->remember();
martin@8 2014
martin@9 2015 //Label Channel Order
martin@9 2016 LabelSize.offset (knob_mode5->getWidth ()+cSep, 0);
martin@9 2017 CTextLabel* labelChannel = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 2018 labelChannel->setFont (kNormalFontSmall);
martin@9 2019 labelChannel->setFontColor (kLabelText);
martin@9 2020 labelChannel->setBackColor (kBlank);
martin@9 2021 labelChannel->setFrameColor (kBlank);
martin@9 2022 labelChannel->setText("Channels");
martin@9 2023 newFrame->addView (labelChannel);
martin@10 2024 newFrame->remember();
martin@9 2025
martin@9 2026
martin@9 2027
martin@9 2028
martin@8 2029 //Decoder Mode Value
martin@9 2030 DisplaySize (0, 0, knob_mode5->getWidth (), tDepth);
martin@9 2031 DisplaySize.offset (hPos+cSep, ePos+pOffset);
martin@8 2032 paramDecoder = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@8 2033 paramDecoder->setHoriAlign(kCenterText);
martin@8 2034 paramDecoder->setFont (kNormalFontVerySmall);
martin@8 2035 paramDecoder->setFontColor (kDisplayText);
martin@8 2036 paramDecoder->setBackColor (kDisplayBackground);
martin@8 2037 paramDecoder->setFrameColor (kBlackCColor);
martin@8 2038 newFrame->addView (paramDecoder);
martin@10 2039 newFrame->remember();
martin@8 2040
martin@9 2041 //Channel Order Value
martin@9 2042 DisplaySize.offset (knob_mode5->getWidth ()+cSep, 0);
martin@9 2043 paramChannel = new CTextLabel (DisplaySize, 0, 0, kCenterText);
martin@9 2044 paramChannel->setHoriAlign(kCenterText);
martin@9 2045 paramChannel->setFont (kNormalFontVerySmall);
martin@9 2046 paramChannel->setFontColor (kDisplayText);
martin@9 2047 paramChannel->setBackColor (kDisplayBackground);
martin@9 2048 paramChannel->setFrameColor (kBlackCColor);
martin@9 2049 newFrame->addView (paramChannel);
martin@10 2050 newFrame->remember();
martin@9 2051
martin@9 2052
martin@9 2053 //Label Section
martin@9 2054 LabelSize (0, 0, bSettings->getWidth (), tDepthLarge);
martin@9 2055 LabelSize.offset (hPos, ePos+tOffset);
martin@9 2056 CTextLabel* labelSettings = new CTextLabel (LabelSize, 0, 0, kCenterText);
martin@9 2057 labelSettings->setFont (kNormalFontBig);
martin@9 2058 labelSettings->setFontColor (kLabelText);
martin@9 2059 labelSettings->setBackColor (kBlank);
martin@9 2060 labelSettings->setFrameColor (kBlank);
martin@9 2061 labelSettings->setText("Settings");
martin@10 2062 newFrame->addView (labelSettings);
martin@10 2063 newFrame->remember();
martin@10 2064
martin@10 2065 //-- remember our controls so that we can sync them with the state of the effect
martin@10 2066 controls[kDecoderMode] = knobDecoder;
martin@10 2067 controls[kChannelOrder] = knobChannel;
martin@10 2068
martin@10 2069 //Forget this section's Background, Knobs, Labels
martin@10 2070 bSettings->forget();
martin@10 2071 settingsBackground->forget();
martin@10 2072 knobDecoder->forget();
martin@10 2073 knobChannel->forget();
martin@10 2074 labelDecoder->forget();
martin@10 2075 labelChannel->forget();
martin@10 2076 labelSettings->forget();
martin@10 2077 paramDecoder->forget();
martin@10 2078 paramChannel->forget();
martin@9 2079 }
martin@9 2080
martin@9 2081
martin@9 2082
martin@9 2083 //------------------------------------------------------------------------------------
martin@9 2084 void MyEditor::clearStereo()
martin@9 2085 {
martin@9 2086 //Section Title
martin@9 2087 getFrame()->removeView(decoderLabel1);
martin@9 2088 //Knob Titles
martin@9 2089 getFrame()->removeView(labelMode);
martin@9 2090 getFrame()->removeView(labelWidth);
martin@9 2091 getFrame()->removeView(labelPattern);
martin@9 2092 getFrame()->removeView(labelRearVerb);
martin@9 2093 getFrame()->removeView(labelHiVerb);
martin@9 2094 //Knob Parameter Values
martin@9 2095 getFrame()->removeView(paramMode);
martin@9 2096 getFrame()->removeView(paramWidth);
martin@9 2097 getFrame()->removeView(paramPattern);
martin@9 2098 getFrame()->removeView(paramRearVerb);
martin@9 2099 getFrame()->removeView(paramHiVerb);
martin@9 2100 //Knobs
martin@10 2101 getFrame()->removeView(knobMode);
martin@9 2102 getFrame()->removeView(knobWidth);
martin@9 2103 getFrame()->removeView(knobPattern);
martin@9 2104 getFrame()->removeView(knobRearVerb);
martin@9 2105 getFrame()->removeView(knobHiVerb);
martin@9 2106 //Section background
martin@9 2107 getFrame()->removeView(control_view);
martin@9 2108 }
martin@9 2109
martin@9 2110
martin@9 2111 //------------------------------------------------------------------------------------
martin@9 2112 void MyEditor::clearTwoOne()
martin@9 2113 {
martin@9 2114 //Section Title
martin@9 2115 getFrame()->removeView(decoderLabel1);
martin@9 2116 //Knob Titles
martin@9 2117 getFrame()->removeView(labelMode);
martin@9 2118 getFrame()->removeView(labelWidth);
martin@9 2119 getFrame()->removeView(labelPattern);
martin@9 2120 getFrame()->removeView(labelRearVerb);
martin@9 2121 getFrame()->removeView(labelHiVerb);
martin@9 2122 getFrame()->removeView(labelSubGain);
martin@9 2123 getFrame()->removeView(labelFc);
martin@9 2124 //Knob Parameter Values
martin@9 2125 getFrame()->removeView(paramMode);
martin@9 2126 getFrame()->removeView(paramWidth);
martin@9 2127 getFrame()->removeView(paramPattern);
martin@9 2128 getFrame()->removeView(paramRearVerb);
martin@9 2129 getFrame()->removeView(paramHiVerb);
martin@9 2130 getFrame()->removeView(paramSubGain);
martin@9 2131 getFrame()->removeView(paramFc);
martin@9 2132
martin@9 2133 //Knobs
martin@9 2134 getFrame()->removeView(knobWidth);
martin@9 2135 getFrame()->removeView(knobPattern);
martin@9 2136 getFrame()->removeView(knobMode);
martin@9 2137 getFrame()->removeView(knobRearVerb);
martin@9 2138 getFrame()->removeView(knobHiVerb);
martin@9 2139 getFrame()->removeView(knobSubGain);
martin@9 2140 getFrame()->removeView(knobFc);
martin@9 2141 //Section background
martin@9 2142 getFrame()->removeView(control_view);
martin@9 2143 getFrame()->removeView(control_view2);
martin@9 2144 }
martin@9 2145
martin@9 2146
martin@9 2147 //------------------------------------------------------------------------------------
martin@9 2148 void MyEditor::clearFive()
martin@9 2149 {
martin@9 2150 //Section Title
martin@9 2151 getFrame()->removeView(decoderLabel1);
martin@9 2152 //Knob Titles
martin@9 2153 getFrame()->removeView(labelMode);
martin@9 2154 getFrame()->removeView(labelWidth);
martin@9 2155 getFrame()->removeView(labelPattern);
martin@9 2156 getFrame()->removeView(labelSurMode);
martin@9 2157 getFrame()->removeView(labelSurWidth);
martin@9 2158 getFrame()->removeView(labelSurPattern);
martin@9 2159 getFrame()->removeView(labelSurGain);
martin@9 2160 getFrame()->removeView(labelCtrPattern);
martin@9 2161 getFrame()->removeView(labelCtreGain);
martin@9 2162 //Knob Parameter Values
martin@9 2163 getFrame()->removeView(paramMode);
martin@9 2164 getFrame()->removeView(paramWidth);
martin@9 2165 getFrame()->removeView(paramPattern);
martin@9 2166 getFrame()->removeView(paramSurMode);
martin@9 2167 getFrame()->removeView(paramSurWidth);
martin@9 2168 getFrame()->removeView(paramSurPattern);
martin@9 2169 getFrame()->removeView(paramSurGain);
martin@9 2170 getFrame()->removeView(paramCtrPattern);
martin@9 2171 getFrame()->removeView(paramCtrGain);
martin@9 2172 //Knobs
martin@9 2173 getFrame()->removeView(knobWidth);
martin@9 2174 getFrame()->removeView(knobPattern);
martin@9 2175 getFrame()->removeView(knobMode);
martin@9 2176 getFrame()->removeView(knobSurroundMode);
martin@9 2177 getFrame()->removeView(knobSurroundWidth);
martin@9 2178 getFrame()->removeView(knobSurroundPattern);
martin@9 2179 getFrame()->removeView(knobSurroundGain);
martin@9 2180 getFrame()->removeView(knobCentrePattern);
martin@9 2181 getFrame()->removeView(knobCentreGain);
martin@9 2182 //Section background
martin@9 2183 getFrame()->removeView(control_view);
martin@9 2184 getFrame()->removeView(control_view2);
martin@9 2185 }
martin@9 2186
martin@9 2187
martin@9 2188
martin@9 2189 //------------------------------------------------------------------------------------
martin@9 2190 void MyEditor::clearFour()
martin@9 2191 {
martin@9 2192 //Section Title
martin@9 2193 getFrame()->removeView(decoderLabel1);
martin@9 2194 //Knob Titles
martin@9 2195 getFrame()->removeView(labelMode);
martin@9 2196 getFrame()->removeView(labelWidth);
martin@9 2197 getFrame()->removeView(labelPattern);
martin@9 2198 getFrame()->removeView(labelSurMode);
martin@9 2199 getFrame()->removeView(labelSurWidth);
martin@9 2200 getFrame()->removeView(labelSurPattern);
martin@9 2201 getFrame()->removeView(labelSurGain);
martin@9 2202 //Knob Parameter Values
martin@9 2203 getFrame()->removeView(paramMode);
martin@9 2204 getFrame()->removeView(paramWidth);
martin@9 2205 getFrame()->removeView(paramPattern);
martin@9 2206 getFrame()->removeView(paramSurMode);
martin@9 2207 getFrame()->removeView(paramSurWidth);
martin@9 2208 getFrame()->removeView(paramSurPattern);
martin@9 2209 getFrame()->removeView(paramSurGain);
martin@9 2210 //Knobs
martin@9 2211 getFrame()->removeView(knobWidth);
martin@9 2212 getFrame()->removeView(knobPattern);
martin@9 2213 getFrame()->removeView(knobMode);
martin@9 2214 getFrame()->removeView(knobSurroundMode);
martin@9 2215 getFrame()->removeView(knobSurroundWidth);
martin@9 2216 getFrame()->removeView(knobSurroundPattern);
martin@9 2217 getFrame()->removeView(knobSurroundGain);
martin@9 2218 //Section background
martin@9 2219 getFrame()->removeView(control_view);
martin@9 2220 }
martin@9 2221
martin@9 2222
martin@9 2223
martin@9 2224 //------------------------------------------------------------------------------------
martin@9 2225 void MyEditor::clearFiveOne()
martin@9 2226 {
martin@9 2227 //Section Title
martin@9 2228 getFrame()->removeView(decoderLabel1);
martin@9 2229 //Knob Titles
martin@9 2230 getFrame()->removeView(labelMode);
martin@9 2231 getFrame()->removeView(labelWidth);
martin@9 2232 getFrame()->removeView(labelPattern);
martin@9 2233 getFrame()->removeView(labelSurMode);
martin@9 2234 getFrame()->removeView(labelSurWidth);
martin@9 2235 getFrame()->removeView(labelSurPattern);
martin@9 2236 getFrame()->removeView(labelSurGain);
martin@9 2237 getFrame()->removeView(labelCtrPattern);
martin@9 2238 getFrame()->removeView(labelCtreGain);
martin@9 2239 getFrame()->removeView(labelSubGain);
martin@9 2240 getFrame()->removeView(labelFc);
martin@9 2241 //Knob Parameter Values
martin@9 2242 getFrame()->removeView(paramMode);
martin@9 2243 getFrame()->removeView(paramWidth);
martin@9 2244 getFrame()->removeView(paramPattern);
martin@9 2245 getFrame()->removeView(paramSurMode);
martin@9 2246 getFrame()->removeView(paramSurWidth);
martin@9 2247 getFrame()->removeView(paramSurPattern);
martin@9 2248 getFrame()->removeView(paramSurGain);
martin@9 2249 getFrame()->removeView(paramCtrPattern);
martin@9 2250 getFrame()->removeView(paramCtrGain);
martin@9 2251 getFrame()->removeView(paramSubGain);
martin@9 2252 getFrame()->removeView(paramFc);
martin@9 2253 //Knobs
martin@9 2254 getFrame()->removeView(knobWidth);
martin@9 2255 getFrame()->removeView(knobPattern);
martin@9 2256 getFrame()->removeView(knobMode);
martin@9 2257 getFrame()->removeView(knobSurroundMode);
martin@9 2258 getFrame()->removeView(knobSurroundWidth);
martin@9 2259 getFrame()->removeView(knobSurroundPattern);
martin@9 2260 getFrame()->removeView(knobSurroundGain);
martin@9 2261 getFrame()->removeView(knobCentrePattern);
martin@9 2262 getFrame()->removeView(knobCentreGain);
martin@9 2263 getFrame()->removeView(knobSubGain);
martin@9 2264 getFrame()->removeView(knobFc);
martin@9 2265 //Section background
martin@9 2266 getFrame()->removeView(control_view);
martin@9 2267 getFrame()->removeView(control_view2);
martin@9 2268 }
martin@9 2269
martin@9 2270
martin@9 2271 //------------------------------------------------------------------------------------
martin@9 2272 void MyEditor::clearHeller()
martin@9 2273 {
martin@9 2274 //Section background
martin@9 2275 getFrame()->removeView(heller1);
martin@9 2276 getFrame()->removeView(heller2);
martin@9 2277 };
martin@9 2278
martin@9 2279
martin@9 2280 //------------------------------------------------------------------------------------
martin@9 2281 void MyEditor::modeChange()
martin@9 2282 {
martin@9 2283 //First remove the previous mode's view
martin@9 2284 switch (myPlot->decoder_prev) {
martin@9 2285 case 2:
martin@9 2286 clearStereo();
martin@9 2287 break;
martin@9 2288 case 3:
martin@9 2289 clearTwoOne();
martin@9 2290 break;
martin@9 2291 case 4:
martin@9 2292 clearFour();
martin@9 2293 break;
martin@9 2294 case 5:
martin@10 2295 if (myPlot->decoder_mode5x != 0) {
martin@10 2296 clearHeller();//Remove Heller Blank
martin@10 2297 }
martin@9 2298 clearFive();
martin@9 2299 break;
martin@9 2300 case 6:
martin@10 2301 if (myPlot->decoder_mode5x != 0) {
martin@10 2302 clearHeller();//Remove Heller Blank
martin@10 2303 }
martin@9 2304 clearFiveOne();
martin@9 2305 break;
martin@9 2306
martin@9 2307 default:
martin@9 2308 break;
martin@9 2309 }
martin@9 2310
martin@9 2311
martin@9 2312 //Second add the new mode's view
martin@9 2313 switch (myPlot->decoder_mode) {
martin@9 2314 case 2:
martin@9 2315 stereoDisplay();
martin@9 2316 //Sync Parameters
martin@9 2317 for (int i = 5; i <= 9; i++)
martin@9 2318 setParameter (i, effect->getParameter (i));
martin@9 2319 break;
martin@9 2320 case 3:
martin@9 2321 twooneDisplay();
martin@9 2322 //Sync Parameters
martin@9 2323 for (int i = 5; i <= 9; i++)
martin@9 2324 setParameter (i, effect->getParameter (i));
martin@9 2325 for (int i = 12; i <= 13; i++)
martin@9 2326 setParameter (i, effect->getParameter (i));
martin@9 2327 break;
martin@9 2328 case 4:
martin@9 2329 fourDisplay();
martin@9 2330 //Sync Parameters
martin@9 2331 for (int i = 5; i <= 7; i++)
martin@9 2332 setParameter (i, effect->getParameter (i));
martin@9 2333 for (int i = 14; i <= 17; i++)
martin@9 2334 setParameter (i, effect->getParameter (i));
martin@9 2335 break;
martin@9 2336 case 5:
martin@9 2337 fiveDisplay();
martin@9 2338 //Sync Parameters
martin@9 2339 for (int i = 5; i <= 7; i++)
martin@9 2340 setParameter (i, effect->getParameter (i));
martin@9 2341 for (int i = 10; i <= 11; i++)
martin@9 2342 setParameter (i, effect->getParameter (i));
martin@9 2343 for (int i = 14; i <= 17; i++)
martin@9 2344 setParameter (i, effect->getParameter (i));
martin@9 2345 if (myPlot->decoder_mode5x != 0) {
martin@9 2346 hellerDisplay();//Blank Out Controls
martin@9 2347 }
martin@9 2348 break;
martin@9 2349 case 6:
martin@9 2350 {
martin@9 2351 fiveoneDisplay();
martin@9 2352 //Sync Parameters
martin@9 2353 for (int i = 5; i <= 7; i++)
martin@9 2354 setParameter (i, effect->getParameter (i));
martin@9 2355 for (int i = 10; i <= 17; i++)
martin@9 2356 setParameter (i, effect->getParameter (i));
martin@9 2357 if (myPlot->decoder_mode5x != 0) {
martin@9 2358 hellerDisplay();//Blank Out Controls
martin@9 2359 }
martin@9 2360 }
martin@9 2361 break;
martin@9 2362
martin@9 2363 default:
martin@9 2364 break;
martin@9 2365 }
martin@10 2366
martin@10 2367 myPlot->decoder_prev = myPlot->decoder_mode;
martin@9 2368 }
martin@9 2369
martin@9 2370
martin@9 2371
martin@8 2372 //------------------------------------------------------------------------------------
martin@0 2373 void MyEditor::suspendDisplay()
martin@0 2374 {
martin@0 2375 suspend = new CTextLabel(frameSize, 0, 0, kCenterText);
martin@9 2376 suspend->setBackColor(CColor(23,25,26,200));//150
martin@0 2377 suspend->setFont (kNormalFontVeryBig);
martin@0 2378 suspend->setFontColor (CColor (255,255,255,255));
martin@0 2379 suspend->setText("Currently Suspended");
martin@0 2380 getFrame()->addView (suspend);
martin@10 2381 getFrame()->remember();
martin@10 2382
martin@0 2383 }
martin@0 2384
martin@0 2385 //------------------------------------------------------------------------------------
martin@0 2386 void MyEditor::resumeDisplay()
martin@0 2387 {
martin@0 2388 getFrame()->removeView(suspend);
martin@0 2389 }
martin@0 2390
martin@0 2391
martin@0 2392
martin@0 2393 //------------------------------------------------------------------------------------
martin@0 2394 void MyEditor::valueChanged (CControl* pControl)
martin@0 2395 {
martin@0 2396 //-- valueChanged is called whenever the user changes one of the controls in the User Interface (UI)
martin@0 2397 effect->setParameterAutomated (pControl->getTag (), pControl->getValue ());
martin@0 2398
martin@0 2399 //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.
martin@0 2400 setParameter (pControl->getTag (), pControl->getValue ());
martin@0 2401 }
martin@0 2402
martin@0 2403 //------------------------------------------------------------------------------------
martin@0 2404 void MyEditor::setParameter (VstInt32 index, float value)
martin@0 2405 {
martin@0 2406 //-- setParameter is called when the host automates one of the effects parameter.
martin@0 2407 //-- The UI should reflect this state so we set the value of the control to the new value.
martin@0 2408 //-- VSTGUI will automaticly redraw changed controls in the next idle (as this call happens to be in the process thread).
martin@0 2409 if (frame && index < kNumParameters)
martin@9 2410 {
martin@12 2411 bool exists = true; //Checks if control exists, needed for outside automation
martin@9 2412
martin@7 2413 switch (index) {
martin@9 2414 case kRotate:
martin@12 2415 //exists = getFrame()->isChild(knobRotate);
martin@7 2416 break;
martin@9 2417 case kTilt:
martin@12 2418 //exists = getFrame()->isChild(knobTilt);
martin@7 2419 break;
martin@9 2420 case kTumble:
martin@12 2421 //exists = getFrame()->isChild(knobTumble);
martin@9 2422 break;
martin@9 2423 case kZoom:
martin@12 2424 //exists = getFrame()->isChild(knobZoom);
martin@9 2425 break;
martin@9 2426 case kZoomMethod:
martin@12 2427 //exists = getFrame()->isChild(knobZoomMethod);
martin@9 2428 break;
martin@7 2429 case kMode:
martin@8 2430 if (value<=0.5f) {
martin@8 2431 myPlot->stereo_mode = 0;
martin@8 2432 }
martin@8 2433 else {
martin@8 2434 myPlot->stereo_mode = 1;
martin@8 2435 }
martin@8 2436 myPlot->setDirty();
martin@11 2437 exists = getFrame()->isChild(knobMode);
martin@8 2438 break;
martin@9 2439 case kWidth:
martin@9 2440 myPlot->width = (double)value*90;
martin@9 2441 myPlot->setDirty();
martin@11 2442 exists = getFrame()->isChild(knobWidth);
martin@9 2443 break;
martin@9 2444 case kPattern:
martin@9 2445 myPlot->pattern = (double)value;
martin@9 2446 myPlot->setDirty();
martin@11 2447 exists = getFrame()->isChild(knobPattern);
martin@9 2448 break;
martin@9 2449 case kRearVerb:
martin@11 2450 exists = getFrame()->isChild(knobHiVerb);
martin@9 2451 break;
martin@9 2452 case kHiVerb:
martin@11 2453 exists = getFrame()->isChild(knobRearVerb);
martin@9 2454 break;
martin@8 2455 case kCentrePattern:
martin@8 2456 myPlot->centre_pattern = (double)value;
martin@8 2457 myPlot->setDirty();
martin@11 2458 exists = getFrame()->isChild(knobCentrePattern);
martin@8 2459 break;
martin@8 2460 case kCentreGain:
martin@8 2461 myPlot->centre_gain = (double)((value*24)-18);
martin@8 2462 myPlot->setDirty();
martin@11 2463 exists = getFrame()->isChild(knobSurroundWidth);
martin@8 2464 break;
martin@9 2465 case kSubGain:
martin@11 2466 exists = getFrame()->isChild(knobSubGain);
martin@9 2467 break;
martin@9 2468 case kFc:
martin@11 2469 exists = getFrame()->isChild(knobFc);
martin@9 2470 break;
martin@8 2471 case kSurroundMode:
martin@8 2472 if (value<=0.5f) {
martin@8 2473 myPlot->surround_mode = 0;
martin@8 2474 }
martin@8 2475 else {
martin@8 2476 myPlot->surround_mode = 1;
martin@8 2477 }
martin@8 2478 myPlot->setDirty();
martin@11 2479 exists = getFrame()->isChild(knobSurroundMode);
martin@8 2480 break;
martin@8 2481 case kSurroundPattern:
martin@8 2482 myPlot->surround_pattern = (double)value;
martin@8 2483 myPlot->setDirty();
martin@11 2484 exists = getFrame()->isChild(knobSurroundPattern);
martin@8 2485 break;
martin@8 2486 case kSurroundWidth:
martin@8 2487 myPlot->surround_width = (double)value*90;
martin@8 2488 myPlot->setDirty();
martin@11 2489 exists = getFrame()->isChild(knobSurroundWidth);
martin@8 2490 break;
martin@8 2491 case kSurroundGain:
martin@8 2492 myPlot->surround_gain = (double)((value*24)-18);
martin@8 2493 myPlot->setDirty();
martin@11 2494 exists = getFrame()->isChild(knobSurroundGain);
martin@8 2495 break;
martin@8 2496 case kDecoderMode:
martin@8 2497 if (value<=0.2f) {
martin@8 2498 myPlot->decoder_mode = 2; //Stereo
martin@8 2499 }
martin@8 2500 else if (value>0.2f && value<=0.4f) {
martin@8 2501 myPlot->decoder_mode = 3; //2.1
martin@8 2502 }
martin@8 2503 else if (value>0.4f && value<=0.6f) {
martin@8 2504 myPlot->decoder_mode = 4; //LCRS
martin@8 2505 }
martin@8 2506 else if (value>0.6f && value<=0.8f) {
martin@8 2507 myPlot->decoder_mode = 5; //5.0
martin@8 2508 }
martin@8 2509 else if (value>0.8f && value<=1.0f) {
martin@8 2510 myPlot->decoder_mode = 6; //5.1
martin@8 2511 }
martin@7 2512 myPlot->setDirty();
martin@9 2513 modeChange();
martin@12 2514 //exists = getFrame()->isChild(knobDecoder);
martin@7 2515 break;
martin@9 2516 case kChannelOrder:
martin@12 2517 //exists = getFrame()->isChild(knobChannel);
martin@9 2518
martin@7 2519 default:
martin@7 2520 break;
martin@9 2521 }
martin@9 2522 if (exists) {
martin@12 2523 //ONLY set the objects that are on the screen
martin@9 2524 //First write the value into the GUI value container
martin@9 2525 controls[index]->setValue (value);
martin@9 2526
martin@9 2527 //Call getParameterDisplay to get the char to display
martin@9 2528 getParameterDisplay (index, &displayText);
martin@7 2529 }
martin@0 2530 }
martin@0 2531 else if (frame && index == 100) {
martin@0 2532 suspendDisplay();
martin@7 2533
martin@0 2534 }
martin@0 2535 else if (frame && index == 101) {
martin@0 2536 resumeDisplay();
martin@0 2537 }
martin@9 2538 else if (frame && index == 103){
martin@10 2539 myPlot->decoder_mode5x = (int)(value*2);
martin@9 2540 myPlot->setDirty(); //ReDraw plot in next idle
martin@9 2541 modeChange();
martin@9 2542 }
martin@0 2543 }
martin@0 2544
martin@0 2545
martin@0 2546 //------------------------------------------------------------------------
martin@0 2547 void MyEditor::getParameterDisplay (VstInt32 index, char *text) //GET display value shown for Parameters
martin@0 2548 {
martin@0 2549 effect->getParameterDisplay(index, text);
martin@0 2550 switch (index)
martin@0 2551 {
martin@0 2552 case kRotate :
martin@0 2553 paramRotate->setText(text);
martin@0 2554 break;
martin@0 2555 case kTilt:
martin@0 2556 paramTilt->setText(text);
martin@0 2557 break;
martin@0 2558 case kTumble:
martin@0 2559 paramTumble->setText(text);
martin@0 2560 break;
martin@0 2561 case kZoom:
martin@0 2562 paramZoom->setText(text);
martin@0 2563 break;
martin@0 2564 case kZoomMethod:
martin@0 2565 paramZoomMethod->setText(text);
martin@0 2566 break;
martin@9 2567 case kMode :
martin@9 2568 paramMode->setText(text);
martin@9 2569 break;
martin@9 2570 case kWidth:
martin@9 2571 paramWidth->setText(text);
martin@9 2572 break;
martin@9 2573 case kPattern:
martin@9 2574 paramPattern->setText(text);
martin@9 2575 break;
martin@0 2576 case kRearVerb :
martin@0 2577 paramRearVerb->setText(text);
martin@0 2578 break;
martin@0 2579 case kHiVerb :
martin@0 2580 paramHiVerb->setText(text);
martin@0 2581 break;
martin@9 2582 case kCentrePattern:
martin@9 2583 paramCtrPattern->setText(text);
martin@9 2584 break;
martin@9 2585 case kCentreGain:
martin@9 2586 paramCtrGain->setText(text);
martin@9 2587 break;
martin@9 2588 case kSubGain:
martin@9 2589 paramSubGain->setText(text);
martin@9 2590 break;
martin@9 2591 case kFc:
martin@9 2592 paramFc->setText(text);
martin@9 2593 break;
martin@9 2594 case kSurroundMode:
martin@9 2595 paramSurMode->setText(text);
martin@9 2596 break;
martin@9 2597 case kSurroundPattern:
martin@9 2598 paramSurPattern->setText(text);
martin@9 2599 break;
martin@9 2600 case kSurroundWidth:
martin@9 2601 paramSurWidth->setText(text);
martin@9 2602 break;
martin@9 2603 case kSurroundGain:
martin@9 2604 paramSurGain->setText(text);
martin@9 2605 break;
martin@8 2606 case kDecoderMode:
martin@8 2607 paramDecoder->setText(text);
martin@8 2608 break;
martin@9 2609 case kChannelOrder:
martin@9 2610 paramChannel->setText(text);
martin@9 2611 break;
martin@8 2612
martin@8 2613 default:
martin@8 2614 break;
martin@0 2615 }
martin@0 2616 }
martin@0 2617
martin@0 2618
martin@0 2619
martin@0 2620