From 4efdece239087ab0580e065acbb45652512901e3 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 20 May 2021 19:56:28 +0100 Subject: [PATCH] Add NanoSubWidgets test Signed-off-by: falkTX --- tests/Circle.cpp | 2 + tests/Line.cpp | 2 + tests/Makefile | 6 +- tests/NanoSubWidgets.cpp | 135 +++++++++++++++++++++++++++++++++++++++ tests/Rectangle.cpp | 2 + tests/Triangle.cpp | 2 + 6 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 tests/NanoSubWidgets.cpp diff --git a/tests/Circle.cpp b/tests/Circle.cpp index 578688c61..e00d80be3 100644 --- a/tests/Circle.cpp +++ b/tests/Circle.cpp @@ -14,6 +14,8 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "tests.hpp" + // -------------------------------------------------------------------------------------------------------------------- int main() diff --git a/tests/Line.cpp b/tests/Line.cpp index 578688c61..e00d80be3 100644 --- a/tests/Line.cpp +++ b/tests/Line.cpp @@ -14,6 +14,8 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "tests.hpp" + // -------------------------------------------------------------------------------------------------------------------- int main() diff --git a/tests/Makefile b/tests/Makefile index dde5918dd..1d79aca47 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -17,7 +17,7 @@ BUILD_CXX_FLAGS += -Wno-extra -Wno-missing-field-initializers # --------------------------------------------------------------------------------------------------------------------- -TESTS = Application Color Point +TESTS = Application Color Point NanoSubWidgets ifeq ($(HAVE_CAIRO),true) TESTS += Demo.cairo WTESTS += Window.cairo @@ -128,6 +128,10 @@ clean: @echo "Linking Demo (OpenGL)" $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(VULKAN_LIBS) -o $@ +../build/tests/NanoSubWidgets$(APP_EXT): ../build/tests/NanoSubWidgets.cpp.o ../build/libdgl-opengl.a + @echo "Linking Demo (OpenGL)" + $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ + # --------------------------------------------------------------------------------------------------------------------- -include $(OBJS:%.o=%.d) diff --git a/tests/NanoSubWidgets.cpp b/tests/NanoSubWidgets.cpp new file mode 100644 index 000000000..e6608cbf3 --- /dev/null +++ b/tests/NanoSubWidgets.cpp @@ -0,0 +1,135 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * 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 + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +#include "../dgl/NanoVG.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +class NanoRectangle : public NanoSubWidget +{ +public: + explicit NanoRectangle(Widget* const parent) + : NanoSubWidget(parent), + color() {} + + void setColor(const Color c) noexcept + { + color = c; + } + +protected: + void onNanoDisplay() override + { + beginPath(); + + fillColor(color); + rect(0, 0, getWidth(), getHeight()); + fill(); + + closePath(); + } + +private: + Color color; +}; + +// -------------------------------------------------------------------------------------------------------------------- + +class NanoRectanglesContainer : public NanoTopLevelWidget +{ +public: + explicit NanoRectanglesContainer(Window& parent) + : NanoTopLevelWidget(parent), + rect1(this), + rect2(this), + rect3(this) + { + rect1.setAbsolutePos(100, 100); + rect1.setSize(25, 25); + rect1.setColor(Color(255, 0, 0)); + + rect2.setAbsolutePos(200, 200); + rect2.setSize(25, 25); + rect2.setColor(Color(0, 255, 0)); + + rect3.setAbsolutePos(300, 300); + rect3.setSize(25, 25); + rect3.setColor(Color(0, 0, 255)); + } + +protected: + void onNanoDisplay() override + { + } + +private: + NanoRectangle rect1, rect2, rect3; +}; + +// -------------------------------------------------------------------------------------------------------------------- + +class NanoExampleWindow : public Window +{ +public: + explicit NanoExampleWindow(Application& app) + : Window(app), + container(*this) + { + const uint targetWidth = 1000; + const uint targetHeight = 600; + + setSize(targetWidth, targetHeight); + // container.setSize(width, height); + + setTitle("NanoVG SubWidgets test"); + } + + /* +protected: + void onReshape(uint width, uint height) override + { + container.setSize(width, height); + + Window::onReshape(width, height); + } + */ + +private: + NanoRectanglesContainer container; +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +int main() +{ + USE_NAMESPACE_DGL; + + Application app; + NanoExampleWindow win(app); + + win.show(); + app.exec(); + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Rectangle.cpp b/tests/Rectangle.cpp index 578688c61..e00d80be3 100644 --- a/tests/Rectangle.cpp +++ b/tests/Rectangle.cpp @@ -14,6 +14,8 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "tests.hpp" + // -------------------------------------------------------------------------------------------------------------------- int main() diff --git a/tests/Triangle.cpp b/tests/Triangle.cpp index 578688c61..e00d80be3 100644 --- a/tests/Triangle.cpp +++ b/tests/Triangle.cpp @@ -14,6 +14,8 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "tests.hpp" + // -------------------------------------------------------------------------------------------------------------------- int main()