aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@unormal.org>2014-01-18 20:28:28 +0100
committerJoel Bodenmann <joel@unormal.org>2014-01-18 20:28:28 +0100
commit3a08f65cfcd884b454e835e6319d949e51e0b428 (patch)
treef722f8dcec5f9bff6a00b6ea79122473578eaf38
parentac690d1d295ec27f4c01064bd692d521c7f8b363 (diff)
downloaduGFX-3a08f65cfcd884b454e835e6319d949e51e0b428.tar.gz
uGFX-3a08f65cfcd884b454e835e6319d949e51e0b428.tar.bz2
uGFX-3a08f65cfcd884b454e835e6319d949e51e0b428.zip
initial work on GGroup
-rw-r--r--include/gwin/ggroup.h46
-rw-r--r--include/gwin/gwin.h9
-rw-r--r--src/gwin/ggroup.c26
3 files changed, 79 insertions, 2 deletions
diff --git a/include/gwin/ggroup.h b/include/gwin/ggroup.h
new file mode 100644
index 00000000..b58f415b
--- /dev/null
+++ b/include/gwin/ggroup.h
@@ -0,0 +1,46 @@
+/*
+ * This file is subject to the terms of the GFX License. If a copy of
+ * the license was not distributed with this file, you can obtain one at:
+ *
+ * http://ugfx.org/license.html
+ */
+
+/**
+ * @file include/gwin/ggroup.h
+ * @brief GWIN Widgets header file.
+ */
+
+#ifndef _GGROUP_H
+#define _GGROUP_H
+
+/* This file is included within "gwin/gwin.h" */
+
+/**
+ * @defgroup Widget Widget
+ * @ingroup GWIN
+ *
+ * @details Groups provide parent/child relation features and dynamic layouts.
+ *
+ * @pre GFX_NEED_GWIN needs to be set to TRUE in your gfxconf.h.
+ * @pre GWIN_NEED_GROUPS needs to be set to TRUE in your gfxconf.h.
+ *
+ * @{
+ */
+
+/**
+ * @brief A group object structure
+ * @note Do not access the members directly. Treat it as a black-box and use the method functions.
+ * @{
+ */
+typedef struct GGroupObject {
+ GWindowObject g;
+
+ GHandle parent; // @< The parent widget
+ GHandle sibling; // @< The widget to its left (add right later as well)
+ GHandle child; // @< The child widget
+} GGroupObject;
+/** @} */
+
+
+#endif /* _GGROUP_H */
+
diff --git a/include/gwin/gwin.h b/include/gwin/gwin.h
index e74927ae..8e570229 100644
--- a/include/gwin/gwin.h
+++ b/include/gwin/gwin.h
@@ -55,7 +55,7 @@ typedef struct GWindowObject {
GHandle child; // @< The child widget
#endif
} GWindowObject, * GHandle;
-/* @} */
+/** @} */
/**
* @brief The structure to initialise a GWIN.
@@ -70,7 +70,7 @@ typedef struct GWindowInit {
coord_t width, height; // @< The initial dimension
bool_t show; // @< Should the window be visible initially
} GWindowInit;
-/* @} */
+/** @} */
/**
* @brief A window's minimized, maximized or normal size
@@ -906,6 +906,11 @@ extern "C" {
* Additional functionality
*-------------------------------------------------*/
+ /* Include groups */
+ #if GWIN_NEED_GROUPS || defined(__DOXYGEN__)
+ #include "gwin/ggroup.h"
+ #endif
+
/* Include widgets */
#if GWIN_NEED_WIDGET || defined(__DOXYGEN__)
#include "gwin/gwidget.h"
diff --git a/src/gwin/ggroup.c b/src/gwin/ggroup.c
new file mode 100644
index 00000000..3bfefe38
--- /dev/null
+++ b/src/gwin/ggroup.c
@@ -0,0 +1,26 @@
+/*
+ * This file is subject to the terms of the GFX License. If a copy of
+ * the license was not distributed with this file, you can obtain one at:
+ *
+ * http://ugfx.org/license.html
+ */
+
+#include "gfx.h"
+
+#if GFX_USE_GWIN && GWIN_NEED_GROUPS
+
+#include "gwin/class_gwin.h"
+
+GHandle _ggroupCreate(GDisplay *g, GGroupObject *go, const GGroupInit *pInit) {
+ if (!(go = (GGroupObject *)_gwindowCreate(g, &go->g, &pInit->g, &vmt->g, GWIN_FLG_GROUP|GWIN_FLG_ENABLED)))
+ return NULL;
+
+ go->parent = NULL;
+ go->sibling = NULL;
+ go->child = NULL;
+
+ return &go->g;
+}
+
+#endif /* GFX_USE_GWIN && GWIN_NEED_GROUPS */
+