--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __LABWC_REGIONS_H
+#define __LABWC_REGIONS_H
+
+//FIXME: ignore that there could be more than a single seat
+
+struct seat;
+struct view;
+struct server;
+struct output;
+struct wl_list;
+struct wlr_box;
+
+/* Double use: rcxml.c for config and output.c for usage */
+struct region {
+ struct wl_list link; /* struct rcxml.regions, struct output.regions */
+ char *name;
+ struct wlr_box geo;
+ struct wlr_box percentage;
+ struct {
+ int x;
+ int y;
+ } center;
+};
+
+void regions_init(struct server *server, struct seat *seat);
+void regions_update(struct output *output);
+void regions_destroy(struct wl_list *regions);
+
+#endif /* __LABWC_REGIONS_H */
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-only
+
+#define _POSIX_C_SOURCE 200809L
+#include <assert.h>
+#include <float.h>
+#include <string.h>
+#include <wlr/types/wlr_scene.h>
+#include <wlr/util/box.h>
+#include <wlr/util/log.h>
+#include "common/graphic-helpers.h"
+#include "common/mem.h"
+#include "labwc.h"
+#include "regions.h"
+
+void
+regions_init(struct server *server, struct seat *seat)
+{
+ /* To be filled later */
+}
+
+void
+regions_update(struct output *output)
+{
+ /* To be filled later */
+}
+
+void
+regions_destroy(struct wl_list *regions)
+{
+ assert(regions);
+ struct region *region, *region_tmp;
+ wl_list_for_each_safe(region, region_tmp, regions, link) {
+ wl_list_remove(®ion->link);
+ zfree(region->name);
+ zfree(region);
+ }
+}
+