summaryrefslogtreecommitdiff
path: root/plugins/ZamPhono/ZamPhonoUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ZamPhono/ZamPhonoUI.cpp')
-rw-r--r--plugins/ZamPhono/ZamPhonoUI.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/plugins/ZamPhono/ZamPhonoUI.cpp b/plugins/ZamPhono/ZamPhonoUI.cpp
new file mode 100644
index 0000000..4f220a2
--- /dev/null
+++ b/plugins/ZamPhono/ZamPhonoUI.cpp
@@ -0,0 +1,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->setValue(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