Browse Source

Update 3bandsplitter and pingpongpan plugin UIs, now working

tags/1.9.4
falkTX 12 years ago
parent
commit
504fe95c49
13 changed files with 212 additions and 173 deletions
  1. +3
    -1
      source/backend/native/3bandeq/DistrhoUI3BandEQ.cpp
  2. +0
    -1
      source/backend/native/3bandeq/DistrhoUI3BandEQ.hpp
  3. +1
    -1
      source/backend/native/3bandsplitter/DistrhoPluginInfo.h
  4. +95
    -91
      source/backend/native/3bandsplitter/DistrhoUI3BandSplitter.cpp
  5. +29
    -14
      source/backend/native/3bandsplitter/DistrhoUI3BandSplitter.hpp
  6. +3
    -3
      source/backend/native/Makefile
  7. +3
    -3
      source/backend/native/distrho-3bandsplitter.cpp
  8. +3
    -3
      source/backend/native/distrho-pingpongpan.cpp
  9. +1
    -1
      source/backend/native/pingpongpan/DistrhoPluginInfo.h
  10. +47
    -42
      source/backend/native/pingpongpan/DistrhoUIPingPongPan.cpp
  11. +23
    -10
      source/backend/native/pingpongpan/DistrhoUIPingPongPan.hpp
  12. +0
    -2
      source/libs/distrho/dgl/src/Widget.cpp
  13. +4
    -1
      source/libs/distrho/src/DistrhoUIInternal.hpp

+ 3
- 1
source/backend/native/3bandeq/DistrhoUI3BandEQ.cpp View File

@@ -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)
{


+ 0
- 1
source/backend/native/3bandeq/DistrhoUI3BandEQ.hpp View File

@@ -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"


+ 1
- 1
source/backend/native/3bandsplitter/DistrhoPluginInfo.h View File

@@ -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


+ 95
- 91
source/backend/native/3bandsplitter/DistrhoUI3BandSplitter.cpp View File

@@ -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()


+ 29
- 14
source/backend/native/3bandsplitter/DistrhoUI3BandSplitter.hpp View File

@@ -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;
};

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


+ 3
- 3
source/backend/native/Makefile View File

@@ -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


+ 3
- 3
source/backend/native/distrho-3bandsplitter.cpp View File

@@ -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,


+ 3
- 3
source/backend/native/distrho-pingpongpan.cpp View File

@@ -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,


+ 1
- 1
source/backend/native/pingpongpan/DistrhoPluginInfo.h View File

@@ -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


+ 47
- 42
source/backend/native/pingpongpan/DistrhoUIPingPongPan.cpp View File

@@ -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();
}

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


+ 23
- 10
source/backend/native/pingpongpan/DistrhoUIPingPongPan.hpp View File

@@ -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;
};

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


+ 0
- 2
source/libs/distrho/dgl/src/Widget.cpp View File

@@ -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);


+ 4
- 1
source/libs/distrho/src/DistrhoUIInternal.hpp View File

@@ -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


Loading…
Cancel
Save