blob: da470e787ffb421237f7fc61443a862963ac93a9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include "base.h"
void gui_view_draw_fn( void* ptr ) {
GUI_VIEW* view = (GUI_VIEW*)ptr;
I32 x = gui_relx( view );
I32 y = gui_rely( view );
gui_draw_push_clip( x, y, view->w, view->h );
view->children.each( fn( GUI_BASE** childptr ) {
GUI_BASE* child = *childptr;
if( !child->enabled ) return;
if( child->draw_fn ) child->draw_fn( child );
else dlog( "gui_view_draw_fn(): child %p no draw_fn\n", child );
} );
gui_draw_pop_clip();
}
void gui_view_input_fn( void* ptr ) {
GUI_VIEW* view = (GUI_VIEW*)ptr;
if( view->initheld ) {
U8 m1 = gui_mbutton_down( 0 );
if( m1 )
return;
view->initheld = 0;
}
gui_base_input_fn( view );
}
GUI_VIEW* gui_view( I32 x, I32 y, I32 w, I32 h ) {
GUI_VIEW* view = new GUI_VIEW;
view->x = x;
view->y = y;
view->xbound = view->w = w;
view->ybound = view->h = h;
strcpy( view->name, "BASE_VIEW" );
view->draw_fn = gui_view_draw_fn;
view->input_fn = gui_view_input_fn;
view->initheld = 1;
GUI_VIEW* curview = gui_get_view();
if( !curview ) {
view->parent = gui_get_window();
gui_get_window()->children.push( view );
}
else {
view->parent = curview;
curview->children.push( view );
}
gui_set_view( view );
return view;
}
|