--- loncom/homework/imageresponse.pm	2004/02/11 21:59:34	1.47
+++ loncom/homework/imageresponse.pm	2004/02/23 23:55:40	1.49
@@ -2,7 +2,7 @@
 # The LearningOnline Network with CAPA
 # image click response style
 #
-# $Id: imageresponse.pm,v 1.47 2004/02/11 21:59:34 albertel Exp $
+# $Id: imageresponse.pm,v 1.49 2004/02/23 23:55:40 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -112,28 +112,36 @@ sub prep_image {
     my $part=$Apache::inputtags::part;
     my $respid=$Apache::inputtags::response['-1'];
     my $id=&Apache::loncommon::get_cgi_id();
-    my %x;
+    my (%x,$i);
     $x{"cgi.$id.BGIMG"}=&Apache::lonnet::escape($image);
     my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"});
     #draws 2 xs on the image at the clicked location
     #one in white and then one in red on top of the one in white
-    if (defined($x) && defined($y)) {
-	$x{"cgi.$id.LINECOUNT"}=4;
+    if (defined($x) && $x=~/\S/ && defined($y) && $y =~/\S/) {
 	my $length = 6;
 	my $width = 1;
 	my $extrawidth = 2;
-	$x{"cgi.$id.LINE0"}=
-	    join(':',(($x-$length),($y-$length),($x+$length),($y+$length),
-		      "FFFFFF",($width+$extrawidth)));
-	$x{"cgi.$id.LINE1"}=
-	    join(':',(($x-$length),($y+$length),($x+$length),($y-$length),
-		      "FFFFFF",($width+$extrawidth)));
-	$x{"cgi.$id.LINE2"}=
-	    join(':',(($x-$length),($y-$length),($x+$length),($y+$length),
-		      "FF0000",($width)));
-	$x{"cgi.$id.LINE3"}=
-	    join(':',(($x-$length),($y+$length),($x+$length),($y-$length),
-		      "FF0000",($width)));
+	my $xmin=($x-$length);
+	my $xmax=($x+$length); 
+	my $ymin=($y-$length);
+	my $ymax=($y+$length);
+
+	$x{"cgi.$id.OBJTYPE"}.='LINE:';
+	$i=$x{"cgi.$id.OBJCOUNT"}++;
+	$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($ymin),($xmax),($ymax),
+				      "FFFFFF",($width+$extrawidth)));
+	$x{"cgi.$id.OBJTYPE"}.='LINE:';
+	$i=$x{"cgi.$id.OBJCOUNT"}++;
+	$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($ymax),($xmax),($ymin),
+				      "FFFFFF",($width+$extrawidth)));
+	$x{"cgi.$id.OBJTYPE"}.='LINE:';
+	$i=$x{"cgi.$id.OBJCOUNT"}++;
+	$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($ymin),($xmax),($ymax),
+				      "FF0000",($width)));
+	$x{"cgi.$id.OBJTYPE"}.='LINE:';
+	$i=$x{"cgi.$id.OBJCOUNT"}++;
+	$x{"cgi.$id.OBJ$i"}=join(':',(($xmin),($ymax),($xmax),($ymin),
+				      "FF0000",($width)));
     }
     if ($mode eq 'answer') {
 	my $width = 1;
@@ -141,20 +149,24 @@ sub prep_image {
 	my @areas = @{ $Apache::response::foilgroup{"$name.area"} };
 	foreach my $area (@areas) {
 	    if ($area=~/^rectangle:/) {
+		$x{"cgi.$id.OBJTYPE"}.='RECTANGLE:';
+		$i=$x{"cgi.$id.OBJCOUNT"}++;
 		my ($x1,$y1,$x2,$y2)=
 		    ($area=~m/rectangle:\(([0-9]+),([0-9]+)\)\-\(([0-9]+),([0-9]+)\)/);
-		my $i=$x{"cgi.$id.BOXCOUNT"}++;
-		$x{"cgi.$id.BOX$i"}=join(':',($x1,$y1,$x2,$y2,"FFFFFF",
+		$x{"cgi.$id.OBJ$i"}=join(':',($x1,$y1,$x2,$y2,"FFFFFF",
 					      ($width+$extrawidth)));
-		$i=$x{"cgi.$id.BOXCOUNT"}++;
-		$x{"cgi.$id.BOX$i"}=join(':',($x1,$y1,$x2,$y2,"00FF00",$width));
+		$x{"cgi.$id.OBJTYPE"}.='RECTANGLE:';
+		$i=$x{"cgi.$id.OBJCOUNT"}++;
+		$x{"cgi.$id.OBJ$i"}=join(':',($x1,$y1,$x2,$y2,"00FF00",$width));
 	    } elsif ($area=~/^polygon:(.*)/) {
-		my $i=$x{"cgi.$id.POLYCOUNT"}++;
-		$x{"cgi.$id.POLYOPT$i"}=join(':',("FFFFFF",($width+$extrawidth)));
-		$x{"cgi.$id.POLY$i"}=$1;
-		$i=$x{"cgi.$id.POLYCOUNT"}++;
-		$x{"cgi.$id.POLYOPT$i"}=join(':',("00FF00",$width));
-		$x{"cgi.$id.POLY$i"}=$1;
+		$x{"cgi.$id.OBJTYPE"}.='POLYGON:';
+		$i=$x{"cgi.$id.OBJCOUNT"}++;
+		$x{"cgi.$id.OBJ$i"}=join(':',("FFFFFF",($width+$extrawidth)));
+		$x{"cgi.$id.OBJEXTRA$i"}=$1;
+		$x{"cgi.$id.OBJTYPE"}.='POLYGON:';
+		$i=$x{"cgi.$id.OBJCOUNT"}++;
+		$x{"cgi.$id.OBJ$i"}=join(':',("00FF00",$width));
+		$x{"cgi.$id.OBJEXTRA$i"}=$1;
 	    }
 	}
     }
@@ -611,6 +623,7 @@ sub end_polygon {
 	$target eq 'analyze') {
 	my $name = $Apache::imageresponse::curname;
 	my $area = &Apache::lonxml::endredirection;
+	$area=~s/\s*//g;
 	&Apache::lonxml::debug("out is $area for $name");
 	if ( $Apache::imageresponse::conceptgroup
 	     && !&Apache::response::showallfoils()) {