Diff for /loncom/homework/randomlabel.pm between versions 1.74 and 1.76

version 1.74, 2005/05/23 11:02:13 version 1.76, 2005/05/31 22:14:32
Line 65  use Apache::lonplot; Line 65  use Apache::lonplot;
 my %args;  my %args;
 my $cgi_id;  my $cgi_id;
 my $scale_factor; # image scale factor.  my $scale_factor; # image scale factor.
   my $label_xscale;                # Label scale factor (needed for gnuplot).
   my $label_yscale;
   my $gnuplot_background; # This will be true if a gnuplot backgound
   
   
 BEGIN {  BEGIN {
     &Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label','bgimg'));      &Apache::lonxml::register('Apache::randomlabel',('randomlabel','labelgroup','location','label','bgimg'));
 }  }
   
   # Gnuplot calback called if a </gnuplot> tag is encountered:
   #
   sub gnuplot_handler {
       $gnuplot_background = 1;
   }
   
 sub check_int {  sub check_int {
     # utility function to do error checking on a integer.      # utility function to do error checking on a integer.
     my ($num,$default) = @_;      my ($num,$default) = @_;
Line 84  sub check_int { Line 94  sub check_int {
   
 my ($height_param,$width_param);  my ($height_param,$width_param);
 sub start_randomlabel {  sub start_randomlabel {
   
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
       $gnuplot_background = 0;
       &Apache::lonplot::register_callback(\&gnuplot_handler);
     my $result='';      my $result='';
     push (@Apache::lonxml::namespace,'randomlabel');      push (@Apache::lonxml::namespace,'randomlabel');
     ($height_param,$width_param)=(0,0);      ($height_param,$width_param)=(0,0);
       $label_xscale = 1.0; # Assume image size not overridden.
       $label_yscale = 1.0;
     my $bgimg= &Apache::lonxml::get_param('bgimg',$parstack,$safeeval);      my $bgimg= &Apache::lonxml::get_param('bgimg',$parstack,$safeeval);
     if ( defined($bgimg) && $bgimg !~ /^http:/ ) {      if ( defined($bgimg) && $bgimg !~ /^http:/ ) {
  $bgimg=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$bgimg);   $bgimg=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$bgimg);
Line 100  sub start_randomlabel { Line 115  sub start_randomlabel {
  $cgi_id=&Apache::loncommon::get_cgi_id();   $cgi_id=&Apache::loncommon::get_cgi_id();
  %args=();   %args=();
  $args{"cgi.$cgi_id.BGIMG"}=&Apache::lonnet::escape($bgimg);   $args{"cgi.$cgi_id.BGIMG"}=&Apache::lonnet::escape($bgimg);
    $height_param = &Apache::lonxml::get_param('height',$parstack, $safeeval);
    $width_param  = &Apache::lonxml::get_param('width', $parstack, $safeeval);
     } elsif ($target eq 'tex' && defined($bgimg)) {      } elsif ($target eq 'tex' && defined($bgimg)) {
  $result.=&make_eps_image($bgimg,$parstack,$safeeval);   $result.=&make_eps_image($bgimg,$parstack,$safeeval);
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
Line 142  sub end_randomlabel { Line 159  sub end_randomlabel {
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=&Apache::edit::end_table;   $result.=&Apache::edit::end_table;
     }      }
       &Apache::lonplot::clear_callback();
     return $result;      return $result;
 }  }
   
Line 160  sub end_bgimg { Line 178  sub end_bgimg {
     if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') {       if ($target eq 'web' || $target eq 'tex' || $target eq 'analyze') { 
  my $bgimg=&Apache::lonxml::endredirection();    my $bgimg=&Apache::lonxml::endredirection(); 
  if ($target eq 'web') {   if ($target eq 'web') {
       # Try to determine  if this is a gnu plot image in which 
       # case it's size overrides the web size.
       #    If it's a gnuplot the uncleaned image will have
       #    the text "dynamically generated plot"
       #    and "cgi-bin/plot.gif?"
       if ( $gnuplot_background) {
    &Apache::lonxml::debug("Gnuplot image!");
    my $plot_x = $Apache::lonplot::plot{'width'};
    my $plot_y = $Apache::lonplot::plot{'height'};
    &Apache::lonxml::debug(" H = $plot_y W = $plot_x");
    &Apache::lonxml::debug("PH = $height_param, PW = $width_param");
    $label_xscale = $plot_x/$width_param;
    $label_yscale = $plot_y/$height_param;
       }
       &Apache::lonxml::debug("Image: $bgimg");
     $bgimg=&Apache::imageresponse::clean_up_image($bgimg);      $bgimg=&Apache::imageresponse::clean_up_image($bgimg);
       &Apache::lonxml::debug("Cleaned image: $bgimg");
     $args{"cgi.$cgi_id.BGIMG"}=&Apache::lonnet::escape($bgimg);      $args{"cgi.$cgi_id.BGIMG"}=&Apache::lonnet::escape($bgimg);
  } elsif ($target eq 'tex') {   } elsif ($target eq 'tex') {
     #   Some bg images can create latex for us... e.g. gnuplot.      #   Some bg images can create latex for us... e.g. gnuplot.
Line 173  sub end_bgimg { Line 207  sub end_bgimg {
     $src =~ s/^\s+//s;      $src =~ s/^\s+//s;
           
   
     if ($src =~ /^\\graphicspath/) {      if ($gnuplot_background) {
         $height_param = $Apache::lonplot::plot{'height'};          $height_param = $Apache::lonplot::plot{'height'};
  my $initial_width= $Apache::lonplot::plot{'width'};   my $initial_width= $Apache::lonplot::plot{'width'};
  $width_param  = $Apache::lonplot::plot{'texwidth'};   $width_param  = $Apache::lonplot::plot{'texwidth'};
Line 392  sub start_location { Line 426  sub start_location {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $x= &check_int(&Apache::lonxml::get_param('x',$parstack,$safeeval),50);      my $x= &check_int(&Apache::lonxml::get_param('x',$parstack,$safeeval),50);
     my $y= &check_int(&Apache::lonxml::get_param('y',$parstack,$safeeval),50);      my $y= &check_int(&Apache::lonxml::get_param('y',$parstack,$safeeval),50);
       &Apache::lonxml::debug("x = $x y = $y");
       $x = $x*$label_xscale;
       $y = $y*$label_yscale;
       &Apache::lonxml::debug(" H = $height_param W = $width_param");
       &Apache::lonxml::debug(" XS = $label_xscale YS = $label_yscale");
       &Apache::lonxml::debug(" X  = $x Y = $y");
     my $value= &Apache::lonxml::get_param('value',$parstack,$safeeval);      my $value= &Apache::lonxml::get_param('value',$parstack,$safeeval);
     my $result='';      my $result='';
     push(@Apache::randomlabel::xcoord,$x);      push(@Apache::randomlabel::xcoord,$x);

Removed from v.1.74  
changed lines
  Added in v.1.76


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