summaryrefslogtreecommitdiff
path: root/plugins/ZamPhono/ZamPhonoUI.cpp
blob: f2664907d497c43f9a82991c79b1222fab09d766 (plain)
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
/*
 * 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 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, GL_BGR);

    // 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()
{
    fImgBackground.draw();
}

// -----------------------------------------------------------------------

UI* createUI()
{
    return new ZamPhonoUI();
}

// -----------------------------------------------------------------------

END_NAMESPACE_DISTRHO