[Jahshaka-cvs] openlibraries/src/openmedialib/plugins/sdl sdl_plugin.cpp, 1.3, 1.4
Status: Beta
Brought to you by:
jahshaka
From: Charles Y. <lil...@us...> - 2007-02-03 09:07:25
|
Update of /cvsroot/openlibraries/openlibraries/src/openmedialib/plugins/sdl In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv17416 Modified Files: sdl_plugin.cpp Log Message: + Pillar/letter box display options Index: sdl_plugin.cpp =================================================================== RCS file: /cvsroot/openlibraries/openlibraries/src/openmedialib/plugins/sdl/sdl_plugin.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- sdl_plugin.cpp 4 Jan 2007 09:08:02 -0000 1.3 +++ sdl_plugin.cpp 3 Feb 2007 09:07:18 -0000 1.4 @@ -43,6 +43,7 @@ , prop_width_( pcos::key::from_string( "width" ) ) , prop_height_( pcos::key::from_string( "height" ) ) , prop_keydown_( pcos::key::from_string( "keydown" ) ) + , prop_box_( pcos::key::from_string( "box" ) ) { // TODO: Determine capabilities and set flags as appropriate properties( ).append( prop_flags_ = SDL_HWSURFACE | SDL_ASYNCBLIT | SDL_HWACCEL | SDL_RESIZABLE | SDL_DOUBLEBUF ); @@ -51,6 +52,7 @@ properties( ).append( prop_width_ = default_width_ ); properties( ).append( prop_height_ = default_height_ ); properties( ).append( prop_keydown_ = 0 ); + properties( ).append( prop_box_ = opl::wstring( L"fill" ) ); } virtual ~sdl_store( ) @@ -188,13 +190,26 @@ double this_aspect = ( double )prop_width_.value< int >( ) / prop_height_.value< int >( ); double frame_aspect = frame->aspect_ratio( ); - sdl_rect_.w = int( frame_aspect / this_aspect * prop_width_.value< int >( ) ); - sdl_rect_.h = prop_height_.value< int >( ); - if ( sdl_rect_.w > prop_width_.value< int >( ) ) + if ( prop_box_.value< opl::wstring >( ) == L"letter" ) { sdl_rect_.w = prop_width_.value< int >( ); sdl_rect_.h = int( this_aspect / frame_aspect * prop_height_.value< int >( ) ); } + else if ( prop_box_.value< opl::wstring >( ) == L"pillar" ) + { + sdl_rect_.w = int( frame_aspect / this_aspect * prop_width_.value< int >( ) ); + sdl_rect_.h = prop_height_.value< int >( ); + } + else + { + sdl_rect_.w = int( frame_aspect / this_aspect * prop_width_.value< int >( ) ); + sdl_rect_.h = prop_height_.value< int >( ); + if ( sdl_rect_.w > prop_width_.value< int >( ) ) + { + sdl_rect_.w = prop_width_.value< int >( ); + sdl_rect_.h = int( this_aspect / frame_aspect * prop_height_.value< int >( ) ); + } + } sdl_rect_.x = ( prop_width_.value< int >( ) - sdl_rect_.w ) / 2; sdl_rect_.y = ( prop_height_.value< int >( ) - sdl_rect_.h ) / 2; @@ -208,6 +223,7 @@ pcos::property prop_width_; pcos::property prop_height_; pcos::property prop_keydown_; + pcos::property prop_box_; }; bool sdl_store::init_ = false; |