1 #pragma once 2 3 #include <pixman.h> 4 5 #include <fcft/fcft.h> 6 7 #include "shm.h" 8 #include "match.h" 9 #include "tllist.h" 10 11 struct rgba {double r; double g; double b; double a;}; 12 struct pt_or_px {int px; float pt;}; 13 14 struct render_options { 15 unsigned lines; 16 unsigned chars; 17 unsigned border_size; 18 unsigned border_radius; 19 struct { 20 unsigned x; 21 unsigned y; 22 unsigned inner; 23 } pad; 24 25 struct rgba background_color; 26 struct rgba border_color; 27 struct rgba text_color; 28 struct rgba match_color; 29 struct rgba selection_color; 30 struct rgba selection_text_color; 31 32 struct pt_or_px line_height; 33 struct pt_or_px letter_spacing; 34 35 /* Filled in by render, for now */ 36 pixman_color_t pix_background_color; 37 pixman_color_t pix_border_color; 38 pixman_color_t pix_text_color; 39 pixman_color_t pix_match_color; 40 pixman_color_t pix_selection_color; 41 pixman_color_t pix_selection_text_color; 42 }; 43 44 struct render; 45 struct render *render_init(const struct render_options *options); 46 void render_destroy(struct render *render); 47 48 void render_set_subpixel(struct render *render, enum fcft_subpixel subpixel); 49 bool render_set_font(struct render *render, struct fcft_font *font, 50 int scale, float dpi, bool size_font_by_dpi, 51 int *new_width, int *new_height); 52 53 void render_background(const struct render *render, struct buffer *buf); 54 55 void render_prompt( 56 const struct render *render, struct buffer *buf, 57 const struct prompt *prompt); 58 59 void render_match_list( 60 const struct render *render, struct buffer *buf, 61 const struct prompt *prompt, const struct matches *matches); 62