#define A5SES_IMAGE_ADDON #include using namespace a5; int main(int argc, const char *argv[]) { const char *filename; bool redraw = true; double zoom = 1; if (argc > 1) filename = argv[1]; else filename = "data/mysha.pcx"; Keyboard keyboard; Display display(640, 480, Display::Windowed); display.SetTitle(filename); Bitmap membitmap(filename); Bitmap bitmap(membitmap); Timer timer(30.f); Event_Queue queue; queue.Register(keyboard); queue.Register(display); queue.Register(timer); timer.Start(); while (true) { Event_Reader e(queue); e.WaitNext(); switch (e.SubType()) { case Display::Event::Close: return 0; case Keyboard::Event::Down: case Keyboard::Event::Repeat: switch (e.Keyboard().keycode) { case Keyboard::Key::Escape: return 0; default: switch (e.Keyboard().unichar) { case '1': zoom = 1.0; break; case '+': zoom *= 1.1; break; case '-': zoom /= 1.1; break; case 'f': zoom = display.Width() / bitmap.Width(); break; } } break; case Timer::Event::Type: if (e.Timer().source == &timer) redraw = true; break; } if (redraw) { display.Clear(); if (zoom == 1.0) display.Blit(bitmap, 0, 0); else display.BlitScaled(bitmap, Rectangle(0, 0, bitmap.Width() * zoom, bitmap.Height() * zoom)); display.Flip(); redraw = false; } } }