#ifndef COMET_BLOCK_H #define COMET_BLOCK_H #include #include #include // Color representation normalized to [0, 1] // typedef struct { double r, g, b, a; } color_t; // Element or text alignment // typedef enum { ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT, } align_t; // Block type identifier // typedef enum { BLOCK_TEXT, BLOCK_GROUP, } block_type_t; typedef struct block block_t; // Triggered when an event is directed towards the block // typedef void (*block_event_t)(block_t *block, event_t *event); // Regularly called depending on the inverval passed from the last update // typedef void (*block_update_t)(block_t *block); // Generic block type // typedef struct block { block_type_t type; bool hidden; color_t color; color_t line_color; int line_width; int x_padding, y_padding; int min_width, max_width; block_event_t event_cb; }; // Block text type // typedef struct { block_t block; const char *text; color_t text_color; align_t text_align; int text_width; int update_interval; struct timespec update_last; block_update_t update_cb; } block_text_t; // Block group type // typedef struct block_group { block_t block; struct block_group *next; } block_group_t; #endif