1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
/*
* ZamPhono
* Copyright (C) 2016 Damien Zammit <damien@zamaudio.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "ZamPhonoUI.hpp"
using DGL::Point;
START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
ZamPhonoUI::ZamPhonoUI()
: UI()
{
setSize(ZamPhonoArtwork::zamphonoWidth, ZamPhonoArtwork::zamphonoHeight);
// background
fImgBackground = Image(ZamPhonoArtwork::zamphonoData, ZamPhonoArtwork::zamphonoWidth, ZamPhonoArtwork::zamphonoHeight, kImageFormatBGR);
// notch slider
Image sliderImage(ZamPhonoArtwork::sliderData, ZamPhonoArtwork::sliderWidth, ZamPhonoArtwork::sliderHeight);
// toggle play/cut
Image playImage(ZamPhonoArtwork::playData, ZamPhonoArtwork::playWidth, ZamPhonoArtwork::playHeight);
Image cutImage(ZamPhonoArtwork::cutData, ZamPhonoArtwork::cutWidth, ZamPhonoArtwork::cutHeight);
Point<int> notchPosStart(255, 73);
Point<int> notchPosEnd(255, 73+52);
fSliderNotch = new ImageSlider(this, sliderImage);
fSliderNotch->setStartPos(notchPosStart);
fSliderNotch->setEndPos(notchPosEnd);
fSliderNotch->setRange(0.f, 4.f);
fSliderNotch->setStep(1.f);
fSliderNotch->setDefault(3.f);
fSliderNotch->setCallback(this);
Point<int> playcutStart(10, 168);
fTogglePlaycut = new ImageSwitch(this, playImage, cutImage);
fTogglePlaycut->setAbsolutePos(playcutStart);
fTogglePlaycut->setCallback(this);
// set default values
programLoaded(0);
}
// -----------------------------------------------------------------------
// DSP Callbacks
void ZamPhonoUI::parameterChanged(uint32_t index, float value)
{
switch (index)
{
case ZamPhonoPlugin::paramType:
fSliderNotch->setValue(value);
break;
case ZamPhonoPlugin::paramToggle:
fTogglePlaycut->setDown(value > 0.5);
break;
}
}
void ZamPhonoUI::programLoaded(uint32_t index)
{
switch(index) {
default:
case 0:
fSliderNotch->setValue(3.f);
fTogglePlaycut->setDown(false);
break;
}
}
void ZamPhonoUI::imageSliderDragStarted(ImageSlider*)
{
editParameter(ZamPhonoPlugin::paramType, true);
}
void ZamPhonoUI::imageSliderDragFinished(ImageSlider*)
{
editParameter(ZamPhonoPlugin::paramType, false);
}
void ZamPhonoUI::imageSliderValueChanged(ImageSlider*, float value)
{
setParameterValue(ZamPhonoPlugin::paramType, value);
}
void ZamPhonoUI::imageSwitchClicked(ImageSwitch* toggle, bool down)
{
float v = down ? 1.f : 0.f;
if (toggle == fTogglePlaycut) {
setParameterValue(ZamPhonoPlugin::paramToggle, v);
}
}
void ZamPhonoUI::onDisplay()
{
const GraphicsContext& context(getGraphicsContext());
fImgBackground.draw(context);
}
// -----------------------------------------------------------------------
UI* createUI()
{
return new ZamPhonoUI();
}
// -----------------------------------------------------------------------
END_NAMESPACE_DISTRHO
|