version 1.4, 2004/02/17 22:02:05
|
version 1.5, 2004/02/24 00:14:01
|
Line 144 sub savecoord {
|
Line 144 sub savecoord {
|
return int(scalar(split(':',$ENV{"imagechoice.$id.coords"}))/2); |
return int(scalar(split(':',$ENV{"imagechoice.$id.coords"}))/2); |
} |
} |
|
|
|
sub add_obj { |
|
my ($x,$id,$type,$args,$extra)=@_; |
|
|
|
$$x{"cgi.$id.OBJTYPE"}.=$type.':'; |
|
my $i=$$x{"cgi.$id.OBJCOUNT"}++; |
|
$$x{"cgi.$id.OBJ$i"}=$args; |
|
if (defined($extra)) { $$x{"cgi.$id.OBJEXTRA$i"}=$extra; } |
|
} |
|
|
sub drawX { |
sub drawX { |
my ($imid,$x,$y)=@_; |
my ($data,$imid,$x,$y)=@_; |
my %x; |
|
$x{"cgi.$imid.LINECOUNT"}=4; |
|
my $length = 6; |
my $length = 6; |
my $width = 1; |
my $width = 1; |
my $extrawidth = 2; |
my $extrawidth = 2; |
$x{"cgi.$imid.LINE0"}= |
&add_obj($data,$imid,'LINE', |
join(':',(($x-$length),($y-$length),($x+$length),($y+$length), |
join(':',(($x-$length),($y-$length),($x+$length),($y+$length), |
"FFFFFF",($width+$extrawidth))); |
"FFFFFF",($width+$extrawidth)))); |
$x{"cgi.$imid.LINE1"}= |
&add_obj($data,$imid,'LINE', |
join(':',(($x-$length),($y+$length),($x+$length),($y-$length), |
join(':',(($x-$length),($y+$length),($x+$length),($y-$length), |
"FFFFFF",($width+$extrawidth))); |
"FFFFFF",($width+$extrawidth)))); |
$x{"cgi.$imid.LINE2"}= |
&add_obj($data,$imid,'LINE', |
join(':',(($x-$length),($y-$length),($x+$length),($y+$length), |
join(':',(($x-$length),($y-$length),($x+$length),($y+$length), |
"FF0000",($width))); |
"FF0000",($width)))); |
$x{"cgi.$imid.LINE3"}= |
&add_obj($data,$imid,'LINE', |
join(':',(($x-$length),($y+$length),($x+$length),($y-$length), |
join(':',(($x-$length),($y+$length),($x+$length),($y-$length), |
"FF0000",($width))); |
"FF0000",($width)))); |
return %x; |
|
} |
} |
|
|
sub drawPolygon { |
sub drawPolygon { |
my ($id,$imid)=@_; |
my ($data,$id,$imid)=@_; |
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my $coordstr; |
my $coordstr; |
while (@coords) { |
while (@coords) { |
$coordstr.='('.shift(@coords).','.shift(@coords).')-'; |
$coordstr.='('.shift(@coords).','.shift(@coords).')-'; |
} |
} |
chop($coordstr); |
chop($coordstr); |
my %x; |
|
my $width = 1; |
my $width = 1; |
my $extrawidth = 2; |
my $extrawidth = 2; |
my $i=$x{"cgi.$imid.POLYCOUNT"}++; |
&add_obj($data,$imid,'POLYGON', |
$x{"cgi.$imid.POLYOPT$i"}=join(':',("FFFFFF",($width+$extrawidth)),'1'); |
join(':',("FFFFFF",($width+$extrawidth)),'1'),$coordstr); |
$x{"cgi.$imid.POLY$i"}=$coordstr; |
&add_obj($data,$imid,'POLYGON', |
$i=$x{"cgi.$imid.POLYCOUNT"}++; |
join(':',("00FF00",($width)),'1'),$coordstr); |
$x{"cgi.$imid.POLYOPT$i"}=join(':',("00FF00",$width),'1'); |
|
$x{"cgi.$imid.POLY$i"}=$coordstr; |
|
return %x; |
|
} |
} |
|
|
sub drawBox { |
sub drawBox { |
my ($id,$imid)=@_; |
my ($data,$id,$imid)=@_; |
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my (undef,@coords)=split(':',$ENV{"imagechoice.$id.coords"}); |
my %x; |
if (scalar(@coords) < 4) { return ''; } |
if (scalar(@coords) < 4) { return %x; } |
|
my $width = 1; |
my $width = 1; |
my $extrawidth = 2; |
my $extrawidth = 2; |
my $i=$x{"cgi.$imid.BOXCOUNT"}++; |
&add_obj($data,$imid,'RECTANGLE', |
$x{"cgi.$imid.BOX$i"}=join(':',(@coords,"FFFFFF",($width+$extrawidth))); |
join(':',(@coords,"FFFFFF",($width+$extrawidth)))); |
$i=$x{"cgi.$imid.BOXCOUNT"}++; |
&add_obj($data,$imid,'RECTANGLE',join(':',(@coords,"00FF00",$width))); |
$x{"cgi.$imid.BOX$i"}=join(':',(@coords,"00FF00",$width)); |
|
return %x; |
|
} |
} |
|
|
sub drawimage { |
sub drawimage { |
Line 209 sub drawimage {
|
Line 208 sub drawimage {
|
$data{"cgi.$imid.BGIMG"}=$filename; |
$data{"cgi.$imid.BGIMG"}=$filename; |
my $x=$coords[-2]; |
my $x=$coords[-2]; |
my $y=$coords[-1]; |
my $y=$coords[-1]; |
%data=(%data,&drawX($imid,$x,$y)); |
&drawX(\%data,$imid,$x,$y); |
if ($type eq "polygon") { %data=(%data,&drawPolygon($id,$imid)); } |
if ($type eq "polygon") { &drawPolygon(\%data,$id,$imid); } |
if ($type eq "box") { %data=(%data,&drawBox($id,$imid)); } |
if ($type eq "box") { &drawBox(\%data,$id,$imid); } |
&Apache::lonnet::appenv(%data); |
&Apache::lonnet::appenv(%data); |
return "/adm/randomlabel.png?token=$imid" |
return "/adm/randomlabel.png?token=$imid" |
} |
} |