X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3bar%2Finclude%2Fcommon.h;h=aa706bbe2af31bda1ca10a4345f7e047d7136990;hb=071f11f9b9c010e9522d2a461b8f3e2f091f0abf;hp=d63780dc70c23732cfcab3b6851686c18fdae268;hpb=7cf0c632c3e3f014a0bcfb1a4335e40f695d7af5;p=i3%2Fi3 diff --git a/i3bar/include/common.h b/i3bar/include/common.h index d63780dc..aa706bbe 100644 --- a/i3bar/include/common.h +++ b/i3bar/include/common.h @@ -2,7 +2,7 @@ * vim:ts=4:sw=4:expandtab * * i3bar - an xcb-based status- and ws-bar for i3 - * © 2010-2011 Axel Wagner and contributors (see also: LICENSE) + * © 2010 Axel Wagner and contributors (see also: LICENSE) * */ #pragma once @@ -15,9 +15,7 @@ typedef struct rect_t rect; -struct ev_loop* main_loop; -char *statusline; -char *statusline_buffer; +struct ev_loop *main_loop; struct rect_t { int x; @@ -27,31 +25,48 @@ struct rect_t { }; typedef enum { + /* First value to make it the default. */ ALIGN_LEFT, ALIGN_CENTER, ALIGN_RIGHT } blockalign_t; +/* This data structure describes the way a status block should be rendered. These + * variables are updated each time the statusline is re-rendered. */ +struct status_block_render_desc { + uint32_t width; + uint32_t x_offset; + uint32_t x_append; +}; + /* This data structure represents one JSON dictionary, multiple of these make * up one status line. */ struct status_block { i3String *full_text; + i3String *short_text; char *color; + char *background; + char *border; + + /* min_width can be specified either as a numeric value (in pixels) or as a + * string. For strings, we set min_width to the measured text width of + * min_width_str. */ uint32_t min_width; + char *min_width_str; + blockalign_t align; bool urgent; bool no_separator; + bool pango_markup; /* The amount of pixels necessary to render a separater after the block. */ uint32_t sep_block_width; - /* The amount of pixels necessary to render this block. These variables are - * only temporarily used in refresh_statusline(). */ - uint32_t width; - uint32_t x_offset; - uint32_t x_append; + /* Continuously-updated information on how to render this status block. */ + struct status_block_render_desc full_render; + struct status_block_render_desc short_render; /* Optional */ char *name; @@ -73,3 +88,4 @@ TAILQ_HEAD(statusline_head, status_block) statusline_head; #include "config.h" #include "libi3.h" #include "parse_json_header.h" +#include "draw_util.h"