| 228 | } |
| 229 | |
| 230 | int app_main(int argc, char* argv[]) |
| 231 | { |
| 232 | SystemRef system = System::make(); |
| 233 | system->setAppMode(AppMode::GUI); |
| 234 | |
| 235 | FontRef font = FontMgr::Make()->defaultFont(); |
| 236 | WindowRef window = create_window(); |
| 237 | Hit hit = Hit::None; // Current area which the mouse cursor hits |
| 238 | window->activate(); |
| 239 | |
| 240 | system->handleWindowResize = [&](Window* w) { draw_window(w, font, hit); }; |
| 241 | system->finishLaunching(); |
| 242 | system->activateApp(); |
| 243 | |
| 244 | EventQueue* queue = system->eventQueue(); |
| 245 | bool running = true; |
| 246 | bool redraw = true; |
| 247 | while (running) { |
| 248 | if (redraw) { |
| 249 | redraw = false; |
| 250 | draw_window(window.get(), font, hit); |
| 251 | } |
| 252 | |
| 253 | Event ev; |
| 254 | queue->getEvent(ev); |
| 255 | |
| 256 | switch (ev.type()) { |
| 257 | case Event::CloseApp: |
| 258 | case Event::CloseWindow: running = false; break; |
| 259 | |
| 260 | case Event::KeyDown: |
| 261 | switch (ev.scancode()) { |
| 262 | case kKeyEsc: running = false; break; |
| 263 | case kKeyF: |
| 264 | case kKeyF11: window->setFullscreen(!window->isFullscreen()); break; |
| 265 | default: break; |
| 266 | } |
| 267 | break; |
| 268 | |
| 269 | case Event::MouseEnter: |
| 270 | case Event::MouseMove: |
| 271 | redraw = update_hit(window.get(), ev, hit); |
| 272 | handle_mouse_move(window.get(), hit); |
| 273 | break; |
| 274 | |
| 275 | case Event::MouseDown: |
| 276 | redraw = update_hit(window.get(), ev, hit); |
| 277 | if (!handle_mouse_down(window.get(), ev, hit)) |
| 278 | running = false; |
| 279 | break; |
| 280 | |
| 281 | case Event::MouseLeave: redraw = update_hit(window.get(), ev, hit); break; |
| 282 | |
| 283 | default: break; |
| 284 | } |
| 285 | } |
| 286 | |
| 287 | return 0; |
nothing calls this directly
no test coverage detected