summaryrefslogtreecommitdiff
path: root/plugins/ZamHeadX2/ZamHeadX2UI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ZamHeadX2/ZamHeadX2UI.cpp')
-rw-r--r--plugins/ZamHeadX2/ZamHeadX2UI.cpp119
1 files changed, 119 insertions, 0 deletions
diff --git a/plugins/ZamHeadX2/ZamHeadX2UI.cpp b/plugins/ZamHeadX2/ZamHeadX2UI.cpp
new file mode 100644
index 0000000..7390670
--- /dev/null
+++ b/plugins/ZamHeadX2/ZamHeadX2UI.cpp
@@ -0,0 +1,119 @@
+/*
+ * ZamHeadX2 stereo HRTF tool
+ * Copyright (C) 2014 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.
+ *
+ * For a full copy of the GNU General Public License see the doc/GPL.txt file.
+ */
+
+#include "ZamHeadX2Plugin.hpp"
+#include "ZamHeadX2UI.hpp"
+
+using DGL::Point;
+
+START_NAMESPACE_DISTRHO
+
+// -----------------------------------------------------------------------
+
+ZamHeadX2UI::ZamHeadX2UI()
+ : UI()
+{
+ setSize(ZamHeadX2Artwork::zamheadx2Width, ZamHeadX2Artwork::zamheadx2Height);
+
+ // background
+ fImgBackground = Image(ZamHeadX2Artwork::zamheadx2Data, ZamHeadX2Artwork::zamheadx2Width, ZamHeadX2Artwork::zamheadx2Height, GL_BGR);
+
+ // knob
+ Image knobImage(ZamHeadX2Artwork::knobData, ZamHeadX2Artwork::knobWidth, ZamHeadX2Artwork::knobHeight);
+
+ // knob
+ fKnobAzimuth = new ImageKnob(this, knobImage);
+ fKnobAzimuth->setAbsolutePos(229, 33);
+ fKnobAzimuth->setId(ZamHeadX2Plugin::paramAzimuth);
+ fKnobAzimuth->setRange(-120.f, 120.0f);
+ fKnobAzimuth->setStep(1.0f);
+ fKnobAzimuth->setDefault(0.0f);
+ fKnobAzimuth->setRotationAngle(240);
+ fKnobAzimuth->setCallback(this);
+
+ fKnobElevation = new ImageKnob(this, knobImage);
+ fKnobElevation->setAbsolutePos(62, 78);
+ fKnobElevation->setId(ZamHeadX2Plugin::paramElevation);
+ fKnobElevation->setRange(-30.0f, 90.0f);
+ fKnobElevation->setStep(1.0f);
+ fKnobElevation->setDefault(0.0f);
+ fKnobElevation->setRotationAngle(120);
+ fKnobElevation->setCallback(this);
+
+ // set default values
+ programLoaded(0);
+}
+
+// -----------------------------------------------------------------------
+// DSP Callbacks
+
+void ZamHeadX2UI::parameterChanged(uint32_t index, float value)
+{
+ switch (index)
+ {
+ case ZamHeadX2Plugin::paramAzimuth:
+ fKnobAzimuth->setValue(value);
+ break;
+ case ZamHeadX2Plugin::paramElevation:
+ fKnobElevation->setValue(value);
+ break;
+ }
+}
+
+void ZamHeadX2UI::programLoaded(uint32_t index)
+{
+ switch(index) {
+ case 0:
+ fKnobAzimuth->setValue(0.0f);
+ fKnobElevation->setValue(0.0f);
+ break;
+ }
+}
+
+// -----------------------------------------------------------------------
+// Widget Callbacks
+
+void ZamHeadX2UI::imageKnobDragStarted(ImageKnob* knob)
+{
+ editParameter(knob->getId(), true);
+}
+
+void ZamHeadX2UI::imageKnobDragFinished(ImageKnob* knob)
+{
+ editParameter(knob->getId(), false);
+}
+
+void ZamHeadX2UI::imageKnobValueChanged(ImageKnob* knob, float value)
+{
+ setParameterValue(knob->getId(), value);
+}
+
+void ZamHeadX2UI::onDisplay()
+{
+ fImgBackground.draw();
+}
+
+// -----------------------------------------------------------------------
+
+UI* createUI()
+{
+ return new ZamHeadX2UI();
+}
+
+// -----------------------------------------------------------------------
+
+END_NAMESPACE_DISTRHO