| @@ -16,6 +16,8 @@ | |||
| #include "DistrhoUI3BandEQ.hpp" | |||
| #include "dgl/ImageAboutWindow.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| @@ -141,7 +143,7 @@ void DistrhoUI3BandEQ::d_programChanged(uint32_t index) | |||
| } | |||
| // ------------------------------------------------- | |||
| // Extended Callbacks | |||
| // Widget Callbacks | |||
| void DistrhoUI3BandEQ::imageButtonClicked(ImageButton* button, int) | |||
| { | |||
| @@ -18,7 +18,6 @@ | |||
| #define __DISTRHO_UI_3BANDEQ_HPP__ | |||
| #include "DistrhoUIOpenGL.hpp" | |||
| #include "dgl/ImageAboutWindow.hpp" | |||
| #include "dgl/ImageButton.hpp" | |||
| #include "dgl/ImageKnob.hpp" | |||
| #include "dgl/ImageSlider.hpp" | |||
| @@ -19,7 +19,7 @@ | |||
| #define DISTRHO_PLUGIN_NAME "3 Band Splitter" | |||
| #define DISTRHO_PLUGIN_HAS_UI 0 | |||
| #define DISTRHO_PLUGIN_HAS_UI 1 | |||
| #define DISTRHO_PLUGIN_IS_SYNTH 0 | |||
| #define DISTRHO_PLUGIN_NUM_INPUTS 2 | |||
| @@ -16,86 +16,88 @@ | |||
| #include "DistrhoUI3BandSplitter.hpp" | |||
| #include "dgl/ImageAboutWindow.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| DistrhoUI3BandSplitter::DistrhoUI3BandSplitter() | |||
| : OpenGLExtUI() | |||
| : OpenGLUI() | |||
| { | |||
| Window* win = getParent(); | |||
| // background | |||
| Image bgImage(DistrhoArtwork3BandSplitter::backgroundData, DistrhoArtwork3BandSplitter::backgroundWidth, DistrhoArtwork3BandSplitter::backgroundHeight, GL_BGR); | |||
| setBackgroundImage(bgImage); | |||
| fImgBackground = Image(DistrhoArtwork3BandSplitter::backgroundData, DistrhoArtwork3BandSplitter::backgroundWidth, DistrhoArtwork3BandSplitter::backgroundHeight, GL_BGR); | |||
| // sliders | |||
| Image sliderImage(DistrhoArtwork3BandSplitter::sliderData, DistrhoArtwork3BandSplitter::sliderWidth, DistrhoArtwork3BandSplitter::sliderHeight); | |||
| Point sliderPosStart(57, 43); | |||
| Point sliderPosEnd(57, 43 + 160); | |||
| Point<int> sliderPosStart(57, 43); | |||
| Point<int> sliderPosEnd(57, 43 + 160); | |||
| // slider Low | |||
| sliderLow = new ImageSlider(sliderImage, sliderPosStart, sliderPosEnd); | |||
| sliderLow->setRange(-24.0f, 24.0f); | |||
| sliderLow->setValue(0.0f); | |||
| addImageSlider(sliderLow); | |||
| fSliderLow = new ImageSlider(win, sliderImage); | |||
| fSliderLow->setStartPos(sliderPosStart); | |||
| fSliderLow->setEndPos(sliderPosEnd); | |||
| fSliderLow->setRange(-24.0f, 24.0f); | |||
| fSliderLow->setValue(0.0f); | |||
| fSliderLow->setCallback(this); | |||
| // slider Mid | |||
| sliderPosStart.setX(120); | |||
| sliderPosEnd.setX(120); | |||
| sliderMid = new ImageSlider(sliderImage, sliderPosStart, sliderPosEnd); | |||
| sliderMid->setRange(-24.0f, 24.0f); | |||
| sliderMid->setValue(0.0f); | |||
| addImageSlider(sliderMid); | |||
| fSliderMid = new ImageSlider(*fSliderLow); | |||
| fSliderMid->setStartPos(sliderPosStart); | |||
| fSliderMid->setEndPos(sliderPosEnd); | |||
| // slider High | |||
| sliderPosStart.setX(183); | |||
| sliderPosEnd.setX(183); | |||
| sliderHigh = new ImageSlider(sliderImage, sliderPosStart, sliderPosEnd); | |||
| sliderHigh->setRange(-24.0f, 24.0f); | |||
| sliderHigh->setValue(0.0f); | |||
| addImageSlider(sliderHigh); | |||
| fSliderHigh = new ImageSlider(*fSliderLow); | |||
| fSliderHigh->setStartPos(sliderPosStart); | |||
| fSliderHigh->setEndPos(sliderPosEnd); | |||
| // slider Master | |||
| sliderPosStart.setX(287); | |||
| sliderPosEnd.setX(287); | |||
| sliderMaster = new ImageSlider(sliderImage, sliderPosStart, sliderPosEnd); | |||
| sliderMaster->setRange(-24.0f, 24.0f); | |||
| sliderMaster->setValue(0.0f); | |||
| addImageSlider(sliderMaster); | |||
| fSliderMaster = new ImageSlider(*fSliderLow); | |||
| fSliderMaster->setStartPos(sliderPosStart); | |||
| fSliderMaster->setEndPos(sliderPosEnd); | |||
| // knobs | |||
| Image knobImage(DistrhoArtwork3BandSplitter::knobData, DistrhoArtwork3BandSplitter::knobWidth, DistrhoArtwork3BandSplitter::knobHeight); | |||
| Point knobPos(66, 270); | |||
| // knob Low-Mid | |||
| knobLowMid = new ImageKnob(knobImage, knobPos); | |||
| knobLowMid->setRange(0.0f, 1000.0f); | |||
| knobLowMid->setValue(220.0f); | |||
| addImageKnob(knobLowMid); | |||
| fKnobLowMid = new ImageKnob(win, knobImage); | |||
| fKnobLowMid->setPos(66, 270); | |||
| fKnobLowMid->setRange(0.0f, 1000.0f); | |||
| fKnobLowMid->setValue(220.0f); | |||
| fKnobLowMid->setCallback(this); | |||
| // knob Mid-High | |||
| knobPos.setX(160); | |||
| knobMidHigh = new ImageKnob(knobImage, knobPos); | |||
| knobMidHigh->setRange(1000.0f, 20000.0f); | |||
| knobMidHigh->setValue(2000.0f); | |||
| addImageKnob(knobMidHigh); | |||
| fKnobMidHigh = new ImageKnob(win, knobImage); | |||
| fKnobMidHigh->setPos(160, 270); | |||
| fKnobMidHigh->setRange(1000.0f, 20000.0f); | |||
| fKnobMidHigh->setValue(2000.0f); | |||
| fKnobMidHigh->setCallback(this); | |||
| // about button | |||
| Image aboutImageNormal(DistrhoArtwork3BandSplitter::aboutButtonNormalData, DistrhoArtwork3BandSplitter::aboutButtonNormalWidth, DistrhoArtwork3BandSplitter::aboutButtonNormalHeight); | |||
| Image aboutImageHover(DistrhoArtwork3BandSplitter::aboutButtonHoverData, DistrhoArtwork3BandSplitter::aboutButtonHoverWidth, DistrhoArtwork3BandSplitter::aboutButtonHoverHeight); | |||
| Point aboutPos(264, 300); | |||
| buttonAbout = new ImageButton(aboutImageNormal, aboutImageHover, aboutImageHover, aboutPos); | |||
| addImageButton(buttonAbout); | |||
| fButtonAbout = new ImageButton(win, aboutImageNormal, aboutImageHover, aboutImageHover); | |||
| fButtonAbout->setPos(264, 300); | |||
| fButtonAbout->setCallback(this); | |||
| } | |||
| DistrhoUI3BandSplitter::~DistrhoUI3BandSplitter() | |||
| { | |||
| delete sliderLow; | |||
| delete sliderMid; | |||
| delete sliderHigh; | |||
| delete sliderMaster; | |||
| delete knobLowMid; | |||
| delete knobMidHigh; | |||
| delete buttonAbout; | |||
| delete fSliderLow; | |||
| delete fSliderMid; | |||
| delete fSliderHigh; | |||
| delete fSliderMaster; | |||
| delete fKnobLowMid; | |||
| delete fKnobMidHigh; | |||
| delete fButtonAbout; | |||
| } | |||
| // ------------------------------------------------- | |||
| @@ -106,26 +108,24 @@ void DistrhoUI3BandSplitter::d_parameterChanged(uint32_t index, float value) | |||
| switch (index) | |||
| { | |||
| case DistrhoPlugin3BandSplitter::paramLow: | |||
| sliderLow->setValue(value); | |||
| fSliderLow->setValue(value); | |||
| break; | |||
| case DistrhoPlugin3BandSplitter::paramMid: | |||
| sliderMid->setValue(value); | |||
| fSliderMid->setValue(value); | |||
| break; | |||
| case DistrhoPlugin3BandSplitter::paramHigh: | |||
| sliderHigh->setValue(value); | |||
| fSliderHigh->setValue(value); | |||
| break; | |||
| case DistrhoPlugin3BandSplitter::paramMaster: | |||
| sliderMaster->setValue(value); | |||
| fSliderMaster->setValue(value); | |||
| break; | |||
| case DistrhoPlugin3BandSplitter::paramLowMidFreq: | |||
| knobLowMid->setValue(value); | |||
| fKnobLowMid->setValue(value); | |||
| break; | |||
| case DistrhoPlugin3BandSplitter::paramMidHighFreq: | |||
| knobMidHigh->setValue(value); | |||
| fKnobMidHigh->setValue(value); | |||
| break; | |||
| } | |||
| d_uiRepaint(); | |||
| } | |||
| void DistrhoUI3BandSplitter::d_programChanged(uint32_t index) | |||
| @@ -134,89 +134,93 @@ void DistrhoUI3BandSplitter::d_programChanged(uint32_t index) | |||
| return; | |||
| // Default values | |||
| sliderLow->setValue(0.0f); | |||
| sliderMid->setValue(0.0f); | |||
| sliderHigh->setValue(0.0f); | |||
| sliderMaster->setValue(0.0f); | |||
| knobLowMid->setValue(220.0f); | |||
| knobMidHigh->setValue(2000.0f); | |||
| d_uiRepaint(); | |||
| fSliderLow->setValue(0.0f); | |||
| fSliderMid->setValue(0.0f); | |||
| fSliderHigh->setValue(0.0f); | |||
| fSliderMaster->setValue(0.0f); | |||
| fKnobLowMid->setValue(220.0f); | |||
| fKnobMidHigh->setValue(2000.0f); | |||
| } | |||
| // ------------------------------------------------- | |||
| // Extended Callbacks | |||
| // Widget Callbacks | |||
| void DistrhoUI3BandSplitter::imageButtonClicked(ImageButton* button) | |||
| void DistrhoUI3BandSplitter::imageButtonClicked(ImageButton* button, int) | |||
| { | |||
| if (button != buttonAbout) | |||
| if (button != fButtonAbout) | |||
| return; | |||
| Image imageAbout(DistrhoArtwork3BandSplitter::aboutData, DistrhoArtwork3BandSplitter::aboutWidth, DistrhoArtwork3BandSplitter::aboutHeight, GL_BGRA); | |||
| showImageModalDialog(imageAbout, "About"); | |||
| ImageAboutWindow aboutWindow(getApp(), getParent(), imageAbout); | |||
| aboutWindow.exec(); | |||
| } | |||
| void DistrhoUI3BandSplitter::imageKnobDragStarted(ImageKnob* knob) | |||
| { | |||
| if (knob == knobLowMid) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramLowMidFreq, true); | |||
| else if (knob == knobMidHigh) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramMidHighFreq, true); | |||
| if (knob == fKnobLowMid) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramLowMidFreq, true); | |||
| else if (knob == fKnobMidHigh) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramMidHighFreq, true); | |||
| } | |||
| void DistrhoUI3BandSplitter::imageKnobDragFinished(ImageKnob* knob) | |||
| { | |||
| if (knob == knobLowMid) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramLowMidFreq, false); | |||
| else if (knob == knobMidHigh) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramMidHighFreq, false); | |||
| if (knob == fKnobLowMid) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramLowMidFreq, false); | |||
| else if (knob == fKnobMidHigh) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramMidHighFreq, false); | |||
| } | |||
| void DistrhoUI3BandSplitter::imageKnobValueChanged(ImageKnob* knob, float value) | |||
| { | |||
| if (knob == knobLowMid) | |||
| if (knob == fKnobLowMid) | |||
| d_setParameterValue(DistrhoPlugin3BandSplitter::paramLowMidFreq, value); | |||
| else if (knob == knobMidHigh) | |||
| else if (knob == fKnobMidHigh) | |||
| d_setParameterValue(DistrhoPlugin3BandSplitter::paramMidHighFreq, value); | |||
| } | |||
| void DistrhoUI3BandSplitter::imageSliderDragStarted(ImageSlider* slider) | |||
| { | |||
| if (slider == sliderLow) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramLow, true); | |||
| else if (slider == sliderMid) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramMid, true); | |||
| else if (slider == sliderHigh) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramHigh, true); | |||
| else if (slider == sliderMaster) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramMaster, true); | |||
| if (slider == fSliderLow) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramLow, true); | |||
| else if (slider == fSliderMid) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramMid, true); | |||
| else if (slider == fSliderHigh) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramHigh, true); | |||
| else if (slider == fSliderMaster) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramMaster, true); | |||
| } | |||
| void DistrhoUI3BandSplitter::imageSliderDragFinished(ImageSlider* slider) | |||
| { | |||
| if (slider == sliderLow) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramLow, false); | |||
| else if (slider == sliderMid) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramMid, false); | |||
| else if (slider == sliderHigh) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramHigh, false); | |||
| else if (slider == sliderMaster) | |||
| d_uiEditParameter(DistrhoPlugin3BandSplitter::paramMaster, false); | |||
| if (slider == fSliderLow) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramLow, false); | |||
| else if (slider == fSliderMid) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramMid, false); | |||
| else if (slider == fSliderHigh) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramHigh, false); | |||
| else if (slider == fSliderMaster) | |||
| d_editParameter(DistrhoPlugin3BandSplitter::paramMaster, false); | |||
| } | |||
| void DistrhoUI3BandSplitter::imageSliderValueChanged(ImageSlider* slider, float value) | |||
| { | |||
| if (slider == sliderLow) | |||
| if (slider == fSliderLow) | |||
| d_setParameterValue(DistrhoPlugin3BandSplitter::paramLow, value); | |||
| else if (slider == sliderMid) | |||
| else if (slider == fSliderMid) | |||
| d_setParameterValue(DistrhoPlugin3BandSplitter::paramMid, value); | |||
| else if (slider == sliderHigh) | |||
| else if (slider == fSliderHigh) | |||
| d_setParameterValue(DistrhoPlugin3BandSplitter::paramHigh, value); | |||
| else if (slider == sliderMaster) | |||
| else if (slider == fSliderMaster) | |||
| d_setParameterValue(DistrhoPlugin3BandSplitter::paramMaster, value); | |||
| } | |||
| void DistrhoUI3BandSplitter::onDisplay() | |||
| { | |||
| fImgBackground.draw(); | |||
| } | |||
| // ------------------------------------------------- | |||
| UI* createUI() | |||
| @@ -17,7 +17,10 @@ | |||
| #ifndef __DISTRHO_UI_3BANDSPLITTER_HPP__ | |||
| #define __DISTRHO_UI_3BANDSPLITTER_HPP__ | |||
| #include "DistrhoUIOpenGLExt.h" | |||
| #include "DistrhoUIOpenGL.hpp" | |||
| #include "dgl/ImageButton.hpp" | |||
| #include "dgl/ImageKnob.hpp" | |||
| #include "dgl/ImageSlider.hpp" | |||
| #include "DistrhoArtwork3BandSplitter.hpp" | |||
| #include "DistrhoPlugin3BandSplitter.hpp" | |||
| @@ -26,32 +29,40 @@ START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| class DistrhoUI3BandSplitter : public OpenGLExtUI | |||
| class DistrhoUI3BandSplitter : public OpenGLUI, | |||
| public ImageButton::Callback, | |||
| public ImageKnob::Callback, | |||
| public ImageSlider::Callback | |||
| { | |||
| public: | |||
| DistrhoUI3BandSplitter(); | |||
| ~DistrhoUI3BandSplitter(); | |||
| // --------------------------------------------- | |||
| protected: | |||
| // --------------------------------------------- | |||
| // Information | |||
| int d_width() | |||
| unsigned int d_width() const | |||
| { | |||
| return DistrhoArtwork3BandSplitter::backgroundWidth; | |||
| } | |||
| int d_height() | |||
| unsigned int d_height() const | |||
| { | |||
| return DistrhoArtwork3BandSplitter::backgroundHeight; | |||
| } | |||
| // --------------------------------------------- | |||
| // DSP Callbacks | |||
| void d_parameterChanged(uint32_t index, float value); | |||
| void d_programChanged(uint32_t index); | |||
| // Extended Callbacks | |||
| void imageButtonClicked(ImageButton* button); | |||
| // --------------------------------------------- | |||
| // Widget Callbacks | |||
| void imageButtonClicked(ImageButton* button, int); | |||
| void imageKnobDragStarted(ImageKnob* knob); | |||
| void imageKnobDragFinished(ImageKnob* knob); | |||
| void imageKnobValueChanged(ImageKnob* knob, float value); | |||
| @@ -59,14 +70,18 @@ protected: | |||
| void imageSliderDragFinished(ImageSlider* slider); | |||
| void imageSliderValueChanged(ImageSlider* slider, float value); | |||
| void onDisplay(); | |||
| private: | |||
| ImageSlider* sliderLow; | |||
| ImageSlider* sliderMid; | |||
| ImageSlider* sliderHigh; | |||
| ImageSlider* sliderMaster; | |||
| ImageKnob* knobLowMid; | |||
| ImageKnob* knobMidHigh; | |||
| ImageButton* buttonAbout; | |||
| Image fImgBackground; | |||
| ImageSlider* fSliderLow; | |||
| ImageSlider* fSliderMid; | |||
| ImageSlider* fSliderHigh; | |||
| ImageSlider* fSliderMaster; | |||
| ImageKnob* fKnobLowMid; | |||
| ImageKnob* fKnobMidHigh; | |||
| ImageButton* fButtonAbout; | |||
| }; | |||
| // ------------------------------------------------- | |||
| @@ -86,13 +86,13 @@ $(STATIC): $(OBJS) | |||
| distrho-3bandeq.cpp.o: distrho-3bandeq.cpp 3bandeq/DistrhoArtwork3BandEQ.cpp 3bandeq/DistrhoPlugin3BandEQ.cpp 3bandeq/DistrhoUI3BandEQ.cpp distrho/DistrhoPluginCarla.cpp | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) -I3bandeq -DDISTRHO_NAMESPACE=DISTRHO_3BandEQ -c -o $@ | |||
| distrho-3bandsplitter.cpp.o: distrho-3bandsplitter.cpp distrho/DistrhoPluginCarla.cpp | |||
| distrho-3bandsplitter.cpp.o: distrho-3bandsplitter.cpp 3bandsplitter/DistrhoArtwork3BandSplitter.cpp 3bandsplitter/DistrhoPlugin3BandSplitter.cpp 3bandsplitter/DistrhoUI3BandSplitter.cpp distrho/DistrhoPluginCarla.cpp | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) -I3bandsplitter -DDISTRHO_NAMESPACE=DISTRHO_3BandSplitter -c -o $@ | |||
| distrho-pingpongpan.cpp.o: distrho-pingpongpan.cpp distrho/DistrhoPluginCarla.cpp | |||
| distrho-pingpongpan.cpp.o: distrho-pingpongpan.cpp pingpongpan/DistrhoArtworkPingPongPan.cpp pingpongpan/DistrhoPluginPingPongPan.cpp pingpongpan/DistrhoUIPingPongPan.cpp distrho/DistrhoPluginCarla.cpp | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) -Ipingpongpan -DDISTRHO_NAMESPACE=DISTRHO_PingPongPan -c -o $@ | |||
| distrho-notes.cpp.o: distrho-notes.cpp distrho/DistrhoPluginCarla.cpp moc_DistrhoUINotes.cpp moc_ParamProgressBar.cpp | |||
| distrho-notes.cpp.o: distrho-notes.cpp notes/DistrhoPluginNotes.cpp notes/DistrhoUINotes.cpp distrho/DistrhoPluginCarla.cpp moc_DistrhoUINotes.cpp moc_ParamProgressBar.cpp | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) -Inotes -DDISTRHO_NAMESPACE=DISTRHO_Notes -c -o $@ | |||
| zynaddsubfx.cpp.o: zynaddsubfx.cpp | |||
| @@ -18,9 +18,9 @@ | |||
| #include "CarlaNative.hpp" | |||
| // Plugin Code | |||
| //#include "3bandsplitter/DistrhoArtwork3BandSplitter.cpp" | |||
| #include "3bandsplitter/DistrhoArtwork3BandSplitter.cpp" | |||
| #include "3bandsplitter/DistrhoPlugin3BandSplitter.cpp" | |||
| //#include "3bandsplitter/DistrhoUI3BandSplitter.cpp" | |||
| #include "3bandsplitter/DistrhoUI3BandSplitter.cpp" | |||
| // Carla DISTRHO Plugin | |||
| #include "distrho/DistrhoPluginCarla.cpp" | |||
| @@ -31,7 +31,7 @@ START_NAMESPACE_DISTRHO | |||
| static const PluginDescriptor tBandSplitterDesc = { | |||
| /* category */ ::PLUGIN_CATEGORY_EQ, | |||
| /* hints */ static_cast<PluginHints>(::PLUGIN_IS_RTSAFE /*| ::PLUGIN_HAS_GUI*/), | |||
| /* hints */ static_cast<PluginHints>(::PLUGIN_IS_RTSAFE | ::PLUGIN_HAS_GUI), | |||
| /* audioIns */ DISTRHO_PLUGIN_NUM_INPUTS, | |||
| /* audioOuts */ DISTRHO_PLUGIN_NUM_OUTPUTS, | |||
| /* midiIns */ 0, | |||
| @@ -18,9 +18,9 @@ | |||
| #include "CarlaNative.hpp" | |||
| // Plugin Code | |||
| //#include "pingpongpan/DistrhoArtworkPingPongPan.cpp" | |||
| #include "pingpongpan/DistrhoArtworkPingPongPan.cpp" | |||
| #include "pingpongpan/DistrhoPluginPingPongPan.cpp" | |||
| //#include "pingpongpan/DistrhoUIPingPongPan.cpp" | |||
| #include "pingpongpan/DistrhoUIPingPongPan.cpp" | |||
| // Carla DISTRHO Plugin | |||
| #include "distrho/DistrhoPluginCarla.cpp" | |||
| @@ -31,7 +31,7 @@ START_NAMESPACE_DISTRHO | |||
| static PluginDescriptor tBandEqDesc = { | |||
| /* category */ ::PLUGIN_CATEGORY_UTILITY, | |||
| /* hints */ static_cast<PluginHints>(::PLUGIN_IS_RTSAFE /*| ::PLUGIN_HAS_GUI*/), | |||
| /* hints */ static_cast<PluginHints>(::PLUGIN_IS_RTSAFE | ::PLUGIN_HAS_GUI), | |||
| /* audioIns */ DISTRHO_PLUGIN_NUM_INPUTS, | |||
| /* audioOuts */ DISTRHO_PLUGIN_NUM_OUTPUTS, | |||
| /* midiIns */ 0, | |||
| @@ -19,7 +19,7 @@ | |||
| #define DISTRHO_PLUGIN_NAME "Ping Pong Pan" | |||
| #define DISTRHO_PLUGIN_HAS_UI 0 | |||
| #define DISTRHO_PLUGIN_HAS_UI 1 | |||
| #define DISTRHO_PLUGIN_IS_SYNTH 0 | |||
| #define DISTRHO_PLUGIN_NUM_INPUTS 2 | |||
| @@ -16,47 +16,50 @@ | |||
| #include "DistrhoUIPingPongPan.hpp" | |||
| #include "dgl/ImageAboutWindow.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| DistrhoUIPingPongPan::DistrhoUIPingPongPan() | |||
| : OpenGLExtUI() | |||
| : OpenGLUI() | |||
| { | |||
| Window* win = getParent(); | |||
| // background | |||
| Image bgImage(DistrhoArtworkPingPongPan::backgroundData, DistrhoArtworkPingPongPan::backgroundWidth, DistrhoArtworkPingPongPan::backgroundHeight, GL_BGRA); | |||
| setBackgroundImage(bgImage); | |||
| fImgBackground = Image(DistrhoArtworkPingPongPan::backgroundData, DistrhoArtworkPingPongPan::backgroundWidth, DistrhoArtworkPingPongPan::backgroundHeight, GL_BGRA); | |||
| // knobs | |||
| Image knobImage(DistrhoArtworkPingPongPan::knobData, DistrhoArtworkPingPongPan::knobWidth, DistrhoArtworkPingPongPan::knobHeight); | |||
| Point knobPos(136, 30); | |||
| // knob Low-Mid | |||
| knobFreq = new ImageKnob(knobImage, knobPos); | |||
| knobFreq->setRange(0.0f, 100.0f); | |||
| knobFreq->setValue(50.0f); | |||
| addImageKnob(knobFreq); | |||
| fKnobFreq = new ImageKnob(win, knobImage); | |||
| fKnobFreq->setPos(136, 30); | |||
| fKnobFreq->setRange(0.0f, 100.0f); | |||
| fKnobFreq->setValue(50.0f); | |||
| fKnobFreq->setCallback(this); | |||
| // knob Mid-High | |||
| knobPos.setX(258); | |||
| knobWidth = new ImageKnob(knobImage, knobPos); | |||
| knobWidth->setRange(0.0f, 100.0f); | |||
| knobWidth->setValue(75.0f); | |||
| addImageKnob(knobWidth); | |||
| fKnobWidth = new ImageKnob(win, knobImage); | |||
| fKnobWidth->setPos(258, 30); | |||
| fKnobWidth->setRange(0.0f, 100.0f); | |||
| fKnobWidth->setValue(75.0f); | |||
| fKnobWidth->setCallback(this); | |||
| // about button | |||
| Image aboutImageNormal(DistrhoArtworkPingPongPan::aboutButtonNormalData, DistrhoArtworkPingPongPan::aboutButtonNormalWidth, DistrhoArtworkPingPongPan::aboutButtonNormalHeight); | |||
| Image aboutImageHover(DistrhoArtworkPingPongPan::aboutButtonHoverData, DistrhoArtworkPingPongPan::aboutButtonHoverWidth, DistrhoArtworkPingPongPan::aboutButtonHoverHeight); | |||
| Point aboutPos(25, 23); | |||
| buttonAbout = new ImageButton(aboutImageNormal, aboutImageHover, aboutImageHover, aboutPos); | |||
| addImageButton(buttonAbout); | |||
| fButtonAbout = new ImageButton(win, aboutImageNormal, aboutImageHover, aboutImageHover); | |||
| fButtonAbout->setPos(25, 23); | |||
| fButtonAbout->setCallback(this); | |||
| } | |||
| DistrhoUIPingPongPan::~DistrhoUIPingPongPan() | |||
| { | |||
| delete knobFreq; | |||
| delete knobWidth; | |||
| delete buttonAbout; | |||
| delete fKnobFreq; | |||
| delete fKnobWidth; | |||
| delete fButtonAbout; | |||
| } | |||
| // ------------------------------------------------- | |||
| @@ -67,14 +70,12 @@ void DistrhoUIPingPongPan::d_parameterChanged(uint32_t index, float value) | |||
| switch (index) | |||
| { | |||
| case DistrhoPluginPingPongPan::paramFreq: | |||
| knobFreq->setValue(value); | |||
| fKnobFreq->setValue(value); | |||
| break; | |||
| case DistrhoPluginPingPongPan::paramWidth: | |||
| knobWidth->setValue(value); | |||
| fKnobWidth->setValue(value); | |||
| break; | |||
| } | |||
| d_uiRepaint(); | |||
| } | |||
| void DistrhoUIPingPongPan::d_programChanged(uint32_t index) | |||
| @@ -83,54 +84,58 @@ void DistrhoUIPingPongPan::d_programChanged(uint32_t index) | |||
| return; | |||
| // Default values | |||
| knobFreq->setValue(50.0f); | |||
| knobWidth->setValue(75.0f); | |||
| d_uiRepaint(); | |||
| fKnobFreq->setValue(50.0f); | |||
| fKnobWidth->setValue(75.0f); | |||
| } | |||
| // ------------------------------------------------- | |||
| // Extended Callbacks | |||
| // Widget Callbacks | |||
| void DistrhoUIPingPongPan::imageButtonClicked(ImageButton* button) | |||
| void DistrhoUIPingPongPan::imageButtonClicked(ImageButton* button, int) | |||
| { | |||
| if (button != buttonAbout) | |||
| if (button != fButtonAbout) | |||
| return; | |||
| Image imageAbout(DistrhoArtworkPingPongPan::aboutData, DistrhoArtworkPingPongPan::aboutWidth, DistrhoArtworkPingPongPan::aboutHeight, GL_BGRA); | |||
| showImageModalDialog(imageAbout, "About"); | |||
| ImageAboutWindow aboutWindow(getApp(), getParent(), imageAbout); | |||
| aboutWindow.exec(); | |||
| } | |||
| void DistrhoUIPingPongPan::imageKnobDragStarted(ImageKnob* knob) | |||
| { | |||
| if (knob == knobFreq) | |||
| d_uiEditParameter(DistrhoPluginPingPongPan::paramFreq, true); | |||
| else if (knob == knobWidth) | |||
| d_uiEditParameter(DistrhoPluginPingPongPan::paramWidth, true); | |||
| if (knob == fKnobFreq) | |||
| d_editParameter(DistrhoPluginPingPongPan::paramFreq, true); | |||
| else if (knob == fKnobWidth) | |||
| d_editParameter(DistrhoPluginPingPongPan::paramWidth, true); | |||
| } | |||
| void DistrhoUIPingPongPan::imageKnobDragFinished(ImageKnob* knob) | |||
| { | |||
| if (knob == knobFreq) | |||
| d_uiEditParameter(DistrhoPluginPingPongPan::paramFreq, false); | |||
| else if (knob == knobWidth) | |||
| d_uiEditParameter(DistrhoPluginPingPongPan::paramWidth, false); | |||
| if (knob == fKnobFreq) | |||
| d_editParameter(DistrhoPluginPingPongPan::paramFreq, false); | |||
| else if (knob == fKnobWidth) | |||
| d_editParameter(DistrhoPluginPingPongPan::paramWidth, false); | |||
| } | |||
| void DistrhoUIPingPongPan::imageKnobValueChanged(ImageKnob* knob, float value) | |||
| { | |||
| if (knob == knobFreq) | |||
| if (knob == fKnobFreq) | |||
| d_setParameterValue(DistrhoPluginPingPongPan::paramFreq, value); | |||
| else if (knob == knobWidth) | |||
| else if (knob == fKnobWidth) | |||
| d_setParameterValue(DistrhoPluginPingPongPan::paramWidth, value); | |||
| } | |||
| void DistrhoUIPingPongPan::onDisplay() | |||
| { | |||
| fImgBackground.draw(); | |||
| } | |||
| // ------------------------------------------------- | |||
| UI* createUI() | |||
| { | |||
| return new DistrhoUIPingPongPan; | |||
| return new DistrhoUIPingPongPan(); | |||
| } | |||
| // ------------------------------------------------- | |||
| @@ -17,7 +17,9 @@ | |||
| #ifndef __DISTRHO_UI_PINGPONGPAN_HPP__ | |||
| #define __DISTRHO_UI_PINGPONGPAN_HPP__ | |||
| #include "DistrhoUIOpenGLExt.h" | |||
| #include "DistrhoUIOpenGL.hpp" | |||
| #include "dgl/ImageButton.hpp" | |||
| #include "dgl/ImageKnob.hpp" | |||
| #include "DistrhoArtworkPingPongPan.hpp" | |||
| #include "DistrhoPluginPingPongPan.hpp" | |||
| @@ -26,40 +28,51 @@ START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| class DistrhoUIPingPongPan : public OpenGLExtUI | |||
| class DistrhoUIPingPongPan : public OpenGLUI, | |||
| public ImageButton::Callback, | |||
| public ImageKnob::Callback | |||
| { | |||
| public: | |||
| DistrhoUIPingPongPan(); | |||
| ~DistrhoUIPingPongPan(); | |||
| // --------------------------------------------- | |||
| protected: | |||
| // --------------------------------------------- | |||
| // Information | |||
| int d_width() | |||
| unsigned int d_width() const | |||
| { | |||
| return DistrhoArtworkPingPongPan::backgroundWidth; | |||
| } | |||
| int d_height() | |||
| unsigned int d_height() const | |||
| { | |||
| return DistrhoArtworkPingPongPan::backgroundHeight; | |||
| } | |||
| // --------------------------------------------- | |||
| // DSP Callbacks | |||
| void d_parameterChanged(uint32_t index, float value); | |||
| void d_programChanged(uint32_t index); | |||
| // Extended Callbacks | |||
| void imageButtonClicked(ImageButton* button); | |||
| // --------------------------------------------- | |||
| // Widget Callbacks | |||
| void imageButtonClicked(ImageButton* button, int); | |||
| void imageKnobDragStarted(ImageKnob* knob); | |||
| void imageKnobDragFinished(ImageKnob* knob); | |||
| void imageKnobValueChanged(ImageKnob* knob, float value); | |||
| void onDisplay(); | |||
| private: | |||
| ImageKnob* knobFreq; | |||
| ImageKnob* knobWidth; | |||
| ImageButton* buttonAbout; | |||
| Image fImgBackground; | |||
| ImageKnob* fKnobFreq; | |||
| ImageKnob* fKnobWidth; | |||
| ImageButton* fButtonAbout; | |||
| }; | |||
| // ------------------------------------------------- | |||
| @@ -19,7 +19,6 @@ | |||
| #include "../Window.hpp" | |||
| #include <cassert> | |||
| #include <cstdio> | |||
| START_NAMESPACE_DGL | |||
| @@ -216,7 +215,6 @@ bool Widget::onSpecial(bool, Key) | |||
| void Widget::onReshape(int width, int height) | |||
| { | |||
| printf("Reshape(%i, %i)\n", width, height); | |||
| glEnable(GL_BLEND); | |||
| glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | |||
| glMatrixMode(GL_PROJECTION); | |||
| @@ -243,7 +243,10 @@ public: | |||
| void idle() | |||
| { | |||
| #ifdef DISTRHO_UI_QT4 | |||
| kUi->d_uiIdle(); | |||
| assert(kUi != nullptr); | |||
| if (kUi != nullptr) | |||
| kUi->d_uiIdle(); | |||
| #else | |||
| glApp.idle(); | |||
| #endif | |||