Browse Source

Misc fixing; Add DISTRHO_UI_USE_NANOVG macro, for NanoVG plugin UIs

gh-pages
falkTX 11 years ago
parent
commit
d1f8cd904e
9 changed files with 50 additions and 20 deletions
  1. +1
    -0
      dgl/ImageSlider.hpp
  2. +3
    -2
      dgl/NanoVG.hpp
  3. +8
    -2
      dgl/StandaloneWindow.hpp
  4. +8
    -6
      dgl/Widget.hpp
  5. +3
    -3
      dgl/src/ImageSlider.cpp
  6. +5
    -5
      dgl/src/Widget.cpp
  7. +15
    -1
      distrho/DistrhoUI.hpp
  8. +4
    -0
      distrho/src/DistrhoPluginChecks.h
  9. +3
    -1
      distrho/src/DistrhoUI.cpp

+ 1
- 0
dgl/ImageSlider.hpp View File

@@ -89,6 +89,7 @@ private:
void setAbsoluteY(int) const noexcept {} void setAbsoluteY(int) const noexcept {}
void setAbsolutePos(int, int) const noexcept {} void setAbsolutePos(int, int) const noexcept {}
void setAbsolutePos(const Point<int>&) const noexcept {} void setAbsolutePos(const Point<int>&) const noexcept {}
void setNeedsFullViewport(bool) const noexcept {}


DISTRHO_LEAK_DETECTOR(ImageSlider) DISTRHO_LEAK_DETECTOR(ImageSlider)
}; };


+ 3
- 2
dgl/NanoVG.hpp View File

@@ -770,7 +770,7 @@ public:
int textBreakLines(const char* string, const char* end, float breakRowWidth, TextRow* rows, int maxRows); int textBreakLines(const char* string, const char* end, float breakRowWidth, TextRow* rows, int maxRows);


private: private:
NVGcontext* fContext;
NVGcontext* const fContext;


DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(NanoVG) DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(NanoVG)
}; };
@@ -782,7 +782,8 @@ private:
NanoVG Widget class. NanoVG Widget class.


This class implements the NanoVG drawing API inside a DGL Widget. This class implements the NanoVG drawing API inside a DGL Widget.
onDisplay is implemented internally.
The drawing function onDisplay() is implemented internally but a
new onNanoDisplay() needs to be overridden instead.
*/ */
class NanoWidget : public Widget, class NanoWidget : public Widget,
public NanoVG public NanoVG


+ 8
- 2
dgl/StandaloneWindow.hpp View File

@@ -51,17 +51,23 @@ protected:
private: private:
Widget* fWidget; Widget* fWidget;


void _addWidget(Widget* const widget) override
void _addWidget(Widget* widget) override
{ {
if (fWidget == nullptr) if (fWidget == nullptr)
{
fWidget = widget; fWidget = widget;
fWidget->setNeedsFullViewport(true);
}
Window::_addWidget(widget); Window::_addWidget(widget);
} }


void _removeWidget(Widget* const widget) override
void _removeWidget(Widget* widget) override
{ {
if (fWidget == widget) if (fWidget == widget)
{
fWidget->setNeedsFullViewport(false);
fWidget = nullptr; fWidget = nullptr;
}
Window::_removeWidget(widget); Window::_removeWidget(widget);
} }




+ 8
- 6
dgl/Widget.hpp View File

@@ -159,12 +159,6 @@ public:
*/ */
void hide(); void hide();


/**
Tell the parent window this widget this the full viewport.
When enabled, the local widget coordinates are ignored.
*/
void setNeedsFullViewport(bool yesNo) noexcept;

/** /**
Get width. Get width.
*/ */
@@ -302,6 +296,14 @@ protected:
*/ */
virtual void onResize(const ResizeEvent&); virtual void onResize(const ResizeEvent&);


/**
Tell the parent window this widget this the full viewport.
When enabled, the local widget coordinates are ignored.
@note: This is an internal function;
You do not need it under normal circumstances.
*/
void setNeedsFullViewport(bool yesNo) noexcept;

private: private:
Window& fParent; Window& fParent;
bool fNeedsFullViewport; bool fNeedsFullViewport;


+ 3
- 3
dgl/src/ImageSlider.cpp View File

@@ -37,7 +37,7 @@ ImageSlider::ImageSlider(Window& parent, const Image& image, int id) noexcept
fStartedY(0), fStartedY(0),
fCallback(nullptr) fCallback(nullptr)
{ {
setNeedsFullViewport(true);
Widget::setNeedsFullViewport(true);
} }


ImageSlider::ImageSlider(Widget* widget, const Image& image, int id) noexcept ImageSlider::ImageSlider(Widget* widget, const Image& image, int id) noexcept
@@ -55,7 +55,7 @@ ImageSlider::ImageSlider(Widget* widget, const Image& image, int id) noexcept
fStartedY(0), fStartedY(0),
fCallback(nullptr) fCallback(nullptr)
{ {
setNeedsFullViewport(true);
Widget::setNeedsFullViewport(true);
} }


ImageSlider::ImageSlider(const ImageSlider& imageSlider) noexcept ImageSlider::ImageSlider(const ImageSlider& imageSlider) noexcept
@@ -76,7 +76,7 @@ ImageSlider::ImageSlider(const ImageSlider& imageSlider) noexcept
fEndPos(imageSlider.fEndPos), fEndPos(imageSlider.fEndPos),
fSliderArea(imageSlider.fSliderArea) fSliderArea(imageSlider.fSliderArea)
{ {
setNeedsFullViewport(true);
Widget::setNeedsFullViewport(true);
} }


int ImageSlider::getId() const noexcept int ImageSlider::getId() const noexcept


+ 5
- 5
dgl/src/Widget.cpp View File

@@ -59,11 +59,6 @@ void Widget::hide()
setVisible(false); setVisible(false);
} }


void Widget::setNeedsFullViewport(bool yesNo) noexcept
{
fNeedsFullViewport = yesNo;
}

int Widget::getWidth() const noexcept int Widget::getWidth() const noexcept
{ {
return fArea.getWidth(); return fArea.getWidth();
@@ -230,6 +225,11 @@ void Widget::onResize(const ResizeEvent&)
{ {
} }


void Widget::setNeedsFullViewport(bool yesNo) noexcept
{
fNeedsFullViewport = yesNo;
}

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


END_NAMESPACE_DGL END_NAMESPACE_DGL

+ 15
- 1
distrho/DistrhoUI.hpp View File

@@ -22,12 +22,19 @@


#include "../dgl/Widget.hpp" #include "../dgl/Widget.hpp"


#if DISTRHO_UI_USE_NANOVG
# include "../dgl/NanoVG.hpp"
typedef DGL::NanoWidget UIWidget;
#else
typedef DGL::Widget UIWidget;
#endif

START_NAMESPACE_DISTRHO START_NAMESPACE_DISTRHO


// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// UI // UI


class UI : public DGL::Widget
class UI : public UIWidget
{ {
public: public:
UI(); UI();
@@ -91,6 +98,13 @@ private:
friend class UIExporter; friend class UIExporter;
friend class UIExporterWindow; friend class UIExporterWindow;


// these should not be used
void setAbsoluteX(int) const noexcept {}
void setAbsoluteY(int) const noexcept {}
void setAbsolutePos(int, int) const noexcept {}
void setAbsolutePos(const DGL::Point<int>&) const noexcept {}
void setNeedsFullViewport(bool) const noexcept {}

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(UI) DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(UI)
}; };




+ 4
- 0
distrho/src/DistrhoPluginChecks.h View File

@@ -63,6 +63,10 @@
# define DISTRHO_PLUGIN_IS_RT_SAFE 1 # define DISTRHO_PLUGIN_IS_RT_SAFE 1
#endif #endif


#ifndef DISTRHO_UI_USE_NANOVG
# define DISTRHO_UI_USE_NANOVG 0
#endif

#define DISTRHO_UI_URI DISTRHO_PLUGIN_URI "#UI" #define DISTRHO_UI_URI DISTRHO_PLUGIN_URI "#UI"


#endif // DISTRHO_PLUGIN_CHECKS_H_INCLUDED #endif // DISTRHO_PLUGIN_CHECKS_H_INCLUDED

+ 3
- 1
distrho/src/DistrhoUI.cpp View File

@@ -31,12 +31,14 @@ double d_lastUiSampleRate = 0.0;
// UI // UI


UI::UI() UI::UI()
: DGL::Widget(*DGL::dgl_lastUiParent),
: UIWidget(*DGL::dgl_lastUiParent),
pData(new PrivateData()) pData(new PrivateData())
{ {
DISTRHO_SAFE_ASSERT(DGL::dgl_lastUiParent != nullptr); DISTRHO_SAFE_ASSERT(DGL::dgl_lastUiParent != nullptr);


DGL::dgl_lastUiParent = nullptr; DGL::dgl_lastUiParent = nullptr;

Widget::setNeedsFullViewport(true);
} }


UI::~UI() UI::~UI()


Loading…
Cancel
Save