Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

sdl::overlay(3pm) [debian man page]

pods::SDL::Overlay(3pm) 				User Contributed Perl Documentation				   pods::SDL::Overlay(3pm)

NAME
SDL::Overlay - YUV Video overlay CATEGORY Core, Video, Structure SYNOPSIS
First import the following modules to get access to constants and functions needed for overlay. use SDL; use SDL::Video; use SDL::Overlay; Init the video subsystem. SDL::Init(SDL_INIT_VIDEO); Create a display to use. my $display = SDL::Video::set_video_mode(640, 480, 32, SDL_SWSURFACE); Create and attach the display to a new overlay my $overlay = SDL::Overlay->new( 100, 100, SDL_YV12_OVERLAY, $display); DESCRIPTION
A "SDL_Overlay" allows for video rendering on an "SDL_Surface" which is a display. The term 'overlay' is a misnomer since, unless the overlay is created in hardware, the contents for the display surface underneath the area where the overlay is shown will be overwritten when the overlay is displayed. METHODS
new ( $width, $height, $YUV_flag, $display) The constructor creates a SDL::Overlay of the specified width, height and format (see "YUV_Flags" list below of available formats), for the provided display. Note the 'display' argument needs to actually be the surface created by "SDL::Video::SetVideoMode" otherwise this function will segfault. my $overlay = SDL::Overlay->new( $width, $height, $YUV_flag, $display ); YUV_Flags More information on YUV formats can be found at <http://www.fourcc.org/indexyuv.htm> . o SDL_YV12_OVERLAY 0x32315659 /* Planar mode: Y + V + U */ o SDL_IYUV_OVERLAY 0x56555949 /* Planar mode: Y + U + V */ o SDL_YUY2_OVERLAY 0x32595559 /* Packed mode: Y0+U0+Y1+V0 */ o SDL_UYVY_OVERLAY 0x59565955 /* Packed mode: U0+Y0+V0+Y1 */ o SDL_YVYU_OVERLAY 0x55595659 /* Packed mode: Y0+V0+Y1+U0 */ format Overlay format (see YUV_Flags) w, h Width and height of overlay planes Number of planes in the overlay. Usually either 1 or 3 pitches An array of pitches, one for each plane. Pitch is the length of a row in bytes. pixels As of release 2.3 direct right to overlay is disable. An array of pointers to the data of each plane. The overlay should be locked before these pointers are used. see SDL::Video::lock_YUV_overlay, SDL::Video::unload_YUV_overlay hw_overlay This will be set to 1 if the overlay is hardware accelerated. AUTHORS
See "AUTHORS" in SDL. perl v5.14.2 2012-05-28 pods::SDL::Overlay(3pm)

Check Out this Related Man Page

pods::SDL::Cookbook::PDL(3pm)				User Contributed Perl Documentation			     pods::SDL::Cookbook::PDL(3pm)

NAME
SDL::CookBook::PDL -- CookBook for SDL + PDL PDL provides great number crunching capabilities to Perl and SDL provides game-developer quality real-time bitmapping and sound. You can use PDL and SDL ''together'' to create real-time, responsive animations and simulations. In this section we will go through the pleasures and pitfalls of working with both powerhouse libraries. CATEGORY Cookbook Creating a SDL Surface piddle PDL's core type is a piddle. Once a piddle is provided to PDL it can go do a numerous amounts of things. Please see the example in 'examples/cookbook/pdl.pl' that came with this module. Creating a simple piddle First lets get the right modules. use PDL; use SDL::Rect; use SDL::Video; use SDL::Surface; use SDL::PixelFormat; Suppose you want a surface of size (200,400) and 32 bit (RGBA). my ( $bytes_per_pixel, $width, $height ) = ( 4, 200, 400 ); Define the $width, $height and $bytes_per_pixel. Your $bytes_per_pixel is the number of bits (in this case 32) divided by 8 bits per byte. Therefore for our 32 bpp we have 4 Bpp; my $piddle = zeros( byte, $bytes_per_pixel, $width, $height ); Create a normal $piddle with zeros, byte format and the Bpp x width x height dimensions. my $pointer = $piddle->get_dataref(); Here is where we get the actual data the piddle is pointing to. We will have SDL create a new surface from this function. my $surface = SDL::Surface->new_from( $pointer, $width, $height, 32, $width * $bytes_per_pixel ); Using the same dimensions we create the surface using new_form. The width * Bpp is the scanline (pitch) of the surface in bytes. warn "Made surface of $width, $height and ". $surface->format->BytesPerPixel; return ( $piddle, $surface ); Finally make sure that the surface actually has the correct dimensions we gave. NOTE: $surface->format->BytesPerPixel must return 1,2,3,4. !! Now you can blit and use the surface as needed; and do PDL operations as required. Operating on the Surface safely To make sure SDL is in sync with the data. You must call SDL::Video::lock before doing PDL operations on the piddle. SDL::Video::lock_surface($surface); $piddle->mslice( 'X', [ rand(400), rand(400), 1 ], [ rand(200), rand(200), 1 ] ) .= pdl( rand(225), rand(225), rand(255), 255 ); After that you can unlock the surface to blit. SDL::Video::unlock_surface($surface); Error due to BPP at blitting When blitting the new surface check for the return value to see if there has been a problem. my $b = SDL::Video::blit_surface( $surface, SDL::Rect->new( 0, 0, $surface->w, $surface->h ), $app, SDL::Rect->new( ( $app->w - $surface->w ) / 2, ( $app->h - $surface->h ) / 2, $app->w, $app->h ) ); die "Could not blit: " . SDL::get_error() if ( $b == -1 ); If the error message is 'Blit combination not supported' that means that the BPP is incorrect or inconsistent with the dimensions. After that a simple update_rect will so your new surface on the screen. AUTHORS
See "AUTHORS" in SDL. perl v5.14.2 2012-05-28 pods::SDL::Cookbook::PDL(3pm)
Man Page