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 | }>>><> |