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.framerateLimit = 100; Input input = window.input; Vector2f top; FloatRect 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.mouseX, input.mouseY); 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.mouseX, input.mouseY); bound = FloatRect(top.x, top.y, bottom.x-top.x, bottom.y-top.y); s = Shape.rectangle(bound.left, bound.top, bound.width, bound.height, Color(0, 0, 0, 0), 1, Color.BLACK); } else if ( evt.Type == EventType.KeyPressed && evt.Key.Code == KeyCode.Return) { if (bound != FloatRect()) window.view = new View(bound); s = null; } else if ( evt.Type == EventType.KeyPressed && evt.Key.Code == KeyCode.Escape) { window.view = window.defaultView; } else if ( evt.Type == EventType.Closed) window.close(); } window.draw(background); window.draw(str); if (s !is null) window.draw(s); window.display(); } }