1 /* -*- c-basic-offset:2; tab-width:2; indent-tabs-mode:nil -*- */ 2 3 #ifndef __UI_SCROLLBAR_H__ 4 #define __UI_SCROLLBAR_H__ 5 6 #include <pobl/bl_types.h> /* u_int */ 7 #include <vt_term.h> 8 9 #include "ui_window.h" 10 #include "ui_sb_view.h" 11 #include "ui_sb_mode.h" 12 #include "ui_color_manager.h" 13 #include "ui_picture.h" 14 15 typedef struct ui_scrollbar_event_listener { 16 void *self; 17 void (*screen_scroll_to)(void *, int); 18 void (*screen_scroll_upward)(void *, u_int); 19 void (*screen_scroll_downward)(void *, u_int); 20 int (*screen_is_static)(void *); 21 22 } ui_scrollbar_event_listener_t; 23 24 typedef struct ui_scrollbar { 25 ui_window_t window; 26 27 char *view_name; 28 ui_sb_view_t *view; 29 30 char *fg_color; 31 char *bg_color; 32 ui_color_t fg_xcolor; 33 ui_color_t bg_xcolor; 34 35 ui_scrollbar_event_listener_t *sb_listener; 36 37 u_int bar_height; /* Scrollbar height */ 38 u_int top_margin; /* Button area */ 39 u_int bottom_margin; /* Button area */ 40 u_int line_height; 41 u_int num_scr_lines; 42 u_int num_log_lines; 43 u_int num_filled_log_lines; 44 int bar_top_y; /* Scrollbar position without button area */ 45 int y_on_bar; /* Used in button_motion event handler */ 46 int current_row; 47 int redraw_y; 48 u_int redraw_height; 49 50 int up_button_y; 51 u_int up_button_height; 52 int down_button_y; 53 u_int down_button_height; 54 int8_t is_pressing_up_button; 55 int8_t is_pressing_down_button; 56 57 int8_t is_motion; 58 59 } ui_scrollbar_t; 60 61 int ui_scrollbar_init(ui_scrollbar_t *sb, ui_scrollbar_event_listener_t *sb_listener, 62 char *view_name, char *fg_color, char *bg_color, u_int height, 63 u_int line_height, u_int num_log_lines, u_int num_filled_log_lines, 64 int use_transbg, ui_picture_modifier_t *pic_mod); 65 66 void ui_scrollbar_final(ui_scrollbar_t *sb); 67 68 void ui_scrollbar_set_num_log_lines(ui_scrollbar_t *sb, u_int num_log_lines); 69 70 void ui_scrollbar_set_num_filled_log_lines(ui_scrollbar_t *sb, u_int num_filled_log_lines); 71 72 int ui_scrollbar_line_is_added(ui_scrollbar_t *sb); 73 74 void ui_scrollbar_reset(ui_scrollbar_t *sb); 75 76 int ui_scrollbar_move_upward(ui_scrollbar_t *sb, u_int size); 77 78 int ui_scrollbar_move_downward(ui_scrollbar_t *sb, u_int size); 79 80 int ui_scrollbar_move(ui_scrollbar_t *sb, int row); 81 82 int ui_scrollbar_set_line_height(ui_scrollbar_t *sb, u_int line_height); 83 84 int ui_scrollbar_set_fg_color(ui_scrollbar_t *sb, char *fg_color); 85 86 int ui_scrollbar_set_bg_color(ui_scrollbar_t *sb, char *bg_color); 87 88 int ui_scrollbar_change_view(ui_scrollbar_t *sb, char *name); 89 90 int ui_scrollbar_set_transparent(ui_scrollbar_t *sb, ui_picture_modifier_t *pic_mod, int force); 91 92 int ui_scrollbar_unset_transparent(ui_scrollbar_t *sb); 93 94 #endif 95