| 
									
										
										
										
											2021-11-13 21:56:53 +00:00
										 |  |  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
					
						
							| 
									
										
										
										
											2020-06-29 19:27:59 +01:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2021-07-16 17:07:00 +01:00
										 |  |  |  * Theme engine for labwc | 
					
						
							| 
									
										
										
										
											2020-06-29 19:27:59 +01:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2021-07-16 17:07:00 +01:00
										 |  |  |  * Copyright Johan Malm 2020-2021 | 
					
						
							| 
									
										
										
										
											2020-06-29 19:27:59 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-13 16:10:33 +03: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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-17 19:12:06 +00:00
										 |  |  | enum lab_justification { | 
					
						
							|  |  |  | 	LAB_JUSTIFY_LEFT, | 
					
						
							|  |  |  | 	LAB_JUSTIFY_CENTER, | 
					
						
							|  |  |  | 	LAB_JUSTIFY_RIGHT, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-11 21:20:43 +01:00
										 |  |  | struct theme { | 
					
						
							| 
									
										
										
										
											2021-03-27 21:09:45 +00:00
										 |  |  | 	int border_width; | 
					
						
							| 
									
										
										
										
											2021-04-15 20:13:49 +01:00
										 |  |  | 	int padding_height; | 
					
						
							| 
									
										
										
										
											2023-10-02 12:44:30 -03:00
										 |  |  | 	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 */ | 
					
						
							| 
									
										
										
										
											2021-04-10 19:11:29 +01:00
										 |  |  | 	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]; | 
					
						
							| 
									
										
										
										
											2020-06-12 21:41:30 +01:00
										 |  |  | 	float window_inactive_title_bg_color[4]; | 
					
						
							| 
									
										
										
										
											2020-08-21 20:35:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-15 21:35:41 +01:00
										 |  |  | 	float window_active_label_text_color[4]; | 
					
						
							|  |  |  | 	float window_inactive_label_text_color[4]; | 
					
						
							| 
									
										
										
										
											2021-10-17 19:12:06 +00:00
										 |  |  | 	enum lab_justification window_label_text_justify; | 
					
						
							| 
									
										
										
										
											2021-10-15 21:35:41 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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]; | 
					
						
							| 
									
										
										
										
											2021-08-11 20:58:35 +01:00
										 |  |  | 	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]; | 
					
						
							| 
									
										
										
										
											2022-01-26 02:54:03 +01:00
										 |  |  | 	float window_inactive_button_menu_unpressed_image_color[4]; | 
					
						
							| 
									
										
										
										
											2021-08-11 20:58:35 +01:00
										 |  |  | 	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]; | 
					
						
							|  |  |  | 	/* TODO: add pressed and hover colors for buttons */ | 
					
						
							| 
									
										
										
										
											2020-08-21 20:35:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-06 14:38:56 +01:00
										 |  |  | 	int menu_item_padding_x; | 
					
						
							|  |  |  | 	int menu_item_padding_y; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-05 14:38:16 +01:00
										 |  |  | 	int menu_min_width; | 
					
						
							|  |  |  | 	int menu_max_width; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-06 12:01:44 +01:00
										 |  |  | 	int menu_separator_line_thickness; | 
					
						
							| 
									
										
										
										
											2022-06-22 21:07:25 +01:00
										 |  |  | 	int menu_separator_padding_width; | 
					
						
							|  |  |  | 	int menu_separator_padding_height; | 
					
						
							|  |  |  | 	float menu_separator_color[4]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-31 19:14:58 +02:00
										 |  |  | 	int osd_border_width; | 
					
						
							| 
									
										
										
										
											2023-04-24 21:31:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 21:29:32 +01:00
										 |  |  | 	float osd_bg_color[4]; | 
					
						
							| 
									
										
										
										
											2022-05-31 19:14:58 +02:00
										 |  |  | 	float osd_border_color[4]; | 
					
						
							| 
									
										
										
										
											2021-10-13 21:29:32 +01:00
										 |  |  | 	float osd_label_text_color[4]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-24 21:31:28 +01:00
										 |  |  | 	int osd_window_switcher_width; | 
					
						
							| 
									
										
										
										
											2023-06-29 21:29:43 +01:00
										 |  |  | 	int osd_window_switcher_padding; | 
					
						
							| 
									
										
										
										
											2023-04-24 21:31:28 +01:00
										 |  |  | 	int osd_window_switcher_item_padding_x; | 
					
						
							|  |  |  | 	int osd_window_switcher_item_padding_y; | 
					
						
							| 
									
										
										
										
											2023-07-01 14:56:13 +02:00
										 |  |  | 	int osd_window_switcher_item_active_border_width; | 
					
						
							| 
									
										
										
										
											2024-03-26 05:12:19 -05:00
										 |  |  | 	bool osd_window_switcher_width_is_percent; | 
					
						
							| 
									
										
										
										
											2023-04-24 21:31:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-11 12:41:33 +03:00
										 |  |  | 	int osd_workspace_switcher_boxes_width; | 
					
						
							|  |  |  | 	int osd_workspace_switcher_boxes_height; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-14 02:24:36 +09:00
										 |  |  | 	bool snapping_preview_region_fill; | 
					
						
							|  |  |  | 	bool snapping_preview_edge_fill; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-08 17:36:39 +00:00
										 |  |  | 	/* textures */ | 
					
						
							| 
									
										
										
										
											2023-08-04 22:30:16 +01:00
										 |  |  | 	struct lab_data_buffer *button_close_active_unpressed; | 
					
						
							|  |  |  | 	struct lab_data_buffer *button_maximize_active_unpressed; | 
					
						
							| 
									
										
										
										
											2023-12-06 20:33:26 +00:00
										 |  |  | 	struct lab_data_buffer *button_restore_active_unpressed; | 
					
						
							| 
									
										
										
										
											2023-08-04 22:30:16 +01:00
										 |  |  | 	struct lab_data_buffer *button_iconify_active_unpressed; | 
					
						
							|  |  |  | 	struct lab_data_buffer *button_menu_active_unpressed; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	struct lab_data_buffer *button_close_inactive_unpressed; | 
					
						
							|  |  |  | 	struct lab_data_buffer *button_maximize_inactive_unpressed; | 
					
						
							| 
									
										
										
										
											2023-12-06 20:33:26 +00:00
										 |  |  | 	struct lab_data_buffer *button_restore_inactive_unpressed; | 
					
						
							| 
									
										
										
										
											2023-08-04 22:30:16 +01:00
										 |  |  | 	struct lab_data_buffer *button_iconify_inactive_unpressed; | 
					
						
							|  |  |  | 	struct lab_data_buffer *button_menu_inactive_unpressed; | 
					
						
							| 
									
										
										
										
											2021-04-15 20:13:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-16 09:56:45 -05:00
										 |  |  | 	/* hover variants are optional and may be NULL */ | 
					
						
							| 
									
										
										
										
											2023-12-06 20:33:26 +00:00
										 |  |  | 	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; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	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; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-17 01:46:32 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2021-07-16 17:07:00 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* not set in rc.xml/themerc, but derived from font & padding_height */ | 
					
						
							| 
									
										
										
										
											2023-04-24 21:31:28 +01:00
										 |  |  | 	int osd_window_switcher_item_height; | 
					
						
							| 
									
										
										
										
											2020-06-11 21:20:43 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2022-02-17 01:46:32 +01:00
										 |  |  | void theme_init(struct theme *theme, 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); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-13 16:10:33 +03:00
										 |  |  | #endif /* LABWC_THEME_H */
 |