[LON-CAPA-cvs] cvs: loncom /homework randomlabel.pm
foxr
lon-capa-cvs@mail.lon-capa.org
Tue, 31 May 2005 22:14:33 -0000
foxr Tue May 31 18:14:33 2005 EDT
Modified files:
/loncom/homework randomlabel.pm
Log:
Use gnuplot callbacks to determine if the bkg image was gnuplot.
This is more reliable than attempting to decode the produced stuff (I hope).
Index: loncom/homework/randomlabel.pm
diff -u loncom/homework/randomlabel.pm:1.75 loncom/homework/randomlabel.pm:1.76
--- loncom/homework/randomlabel.pm:1.75 Tue May 24 06:10:16 2005
+++ loncom/homework/randomlabel.pm Tue May 31 18:14:32 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# random labelling tool
#
-# $Id: randomlabel.pm,v 1.75 2005/05/24 10:10:16 foxr Exp $
+# $Id: randomlabel.pm,v 1.76 2005/05/31 22:14:32 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -67,10 +67,19 @@
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 {
&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 {
# utility function to do error checking on a integer.
my ($num,$default) = @_;
@@ -85,7 +94,10 @@
my ($height_param,$width_param);
sub start_randomlabel {
+
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
+ $gnuplot_background = 0;
+ &Apache::lonplot::register_callback(\&gnuplot_handler);
my $result='';
push (@Apache::lonxml::namespace,'randomlabel');
($height_param,$width_param)=(0,0);
@@ -147,6 +159,7 @@
} elsif ($target eq 'edit') {
$result.=&Apache::edit::end_table;
}
+ &Apache::lonplot::clear_callback();
return $result;
}
@@ -170,8 +183,7 @@
# If it's a gnuplot the uncleaned image will have
# the text "dynamically generated plot"
# and "cgi-bin/plot.gif?"
- if ( ($bgimg =~ /dynamically generated plot/) &&
- ($bgimg =~ /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'};
@@ -195,7 +207,7 @@
$src =~ s/^\s+//s;
- if ($src =~ /^\\graphicspath/) {
+ if ($gnuplot_background) {
$height_param = $Apache::lonplot::plot{'height'};
my $initial_width= $Apache::lonplot::plot{'width'};
$width_param = $Apache::lonplot::plot{'texwidth'};