The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/env perl
#
#	Flicker.pl
#
#	This is just a brain dead slide show that demonstrates 
#	the SDL_FULLSCREEN flag, and Cursor::show(0) for hiding
#	the cursor.  It quits as soon as you move the mouse.
 
use SDL::App;
use SDL::Surface;
use SDL::Event;
use SDL::Cursor;

$app = new SDL::App 	-title => "Flicker", 
		-icon => "wilbur.png",
		-flags => SDL_FULLSCREEN,
		-width => 800,
		-height => 600;

@files = split(/\s+\n*/,`ls`);

$e = new SDL::Event;
$e->set(SDL_SYSWMEVENT,SDL_IGNORE);

SDL::Cursor::show(0);

while(1) {

for $f (@files) {

	my ($name,$ext) = split(/\./,$f);
	if ( ($ext eq "gif") || ($ext eq "jpg") || ($ext eq "png")) {
		$img = new SDL::Surface -name => $f;
		if ($drect) { $app->fill($drect,0); }
		$rect = new SDL::Rect -height => $img->height, -width => $img->width;
		$drect = new SDL::Rect 	-height => $img->height,
					-width => $img->width,
					-x => 400 - $img->width / 2,
					-y => 300 - $img->height /2;
		$img->blit($rect,$app,$drect);
		$app->flip();
	} else { next; }

for ( 1 .. 10 ) {
	$e->pump;
	$e->poll;
	if ($e->type == SDL_MOUSEMOTION) { exit; }	
	$app->delay(200);
}
}
}