Applied Magnet's Patch
[sdlgit/SDL_perl.git] / lib / SDL / SMPEG.pm
CommitLineData
f757f054 1#!perl
2package SDL::SMPEG;
3
4use strict;
5use warnings;
6use Carp;
7use SDL;
8use SDL::Surface;
9use SDL::MPEG;
10
11sub new {
12 my $proto = shift;
13 my $class = ref($proto) || $proto;
14 my %options = @_;
15
16 verify (%options, qw/ -name -audio / ) if $SDL::DEBUG;
17
18 my $n = $options{-name} || die "SDL::SMPEG must supply a filename to SDL::SMPEG::new\n";
19 my $a = $options{'-audio'} ? 1 : 0;
20 my $info = new SDL::MPEG();
21
22 my $self = \SDL::NewSMPEG($n,$$info,$a);
23 croak SDL::GetError() unless $$self;
24 bless $self,$class;
25 $self->audio(1);
26 $self->video(1);
27 return $self, $info;
28}
29
30sub DESTROY {
31 SDL::FreeSMPEG(${$_[0]});
32}
33
34sub error {
35 SDL::SMPEGError(${$_[0]});
36}
37
38sub audio {
39 SDL::SMPEGEnableAudio( ${$_[0]}, $_[1]);
40}
41
42sub video {
43 SDL::SMPEGEnableSMPEG( ${$_[0]}, $_[1]);
44}
45
46sub volume {
47 SDL::SMPEGSetVolume( ${$_[0]}, $_[1] );
48}
49
50sub display {
51 croak "SDL::SMPEG::Display requires a SDL::Surface\n" unless $_[1]->isa('SDL::Surface');
52 SDL::SMPEGSetDisplay( ${$_[0]}, ${$_[1]}, 0);
53}
54
55sub scale {
56 return SDL::SMPEGScaleXY(${$_[0]},$_[1],$_[2]) if (@_ == 3 );
57 return SDL::SMPEGScaleXY(${$_[0]},$_[1]->width(),$_[1]->height()) if $_[1]->isa('SDL::Surface');
58 SDL::SMPEGScale(${$_[0]},$_[1]);
59}
60
61sub play {
62 SDL::SMPEGPlay(${$_[0]});
63}
64
65sub pause {
66 SDL::SMPEGPause(${$_[0]});
67}
68
69sub stop {
70 SDL::SMPEGStop(${$_[0]});
71}
72
73sub rewind {
74 SDL::SMPEGRewind(${$_[0]});
75}
76
77sub seek {
78 SDL::SMPEGSeek(${$_[0]},$_[1]);
79}
80
81sub skip {
82 SDL::SMPEGSkip(${$_[0]},$_[1]);
83}
84
85sub loop {
86 SDL::SMPEGLoop(${$_[0]},$_[1]);
87}
88
89sub region {
90 croak "SDL::SMPEG::region requires a SDL::Rect\n" unless $_[1]->isa('SDL::Rect');
91 SDL::SMPEGDisplayRegion(${$_[0]},${$_[1]});
92}
93
94sub frame {
95 SDL::SMPEGRenderFrame(${$_[0]},$_[1]);
96}
97
98sub info {
99 new SDL::MPEG -from => $_[0];
100}
101
102sub status {
103 SDL::SMPEGStatus(${$_[0]});
104}
105
1061;