Gtk2-CV
view release on metacpan or search on metacpan
lib/Gtk2/CV/ImageWindow.pm view on Meta::CPAN
$self->{subimage} = $image;
$self->{iw} = $image->get_width;
$self->{ih} = $image->get_height;
if ($self->{iw} && $self->{ih}) {
$self->auto_resize;
} else {
$self->clear_image;
}
}
=item $img->set_image ($gdk_pixbuf[, $type])
Replace the currently-viewed image by the given pixbuf.
=cut
sub set_image {
my ($self, $image, $type) = @_;
$self->{type} = $type;
$self->{image} = $image;
$self->{path} = undef;
$self->{tran_rotate} = $self->{load_rotate};
$image = Gtk2::CV::rotate $image, -$self->{load_rotate}
if $self->{load_rotate};
$self->set_subimage ($image);
}
=item $img->clear_image
Removes the current image (usually replacing it by the default image).
=cut
sub clear_image {
my ($self) = @_;
$self->kill_player;
delete $self->{image};
delete $self->{subimage};
delete $self->{tran_rotate};
delete $self->{path};
if ($self->{window} && $self->{window}->is_visible) {
$self->realize_image;
}
}
sub realize_image {
my ($self) = @_;
return if $self->{image};
$title_image ||= Gtk2::CV::require_image "cv.png";
$self->set_image ($title_image);
Scalar::Util::weaken $title_image;
}
=item $img->load_image ($path)
Tries to load the given file (if it is an image), or embeds mpv (if
mpv supports it).
=cut
my %othertypes = (
"Microsoft ASF" => "video/x-asf",
"RealMedia file" => "video/x-rm",
"Matroska data" => "video/x-ogg",
"Ogg data, OGM video (XviD)" => "video/x-ogg",
"Ogg data, OGM video (DivX 5)" => "video/x-ogg",
"RIFF (little-endian) data, wrapped MPEG-1 (CDXA)" => "video/mpeg",
"ISO Media" => "video/x-mp4",
"MPEG transport stream data" => "video/mpeg",
);
my %exttypes = (
mp2 => "audio/mpeg",
mp3 => "audio/mpeg",
flac => "audio/x-flac",
ogg => "audio/x-ogg",
mpc => "audio/x-monkeyaudio",
mpg => "video/mpeg",
mpeg => "video/mpeg",
ogm => "video/x-ogg",
mkv => "video/x-matroska",
);
#sub gstreamer_setup {
# my ($self, $path) = @_;
#
# require GStreamer;
# GStreamer->init;
#
# my $bin = GStreamer::ElementFactory->make (playbin => "CV")
# or return;
#
# $bin->set (uri => (Glib::filename_to_uri $path, "localhost"), async => 0);
# $bin->get_bus->add_watch (sub {
# my ($bus, $msg) = @_;
#
# return unless $msg->src == $bin;
#
# my $type = $msg->type;
#
## warn $type;
# if ($type eq "error") {
# warn $msg->error;
# } elsif ($type eq "segment-done") {
# $bin->seek (1, "time", "segment", set => 0, end => 0);
# }
#
# 1
# });
#
# $bin->set_state ("paused");
( run in 0.871 second using v1.01-cache-2.11-cpan-39bf76dae61 )