#define A5SES_IMAGE_ADDON #include using namespace a5; int main(void) { Display display(300, 200, Display::NoFrame); Bitmap bitmap("data/fakeamp.bmp"); Event_Queue queue; Timer timer(30.f); Keyboard keyboard; Mouse mouse; bool down = false; int down_x = 0, down_y = 0; bool frame = false; queue.Register(mouse); queue.Register(keyboard); queue.Register(display); queue.Register(timer); timer.Start(); while (true) { Event_Reader e(queue); e.WaitNext(); switch (e.SubType()) { case Mouse::Event::Down: if (e.Mouse().button == 1 && e.Mouse().x) { down = true; down_x = e.Mouse().x; down_y = e.Mouse().y; } else if (e.Mouse().button == 2) { frame = !frame; al_toggle_display_flag(display, ALLEGRO_NOFRAME, frame); } break; case Mouse::Event::Up: if (e.Mouse().button == 1) down = false; break; case Mouse::Event::Move: if (down) { int cx, cy; if (al_get_mouse_cursor_position(&cx, &cy)) display.Move(cx - down_x, cy - down_y); } break; case Display::Event::Close: return 0; case Keyboard::Event::Down: if (e.Keyboard().keycode == Keyboard::Key::Escape) return 0; break; case Timer::Event::Type: display.Blit(bitmap, 0, 0); display.Flip(); break; } } }