PPresenter
view release on metacpan or search on metacpan
PPresenter/Export/Handouts/IM_PostScript.pm view on Meta::CPAN
{ my $page = Image::Magick->new;
my $part1 = Image::Magick->new;
$export->read_image($part1, shift @$files, $width, $height);
$export->read_image($part1, shift @$files, $width, $height);
push @$page, $part1->Append(-stack => 0);
my $part2 = Image::Magick->new;
$export->read_image($part2, shift @$files, $width, $height);
$export->read_image($part2, shift @$files, $width, $height);
push @$page, $part2->Append(-stack => 0);
push @$all_images, $page->Append(-stack => 1);
}
$all_images;
}
#
# The user interface to this module.
#
sub popup($$)
{ my ($export, $show, $screen) = @_;
my $popup = MainWindow->new(-screen => $screen
, -title => 'Export slides with Postscript via ImageMagick'
);
$popup->withdraw;
my $vp = $export->tkViewportSettings($show, $popup);
my $ps = $export->tkPostscript($show, $popup);
my $options = $popup->Frame;
$options->Label
( -text => 'export'
, -anchor => 'e'
)->grid($export->tkSlideSelector($popup), -sticky => 'ew');
$options->Label
( -text => 'output file'
, -anchor => 'e'
)->grid($options->Entry(-textvariable => \$export->{-outputFile})
, -sticky => 'ew');
my $commands = $popup->Frame;
$commands->Button
( -text => 'Export'
, -relief => 'ridge'
, -command => sub {$export->exportPostscript($show, $popup)}
)->grid($commands->Button
( -text => 'Cancel'
, -relief => 'sunken'
, -command => sub {$popup->withdraw}
)
, -padx => 10, -pady => 10
);
if(defined $vp)
{ $vp->grid($ps, -sticky => 'ewns');
$options->grid('^', -sticky => 'ew');
}
else {$options->grid($ps, -sticky => 'ew')}
$commands->grid(-columnspan => 2, -sticky => 'ew');
if(grep {$_->device ne 'printer'} $show->viewports)
{ my $hint = $popup->LabFrame
( -label => 'Hint'
, -labelside => 'acrosstop'
)->grid(-columnspan => 2, -sticky => 'ew');
$hint->Label(-text => <<HINT
Black on white is usually nicer, so you may consider
the use `-device=>printer' for all viewports.
HINT
)->grid(-sticky=>'nwsw');
}
$popup->Popup(popover => 'cursor');
}
sub tkPostscript($$)
{ my ($export, $show, $popup) = @_;
my $ps = $export->SUPER::tkPostscript($show, $popup);
my $options = $ps->Frame;
foreach (@paper_placers)
{ my ($label, $function, $bitmap) = @$_;
$options->Checkbutton
( -bitmap => '@'. $show->findImageFile($bitmap)
, -onvalue => $label
, -variable => \$export->{-paperUse}
, -indicatoron => 0
)->pack(-side => 'left');
}
$ps->Label
( -text => 'Packing'
, -anchor => 'w'
)->grid($options, '-', -sticky => 'ew');
$ps;
}
sub paperPlacer()
{ my $export = shift;
my $name = $export->{-paperUse};
return $name if ref $name eq 'CODE';
foreach (@paper_placers)
{ my ($label, $function, $bitmap) = @$_;
return $function if $label eq $name;
}
die "Unknown map function $name.\n";
}
1;
( run in 0.770 second using v1.01-cache-2.11-cpan-39bf76dae61 )