@@ -23,6 +23,15 @@ void swap(T* a, T* b)
23
23
*b = c;
24
24
}
25
25
26
+ static Vec2f zero = { 0.0 , 0.0 };
27
+ static Vec4f cyan = { .r = 0 .0f , .g = 1 .0f , .b = 1 .0f , .a = 1 .0f };
28
+ static Vec4f magenta = { .r = 1 .0f , .g = 0 .0f , .b = 1 .0f , .a = 1 .0f };
29
+ static Vec4f yellow = { .r = 1 .0f , .g = 1 .0f , .b = 0 .0f , .a = 1 .0f };
30
+ static Vec4f white = { .r = 1 .0f , .g = 1 .0f , .b = 1 .0f , .a = 1 .0f };
31
+ static Vec4f red = { .r = 1 .0f , .g = 0 .0f , .b = 0 .0f , .a = 1 .0f };
32
+
33
+ static void render_frame (UIWindow* window, Render* render);
34
+
26
35
ErrorOr<int > Main::main (int argc, c_string *argv)
27
36
{
28
37
auto bundle = FS::Bundle ()
@@ -104,42 +113,68 @@ ErrorOr<int> Main::main(int argc, c_string *argv)
104
113
render_destroy (render);
105
114
};
106
115
107
- Vec2f zero = { 0.0 , 0.0 };
108
- Vec4f cyan = { .r = 0 .0f , .g = 1 .0f , .b = 1 .0f , .a = 1 .0f };
109
- Vec4f magenta = { .r = 1 .0f , .g = 0 .0f , .b = 1 .0f , .a = 1 .0f };
110
- Vec4f yellow = { .r = 1 .0f , .g = 1 .0f , .b = 0 .0f , .a = 1 .0f };
111
- Vec4f white = { .r = 1 .0f , .g = 1 .0f , .b = 1 .0f , .a = 1 .0f };
112
- Vec4f red = { .r = 1 .0f , .g = 0 .0f , .b = 0 .0f , .a = 1 .0f };
113
- while (!ui_window_should_close (window)) {
114
- ui_application_poll_events (app);
116
+ ui_window_set_resize_callback (window, render, [](UIWindow* window, void * user) {
117
+ auto * render = (Render*)user;
115
118
ui_window_gl_make_current_context (window);
116
119
117
120
i32 width = 0 ;
118
- i32 height = 0 ;
121
+ i32 height = 1 ;
119
122
ui_window_size (window, &width, &height);
120
123
render_set_resolution (render, vec2f (width, height) * 2.0 );
121
124
125
+ render_frame (window, render);
126
+
127
+ render_flush (render);
128
+ ui_window_gl_flush (window);
129
+ });
130
+
131
+ {
132
+ i32 width = 0 ;
133
+ i32 height = 1 ;
134
+ ui_window_size (window, &width, &height);
135
+ render_set_resolution (render, vec2f (width, height) * 2.0 );
136
+ }
137
+
138
+ while (!ui_window_should_close (window)) {
139
+ ui_application_poll_events (app);
140
+ ui_window_gl_make_current_context (window);
141
+
122
142
i32 mouse_x = 0 ;
123
143
i32 mouse_y = 0 ;
124
144
ui_window_mouse_pos (window, &mouse_x, &mouse_y);
125
145
render_set_mouse_position (render, vec2f (mouse_x, mouse_y));
126
146
127
-
128
- render_transact (render, 3 );
129
- render_vertex (render, { 0.0 , 0.0 }, cyan, zero);
130
- render_vertex (render, { 1.0 , 0.0 }, yellow, zero);
131
- render_vertex (render, { 1.0 , 1.0 }, magenta, zero);
132
- render_transact (render, 3 );
133
- render_vertex (render, { 0.0 , 0.0 }, cyan, zero);
134
- render_vertex (render, { 0.0 , 1.0 }, white, zero);
135
- render_vertex (render, { 1.0 , 1.0 }, magenta, zero);
136
-
137
- render_cursor (render, red);
147
+ render_frame (window, render);
138
148
render_flush (render);
139
-
140
-
141
149
ui_window_gl_flush (window);
142
150
}
143
151
144
152
return 0 ;
145
153
}
154
+
155
+ static void render_frame (UIWindow* window, Render* render)
156
+ {
157
+ i32 height = 1 ;
158
+ ui_window_size (window, 0 , &height);
159
+ f32 titlebar_height = 28 .0f / height;
160
+
161
+ render_transact (render, 3 );
162
+ render_vertex (render, { 0.0 , 0.0 }, cyan, zero);
163
+ render_vertex (render, { 1.0 , 0.0 }, yellow, zero);
164
+ render_vertex (render, { 1.0 , 1.0 }, magenta, zero);
165
+ render_transact (render, 3 );
166
+ render_vertex (render, { 0.0 , 0.0 }, cyan, zero);
167
+ render_vertex (render, { 0.0 , 1.0 }, white, zero);
168
+ render_vertex (render, { 1.0 , 1.0 }, magenta, zero);
169
+
170
+ render_cursor (render, red);
171
+
172
+ render_transact (render, 3 );
173
+ render_vertex (render, { 0.0 , 0.0 }, cyan / 2 , zero);
174
+ render_vertex (render, { 1.0 , 0.0 }, cyan / 2 , zero);
175
+ render_vertex (render, { 1.0 , titlebar_height }, cyan / 2 , zero);
176
+ render_transact (render, 3 );
177
+ render_vertex (render, { 0.0 , 0.0 }, cyan / 2 , zero);
178
+ render_vertex (render, { 0.0 , titlebar_height }, cyan / 2 , zero);
179
+ render_vertex (render, { 1.0 , titlebar_height }, cyan / 2 , zero);
180
+ }
0 commit comments