@@ -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,18 +113,27 @@ 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 };
116
+ ui_window_set_resize_callback (window, render, [](UIWindow* window, void * user) {
117
+ auto * render = (Render*)user;
118
+ ui_window_gl_make_current_context (window);
119
+
120
+ i32 width = 0 ;
121
+ i32 height = 1 ;
122
+ ui_window_size (window, &width, &height);
123
+ render_set_resolution (render, vec2f (width, height) * 2.0 );
124
+
125
+ render_frame (window, render);
126
+
127
+ render_flush (render);
128
+ ui_window_gl_flush (window);
129
+ });
130
+
113
131
while (!ui_window_should_close (window)) {
114
132
ui_application_poll_events (app);
115
133
ui_window_gl_make_current_context (window);
116
134
117
135
i32 width = 0 ;
118
- i32 height = 0 ;
136
+ i32 height = 1 ;
119
137
ui_window_size (window, &width, &height);
120
138
render_set_resolution (render, vec2f (width, height) * 2.0 );
121
139
@@ -124,22 +142,38 @@ ErrorOr<int> Main::main(int argc, c_string *argv)
124
142
ui_window_mouse_pos (window, &mouse_x, &mouse_y);
125
143
render_set_mouse_position (render, vec2f (mouse_x, mouse_y));
126
144
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);
145
+ render_frame (window, render);
138
146
render_flush (render);
139
147
140
-
141
148
ui_window_gl_flush (window);
142
149
}
143
150
144
151
return 0 ;
145
152
}
153
+
154
+ static void render_frame (UIWindow* window, Render* render)
155
+ {
156
+ i32 height = 1 ;
157
+ ui_window_size (window, 0 , &height);
158
+ f32 titlebar_height = 28 .0f / height;
159
+
160
+ render_transact (render, 3 );
161
+ render_vertex (render, { 0.0 , 0.0 }, cyan, zero);
162
+ render_vertex (render, { 1.0 , 0.0 }, yellow, zero);
163
+ render_vertex (render, { 1.0 , 1.0 }, magenta, zero);
164
+ render_transact (render, 3 );
165
+ render_vertex (render, { 0.0 , 0.0 }, cyan, zero);
166
+ render_vertex (render, { 0.0 , 1.0 }, white, zero);
167
+ render_vertex (render, { 1.0 , 1.0 }, magenta, zero);
168
+
169
+ render_cursor (render, red);
170
+
171
+ render_transact (render, 3 );
172
+ render_vertex (render, { 0.0 , 0.0 }, cyan / 2 , zero);
173
+ render_vertex (render, { 1.0 , 0.0 }, cyan / 2 , zero);
174
+ render_vertex (render, { 1.0 , titlebar_height }, cyan / 2 , zero);
175
+ render_transact (render, 3 );
176
+ render_vertex (render, { 0.0 , 0.0 }, cyan / 2 , zero);
177
+ render_vertex (render, { 0.0 , titlebar_height }, cyan / 2 , zero);
178
+ render_vertex (render, { 1.0 , titlebar_height }, cyan / 2 , zero);
179
+ }
0 commit comments