# An object that may be repeated over several rows. package neb::Tree::RepeatableScreenObject; use strict; use English; use Carp; use neb::Tree::Node; use neb::Tree::Container; use neb::Tree::Tag; use neb::Tree::ScreenObject; our @ISA = ('neb::Tree::ScreenObject'); sub is_repeated { my $self = shift; return defined($self->attribute("rows")); } sub rows { my $self = shift; return ($self->attribute("rows") || 1); } sub height { my $self = shift; my $height = shift; return $self->SUPER::height($height) unless $self->is_repeated; defined($self->SUPER::height) or $self->SUPER::height(1); $self->attribute("rows", int($height/$self->SUPER::height)) if defined($height); return $self->SUPER::height * $self->rows; } 1;