The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
##########################################################################
#
#	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;