Subversion Repositories Kolibri OS

Rev

Rev 6482 | Rev 6612 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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