Provided by: libsdl-perl_2.540-5_amd64 bug

NAME

       SDL::GFX::Rotozoom - rotation and zooming functions for surfaces

CATEGORY

       GFX

CONSTANTS

       The constants are exported by default. You can avoid this by doing:

        use SDL::GFX::Rotozoom ();

       and access them directly:

        SDL::GFX::Rotozoom::SMOOTHING_OFF;

       or by choosing the export tags below:

       Export tag: ':smoothing'

        SMOOTHING_OFF
        SMOOTHING_ON

METHODS

   surface
        my $new_surface = SDL::GFX::Rotozoom::surface( $surface, $angle, $zoom, $smooth );

       With "SDL::GFX::Rotozoom::surface" you have the opportunity to rotate and zoom a given
       surface.  The surface will be rotated counter clockwise (in degrees).  Pass "SMOOTHING_ON"
       or "SMOOTHING_OFF" in order to turn it on or off.

       Note: The new surface (with $"zoom == 1") will usually be bigger than the source $surface.

       Note: Note: new surface should be less than 16384 in width and height.

       Example:

        use SDL;
        use SDL::Video;
        use SDL::Rect;
        use SDL::Surface;
        use SDL::GFX::Rotozoom;

        my $screen_width  = 640;
        my $screen_height = 480;

        SDL::init(SDL_INIT_VIDEO);

        my $screen  = SDL::Video::set_video_mode(800, 600, 32, SDL_SWSURFACE);
        my $picture = SDL::Video::load_BMP('test.bmp');

        my $rotated = SDL::GFX::Rotozoom::surface( $picture, 45, 0.8, SMOOTHING_ON );

        SDL::Video::blit_surface( $rotated, SDL::Rect->new(0, 0, $rotated->w, $rotated->h),
                                  $screen,  SDL::Rect->new(0, 0, 0, 0) );

        SDL::Video::update_rect( $screen, 0, 0, 0, 0 );

        sleep(2);

   surface_xy
        my $new_surface = SDL::GFX::Rotozoom::surface_xy( $surface, $angle, $zoom_x, $zoom_y, $smooth );

       Same as SDL::GFX::Rotozoom::surface but you can specify the zoomlevel for x and y
       separately.

   surface_size
        my ($new_width, $new_height) = @{ SDL::GFX::Rotozoom::surface_size( $width, $height, $angle, $zoom ) };

       "surface_size" will give you the width and height of an rotating/zoom operation for the
       given $width and $height.  Helpful for knowing the surface size before actually do the
       rotating/zoom operation.

   surface_size_xy
        my ($new_width, $new_height) = @{ SDL::GFX::Rotozoom::surface_size_xy( $width, $height, $angle, $zoom_x, $zoom_y ) };

       Same as SDL::GFX::Rotozoom::surface_size but you can specify the zoomlevel for x and y
       separately.

   zoom_surface
        my $new_surface = SDL::GFX::Rotozoom::zoom_surface( $surface, $zoom_x, $zoom_y, $smooth );

       Same as SDL::GFX::Rotozoom::surface_xy except you can zoom only.

   zoom_surface_size
        my ($new_width, $new_height) = SDL::GFX::Rotozoom::zoom_surface_size( $width, $height, $zoom_x, $zoom_y );

       Same as SDL::GFX::Rotozoom::surface_size_xy except you can specify zoom only.

   shrink_surface
        my $new_surface = SDL::GFX::Rotozoom::shrink_surface( $surface, $factor_x, $factor_y );

       Specialized function for shrinking a surface.

   rotate_surface_90_degrees
        my $new_surface = SDL::GFX::Rotozoom::rotate_surface_90_degrees( $surface, $num_clockwise_turns );

       Rotating a surface $num_clockwise_turns-times.

AUTHORS

       See "AUTHORS" in SDL.