App-Fotagger
view release on metacpan or search on metacpan
lib/App/Fotagger/Display/SDL.pm view on Meta::CPAN
$app->next_image;
$self->draw_image;
$app->_lasttags($ltag) if $ltag;
$app->_laststar($lstar) if $lstar;
}
when ('u') {
$app->current_image->restore;
$self->draw_image;
}
when ('s') {
$app->current_image->add_tags($app->_lasttags);
$app->current_image->stars($app->_laststar);
$app->current_image->write();
$self->draw_image;
}
when ('t') {
$app->tagging(1);
if (my $old_tags=$app->current_image->tags) {
$app->current_image->tags($old_tags.', ');
$self->draw_tags();
}
}
when([0 .. 5]) {
$app->current_image->stars($key);
$app->current_image->write;
$self->draw_stars;
$self->draw_tags;
}
}
} elsif ($type == SDL_KEYDOWN && $app->tagging) {
my $image = $app->current_image;
my $tags = $image->tags;
my $update_tags_display=1;
given($key) {
when (length == 1) {
my $uni = $event->key_unicode;
$tags.=chr($uni);
}
when('space') {
$tags.=' ';
}
when('backspace') {
$tags=~s/.$//;
}
when('return') {
$app->tagging(0);
$image->write();
}
}
$image->tags($tags);
$self->draw_tags($image);
}
}
}
}
sub draw_image {
my $self = shift;
my $image = $self->app->current_image;
my $frame = SDL::Surface->new( -name => $image->file );
my $factor = $self->width/$image->width;
SDL::Tool::Graphic->zoom($frame,$factor,$factor);
$frame->blit( undef, $self->window, undef );
my $blank = new SDL::Rect(-width=>500, -height=>20, -y=>730, -x=>0);
$self->window->fill($blank,$self->black);
$self->window->update($blank);
$self->font->print($self->window, 5, $self->height-15, sprintf("File: %s (%s)",$image->file,$image->create_date));
$self->draw_tags($image);
$self->draw_stars($image);
if ($image->deleted) {
my $dfont=SDL::TTFont->new(-name=>'/usr/share/fonts/truetype/ttf-liberation/LiberationSans-Regular.ttf', -size=>200,-fg=>$self->red, -bg=>$self->black);
$dfont->print($self->window,10,10,"DELETED");
}
$self->window->sync;
}
sub draw_tags {
my $self = shift;
my $image = shift || $self->app->current_image;
$self->window->fill($self->blank_tags,$self->app->tagging ? $self->grey : $self->black);
$self->window->update($self->blank_tags);
$self->font->print($self->window, 5, 682, "Tags: ".$image->tags);
$self->window->sync;
}
sub draw_stars {
my $self = shift;
my $image = shift || $self->app->current_image;
my $stars = $image->stars;
$self->window->fill($self->blank_stars,$self->black);
$self->window->update($self->blank_tags);
$self->starfont->print($self->window, 5, 690, "*" x $stars) if $stars;
$self->window->sync;
}
q{ listening to:
Peter Fox - Stadtaffen
};
( run in 0.651 second using v1.01-cache-2.11-cpan-e1769b4cff6 )