2016-03-25 14:06:27 +01:00
|
|
|
#ifndef _SWAYLOCK_H
|
|
|
|
#define _SWAYLOCK_H
|
|
|
|
|
|
|
|
#include "client/cairo.h"
|
|
|
|
|
|
|
|
enum scaling_mode {
|
2017-02-21 20:49:22 +01:00
|
|
|
SCALING_MODE_STRETCH,
|
|
|
|
SCALING_MODE_FILL,
|
|
|
|
SCALING_MODE_FIT,
|
|
|
|
SCALING_MODE_CENTER,
|
|
|
|
SCALING_MODE_TILE,
|
2016-03-25 14:06:27 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
enum auth_state {
|
2017-02-21 20:49:22 +01:00
|
|
|
AUTH_STATE_IDLE,
|
|
|
|
AUTH_STATE_INPUT,
|
|
|
|
AUTH_STATE_BACKSPACE,
|
|
|
|
AUTH_STATE_VALIDATING,
|
|
|
|
AUTH_STATE_INVALID,
|
2016-03-25 14:06:27 +01:00
|
|
|
};
|
|
|
|
|
2017-02-22 05:14:28 +01:00
|
|
|
enum line_source {
|
|
|
|
LINE_SOURCE_DEFAULT,
|
|
|
|
LINE_SOURCE_RING,
|
|
|
|
LINE_SOURCE_INSIDE,
|
|
|
|
};
|
|
|
|
|
2016-03-25 14:06:27 +01:00
|
|
|
struct render_data {
|
2017-02-21 20:49:22 +01:00
|
|
|
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;
|
|
|
|
uint32_t color;
|
|
|
|
enum scaling_mode scaling_mode;
|
|
|
|
enum auth_state auth_state;
|
2016-03-25 14:06:27 +01:00
|
|
|
};
|
|
|
|
|
2017-02-21 20:49:22 +01:00
|
|
|
struct lock_colors {
|
|
|
|
uint32_t inner_ring;
|
|
|
|
uint32_t outer_ring;
|
|
|
|
};
|
|
|
|
|
|
|
|
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;
|
2017-07-31 14:48:48 +02:00
|
|
|
|
|
|
|
int radius;
|
|
|
|
int thickness;
|
2017-02-21 20:49:22 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
void render(struct render_data* render_data, struct lock_config *config);
|
2016-03-25 14:06:27 +01:00
|
|
|
|
|
|
|
#endif
|