Subversion Repositories Kolibri OS

Rev

Rev 9620 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8818 turbocat 1
// BOXLIB EXAMPLE (scrollbar, progressbar, editbox and checkbox)
2
// Writed by maxcodehack and superturbocat2001
3
 
9766 turbocat 4
#include 
5
#include 
8818 turbocat 6
#include 
7
#include 
9766 turbocat 8
#include 
8818 turbocat 9
 
10
#define WIN_W 640
11
#define WIN_H 563
12
 
13
#define ED_BUFF_LEN 50
14
#define TEXT_SIZE 0x10000000
15
#define SCROLL_BUTTON_SIZE 15
16
#define SCROLL_MAX_LEN 215
17
#define BLACK 0x000000
18
#define WHITE 0xFFFFFF
9766 turbocat 19
#define BLUE 0x0000FF
20
#define X_W(X, W) ((X << 16) + W)
8818 turbocat 21
#define Y_H X_W
22
 
23
uint32_t wheels;
24
char* title = "Boxlib example";
25
char ed_buff[ED_BUFF_LEN];
26
 
9766 turbocat 27
scrollbar scroll = { 15, WIN_W - 26, WIN_H - 29, 0, 0, 2, 215, SCROLL_BUTTON_SIZE, 0, 0x707070, 0xD2CED0, 0x555555 };
28
progressbar pg = { 0, 10, 10, 270, 35, 1, 0, 200, 0xB4B4B4, 0x2728FF, 0xA9A9A9 };
29
edit_box ed = { WIN_W - 140, 10, 60, 0xFFFFFF, 0x6a9480, 0, 0x6a9480, BLACK | TEXT_SIZE, ED_BUFF_LEN, ed_buff, NULL, ed_focus };
30
check_box output_off = { X_W(10, 15), Y_H(120, 15), 10, WHITE, BLUE, BLACK | TEXT_SIZE, "Disable duplicate output", 0 };
31
 
32
void draw_window()
33
{
34
    _ksys_start_draw();
35
    _ksys_create_window(215, 100, WIN_W, WIN_H, title, 0x858585, 0x34);
36
    edit_box_draw(&ed);
37
    check_box_draw2(&output_off);
38
    if (!output_off.flags) {
39
        _ksys_draw_text(ed_buff, 10, 90, strlen(ed_buff), BLACK | TEXT_SIZE);
40
    }
41
    scrollbar_v_draw(&scroll);
8818 turbocat 42
    progressbar_draw(&pg);
9766 turbocat 43
    _ksys_end_draw();
8818 turbocat 44
}
45
 
46
int main()
47
{
9766 turbocat 48
    init_checkbox2(&output_off);
49
    _ksys_set_event_mask(KSYS_EVM_REDRAW + KSYS_EVM_KEY + KSYS_EVM_BUTTON + KSYS_EVM_MOUSE + KSYS_EVM_MOUSE_FILTER);
50
    while (1) {
51
        switch (_ksys_get_event()) {
52
        case KSYS_EVENT_BUTTON:
53
            if (_ksys_get_button() == 1)
54
                return 0;
55
            break;
56
 
57
        case KSYS_EVENT_KEY:
58
            edit_box_key_safe(&ed, _ksys_get_key());
8818 turbocat 59
            draw_window();
9766 turbocat 60
            break;
61
 
62
        case KSYS_EVENT_REDRAW:
63
            draw_window();
64
            break;
65
 
66
        case KSYS_EVENT_MOUSE:
67
            edit_box_mouse(&ed);
68
            scrollbar_v_mouse(&scroll);
69
            pg.value = scroll.position;
70
            progressbar_draw(&pg);
71
            check_box_mouse2(&output_off);
72
            unsigned int scroll_strong = 10;
8818 turbocat 73
            wheels = _ksys_get_mouse_wheels();
9766 turbocat 74
            if (wheels & 0xFFFF) {
75
                if ((short)wheels > 0) {
76
                    scroll.position += scroll_strong;
77
                    if (scroll.position > scroll.max_area - scroll.cur_area) {
78
                        scroll.position = scroll.max_area - scroll.cur_area;
79
                    }
80
                } else if ((short)wheels < 0 && scroll.position > 0) {
81
                    scroll.position -= scroll_strong;
82
                    if ((int)scroll.position < 0) {
83
                        scroll.position = 0;
84
                    }
85
                }
86
                scrollbar_v_draw(&scroll);
8818 turbocat 87
            }
9766 turbocat 88
            break;
89
        }
90
    }
91
    return 0;
9620 turbocat 92
}