Rev 6612 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6470 | siemargl | 1 | #ifndef KOLIBRI_SCROLLBAR_H |
2 | #define KOLIBRI_SCROLLBAR_H |
||
3 | |||
6589 | siemargl | 4 | typedef struct __attribute__ ((__packed__)) { |
6470 | siemargl | 5 | // uint16_t xsize; |
6 | // uint16_t xpos; |
||
7 | // uint16_t ysize; |
||
8581 | rgimad | 8 | // uint16_t ypos; |
6470 | siemargl | 9 | uint32_t x_w; |
10 | uint32_t y_h; |
||
11 | uint32_t btn_height; |
||
6589 | siemargl | 12 | uint32_t type; // type 1 - stylish frame, type 2 - ?, type 0 - ? |
6470 | siemargl | 13 | uint32_t max_area; |
14 | uint32_t cur_area; |
||
15 | uint32_t position; |
||
16 | uint32_t back_color; |
||
17 | uint32_t front_color; |
||
18 | uint32_t line_color; |
||
19 | uint32_t redraw; |
||
20 | uint16_t delta; |
||
21 | uint16_t delta2; |
||
22 | uint16_t r_size_x; |
||
23 | uint16_t r_start_x; |
||
24 | uint16_t r_size_y; |
||
25 | uint16_t r_start_y; |
||
26 | uint32_t m_pos; |
||
27 | uint32_t m_pos2; |
||
28 | uint32_t m_keys; |
||
29 | uint32_t run_size; |
||
30 | uint32_t position2; |
||
31 | uint32_t work_size; |
||
6612 | siemargl | 32 | uint32_t all_redraw; // need to be set =1 before each redraw |
6470 | siemargl | 33 | uint32_t ar_offset; |
34 | } scrollbar; |
||
35 | |||
8581 | rgimad | 36 | static inline scrollbar* kolibri_scrollbar(scrollbar* sb, uint32_t x_w, uint32_t y_h, uint32_t btn_height, uint32_t max_area, |
6470 | siemargl | 37 | uint32_t cur_area, uint32_t position, uint32_t back_color, uint32_t front_color, uint32_t line_color) |
8581 | rgimad | 38 | { |
39 | memset(sb, 0, sizeof(scrollbar)); |
||
6482 | siemargl | 40 | |
8581 | rgimad | 41 | sb->x_w = x_w; |
6470 | siemargl | 42 | sb->y_h = y_h; |
43 | sb->btn_height = btn_height; |
||
44 | sb->type = 1; |
||
45 | sb->max_area = max_area; |
||
46 | sb->cur_area = cur_area; |
||
47 | sb->position = position; |
||
6482 | siemargl | 48 | sb->line_color = line_color; |
49 | sb->back_color = back_color; // 0xeeeeee |
||
8581 | rgimad | 50 | sb->front_color = front_color; // 0xbbddff |
6470 | siemargl | 51 | sb->ar_offset = max_area / 30; // temporary step 3% |
52 | sb->all_redraw = 1; |
||
53 | return sb; |
||
54 | }; |
||
8581 | rgimad | 55 | |
56 | static inline scrollbar* kolibri_new_scrollbar(uint32_t x_w, uint32_t y_h, uint32_t btn_height, uint32_t max_area, |
||
6482 | siemargl | 57 | uint32_t cur_area, uint32_t position, uint32_t back_color, uint32_t front_color, uint32_t line_color) |
58 | { |
||
59 | scrollbar *sb = (scrollbar *)malloc(sizeof(scrollbar)); |
||
8581 | rgimad | 60 | |
6482 | siemargl | 61 | return kolibri_scrollbar(sb, x_w, y_h, btn_height, max_area, cur_area, position, back_color, front_color, line_color); |
8581 | rgimad | 62 | }; |
63 | |||
64 | static inline scrollbar* kolibri_scrollbar_def(scrollbar* sb, uint32_t x_w, uint32_t y_h, uint32_t max_area, uint32_t cur_area, uint32_t position) |
||
65 | { |
||
6482 | siemargl | 66 | return kolibri_scrollbar(sb, x_w, y_h, 15, max_area, cur_area, position, kolibri_color_table.color_work_area, kolibri_color_table.color_work_button, kolibri_color_table.color_work_button_text); |
8581 | rgimad | 67 | }; |
68 | |||
69 | static inline scrollbar* kolibri_new_scrollbar_def(uint32_t x_w, uint32_t y_h, uint32_t max_area, uint32_t cur_area, uint32_t position) |
||
70 | { |
||
6482 | siemargl | 71 | return kolibri_new_scrollbar(x_w, y_h, 15, max_area, cur_area, position, kolibri_color_table.color_work_area, kolibri_color_table.color_work_button, kolibri_color_table.color_work_button_text); |
8581 | rgimad | 72 | }; |
73 | |||
74 | static inline void gui_add_scrollbar_h(kolibri_window *wnd, scrollbar* sb) |
||
75 | { |
||
6482 | siemargl | 76 | kolibri_window_add_element(wnd, KOLIBRI_SCROLL_BAR_H, sb); |
8581 | rgimad | 77 | } |
6470 | siemargl | 78 | |
8581 | rgimad | 79 | static inline void gui_add_scrollbar_v(kolibri_window *wnd, scrollbar* sb) |
80 | { |
||
6482 | siemargl | 81 | kolibri_window_add_element(wnd, KOLIBRI_SCROLL_BAR_V, sb); |
8581 | rgimad | 82 | } |
83 | |||
6470 | siemargl | 84 | extern void (*scrollbar_h_draw)(scrollbar*) __attribute__((__stdcall__)); |
85 | extern void (*scrollbar_h_mouse)(scrollbar*) __attribute__((__stdcall__)); |
||
86 | extern void (*scrollbar_v_draw)(scrollbar*) __attribute__((__stdcall__)); |
||
87 | extern void (*scrollbar_v_mouse)(scrollbar*) __attribute__((__stdcall__)); |
||
88 | |||
89 | #endif /* KOLIBRI_SCROLLBAR_H */ |