##########################################################################
#
# File: Project/Gantt/TextUtils.pm
#
# Author: Alexander Westholm
#
# Purpose: Currently contains only one function, which truncates
# a string to properly fit within a certain number of
# pixels. In the future, may contain more miscellaneous
# text manipulation routines.
#
# Client: CPAN
#
# CVS: $Id: TextUtils.pm,v 1.3 2004/08/03 17:56:52 awestholm Exp $
#
##########################################################################
package Project::Gantt::TextUtils;
use strict;
use warnings;
use Exporter ();
use vars qw[@EXPORT @ISA];
@ISA = qw[Exporter];
@EXPORT = qw[
truncateStr
];
##########################################################################
#
# Function: truncateStr
#
# Purpose: Given a string and an amount of pixels, either
# returns the string unaltered, or chops some
# characters off the end so that the string can
# fit in that amount of pixels when written using
# a 10 pt font.
#
##########################################################################
sub truncateStr {
my @chars = split //,shift;
my $pixels = shift;
# avg of 6 pixels per char
my $maxAllow = int $pixels/6;
# chop off characters that won't fit into box
if(($#chars+1) > $maxAllow){
@chars = @chars[0..($maxAllow-3)];
push @chars, ('. .');
}
return join('', @chars);
}
1;