module view; import dsfml.system.all; import dsfml.window.all; import dsfml.graphics.all; void main() { RenderWindow window = new RenderWindow(VideoMode(800, 600), "View sample"); window.setFramerateLimit(100); Input input = window.getInput(); Vector2f top; Rect!(float) bound; Shape s; bool mousePressed; Sprite background = new Sprite(new Image("Data/background.jpg")); Font f = new Font("Data/cheeseburger.ttf"); Text str = new Text("Create a selection of the background with your mouse.\nPress Enter to zoom to this selection.\nPress Escape to return to the default view."c, f); while (window.isOpened()) { Event evt; while (window.getEvent(evt)) { if ( evt.Type == EventType.MouseButtonPressed && evt.MouseButton.Button == MouseButtons.Left) { top = window.convertCoords(input.getMouseX(), input.getMouseY()); mousePressed = true; } else if ( evt.Type == EventType.MouseButtonReleased && evt.MouseButton.Button == MouseButtons.Left) { mousePressed = false; } else if ( evt.Type == EventType.MouseMoved && mousePressed) { Vector2f bottom = window.convertCoords(input.getMouseX(), input.getMouseY()); bound = FloatRect(top.x, top.y, bottom.x, bottom.y); s = Shape.rectangle(top.x, top.y, bottom.x, bottom.y, Color(0, 0, 0, 0), 1, Color.BLACK); } else if ( evt.Type == EventType.KeyPressed && evt.Key.Code == KeyCode.Return) { if (bound != FloatRect()) window.setView(new View(bound)); s = null; } else if ( evt.Type == EventType.KeyPressed && evt.Key.Code == KeyCode.Escape) { window.setView(window.getDefaultView()); } else if ( evt.Type == EventType.Closed) window.close(); } window.draw(background); window.draw(str); if (s !is null) window.draw(s); window.display(); } }