Diff for /loncom/homework/randomlabel.pm between versions 1.68 and 1.72

version 1.68, 2005/04/12 09:35:22 version 1.72, 2005/04/18 21:41:51
Line 59  use strict; Line 59  use strict;
 use Apache::edit;  use Apache::edit;
 use Apache::File();  use Apache::File();
 use Apache::Constants qw(:common :http);  use Apache::Constants qw(:common :http);
   use Image::Magick;
   
 my %args;  my %args;
 my $cgi_id;  my $cgi_id;
Line 165  sub end_bgimg { Line 166  sub end_bgimg {
     }      }
     return $result;      return $result;
 }  }
   my $scale_factor; # image scale factor.
 sub make_eps_image {  sub make_eps_image {
     my ($bgimg,$parstack,$safeeval,$depth)=@_;      my ($bgimg,$parstack,$safeeval,$depth)=@_;
     my ($path,$file) = &Apache::londefdef::get_eps_image($bgimg);      my ($path,$file) = &Apache::londefdef::get_eps_image($bgimg);
Line 179  sub make_eps_image { Line 180  sub make_eps_image {
  ' mm \epsffile{'.$path.$file.   ' mm \epsffile{'.$path.$file.
  '}\setlength{\unitlength}{1mm}'."\n".'  \begin{picture}('.   '}\setlength{\unitlength}{1mm}'."\n".'  \begin{picture}('.
  $width_param.','.$height_param.')(0,-'.$height_param.')'."\n";   $width_param.','.$height_param.')(0,-'.$height_param.')'."\n";
       my $magick = Image::Magick->new;
       $magick->Read($bgimg);
       my $initial_width = $magick->Get('width');
       $scale_factor = $width_param / $initial_width;
     return $result;      return $result;
 }  }
   
Line 226  sub start_labelgroup { Line 231  sub start_labelgroup {
     return $result;      return $result;
 }  }
   
   #
   #   Utility sub to compute the width of a label.
   #
   sub get_label_width {
       my $label         = shift;
       &Apache::lonxml::debug("image label = $label");
       if (-e $label) {
    &Apache::lonxml::debug("$label exists");
       } else {
    &Apache::lonxml::debug("$label does not exist");
       }
       my $magick        = Image::Magick->new;
       $magick->Read($label);
       my $pixel_width   = $magick->Get('width');
       return $pixel_width * $scale_factor;
       
   
   }
 sub add_vars {  sub add_vars {
     my ($name,$order,$label,$labelorder,$value,$image,$safeeval) = @_;      my ($name,$order,$label,$labelorder,$value,$image,$safeeval) = @_;
     if (!defined($name) || $name eq '') { return; }      if (!defined($name) || $name eq '') { return; }
Line 302  sub end_labelgroup { Line 325  sub end_labelgroup {
     my $tcY=$height_param-$y*($height_param/$wheight);      my $tcY=$height_param-$y*($height_param/$wheight);
     $tcX=sprintf('%.2f',$tcX);      $tcX=sprintf('%.2f',$tcX);
     $tcY=sprintf('%.2f',$tcY);      $tcY=sprintf('%.2f',$tcY);
     $result.='\put('.$tcX.','.$tcY.'){'.$TeXsize.' \bf '.$label.'}'."\n";      $result .= '\put('.$tcX.','.$tcY.'){';
     if( $type eq 'text') {      if( $type eq 'text') {
    $result.= $TeXsize.' \bf '.$label."}\n";
  &add_vars($gname,$i,$label,$idx_arr[$i],$value,'',$safeeval);   &add_vars($gname,$i,$label,$idx_arr[$i],$value,'',$safeeval);
     } elsif ( $type eq 'image') {      } elsif ( $type eq 'image') {
    my ($path,$file) = &Apache::londefdef::get_eps_image($label);
    my $image_name = $path.$file;
    my $label_width = get_label_width($label);
   
    $result .=  '\includegraphics[width='.$label_width.'mm]{'
               .$image_name."}}\n";
  &add_vars($gname,$i,   &add_vars($gname,$i,
   $Apache::randomlabel::description[$idx_arr[$i]],    $Apache::randomlabel::description[$idx_arr[$i]],
   $idx_arr[$i],$value,$label,$safeeval);    $idx_arr[$i],$value,$label,$safeeval);
Line 403  sub end_label { Line 433  sub end_label {
  my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval,-2);   my $type = &Apache::lonxml::get_param('type',$parstack,$safeeval,-2);
  my $ltext=&Apache::lonxml::endredirection;    my $ltext=&Apache::lonxml::endredirection; 
  if ($type eq 'image') {   if ($type eq 'image') {
       if ($target eq 'tex') {
    # For tex targets, our image url has been potentially corrupted
    # by prepending \'s in front of special latex symbols.
    # For now we only worry about the _ case (most common?)
    # There's a whole host of theim in lonxml::latex_special_symbols
    # that could potentially have to be re-done.
   
    $ltext =~ s/\\_/_/g;
       }
     &Apache::lonxml::debug("Turning $ltext, $Apache::lonxml::pwd[-1]");      &Apache::lonxml::debug("Turning $ltext, $Apache::lonxml::pwd[-1]");
     $ltext=&Apache::imageresponse::clean_up_image($ltext);      $ltext=&Apache::imageresponse::clean_up_image($ltext);
 #    $ltext=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],  #    $ltext=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],

Removed from v.1.68  
changed lines
  Added in v.1.72


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