version 1.44, 2004/01/14 22:59:18
|
version 1.48, 2004/02/18 00:23:01
|
Line 33 package Apache::imageresponse;
|
Line 33 package Apache::imageresponse;
|
use strict; |
use strict; |
use Image::Magick; |
use Image::Magick; |
use Apache::randomlylabel; |
use Apache::randomlylabel; |
|
use Apache::londefdef; |
use Apache::Constants qw(:common :http); |
use Apache::Constants qw(:common :http); |
|
|
BEGIN { |
BEGIN { |
Line 112 sub prep_image {
|
Line 113 sub prep_image {
|
my $respid=$Apache::inputtags::response['-1']; |
my $respid=$Apache::inputtags::response['-1']; |
my $id=&Apache::loncommon::get_cgi_id(); |
my $id=&Apache::loncommon::get_cgi_id(); |
my %x; |
my %x; |
$x{"cgi.$id.BGIMG"}=$image; |
$x{"cgi.$id.BGIMG"}=&Apache::lonnet::escape($image); |
my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"}); |
my ($x,$y)=split(/:/,$Apache::lonhomework::history{"resource.$part.$respid.submission"}); |
#draws 2 xs on the image at the clicked location |
#draws 2 xs on the image at the clicked location |
#one in white and then one in red on top of the one in white |
#one in white and then one in red on top of the one in white |
if (defined($x) && defined($y)) { |
if (defined($x) && $x=~/\S/ && defined($y) && $y =~/\S/) { |
$x{"cgi.$id.LINECOUNT"}=4; |
$x{"cgi.$id.LINECOUNT"}=4; |
my $length = 6; |
my $length = 6; |
my $width = 1; |
my $width = 1; |
my $extrawidth = 2; |
my $extrawidth = 2; |
|
my $xmin=($x-$length); |
|
my $xmax=($x+$length); |
|
my $ymin=($y-$length); |
|
my $ymax=($y+$length); |
|
|
$x{"cgi.$id.LINE0"}= |
$x{"cgi.$id.LINE0"}= |
join(':',(($x-$length),($y-$length),($x+$length),($y+$length), |
join(':',(($xmin),($ymin),($xmax),($ymax), |
"FFFFFF",($width+$extrawidth))); |
"FFFFFF",($width+$extrawidth))); |
$x{"cgi.$id.LINE1"}= |
$x{"cgi.$id.LINE1"}= |
join(':',(($x-$length),($y+$length),($x+$length),($y-$length), |
join(':',(($xmin),($ymax),($xmax),($ymin), |
"FFFFFF",($width+$extrawidth))); |
"FFFFFF",($width+$extrawidth))); |
$x{"cgi.$id.LINE2"}= |
$x{"cgi.$id.LINE2"}= |
join(':',(($x-$length),($y-$length),($x+$length),($y+$length), |
join(':',(($xmin),($ymin),($xmax),($ymax), |
"FF0000",($width))); |
"FF0000",($width))); |
$x{"cgi.$id.LINE3"}= |
$x{"cgi.$id.LINE3"}= |
join(':',(($x-$length),($y+$length),($x+$length),($y-$length), |
join(':',(($xmin),($ymax),($xmax),($ymin), |
"FF0000",($width))); |
"FF0000",($width))); |
} |
} |
if ($mode eq 'answer') { |
if ($mode eq 'answer') { |
Line 173 sub displayfoils {
|
Line 179 sub displayfoils {
|
my $image=$Apache::response::foilgroup{"$name.image"}; |
my $image=$Apache::response::foilgroup{"$name.image"}; |
&Apache::lonxml::debug("image is $image"); |
&Apache::lonxml::debug("image is $image"); |
if ( $target eq 'web' && $image !~ /^http:/ ) { |
if ( $target eq 'web' && $image !~ /^http:/ ) { |
$image=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$image); |
$image=&clean_up_image($image); |
if (&Apache::lonnet::repcopy($image) ne OK) { |
} |
$image='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif'; |
|
} |
|
} |
|
&Apache::lonxml::debug("image is $image"); |
&Apache::lonxml::debug("image is $image"); |
if ( &Apache::response::show_answer() ) { |
if ( &Apache::response::show_answer() ) { |
if ($target eq 'tex') { |
if ($target eq 'tex') { |
Line 202 sub displayfoils {
|
Line 205 sub displayfoils {
|
return $result; |
return $result; |
} |
} |
|
|
|
sub clean_up_image { |
|
my ($image)=@_; |
|
if ($image =~ /\s*<img\s*/) { |
|
($image) = ($image =~ /src\s*=\s*\"([^\"]+)\"/i); |
|
if ($image !~ /^http:/) { |
|
$image=&Apache::lonnet::hreflocation('',$image); |
|
} |
|
if (!$image) { |
|
$image='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif'; |
|
} |
|
} else { |
|
$image=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$image); |
|
if (&Apache::lonnet::repcopy($image) ne OK) { |
|
$image='/home/httpd/html/adm/lonKaputt/lonlogo_broken.gif'; |
|
} |
|
} |
|
return $image; |
|
} |
|
|
sub gradefoils { |
sub gradefoils { |
my (@whichopt) = @_; |
my (@whichopt) = @_; |
my $x; |
my $x; |
Line 469 sub end_image {
|
Line 491 sub end_image {
|
$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \noindent\graphicspath{{'.$path.'}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
} |
} |
} else { |
} else { |
my $temp_file; |
#care about eps dynamical generation |
my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat"; |
$Apache::response::foilgroup{"$name.image"}='\vskip 0 mm '.&Apache::londefdef::eps_generation($src,$file,$width_param); |
$temp_file = Apache::File->new('>>'.$filename); |
|
print $temp_file "$src\n"; |
|
$Apache::response::foilgroup{"$name.image"} ='\vskip 0 mm \graphicspath{{/home/httpd/prtspool/}}\includegraphics[width='.$width_param.' mm]{'.$file.'} '; |
|
} |
} |
} |
} |
return $result; |
return $result; |
Line 597 sub end_polygon {
|
Line 616 sub end_polygon {
|
$target eq 'analyze') { |
$target eq 'analyze') { |
my $name = $Apache::imageresponse::curname; |
my $name = $Apache::imageresponse::curname; |
my $area = &Apache::lonxml::endredirection; |
my $area = &Apache::lonxml::endredirection; |
|
$area=~s/\s*//g; |
&Apache::lonxml::debug("out is $area for $name"); |
&Apache::lonxml::debug("out is $area for $name"); |
if ( $Apache::imageresponse::conceptgroup |
if ( $Apache::imageresponse::conceptgroup |
&& !&Apache::response::showallfoils()) { |
&& !&Apache::response::showallfoils()) { |