/usr/local/CPAN/PPresenter/PPresenter/Formatter.pm


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

package PPresenter::Formatter;

use strict;
use PPresenter::StyleElem;
use base 'PPresenter::StyleElem';

use constant ObjDefaults =>
{ type         => 'formatter'
, -nestIndents => [ [ '+0', '10%'  ]
                  , [ '+0', '17%'  ]
                  , [ '-1', '23%'  ]
                  , [ '+0', '28%'  ] ]
 
, -lineSkip    => 0.4    # an empty line.
, -listSkip    => 0.3    # above each list-item.
, -imageHSpace => '10%'
, -imageVSpace => '10%'
};

#
# strip
#    Remove all formatting info from the string.
#

sub strip($$$)
{   my ($former, $show, $slide, $string) = @_;

    warn "WARNING: formatter ", ref $former, " does not implement strip.\n";
    return $string;
}

#
# To be extended by all implementations.
#

sub prepareSlide($$)
{   my ($former, $slide, $view) = @_;
    die "Formatter " .$former->{-name} . " must implement prepareSlide()\n";
}

sub createSlide($$$$)
{   my ($former, $show, $slide, $view, $dx) = @_;
    die "Formatter " .$former->{-name} . " must implement createSlide()\n";
}

#
# Information about nesting of lists.
#

sub nestInfo($$)
{   my ($former, $view, $nest) = @_;
    my $nr_nests = @{$former->{-nestIndents}};
    my $takenest = $nest > $nr_nests ? $nr_nests : $nest;

    (@{$former->{-nestIndents}[$takenest]}, $view->nestImage($nest));
}

1;