labwc/include/theme.h

204 lines
6.4 KiB
C
Raw Normal View History

2021-11-13 21:56:53 +00:00
/* SPDX-License-Identifier: GPL-2.0-only */
2020-06-29 19:27:59 +01:00
/*
* Theme engine for labwc
2020-06-29 19:27:59 +01:00
*
* Copyright Johan Malm 2020-2021
2020-06-29 19:27:59 +01:00
*/
#ifndef LABWC_THEME_H
#define LABWC_THEME_H
2020-06-11 21:20:43 +01:00
#include <stdio.h>
2020-06-29 19:27:59 +01:00
#include <wlr/render/wlr_renderer.h>
2020-06-11 21:20:43 +01:00
enum lab_justification {
LAB_JUSTIFY_LEFT,
LAB_JUSTIFY_CENTER,
LAB_JUSTIFY_RIGHT,
};
struct theme_snapping_overlay {
bool bg_enabled;
bool border_enabled;
float bg_color[4];
int border_width;
float border_color[3][4];
};
2020-06-11 21:20:43 +01:00
struct theme {
2021-03-27 21:09:45 +00:00
int border_width;
/*
* the space between title bar border and
* buttons on the left/right/top
*/
int padding_width;
int padding_height;
int title_height;
2021-11-08 17:36:39 +00:00
int menu_overlap_x;
int menu_overlap_y;
2021-03-27 21:09:45 +00:00
2021-11-08 17:36:39 +00:00
/* colors */
float window_active_border_color[4];
float window_inactive_border_color[4];
2023-03-05 10:35:56 +01:00
float window_toggled_keybinds_color[4];
2020-06-11 21:20:43 +01:00
float window_active_title_bg_color[4];
float window_inactive_title_bg_color[4];
2020-08-21 20:35:06 +01:00
float window_active_label_text_color[4];
float window_inactive_label_text_color[4];
enum lab_justification window_label_text_justify;
enum lab_justification menu_title_text_justify;
/* button width */
int window_button_width;
/* the space between buttons */
int window_button_spacing;
2021-11-08 17:36:39 +00:00
/* button colors */
2022-01-26 02:54:03 +01:00
float window_active_button_menu_unpressed_image_color[4];
float window_active_button_iconify_unpressed_image_color[4];
float window_active_button_max_unpressed_image_color[4];
float window_active_button_close_unpressed_image_color[4];
2024-08-22 16:27:24 -04:00
float window_active_button_shade_unpressed_image_color[4];
2024-08-23 12:45:14 -04:00
float window_active_button_omnipresent_unpressed_image_color[4];
2022-01-26 02:54:03 +01:00
float window_inactive_button_menu_unpressed_image_color[4];
float window_inactive_button_iconify_unpressed_image_color[4];
float window_inactive_button_max_unpressed_image_color[4];
float window_inactive_button_close_unpressed_image_color[4];
2024-08-22 16:27:24 -04:00
float window_inactive_button_shade_unpressed_image_color[4];
2024-08-23 12:45:14 -04:00
float window_inactive_button_omnipresent_unpressed_image_color[4];
/* TODO: add pressed and hover colors for buttons */
2020-08-21 20:35:06 +01:00
int menu_item_padding_x;
int menu_item_padding_y;
int menu_item_height;
2021-02-16 20:43:20 +00:00
float menu_items_bg_color[4];
float menu_items_text_color[4];
float menu_items_active_bg_color[4];
float menu_items_active_text_color[4];
int menu_min_width;
int menu_max_width;
int menu_separator_line_thickness;
int menu_separator_padding_width;
int menu_separator_padding_height;
float menu_separator_color[4];
float menu_title_bg_color[4];
float menu_title_text_color[4];
int osd_border_width;
2021-10-13 21:29:32 +01:00
float osd_bg_color[4];
float osd_border_color[4];
2021-10-13 21:29:32 +01:00
float osd_label_text_color[4];
int osd_window_switcher_width;
int osd_window_switcher_padding;
int osd_window_switcher_item_padding_x;
int osd_window_switcher_item_padding_y;
int osd_window_switcher_item_active_border_width;
bool osd_window_switcher_width_is_percent;
int osd_window_switcher_preview_border_width;
float osd_window_switcher_preview_border_color[3][4];
int osd_workspace_switcher_boxes_width;
int osd_workspace_switcher_boxes_height;
struct theme_snapping_overlay
snapping_overlay_region, snapping_overlay_edge;
/* window drop-shadows */
int window_active_shadow_size;
int window_inactive_shadow_size;
float window_active_shadow_color[4];
float window_inactive_shadow_color[4];
2021-11-08 17:36:39 +00:00
/* textures */
struct lab_data_buffer *button_close_active_unpressed;
struct lab_data_buffer *button_maximize_active_unpressed;
struct lab_data_buffer *button_restore_active_unpressed;
struct lab_data_buffer *button_iconify_active_unpressed;
struct lab_data_buffer *button_menu_active_unpressed;
2024-08-22 16:27:24 -04:00
struct lab_data_buffer *button_shade_active_unpressed;
struct lab_data_buffer *button_unshade_active_unpressed;
2024-08-23 12:45:14 -04:00
struct lab_data_buffer *button_omnipresent_active_unpressed;
struct lab_data_buffer *button_exclusive_active_unpressed;
struct lab_data_buffer *button_close_inactive_unpressed;
struct lab_data_buffer *button_maximize_inactive_unpressed;
struct lab_data_buffer *button_restore_inactive_unpressed;
struct lab_data_buffer *button_iconify_inactive_unpressed;
struct lab_data_buffer *button_menu_inactive_unpressed;
2024-08-22 16:27:24 -04:00
struct lab_data_buffer *button_shade_inactive_unpressed;
struct lab_data_buffer *button_unshade_inactive_unpressed;
2024-08-23 12:45:14 -04:00
struct lab_data_buffer *button_omnipresent_inactive_unpressed;
struct lab_data_buffer *button_exclusive_inactive_unpressed;
/* hover variants are optional and may be NULL */
struct lab_data_buffer *button_close_active_hover;
struct lab_data_buffer *button_maximize_active_hover;
struct lab_data_buffer *button_restore_active_hover;
struct lab_data_buffer *button_iconify_active_hover;
struct lab_data_buffer *button_menu_active_hover;
2024-08-22 16:27:24 -04:00
struct lab_data_buffer *button_shade_active_hover;
struct lab_data_buffer *button_unshade_active_hover;
2024-08-23 12:45:14 -04:00
struct lab_data_buffer *button_omnipresent_active_hover;
struct lab_data_buffer *button_exclusive_active_hover;
struct lab_data_buffer *button_close_inactive_hover;
struct lab_data_buffer *button_maximize_inactive_hover;
struct lab_data_buffer *button_restore_inactive_hover;
struct lab_data_buffer *button_iconify_inactive_hover;
struct lab_data_buffer *button_menu_inactive_hover;
2024-08-22 16:27:24 -04:00
struct lab_data_buffer *button_shade_inactive_hover;
struct lab_data_buffer *button_unshade_inactive_hover;
2024-08-23 12:45:14 -04:00
struct lab_data_buffer *button_omnipresent_inactive_hover;
struct lab_data_buffer *button_exclusive_inactive_hover;
struct lab_data_buffer *corner_top_left_active_normal;
struct lab_data_buffer *corner_top_right_active_normal;
struct lab_data_buffer *corner_top_left_inactive_normal;
struct lab_data_buffer *corner_top_right_inactive_normal;
struct lab_data_buffer *shadow_corner_top_active;
struct lab_data_buffer *shadow_corner_bottom_active;
struct lab_data_buffer *shadow_edge_active;
struct lab_data_buffer *shadow_corner_top_inactive;
struct lab_data_buffer *shadow_corner_bottom_inactive;
struct lab_data_buffer *shadow_edge_inactive;
/* not set in rc.xml/themerc, but derived from font & padding_height */
int osd_window_switcher_item_height;
/* magnifier */
float mag_border_color[4];
int mag_border_width;
2020-06-11 21:20:43 +01:00
};
struct server;
2020-08-07 20:21:14 +01:00
/**
2021-02-21 21:54:40 +00:00
* theme_init - read openbox theme and generate button textures
2021-02-21 22:03:14 +00:00
* @theme: theme data
* @server: server
2020-08-07 20:21:14 +01:00
* @theme_name: theme-name in <theme-dir>/<theme-name>/openbox-3/themerc
* Note <theme-dir> is obtained in theme-dir.c
*/
void theme_init(struct theme *theme, struct server *server, const char *theme_name);
2020-06-11 21:20:43 +01:00
2021-02-21 22:03:14 +00:00
/**
* theme_finish - free button textures
* @theme: theme data
*/
void theme_finish(struct theme *theme);
#endif /* LABWC_THEME_H */