PPresenter

 view release on metacpan or  search on metacpan

PPresenter/SlideView.pm  view on Meta::CPAN

# Copyright (C) 2000-2002, Free Software Foundation FSF.

package PPresenter::SlideView;

use strict;
use PPresenter::Object;
use base 'PPresenter::Object';

sub new($$$)
{   my ($class, $show, $slide, $style_flags, $viewport) = @_;

    # Collect the options from (sub-classes of) Slide.
    my $view = bless
    { -name          => "Slide $slide view $viewport"
    , show           => $show
    , slide          => $slide
    , viewport       => $viewport
    , canvas         => $viewport->canvas
    , style_elements => $viewport->styleElems($slide, $style_flags)
    , id             => undef
    }, $class;

    $view->getOptions($class)->InitObject;
}

sub setOptions($) {$_[0]->{options} = $_[1]}
sub decoration()  {shift->{decoration}}
sub fontset()     {shift->{fontset}   }
sub formatter()   {shift->{formatter} }
sub template()    {shift->{template}  }
sub dynamic()     {shift->{dynamic}   }

sub viewport()    {shift->{viewport}  }
sub showsOnViewport($) {"$_[0]->{viewport}" eq "$_[1]"}
sub canvas()      {shift->{viewport}->canvas}
sub device()      {shift->{viewport}->device}

sub nextPhase()   {shift->{program}->nextPhase}
sub inLastPhase() {shift->{program}->inLastPhase}
sub gotoPhase($)  {shift->{program}->gotoPhase(@_)}
sub phase()       {shift->{program}->phase}
sub image(@)      {shift->{show}->image(@_)}
sub id()          {shift->{id}}

sub exportedPhases()
{   my $view = shift;
    $view->{dynamic}->exportedPhases($view->{program});
}

sub canvasDimensions()   # often requested, hence answer is cached.
{   my $view = shift;

    $view->{dims} = [ $view->{viewport}->canvasDimensions ]
        unless exists $view->{dims};

    @{$view->{dims}};
}

#
# Just passing on...
#

sub hasBackdrop()
{   my $view = shift;
    $view->{decoration}->hasBackdrop($view->{viewport}->device);
}

sub color(@)
{   my $view = shift;
    $view->{decoration}->color($view, @_);
}

sub findFontSize($@)
{   my $view = shift;
    $view->{fontset}->findFontSize($view->{viewport}, @_);
}

sub font(@)   {shift->{fontset}->font(@_)}
sub title()   {shift->{template}->title}

sub nestImage($)
{   my ($view, $name) = @_;
    my ($geom, $img) = $view->{decoration}->nestImageDef($name);

    $view->{show}->image
      ( (ref $img ? $img : (-file => $img))
      , (defined $geom
         ? (-sizeBase => $geom, -resize => 0)
         : (-resize => 0)
        )
      );
}

#
#
#

sub makeBackground()
{   my $view = shift;

    $view->{viewport}->setBackgroundId(
        $view->{decoration}->makeBackground
           ( $view->{viewport}->backgroundId



( run in 2.174 seconds using v1.01-cache-2.11-cpan-4ab04211f4c )