version 1.71, 2005/04/12 21:41:28
|
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 309 sub end_labelgroup {
|
Line 332 sub end_labelgroup {
|
} elsif ( $type eq 'image') { |
} elsif ( $type eq 'image') { |
my ($path,$file) = &Apache::londefdef::get_eps_image($label); |
my ($path,$file) = &Apache::londefdef::get_eps_image($label); |
my $image_name = $path.$file; |
my $image_name = $path.$file; |
$result .= '\includegraphics{' |
my $label_width = get_label_width($label); |
|
|
|
$result .= '\includegraphics[width='.$label_width.'mm]{' |
.$image_name."}}\n"; |
.$image_name."}}\n"; |
&add_vars($gname,$i, |
&add_vars($gname,$i, |
$Apache::randomlabel::description[$idx_arr[$i]], |
$Apache::randomlabel::description[$idx_arr[$i]], |