--- loncom/homework/randomlylabel.pm	2004/02/23 23:54:14	1.18
+++ loncom/homework/randomlylabel.pm	2004/07/15 18:06:09	1.20
@@ -2,7 +2,7 @@
 # The LearningOnline Network with CAPA
 # randomlabel.png: composite together text and images into 1 image
 #
-# $Id: randomlylabel.pm,v 1.18 2004/02/23 23:54:14 albertel Exp $
+# $Id: randomlylabel.pm,v 1.20 2004/07/15 18:06:09 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -54,6 +54,7 @@ sub get_image {
 	    if ($response->content_type !~ m-/(png|jpg|jpeg)$-i) {
 		my $conv_image = Image::Magick->new;
 		my $current_figure = $conv_image->Read('filename'=>$file);
+		$conv_image->Set('type'=>'TrueColor');
 		$conv_image->Set('magick'=>'png');
 		my @blobs=$conv_image->ImageToBlob();
 		undef $conv_image;
@@ -66,6 +67,7 @@ sub get_image {
     } elsif ($imgsrc !~ /\.(png|jpg|jpeg)$/i) {
 	my $conv_image = Image::Magick->new;
 	my $current_figure = $conv_image->Read('filename'=>$imgsrc);
+	$conv_image->Set('type'=>'TrueColor');
 	$conv_image->Set('magick'=>'png');
 	my @blobs=$conv_image->ImageToBlob();
 	undef $conv_image;
@@ -201,11 +203,38 @@ sub handler {
 	    }
 	    $image->copy($subimage,$x,$y,0,0,$subimage->getBounds());
 	} elsif ($type eq 'LABEL') {
-	    my ($x,$y,$text,$font,$color)=split(':',$ENV{"cgi.$id.OBJ$i"});
+	    my ($x,$y,$text,$font,$color,$direction)=
+		split(':',$ENV{"cgi.$id.OBJ$i"});
 	    $text=&Apache::lonnet::unescape($text);
 	    my $imcolor=&get_color_from_hexstring($image,$color);
-	    my $height=GD::Font->Giant->height;
-	    $image->string(GD::gdGiantFont,$x,$y-$height,$text,$imcolor);
+	    my $type='normal';
+	    my ($height,$fontref);
+	    if ($font eq 'tiny') {
+		$height=GD::Font->Tiny->height;
+		$fontref=GD::gdTinyFont;
+	    } elsif ($font eq 'small') {
+		$height=GD::Font->Small->height;
+		$fontref=GD::gdSmallFont;
+	    } elsif ($font eq 'medium') {
+		$height=GD::Font->MediumBold->height;
+		$fontref=GD::gdMediumBoldFont;
+	    } elsif ($font eq 'large') {
+		$height=GD::Font->Large->height;
+		$fontref=GD::gdLargeFont;
+	    } elsif ($font eq 'giant' || !defined($font)) {
+		$height=GD::Font->Giant->height;
+		$fontref=GD::gdGiantFont;
+	    } else {
+		$type='ttf';
+	    }
+	    if ($type eq 'normal' && $direction eq 'vertical') {
+		$image->stringUp($fontref,$x,$y-$height,$text,$imcolor);
+	    } elsif ($type eq 'normal') {
+		$image->string($fontref,$x,$y-$height,$text,$imcolor);
+	    } elsif ($type eq 'ttf') {
+		my ($fontname,$ptsize)=split(/\s+/,$font);
+		$image->stringFT($imcolor,$fontname,$ptsize,90,$x,$y,$text);
+	    }
 	} else {
 	    &Apache::lonnet::logthis("randomlylabel unable to handle object of type $type");
 	}