Diff for /loncom/homework/imageresponse.pm between versions 1.30 and 1.33

version 1.30, 2003/06/09 22:31:56 version 1.33, 2003/08/01 14:22:07
Line 25 Line 25
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
   # July,August 2003 H. K. Ng
   #
 #FIXME LATER assumes multiple possible submissions but only one is possible   #FIXME LATER assumes multiple possible submissions but only one is possible 
 #currently  #currently
   
 package Apache::imageresponse;  package Apache::imageresponse;
 use strict;  use strict;
 use Image::Magick;  use Image::Magick;
   use GD;
   
 BEGIN {  BEGIN {
   &Apache::lonxml::register('Apache::imageresponse',('imageresponse'));    &Apache::lonxml::register('Apache::imageresponse',('imageresponse'));
Line 218  sub end_conceptgroup { Line 220  sub end_conceptgroup {
   return $result;    return $result;
 }  }
   
   sub insert_foil {
       return '
          <foil>
              <image></image>
              <text></text>
              <rectangle></rectangle>
          </foil>
   ';
   }
   
 $Apache::imageresponse::curname='';  $Apache::imageresponse::curname='';
 sub start_foil {  sub start_foil {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
Line 302  sub start_image { Line 314  sub start_image {
   return $result;    return $result;
 }  }
   
   sub get_image {
       my ($imgsrc,$set_trans)=@_;
       my $image;
       if ($imgsrc !~ /\.(png|jpg|jpeg)$/i) {
    my $conv_image = Image::Magick->new;
    my $current_figure = $conv_image->Read('filename'=>$imgsrc);
    $conv_image->Set('magick'=>'png');
    my @blobs=$conv_image->ImageToBlob();
    undef $conv_image;
    $image = GD::Image->new($blobs[0]);
       } else {
    GD::Image->trueColor(1);
    $image = GD::Image->new($imgsrc);
       }
       if ($set_trans && defined($image)) {
    my $white=$image->colorExact(255,255,255);
    if ($white != -1) { $image->transparent($white); }
       }
       return $image;
   }
   
 sub end_image {  sub end_image {
   my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;    my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
   my $result;    my $result;
   my $name = $Apache::imageresponse::curname;    my $name = $Apache::imageresponse::curname;
   if ($target eq 'web') {    if ($target eq 'web') {
     my $image = &Apache::lonxml::endredirection;      my $image = &Apache::lonxml::endredirection;
     &Apache::lonxml::debug("out is $image");      &Apache::lonxml::debug("original image is $image");
       my $id=$Apache::inputtags::response['-1'];
       my $temp=1;
       my $x=$ENV{"form.HWVAL_$id:$temp.x"};
       my $y=$ENV{"form.HWVAL_$id:$temp.y"};
       if (defined ($x) && defined ($y)) {
    &Apache::lonxml::debug("x and y defined as $x,$y");
    my $currentImage = &get_image('/home/httpd/html'.$image,1);
    if (! defined($currentImage)) {
       &Apache::lonnet::logthis('Unable to create image object for '.$image);
       return '';
    }
    my $red;
    if (!($red = $currentImage->colorResolve(255,0,0))) {
       $red = $currentImage->colorClosestHWB(255,0,0);
    }
    my $length = 6;
    $currentImage->line($x-$length,$y-$length,$x+$length,$y+$length,$red);
    $currentImage->line($x-$length,$y+$length,$x+$length,$y-$length,$red);
   
    my ($nameWOext) = ($image =~ /^.*\/(.*)\..*$/);
    &Apache::lonxml::debug("graph name $nameWOext");
    my $webImageName = "/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_".
       $nameWOext.'.png'; #needs to be more random or specific
    my $newImageName = '/home/httpd'.$webImageName;
   
    my $imgfh = Apache::File->new('>'.$newImageName); 
    print $imgfh $currentImage->png;
    $image = $webImageName;
       }
       &Apache::lonxml::debug("out image is $image");
     if ( $Apache::imageresponse::conceptgroup      if ( $Apache::imageresponse::conceptgroup
  && !&Apache::response::showallfoils()) {   && !&Apache::response::showallfoils()) {
       $Apache::response::conceptgroup{"$name.image"} = $image;        $Apache::response::conceptgroup{"$name.image"} = $image;

Removed from v.1.30  
changed lines
  Added in v.1.33


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>