hopefully useful slide overview layout
[HTML5TV.git] / lib / HTML5TV / Slides.pm
1 use warnings;
2 use strict;
3
4 package HTML5TV::Slides;
5
6 use SDL::App;
7 use SDL::Surface;
8 use SDL::Rect;
9
10 sub new {
11         my $class = shift;
12         my $self = {
13                 border_color => SDL::Color->new( -r => 0xFF, -g => 0xCC, -b => 0x00 ),
14         };
15         bless $self, $class;
16 }
17
18 our $app;
19
20 my ( $x, $y ) = ( 0, 0 );
21 my ( $w, $h );
22
23 my @factors = ( qw/ 4 4 4 4 1 2 2 4 4 4 4 / );
24
25 foreach my $path (
26         sort {
27                 my $n_a = $1 if $a =~ m{(\d+)};
28                 my $n_b = $1 if $b =~ m{(\d+)};
29                 $n_a <=> $n_b || $a cmp $b
30         } glob("media/_editing/s/2/*")
31 ) {
32
33         my $factor = shift @factors || '4';
34         $path =~ s{/s/[124]/}{/s/$factor/};
35
36         my $slide = SDL::Surface->new( -name => $path );
37
38         my $rect = SDL::Rect->new(
39                 -width  => $slide->width(),
40                 -height => $slide->height(),
41                 -x      => 0,
42                 -y      => 0,
43         );
44
45         my $to = SDL::Rect->new(
46                 -width  => $slide->width(),
47                 -height => $slide->height(),
48                 -x      => $x,
49                 -y      => $y,
50         );
51
52         warn "$x $y $path\n";
53
54         if ( ! $app ) {
55                 $w = $slide->width()  * $factor;
56                 $h = $slide->height() * $factor * 2;
57
58                 warn "window $w $h\n";
59
60                 $app = SDL::App->new(
61                         -width  => $w,
62                         -height => $h,
63                         -depth  => 24,
64                         -title  => 'Slides',
65                 );
66
67         }
68
69                 
70         $slide->blit( $rect, $app, $to );
71         $app->update( $to );
72
73         $x += $slide->width();
74
75         if ( $x >= $w ) {
76                 $x = 0;
77                 $y += $slide->height();
78         }
79
80 }
81
82 warn "window $w $h\n";
83
84
85 <STDIN>;
86