version 1.96, 2004/05/26 19:44:20
|
version 1.101, 2004/08/30 15:23:23
|
Line 36 use Apache::response;
|
Line 36 use Apache::response;
|
use Apache::lonxml; |
use Apache::lonxml; |
use Apache::edit; |
use Apache::edit; |
|
|
|
use vars qw/$weboutputformat $versionstring/; |
|
|
BEGIN { |
BEGIN { |
&Apache::lonxml::register('Apache::lonplot',('gnuplot')); |
&Apache::lonxml::register('Apache::lonplot',('gnuplot')); |
|
# |
|
# Determine the version of GNUPLOT |
|
$weboutputformat = 'gif'; |
|
$versionstring = `gnuplot --version 2>/dev/null`; |
|
if ($versionstring =~ /^gnuplot 4/) { |
|
$weboutputformat = 'png'; |
|
} |
} |
} |
|
|
## |
## |
Line 110 my $words_test = sub {$_[0]=~s/\s+/
|
Line 119 my $words_test = sub {$_[0]=~s/\s+/
|
################################################################### |
################################################################### |
my @gnuplot_edit_order = |
my @gnuplot_edit_order = |
qw/alttag bgcolor fgcolor height width font transparent grid samples |
qw/alttag bgcolor fgcolor height width font transparent grid samples |
border align texwidth texfont plottype/; |
border align texwidth texfont plottype lmargin rmargin tmargin bmargin |
|
major_ticscale minor_ticscale/; |
|
|
|
my $margin_choices = ['default', |
|
qw{0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20}]; |
|
|
my %gnuplot_defaults = |
my %gnuplot_defaults = |
( |
( |
Line 209 my %gnuplot_defaults =
|
Line 222 my %gnuplot_defaults =
|
edit_type => 'choice', |
edit_type => 'choice', |
choices => ['Cartesian','Polar'] |
choices => ['Cartesian','Polar'] |
}, |
}, |
|
lmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Left margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
rmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Right margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
tmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Top margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
bmargin => { |
|
default => 'default', |
|
test => sub {$_[0]=~/^(default|\d+)$/}, |
|
description => 'Bottm margin width (pts):', |
|
edit_type => 'choice', |
|
choices => $margin_choices, |
|
}, |
|
major_ticscale => { |
|
default => '1', |
|
test => $real_test, |
|
description => 'Size of major tic marks (plot coordinates)', |
|
edit_type => 'entry', |
|
size => '5' |
|
}, |
|
minor_ticscale => { |
|
default => '0.5', |
|
test => $real_test, |
|
description => 'Size of minor tic mark (plot coordinates)', |
|
edit_type => 'entry', |
|
size => '5' |
|
}, |
); |
); |
|
|
my %key_defaults = |
my %key_defaults = |
Line 302 my %tic_defaults =
|
Line 357 my %tic_defaults =
|
minorfreq => { |
minorfreq => { |
default => '0', |
default => '0', |
test => $int_test, |
test => $int_test, |
description => 'Number of minor tics between major tic marks', |
description => 'Number of minor tics per major tic mark', |
edit_type => 'entry', |
edit_type => 'entry', |
size => '10' |
size => '10' |
}, |
}, |
Line 460 sub end_gnuplot {
|
Line 515 sub end_gnuplot {
|
## return image tag for the plot |
## return image tag for the plot |
if ($target eq 'web') { |
if ($target eq 'web') { |
$result .= <<"ENDIMAGE"; |
$result .= <<"ENDIMAGE"; |
<img src = "/cgi-bin/plot.gif?file=$filename.data&output=gif" |
<img src = "/cgi-bin/plot.gif?file=$filename.data&output=$weboutputformat" |
width = "$plot{'width'}" |
width = "$plot{'width'}" |
height = "$plot{'height'}" |
height = "$plot{'height'}" |
align = "$plot{'align'}" |
align = "$plot{'align'}" |
Line 945 sub write_gnuplot_file {
|
Line 1000 sub write_gnuplot_file {
|
my $gnuplot_input = ''; |
my $gnuplot_input = ''; |
my $curve; |
my $curve; |
my $pt = $plot{'texfont'}; |
my $pt = $plot{'texfont'}; |
|
# |
|
# Check to be sure we do not have any empty curves |
|
my @curvescopy; |
|
foreach my $curve (@curves) { |
|
if (exists($curve->{'function'})) { |
|
if ($curve->{'function'} !~ /^\s*$/) { |
|
push(@curvescopy,$curve); |
|
} |
|
} elsif (exists($curve->{'data'})) { |
|
foreach my $data (@{$curve->{'data'}}) { |
|
if (scalar(@$data) > 0) { |
|
push(@curvescopy,$curve); |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
@curves = @curvescopy; |
# Collect all the colors |
# Collect all the colors |
my @Colors; |
my @Colors; |
push @Colors, $plot{'bgcolor'}; |
push @Colors, $plot{'bgcolor'}; |
Line 975 sub write_gnuplot_file {
|
Line 1048 sub write_gnuplot_file {
|
} else { |
} else { |
# Assume Cartesian |
# Assume Cartesian |
} |
} |
|
# margin |
|
if (lc($plot{'lmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set lmargin '.$plot{'lmargin'}.$/; |
|
} |
|
if (lc($plot{'rmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set rmargin '.$plot{'rmargin'}.$/; |
|
} |
|
if (lc($plot{'tmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set tmargin '.$plot{'tmargin'}.$/; |
|
} |
|
if (lc($plot{'bmargin'}) ne 'default') { |
|
$gnuplot_input .= 'set bmargin '.$plot{'bmargin'}.$/; |
|
} |
|
# tic scales |
|
$gnuplot_input .= 'set ticscale '. |
|
$plot{'major_ticscale'}.' '.$plot{'minor_ticscale'}.$/; |
# grid |
# grid |
$gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on'); |
$gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on'); |
# border |
# border |