Browse Source

App->Application; Use class namespace by default; Misc fixes

pull/6/head
falkTX 6 years ago
parent
commit
12061de4ca
13 changed files with 130 additions and 146 deletions
  1. +4
    -4
      dgl/Application.hpp
  2. +40
    -32
      dgl/Base.hpp
  3. +4
    -3
      dgl/ImageWidgets.hpp
  4. +1
    -1
      dgl/Makefile
  5. +5
    -5
      dgl/StandaloneWindow.hpp
  6. +2
    -2
      dgl/Widget.hpp
  7. +6
    -6
      dgl/Window.hpp
  8. +8
    -8
      dgl/src/Application.cpp
  9. +2
    -2
      dgl/src/ApplicationPrivateData.hpp
  10. +32
    -68
      dgl/src/ImageWidgets.cpp
  11. +1
    -1
      dgl/src/Widget.cpp
  12. +16
    -14
      dgl/src/Window.cpp
  13. +9
    -0
      distrho/DistrhoUtils.hpp

dgl/App.hpp → dgl/Application.hpp View File

@@ -38,18 +38,18 @@ class Window;
In standalone mode an application will automatically quit its
event-loop when all its windows are closed.
*/
class App
class Application
{
public:
/**
Constructor.
*/
App();
Application();

/**
Destructor.
*/
~App();
~Application();

/**
Idle function.
@@ -81,7 +81,7 @@ private:
PrivateData* const pData;
friend class Window;

DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(App)
DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Application)
};

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

+ 40
- 32
dgl/Base.hpp View File

@@ -121,50 +121,50 @@ START_NAMESPACE_DGL
Convenience symbols for ASCII control characters.
*/
enum Char {
CHAR_BACKSPACE = 0x08,
CHAR_ESCAPE = 0x1B,
CHAR_DELETE = 0x7F
kCharBackspace = 0x08,
kCharEscape = 0x1B,
kCharDelete = 0x7F
};

/**
Keyboard modifier flags.
*/
enum Modifier {
MODIFIER_SHIFT = 1 << 0, /**< Shift key */
MODIFIER_CTRL = 1 << 1, /**< Control key */
MODIFIER_ALT = 1 << 2, /**< Alt/Option key */
MODIFIER_SUPER = 1 << 3 /**< Mod4/Command/Windows key */
kModifierShift = 1 << 0, /**< Shift key */
kModifierControl = 1 << 1, /**< Control key */
kModifierAlt = 1 << 2, /**< Alt/Option key */
kModifierSuper = 1 << 3 /**< Mod4/Command/Windows key */
};

/**
Special (non-Unicode) keyboard keys.
*/
enum Key {
KEY_F1 = 1,
KEY_F2,
KEY_F3,
KEY_F4,
KEY_F5,
KEY_F6,
KEY_F7,
KEY_F8,
KEY_F9,
KEY_F10,
KEY_F11,
KEY_F12,
KEY_LEFT,
KEY_UP,
KEY_RIGHT,
KEY_DOWN,
KEY_PAGE_UP,
KEY_PAGE_DOWN,
KEY_HOME,
KEY_END,
KEY_INSERT,
KEY_SHIFT,
KEY_CTRL,
KEY_ALT,
KEY_SUPER
kKeyF1 = 1,
kKeyF2,
kKeyF3,
kKeyF4,
kKeyF5,
kKeyF6,
kKeyF7,
kKeyF8,
kKeyF9,
kKeyF10,
kKeyF11,
kKeyF12,
kKeyLeft,
kKeyUp,
kKeyRight,
kKeyDown,
kKeyPageUp,
kKeyPageDown,
kKeyHome,
kKeyEnd,
kKeyInsert,
kKeyShift,
kKeyControl,
kKeyAlt,
kKeySuper
};

// -----------------------------------------------------------------------
@@ -184,4 +184,12 @@ public:

END_NAMESPACE_DGL

#ifndef DONT_SET_USING_DGL_NAMESPACE
// If your code uses a lot of DGL classes, then this will obviously save you
// a lot of typing, but can be disabled by setting DONT_SET_USING_DGL_NAMESPACE.
using namespace DGL_NAMESPACE;
#endif

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

#endif // DGL_BASE_HPP_INCLUDED

+ 4
- 3
dgl/ImageWidgets.hpp View File

@@ -164,6 +164,8 @@ private:

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

// note set range and step before setting the value

class ImageSlider : public Widget
{
public:
@@ -178,10 +180,9 @@ public:

explicit ImageSlider(Window& parent, const Image& image) noexcept;
explicit ImageSlider(Widget* widget, const Image& image) noexcept;
explicit ImageSlider(const ImageSlider& imageSlider) noexcept;
ImageSlider& operator=(const ImageSlider& imageSlider) noexcept;

float getValue() const noexcept;
void setValue(float value, bool sendCallback = false) noexcept;

void setStartPos(const Point<int>& startPos) noexcept;
void setStartPos(int x, int y) noexcept;
@@ -191,7 +192,6 @@ public:
void setInverted(bool inverted) noexcept;
void setRange(float min, float max) noexcept;
void setStep(float step) noexcept;
void setValue(float value, bool sendCallback = false) noexcept;

void setCallback(Callback* callback) noexcept;

@@ -210,6 +210,7 @@ private:

bool fDragging;
bool fInverted;
bool fValueIsSet;
int fStartedX;
int fStartedY;



+ 1
- 1
dgl/Makefile View File

@@ -15,7 +15,7 @@ LINK_FLAGS += $(DGL_LIBS)
# --------------------------------------------------------------

OBJS = \
src/App.cpp.o \
src/Application.cpp.o \
src/Color.cpp.o \
src/Geometry.cpp.o \
src/Image.cpp.o \


+ 5
- 5
dgl/StandaloneWindow.hpp View File

@@ -17,7 +17,7 @@
#ifndef DGL_STANDALONE_WINDOW_HPP_INCLUDED
#define DGL_STANDALONE_WINDOW_HPP_INCLUDED

#include "App.hpp"
#include "Application.hpp"
#include "Widget.hpp"
#include "Window.hpp"

@@ -25,19 +25,19 @@ START_NAMESPACE_DGL

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

class StandaloneWindow : public App,
class StandaloneWindow : public Application,
public Window
{
public:
StandaloneWindow()
: App(),
Window((App&)*this),
: Application(),
Window((Application&)*this),
fWidget(nullptr) {}

void exec()
{
Window::show();
App::exec();
Application::exec();
}

protected:


+ 2
- 2
dgl/Widget.hpp View File

@@ -30,7 +30,7 @@ END_NAMESPACE_DISTRHO

START_NAMESPACE_DGL

class App;
class Application;
class ImageSlider;
class NanoWidget;
class Window;
@@ -287,7 +287,7 @@ public:
Get this widget's window application.
Same as calling getParentWindow().getApp().
*/
App& getParentApp() const noexcept;
Application& getParentApp() const noexcept;

/**
Get parent window, as passed in the constructor.


+ 6
- 6
dgl/Window.hpp View File

@@ -23,7 +23,7 @@ START_NAMESPACE_DGL

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

class App;
class Application;
class Widget;
class StandaloneWindow;

@@ -67,9 +67,9 @@ public:
buttons() {}
};

explicit Window(App& app);
explicit Window(App& app, Window& parent);
explicit Window(App& app, intptr_t parentId);
explicit Window(Application& app);
explicit Window(Application& app, Window& parent);
explicit Window(Application& app, intptr_t parentId);
virtual ~Window();

void show();
@@ -99,7 +99,7 @@ public:

void setTransientWinId(uintptr_t winId);

App& getApp() const noexcept;
Application& getApp() const noexcept;
intptr_t getWindowId() const noexcept;

void addIdleCallback(IdleCallback* const callback);
@@ -116,7 +116,7 @@ protected:
private:
struct PrivateData;
PrivateData* const pData;
friend class App;
friend class Application;
friend class Widget;
friend class StandaloneWindow;



dgl/src/App.cpp → dgl/src/Application.cpp View File

@@ -14,23 +14,23 @@
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#include "AppPrivateData.hpp"
#include "ApplicationPrivateData.hpp"
#include "../Window.hpp"

START_NAMESPACE_DGL

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

App::App()
Application::Application()
: pData(new PrivateData()),
leakDetector_App() {}
leakDetector_Application() {}

App::~App()
Application::~Application()
{
delete pData;
}

void App::idle()
void Application::idle()
{
for (std::list<Window*>::iterator it = pData->windows.begin(), ite = pData->windows.end(); it != ite; ++it)
{
@@ -45,7 +45,7 @@ void App::idle()
}
}

void App::exec()
void Application::exec()
{
for (; pData->doLoop;)
{
@@ -54,7 +54,7 @@ void App::exec()
}
}

void App::quit()
void Application::quit()
{
pData->doLoop = false;

@@ -65,7 +65,7 @@ void App::quit()
}
}

bool App::isQuiting() const noexcept
bool Application::isQuiting() const noexcept
{
return !pData->doLoop;
}

dgl/src/AppPrivateData.hpp → dgl/src/ApplicationPrivateData.hpp View File

@@ -17,7 +17,7 @@
#ifndef DGL_APP_PRIVATE_DATA_HPP_INCLUDED
#define DGL_APP_PRIVATE_DATA_HPP_INCLUDED

#include "../App.hpp"
#include "../Application.hpp"
#include "../../distrho/extra/Sleep.hpp"

#include <list>
@@ -26,7 +26,7 @@ START_NAMESPACE_DGL

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

struct App::PrivateData {
struct Application::PrivateData {
bool doLoop;
uint visibleWindows;
std::list<Window*> windows;

+ 32
- 68
dgl/src/ImageWidgets.cpp View File

@@ -60,7 +60,7 @@ void ImageAboutWindow::onDisplay()

bool ImageAboutWindow::onKeyboard(const KeyboardEvent& ev)
{
if (ev.press && ev.key == CHAR_ESCAPE)
if (ev.press && ev.key == kCharEscape)
{
Window::close();
return true;
@@ -591,7 +591,7 @@ bool ImageKnob::onMouse(const MouseEvent& ev)
if (! contains(ev.pos))
return false;

if ((ev.mod & MODIFIER_SHIFT) != 0 && fUsingDefault)
if ((ev.mod & kModifierShift) != 0 && fUsingDefault)
{
setValue(fValueDef, true);
fValueTmp = fValue;
@@ -631,7 +631,7 @@ bool ImageKnob::onMotion(const MotionEvent& ev)
{
if (const int movX = ev.pos.getX() - fLastX)
{
d = (ev.mod & MODIFIER_CTRL) ? 2000.0f : 200.0f;
d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f;
value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movX));
doVal = true;
}
@@ -640,7 +640,7 @@ bool ImageKnob::onMotion(const MotionEvent& ev)
{
if (const int movY = fLastY - ev.pos.getY())
{
d = (ev.mod & MODIFIER_CTRL) ? 2000.0f : 200.0f;
d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f;
value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movY));
doVal = true;
}
@@ -680,7 +680,7 @@ bool ImageKnob::onScroll(const ScrollEvent& ev)
if (! contains(ev.pos))
return false;

const float d = (ev.mod & MODIFIER_CTRL) ? 2000.0f : 200.0f;
const float d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f;
float value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * 10.f * ev.delta.getY());

if (fUsingLog)
@@ -733,6 +733,7 @@ ImageSlider::ImageSlider(Window& parent, const Image& image) noexcept
fValueTmp(fValue),
fDragging(false),
fInverted(false),
fValueIsSet(false),
fStartedX(0),
fStartedY(0),
fCallback(nullptr),
@@ -754,6 +755,7 @@ ImageSlider::ImageSlider(Widget* widget, const Image& image) noexcept
fValueTmp(fValue),
fDragging(false),
fInverted(false),
fValueIsSet(false),
fStartedX(0),
fStartedY(0),
fCallback(nullptr),
@@ -765,50 +767,32 @@ ImageSlider::ImageSlider(Widget* widget, const Image& image) noexcept
fNeedsFullViewport = true;
}

ImageSlider::ImageSlider(const ImageSlider& imageSlider) noexcept
: Widget(imageSlider.getParentWindow()),
fImage(imageSlider.fImage),
fMinimum(imageSlider.fMinimum),
fMaximum(imageSlider.fMaximum),
fStep(imageSlider.fStep),
fValue(imageSlider.fValue),
fValueTmp(fValue),
fDragging(false),
fInverted(imageSlider.fInverted),
fStartedX(0),
fStartedY(0),
fCallback(imageSlider.fCallback),
fStartPos(imageSlider.fStartPos),
fEndPos(imageSlider.fEndPos),
fSliderArea(imageSlider.fSliderArea),
leakDetector_ImageSlider()
float ImageSlider::getValue() const noexcept
{
fNeedsFullViewport = true;
return fValue;
}

ImageSlider& ImageSlider::operator=(const ImageSlider& imageSlider) noexcept
void ImageSlider::setValue(float value, bool sendCallback) noexcept
{
fImage = imageSlider.fImage;
fMinimum = imageSlider.fMinimum;
fMaximum = imageSlider.fMaximum;
fStep = imageSlider.fStep;
fValue = imageSlider.fValue;
fValueTmp = fValue;
fDragging = false;
fInverted = imageSlider.fInverted;
fStartedX = 0;
fStartedY = 0;
fCallback = imageSlider.fCallback;
fStartPos = imageSlider.fStartPos;
fEndPos = imageSlider.fEndPos;
fSliderArea = imageSlider.fSliderArea;
if (! fValueIsSet)
fValueIsSet = true;

return *this;
}
if (d_isEqual(fValue, value))
return;

float ImageSlider::getValue() const noexcept
{
return fValue;
fValue = value;

if (d_isZero(fStep))
fValueTmp = value;

repaint();

if (sendCallback && fCallback != nullptr)
{
try {
fCallback->imageSliderValueChanged(this, fValue);
} DISTRHO_SAFE_EXCEPTION("ImageSlider::setValue");
}
}

void ImageSlider::setStartPos(const Point<int>& startPos) noexcept
@@ -844,12 +828,15 @@ void ImageSlider::setInverted(bool inverted) noexcept

void ImageSlider::setRange(float min, float max) noexcept
{
fMinimum = min;
fMaximum = max;

if (fValue < min)
{
fValue = min;
repaint();

if (fCallback != nullptr)
if (fCallback != nullptr && fValueIsSet)
{
try {
fCallback->imageSliderValueChanged(this, fValue);
@@ -861,16 +848,13 @@ void ImageSlider::setRange(float min, float max) noexcept
fValue = max;
repaint();

if (fCallback != nullptr)
if (fCallback != nullptr && fValueIsSet)
{
try {
fCallback->imageSliderValueChanged(this, fValue);
} DISTRHO_SAFE_EXCEPTION("ImageSlider::setRange > max");
}
}

fMinimum = min;
fMaximum = max;
}

void ImageSlider::setStep(float step) noexcept
@@ -878,26 +862,6 @@ void ImageSlider::setStep(float step) noexcept
fStep = step;
}

void ImageSlider::setValue(float value, bool sendCallback) noexcept
{
if (d_isEqual(fValue, value))
return;

fValue = value;

if (d_isZero(fStep))
fValueTmp = value;

repaint();

if (sendCallback && fCallback != nullptr)
{
try {
fCallback->imageSliderValueChanged(this, fValue);
} DISTRHO_SAFE_EXCEPTION("ImageSlider::setValue");
}
}

void ImageSlider::setCallback(Callback* callback) noexcept
{
fCallback = callback;


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

@@ -210,7 +210,7 @@ void Widget::setAbsolutePos(const Point<int>& pos) noexcept
fParent.repaint();
}

App& Widget::getParentApp() const noexcept
Application& Widget::getParentApp() const noexcept
{
return fParent.getApp();
}


+ 16
- 14
dgl/src/Window.cpp View File

@@ -17,10 +17,7 @@
// we need this for now
//#define PUGL_GRAB_FOCUS 1

#include "AppPrivateData.hpp"
#include "../Widget.hpp"
#include "../Window.hpp"
#include "../../distrho/extra/String.hpp"
#include "../../distrho/src/DistrhoDefines.h"

#undef PUGL_HAVE_CAIRO
#undef PUGL_HAVE_GL
@@ -42,6 +39,11 @@ extern "C" {
# error Unsupported platform
#endif

#include "ApplicationPrivateData.hpp"
#include "../Widget.hpp"
#include "../Window.hpp"
#include "../../distrho/extra/String.hpp"

#define FOR_EACH_WIDGET(it) \
for (std::list<Widget*>::iterator it = fWidgets.begin(); it != fWidgets.end(); ++it)

@@ -64,7 +66,7 @@ START_NAMESPACE_DGL
// Window Private

struct Window::PrivateData {
PrivateData(App& app, Window* const self)
PrivateData(Application& app, Window* const self)
: fApp(app),
fSelf(self),
fView(puglInit()),
@@ -93,7 +95,7 @@ struct Window::PrivateData {
init();
}

PrivateData(App& app, Window* const self, Window& parent)
PrivateData(Application& app, Window* const self, Window& parent)
: fApp(app),
fSelf(self),
fView(puglInit()),
@@ -132,7 +134,7 @@ struct Window::PrivateData {
#endif
}

PrivateData(App& app, Window* const self, const intptr_t parentId)
PrivateData(Application& app, Window* const self, const intptr_t parentId)
: fApp(app),
fSelf(self),
fView(puglInit()),
@@ -884,9 +886,9 @@ struct Window::PrivateData {

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

App& fApp;
Window* fSelf;
PuglView* fView;
Application& fApp;
Window* fSelf;
PuglView* fView;

bool fFirstInit;
bool fVisible;
@@ -990,15 +992,15 @@ struct Window::PrivateData {
// -----------------------------------------------------------------------
// Window

Window::Window(App& app)
Window::Window(Application& app)
: pData(new PrivateData(app, this)),
leakDetector_Window() {}

Window::Window(App& app, Window& parent)
Window::Window(Application& app, Window& parent)
: pData(new PrivateData(app, this, parent)),
leakDetector_Window() {}

Window::Window(App& app, intptr_t parentId)
Window::Window(Application& app, intptr_t parentId)
: pData(new PrivateData(app, this, parentId)),
leakDetector_Window() {}

@@ -1169,7 +1171,7 @@ void Window::setTransientWinId(uintptr_t winId)
pData->setTransientWinId(winId);
}

App& Window::getApp() const noexcept
Application& Window::getApp() const noexcept
{
return pData->fApp;
}


+ 9
- 0
distrho/DistrhoUtils.hpp View File

@@ -221,4 +221,13 @@ uint32_t d_nextPowerOf2(uint32_t size) noexcept

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

#ifndef DONT_SET_USING_DISTRHO_NAMESPACE
// If your code uses a lot of DGL classes, then this will obviously save you
// a lot of typing, but can be disabled by setting DONT_SET_USING_DISTRHO_NAMESPACE.
namespace DISTRHO_NAMESPACE {}
using namespace DISTRHO_NAMESPACE;
#endif

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

#endif // DISTRHO_UTILS_HPP_INCLUDED

Loading…
Cancel
Save