commit 4efdece239087ab0580e065acbb45652512901e3
parent 2369ad127d882359074ad1ad0cb0f6b2efacf0a2
Author: falkTX <falktx@falktx.com>
Date: Thu, 20 May 2021 19:56:01 +0100
Add NanoSubWidgets test
Signed-off-by: falkTX <falktx@falktx.com>
Diffstat:
6 files changed, 148 insertions(+), 1 deletion(-)
diff --git 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
@@ -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
@@ -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
@@ -0,0 +1,135 @@
+/*
+ * DISTRHO Plugin Framework (DPF)
+ * Copyright (C) 2012-2021 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
+ * 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
@@ -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
@@ -14,6 +14,8 @@
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include "tests.hpp"
+
// --------------------------------------------------------------------------------------------------------------------
int main()