diff options
Diffstat (limited to 'include/swaylock')
| -rw-r--r-- | include/swaylock/seat.h | 38 | ||||
| -rw-r--r-- | include/swaylock/swaylock.h | 98 | 
2 files changed, 86 insertions, 50 deletions
diff --git a/include/swaylock/seat.h b/include/swaylock/seat.h new file mode 100644 index 00000000..44bc37d5 --- /dev/null +++ b/include/swaylock/seat.h @@ -0,0 +1,38 @@ +#ifndef _SWAYLOCK_SEAT_H +#define _SWAYLOCK_SEAT_H +#include <xkbcommon/xkbcommon.h> + +enum mod_bit { +	MOD_SHIFT = 1<<0, +	MOD_CAPS = 1<<1, +	MOD_CTRL = 1<<2, +	MOD_ALT = 1<<3, +	MOD_MOD2 = 1<<4, +	MOD_MOD3 = 1<<5, +	MOD_LOGO = 1<<6, +	MOD_MOD5 = 1<<7, +}; + +enum mask { +	MASK_SHIFT, +	MASK_CAPS, +	MASK_CTRL, +	MASK_ALT, +	MASK_MOD2, +	MASK_MOD3, +	MASK_LOGO, +	MASK_MOD5, +	MASK_LAST +}; + +struct swaylock_xkb { +	uint32_t modifiers; +	struct xkb_state *state; +	struct xkb_context *context; +	struct xkb_keymap *keymap; +	xkb_mod_mask_t masks[MASK_LAST]; +}; + +extern const struct wl_seat_listener seat_listener; + +#endif diff --git a/include/swaylock/swaylock.h b/include/swaylock/swaylock.h index eeed094e..173e8b12 100644 --- a/include/swaylock/swaylock.h +++ b/include/swaylock/swaylock.h @@ -1,66 +1,64 @@  #ifndef _SWAYLOCK_H  #define _SWAYLOCK_H - -#include "client/cairo.h" - -enum scaling_mode { -	SCALING_MODE_STRETCH, -	SCALING_MODE_FILL, -	SCALING_MODE_FIT, -	SCALING_MODE_CENTER, -	SCALING_MODE_TILE, -}; +#include <stdbool.h> +#include <stdint.h> +#include <wayland-client.h> +#include "background-image.h" +#include "cairo.h" +#include "pool-buffer.h" +#include "swaylock/seat.h" +#include "wlr-layer-shell-unstable-v1-client-protocol.h"  enum auth_state { -	AUTH_STATE_IDLE, -	AUTH_STATE_INPUT, -	AUTH_STATE_BACKSPACE, -	AUTH_STATE_VALIDATING, -	AUTH_STATE_INVALID, +    AUTH_STATE_IDLE, +    AUTH_STATE_INPUT, +    AUTH_STATE_BACKSPACE, +    AUTH_STATE_VALIDATING, +    AUTH_STATE_INVALID,  }; -enum line_source { -	LINE_SOURCE_DEFAULT, -	LINE_SOURCE_RING, -	LINE_SOURCE_INSIDE, -}; - -struct render_data { -	list_t *surfaces; -	// Output specific images -	cairo_surface_t **images; -	// OR one image for all outputs: -	cairo_surface_t *image; -	int num_images; -	int color_set; +struct swaylock_args {  	uint32_t color; -	enum scaling_mode scaling_mode; -	enum auth_state auth_state; +	enum background_mode mode; +	bool show_indicator;  }; -struct lock_colors { -	uint32_t inner_ring; -	uint32_t outer_ring; +struct swaylock_password { +	size_t size; +	size_t len; +	char *buffer;  }; -struct lock_config { -	char *font; - -	struct { -		uint32_t text; -		uint32_t line; -		uint32_t separator; -		uint32_t input_cursor; -		uint32_t backspace_cursor; -		struct lock_colors normal; -		struct lock_colors validating; -		struct lock_colors invalid; -	} colors; +struct swaylock_state { +	struct wl_display *display; +	struct wl_compositor *compositor; +	struct zwlr_layer_shell_v1 *layer_shell; +	struct zwlr_input_inhibit_manager_v1 *input_inhibit_manager; +	struct wl_shm *shm; +	struct wl_list surfaces; +	struct swaylock_args args; +	struct swaylock_password password; +	struct swaylock_xkb xkb; +	enum auth_state auth_state; +	bool run_display; +}; -	int radius; -	int thickness; +struct swaylock_surface { +	cairo_surface_t *image; +	struct swaylock_state *state; +	struct wl_output *output; +	struct wl_surface *surface; +	struct zwlr_layer_surface_v1 *layer_surface; +	struct pool_buffer buffers[2]; +	struct pool_buffer *current_buffer; +	uint32_t width, height; +	int32_t scale; +	struct wl_list link;  }; -void render(struct render_data* render_data, struct lock_config *config); +void swaylock_handle_key(struct swaylock_state *state, +		xkb_keysym_t keysym, uint32_t codepoint); +void render_frame(struct swaylock_surface *surface); +void render_frames(struct swaylock_state *state);  #endif  | 
