Browse Source

Fix nanovg subwidgets, need viewport scaling

Signed-off-by: falkTX <falktx@falktx.com>
pull/272/head
falkTX 4 years ago
parent
commit
bc9bf65844
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
6 changed files with 9 additions and 11 deletions
  1. +0
    -4
      dgl/OpenGL.hpp
  2. +1
    -0
      dgl/SubWidget.hpp
  3. +1
    -0
      dgl/src/NanoVG.cpp
  4. +4
    -6
      dgl/src/OpenGL.cpp
  5. +2
    -1
      dgl/src/SubWidgetPrivateData.cpp
  6. +1
    -0
      dgl/src/SubWidgetPrivateData.hpp

+ 0
- 4
dgl/OpenGL.hpp View File

@@ -232,10 +232,6 @@ public:
// TODO mark as deprecated
void drawAt(const Point<int>& pos);

protected:
/** @internal */
// void _drawAt(const Point<int>& pos) override;

private:
GLenum fFormat;
GLenum fType;


+ 1
- 0
dgl/SubWidget.hpp View File

@@ -124,6 +124,7 @@ private:
struct PrivateData;
PrivateData* const pData;
friend class Widget;
template <class BaseWidget> friend class NanoWidget;
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SubWidget)
};



+ 1
- 0
dgl/src/NanoVG.cpp View File

@@ -963,6 +963,7 @@ NanoWidget<BaseWidget>::NanoWidget(Widget* const parent, int flags)
NanoVG(flags),
nData(new PrivateData(this))
{
BaseWidget::pData->viewportNeedsScaling = true;
}

// TopLevelWidget


+ 4
- 6
dgl/src/OpenGL.cpp View File

@@ -365,12 +365,11 @@ void SubWidget::PrivateData::display(uint width, uint height, double autoScaling
{
// full viewport size
glViewport(0,
-(height * autoScaling - height),
width * autoScaling,
height * autoScaling);
-(height * autoScaling - height),
width * autoScaling,
height * autoScaling);
}
/*
else if (needsScaling)
else if (viewportNeedsScaling)
{
// limit viewport to widget bounds
glViewport(absolutePos.getX(),
@@ -378,7 +377,6 @@ void SubWidget::PrivateData::display(uint width, uint height, double autoScaling
self->getWidth(),
self->getHeight());
}
*/
else
{
// only set viewport pos


+ 2
- 1
dgl/src/SubWidgetPrivateData.cpp View File

@@ -24,7 +24,8 @@ START_NAMESPACE_DGL
SubWidget::PrivateData::PrivateData(SubWidget* const s, Widget* const pw)
: self(s),
parentWidget(pw),
absolutePos()
absolutePos(),
viewportNeedsScaling(false)
{
parentWidget->pData->subWidgets.push_back(self);
}


+ 1
- 0
dgl/src/SubWidgetPrivateData.hpp View File

@@ -27,6 +27,7 @@ struct SubWidget::PrivateData {
SubWidget* const self;
Widget* const parentWidget;
Point<int> absolutePos;
bool viewportNeedsScaling; // needed for NanoVG

explicit PrivateData(SubWidget* const s, Widget* const pw);
~PrivateData();


Loading…
Cancel
Save