Browse Source

A few more fixes

Signed-off-by: falkTX <falktx@falktx.com>
tags/v1.6
falkTX 2 years ago
parent
commit
cbb6c04587
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
11 changed files with 111 additions and 32 deletions
  1. +1
    -0
      dpf/dgl/ImageBaseWidgets.hpp
  2. +2
    -1
      dpf/dgl/OpenGL.hpp
  3. +10
    -1
      dpf/dgl/StandaloneWindow.hpp
  4. +5
    -1
      dpf/dgl/Window.hpp
  5. +30
    -3
      dpf/dgl/src/ImageBaseWidgets.cpp
  6. +32
    -14
      dpf/dgl/src/OpenGL.cpp
  7. +19
    -4
      dpf/dgl/src/Window.cpp
  8. +4
    -5
      dpf/dgl/src/pugl.cpp
  9. +5
    -0
      plugins/Nekobi/DistrhoPluginInfo.h
  10. +2
    -1
      plugins/Nekobi/DistrhoUINekobi.cpp
  11. +1
    -2
      plugins/Nekobi/DistrhoUINekobi.hpp

+ 1
- 0
dpf/dgl/ImageBaseWidgets.hpp View File

@@ -192,6 +192,7 @@ public:
void setEndPos(const Point<int>& endPos) noexcept;
void setEndPos(int x, int y) noexcept;

void setCheckable(bool checkable) noexcept;
void setInverted(bool inverted) noexcept;
void setRange(float min, float max) noexcept;
void setStep(float step) noexcept;


+ 2
- 1
dpf/dgl/OpenGL.hpp View File

@@ -202,8 +202,9 @@ public:
GLenum getType() const noexcept { return GL_UNSIGNED_BYTE; }

private:
GLuint textureId;
bool setupCalled;
bool textureInit;
GLuint textureId;
};

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


+ 10
- 1
dpf/dgl/StandaloneWindow.hpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Plugin Framework (DPF)
* Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2022 Filipe Coelho <falktx@falktx.com>
*
* Permission to use, copy, modify, and/or distribute this software for any purpose with
* or without fee is hereby granted, provided that the above copyright notice and this
@@ -53,6 +53,15 @@ public:
sgc.done();
}

/**
Get a graphics context back again.
Called when a valid graphics context is needed outside the constructor.
*/
void reinit()
{
sgc.reinit();
}

/**
Overloaded functions to ensure they apply to the Window class.
*/


+ 5
- 1
dpf/dgl/Window.hpp View File

@@ -105,13 +105,17 @@ public:
/** Early context clearing, useful for standalone windows not created by you. */
void done();

/** Get a valid context back again. */
void reinit();

DISTRHO_DECLARE_NON_COPYABLE(ScopedGraphicsContext)
DISTRHO_PREVENT_HEAP_ALLOCATION

private:
Window& window;
Window::PrivateData* ppData;
Window::PrivateData* const ppData;
bool active;
bool reenter;
};

/**


+ 30
- 3
dpf/dgl/src/ImageBaseWidgets.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Plugin Framework (DPF)
* Copyright (C) 2012-2021 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2022 Filipe Coelho <falktx@falktx.com>
*
* Permission to use, copy, modify, and/or distribute this software for any purpose with
* or without fee is hereby granted, provided that the above copyright notice and this
@@ -61,13 +61,20 @@ void ImageBaseAboutWindow<ImageType>::setImage(const ImageType& image)
if (img == image)
return;

img = image;

if (image.isInvalid())
{
img = image;
return;
}

reinit();

img = image;

setSize(image.getSize());
setGeometryConstraints(image.getWidth(), image.getHeight(), true, true);

done();
}

template <class ImageType>
@@ -428,6 +435,7 @@ struct ImageBaseSlider<ImageType>::PrivateData {
bool usingDefault;

bool dragging;
bool checkable;
bool inverted;
bool valueIsSet;
double startedX;
@@ -449,6 +457,7 @@ struct ImageBaseSlider<ImageType>::PrivateData {
valueTmp(value),
usingDefault(false),
dragging(false),
checkable(false),
inverted(false),
valueIsSet(false),
startedX(0.0),
@@ -553,6 +562,16 @@ void ImageBaseSlider<ImageType>::setEndPos(int x, int y) noexcept
setEndPos(Point<int>(x, y));
}

template <class ImageType>
void ImageBaseSlider<ImageType>::setCheckable(bool checkable) noexcept
{
if (pData->checkable == checkable)
return;

pData->checkable = checkable;
repaint();
}

template <class ImageType>
void ImageBaseSlider<ImageType>::setInverted(bool inverted) noexcept
{
@@ -674,6 +693,14 @@ bool ImageBaseSlider<ImageType>::onMouse(const MouseEvent& ev)
return true;
}

if (pData->checkable)
{
const float value = d_isEqual(pData->valueTmp, pData->minimum) ? pData->maximum : pData->minimum;
setValue(value, true);
pData->valueTmp = pData->value;
return true;
}

float vper;
const double x = ev.pos.getX();
const double y = ev.pos.getY();


+ 32
- 14
dpf/dgl/src/OpenGL.cpp View File

@@ -445,17 +445,17 @@ static void drawOpenGLImage(const OpenGLImage& image, const Point<int>& pos, con

OpenGLImage::OpenGLImage()
: ImageBase(),
textureId(0),
setupCalled(false)
setupCalled(false),
textureInit(false),
textureId(0)
{
glGenTextures(1, &textureId);
DISTRHO_SAFE_ASSERT(textureId != 0);
}

OpenGLImage::OpenGLImage(const char* const rdata, const uint w, const uint h, const ImageFormat fmt)
: ImageBase(rdata, w, h, fmt),
textureId(0),
setupCalled(false)
setupCalled(false),
textureInit(true),
textureId(0)
{
glGenTextures(1, &textureId);
DISTRHO_SAFE_ASSERT(textureId != 0);
@@ -463,8 +463,9 @@ OpenGLImage::OpenGLImage(const char* const rdata, const uint w, const uint h, co

OpenGLImage::OpenGLImage(const char* const rdata, const Size<uint>& s, const ImageFormat fmt)
: ImageBase(rdata, s, fmt),
textureId(0),
setupCalled(false)
setupCalled(false),
textureInit(true),
textureId(0)
{
glGenTextures(1, &textureId);
DISTRHO_SAFE_ASSERT(textureId != 0);
@@ -472,8 +473,9 @@ OpenGLImage::OpenGLImage(const char* const rdata, const Size<uint>& s, const Ima

OpenGLImage::OpenGLImage(const OpenGLImage& image)
: ImageBase(image),
textureId(0),
setupCalled(false)
setupCalled(false),
textureInit(true),
textureId(0)
{
glGenTextures(1, &textureId);
DISTRHO_SAFE_ASSERT(textureId != 0);
@@ -487,6 +489,12 @@ OpenGLImage::~OpenGLImage()

void OpenGLImage::loadFromMemory(const char* const rdata, const Size<uint>& s, const ImageFormat fmt) noexcept
{
if (!textureInit)
{
textureInit = true;
glGenTextures(1, &textureId);
DISTRHO_SAFE_ASSERT(textureId != 0);
}
setupCalled = false;
ImageBase::loadFromMemory(rdata, s, fmt);
}
@@ -502,14 +510,23 @@ OpenGLImage& OpenGLImage::operator=(const OpenGLImage& image) noexcept
size = image.size;
format = image.format;
setupCalled = false;

if (image.isValid() && !textureInit)
{
textureInit = true;
glGenTextures(1, &textureId);
DISTRHO_SAFE_ASSERT(textureId != 0);
}

return *this;
}

// deprecated calls
OpenGLImage::OpenGLImage(const char* const rdata, const uint w, const uint h, const GLenum fmt)
: ImageBase(rdata, w, h, asDISTRHOImageFormat(fmt)),
textureId(0),
setupCalled(false)
setupCalled(false),
textureInit(true),
textureId(0)
{
glGenTextures(1, &textureId);
DISTRHO_SAFE_ASSERT(textureId != 0);
@@ -517,8 +534,9 @@ OpenGLImage::OpenGLImage(const char* const rdata, const uint w, const uint h, co

OpenGLImage::OpenGLImage(const char* const rdata, const Size<uint>& s, const GLenum fmt)
: ImageBase(rdata, s, asDISTRHOImageFormat(fmt)),
textureId(0),
setupCalled(false)
setupCalled(false),
textureInit(true),
textureId(0)
{
glGenTextures(1, &textureId);
DISTRHO_SAFE_ASSERT(textureId != 0);


+ 19
- 4
dpf/dgl/src/Window.cpp View File

@@ -27,12 +27,14 @@ START_NAMESPACE_DGL
Window::ScopedGraphicsContext::ScopedGraphicsContext(Window& win)
: window(win),
ppData(nullptr),
active(puglBackendEnter(window.pData->view)) {}
active(puglBackendEnter(window.pData->view)),
reenter(false) {}

Window::ScopedGraphicsContext::ScopedGraphicsContext(Window& win, Window& transientWin)
: window(win),
ppData(transientWin.pData),
active(false)
active(false),
reenter(true)
{
puglBackendLeave(ppData->view);
active = puglBackendEnter(window.pData->view);
@@ -51,13 +53,26 @@ void Window::ScopedGraphicsContext::done()
active = false;
}

if (ppData != nullptr)
if (reenter)
{
reenter = false;
DISTRHO_SAFE_ASSERT_RETURN(ppData != nullptr,);

puglBackendEnter(ppData->view);
ppData = nullptr;
}
}

void Window::ScopedGraphicsContext::reinit()
{
DISTRHO_SAFE_ASSERT_RETURN(!active,);
DISTRHO_SAFE_ASSERT_RETURN(!reenter,);
DISTRHO_SAFE_ASSERT_RETURN(ppData != nullptr,);

reenter = true;
puglBackendLeave(ppData->view);
active = puglBackendEnter(window.pData->view);
}

// -----------------------------------------------------------------------
// Window



+ 4
- 5
dpf/dgl/src/pugl.cpp View File

@@ -540,9 +540,9 @@ void puglWin32ShowCentered(PuglView* const view)
GetWindowRect(impl->hwnd, &rectChild) &&
GetWindowRect((HWND)view->transientParent, &rectParent))
{
SetWindowPos(impl->hwnd, (HWND)view->transientParent,
rectParent.left + (rectChild.right-rectChild.left)/2,
rectParent.top + (rectChild.bottom-rectChild.top)/2,
SetWindowPos(impl->hwnd, HWND_TOP,
rectParent.left + (rectParent.right-rectParent.left)/2 - (rectChild.right-rectChild.left)/2,
rectParent.top + (rectParent.bottom-rectParent.top)/2 - (rectChild.bottom-rectChild.top)/2,
0, 0, SWP_SHOWWINDOW|SWP_NOSIZE);
}
else
@@ -564,8 +564,7 @@ void puglWin32ShowCentered(PuglView* const view)
mInfo.cbSize = sizeof(mInfo);

if (GetMonitorInfo(MonitorFromWindow(impl->hwnd, MONITOR_DEFAULTTOPRIMARY), &mInfo))
SetWindowPos(impl->hwnd,
HWND_TOP,
SetWindowPos(impl->hwnd, HWND_TOP,
mInfo.rcWork.left + (mInfo.rcWork.right - mInfo.rcWork.left - view->frame.width) / 2,
mInfo.rcWork.top + (mInfo.rcWork.bottom - mInfo.rcWork.top - view->frame.height) / 2,
0, 0, SWP_SHOWWINDOW|SWP_NOSIZE);


+ 5
- 0
plugins/Nekobi/DistrhoPluginInfo.h View File

@@ -18,6 +18,8 @@
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED

#include "DistrhoArtworkNekobi.hpp"

#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_NAME "Nekobi"
#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/Nekobi"
@@ -29,4 +31,7 @@
#define DISTRHO_PLUGIN_NUM_INPUTS 0
#define DISTRHO_PLUGIN_NUM_OUTPUTS 1

#define DISTRHO_UI_DEFAULT_WIDTH DistrhoArtworkNekobi::backgroundWidth
#define DISTRHO_UI_DEFAULT_HEIGHT DistrhoArtworkNekobi::backgroundHeight

#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

+ 2
- 1
plugins/Nekobi/DistrhoUINekobi.cpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Nekobi Plugin, based on Nekobee by Sean Bolton and others.
* Copyright (C) 2013-2021 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2013-2022 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -40,6 +40,7 @@ DistrhoUINekobi::DistrhoUINekobi()
fSliderWaveform->setId(DistrhoPluginNekobi::paramWaveform);
fSliderWaveform->setStartPos(133, 40);
fSliderWaveform->setEndPos(133, 60);
fSliderWaveform->setCheckable(true);
fSliderWaveform->setRange(0.0f, 1.0f);
fSliderWaveform->setStep(1.0f);
fSliderWaveform->setValue(0.0f);


+ 1
- 2
plugins/Nekobi/DistrhoUINekobi.hpp View File

@@ -1,6 +1,6 @@
/*
* DISTRHO Nekobi Plugin, based on Nekobee by Sean Bolton and others.
* Copyright (C) 2013-2021 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2013-2022 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -22,7 +22,6 @@

#include "ImageWidgets.hpp"

#include "DistrhoArtworkNekobi.hpp"
#include "NekoWidget.hpp"

using DGL_NAMESPACE::ImageAboutWindow;


Loading…
Cancel
Save