2009-01-29 00:18:34 +08:00
module view ;
import dsfml.system.all ;
import dsfml.window.all ;
import dsfml.graphics.all ;
void main ( )
{
2010-01-14 05:49:59 +08:00
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 ( ) ;
}
2009-01-29 00:18:34 +08:00
}