2026-04-05 17:48:57 -07:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
2026-03-27 20:24:24 -07:00
|
|
|
#include <stdint.h>
|
2026-04-01 20:18:43 -07:00
|
|
|
#include <wlr/types/wlr_scene.h>
|
2026-04-05 17:48:57 -07:00
|
|
|
|
2026-03-27 20:24:24 -07:00
|
|
|
#ifndef LABWC_BORDERSET_H
|
|
|
|
|
#define LABWC_BORDERSET_H
|
|
|
|
|
|
2026-03-28 09:01:21 -07:00
|
|
|
enum border_type {
|
2026-04-04 07:38:27 -07:00
|
|
|
BORDER_NONE, BORDER_SINGLE, BORDER_DOUBLE, BORDER_INSET, BORDER_DOUBLE_INSET, BORDER_FLAT
|
2026-03-28 09:01:21 -07:00
|
|
|
};
|
|
|
|
|
|
2026-03-27 20:24:24 -07:00
|
|
|
struct borderset {
|
2026-04-05 17:48:57 -07:00
|
|
|
// Base colour, but could be used as a tracking hash for images or whatever in the future
|
|
|
|
|
uint32_t id;
|
|
|
|
|
// width (since I suspect a 2px border scaled up to 20px might look weird)
|
|
|
|
|
int size;
|
|
|
|
|
// Single or double bevel, etc.
|
|
|
|
|
enum border_type type;
|
|
|
|
|
// So we can disambiguate multiple possible designs cached together
|
|
|
|
|
int bevelSize;
|
2026-03-29 14:27:00 +02:00
|
|
|
struct lab_data_buffer *top;
|
|
|
|
|
struct lab_data_buffer *left;
|
|
|
|
|
struct lab_data_buffer *right;
|
|
|
|
|
struct lab_data_buffer *bottom;
|
|
|
|
|
struct lab_data_buffer *tl;
|
|
|
|
|
struct lab_data_buffer *tr;
|
|
|
|
|
struct lab_data_buffer *bl;
|
|
|
|
|
struct lab_data_buffer *br;
|
2026-04-05 17:48:57 -07:00
|
|
|
struct borderset *next;
|
2026-03-27 20:24:24 -07:00
|
|
|
};
|
|
|
|
|
|
2026-03-28 09:01:21 -07:00
|
|
|
struct bufferset {
|
|
|
|
|
enum border_type type;
|
|
|
|
|
int border_width;
|
2026-04-05 17:48:57 -07:00
|
|
|
struct wlr_scene_buffer *top;
|
|
|
|
|
struct wlr_scene_buffer *left;
|
|
|
|
|
struct wlr_scene_buffer *right;
|
|
|
|
|
struct wlr_scene_buffer *bottom;
|
|
|
|
|
struct wlr_scene_buffer *tl;
|
|
|
|
|
struct wlr_scene_buffer *tr;
|
|
|
|
|
struct wlr_scene_buffer *bl;
|
|
|
|
|
struct wlr_scene_buffer *br;
|
2026-03-28 09:01:21 -07:00
|
|
|
|
|
|
|
|
};
|
2026-03-27 20:24:24 -07:00
|
|
|
|
2026-04-05 17:57:15 -07:00
|
|
|
extern struct borderset *border_cache;
|
2026-03-27 20:24:24 -07:00
|
|
|
|
2026-04-05 17:57:15 -07:00
|
|
|
struct borderset *get_borders(uint32_t id, int size, enum border_type, int bevelSize);
|
2026-03-27 20:24:24 -07:00
|
|
|
|
2026-04-05 17:57:15 -07:00
|
|
|
struct borderset *create_buffer(uint32_t id, int size, enum border_type, int bevelSize);
|
2026-03-28 09:01:21 -07:00
|
|
|
|
2026-04-05 17:57:15 -07:00
|
|
|
struct bufferset *generate_bufferset(struct wlr_scene_tree *tree,
|
2026-04-05 17:48:57 -07:00
|
|
|
struct borderset *borderset, int bw);
|
2026-03-28 09:01:21 -07:00
|
|
|
|
2026-04-05 17:48:57 -07:00
|
|
|
void renderBufferset(struct bufferset *bufferset, int width, int height, int y);
|
2026-03-27 20:24:24 -07:00
|
|
|
|
2026-04-05 17:48:57 -07:00
|
|
|
void renderBuffersetXY(struct bufferset *bufferset, int width, int height, int x, int y);
|
2026-04-03 23:17:28 -07:00
|
|
|
|
2026-04-05 17:57:15 -07:00
|
|
|
void clearborder_cache(struct borderset *borderset);
|
2026-03-27 20:24:24 -07:00
|
|
|
|
2026-04-05 17:48:57 -07:00
|
|
|
#endif /* LABWC_BORDERSET_H */
|