1: #!/usr/local/bin/perl
2:
3: use GD;
4: require 5.002;
5: $file = "miss.gif";
6: $xp = 100;
7: $yp = 200;
8: $angle = 45;
9:
10: open(GIF,$file) || die("Cannot open $file.");
11: $im = newFromGif GD::Image(GIF) || die(
"Cannot create image from $file.");
12: close GIF;
13:
14:
15: $color = $im->colorAllocate(0,0,255);
16:
17: $poly = &makeArrow($xp,$yp,$angle);
18:
19: $im->filledPolygon($poly,$color);
20:
21: print "Content-type: image/gif\n\n";
22: print $im->gif;
23: exit;
24:
25:
26: sub makeArrow {
27: local($xpos,$ypos,$degrees) = @_;
28: local(@x,@y,$xcenter,$ycenter,$theta);
29: local($poly,$nx,$ny,$sin,$cos,$i);
30:
31: $xcenter = 75;
32: $ycenter = 75;
33: @x = (75,50,65,65,85,85,100);
34: @y = (75,100,100,140,140,100,100);
35: $theta=$degrees/90.0*1.570796;
36:
37: $poly = new GD::Polygon;
38: for ($i=0 ; $i<scalar(@x) ; $i++) {
39: $cos = cos($theta);
40: $sin = sin($theta);
41: $nx = $x[$i]*$cos - $y[$i]*$sin +
$xcenter*(1.0-$cos) + $ycenter*$sin;
42: $ny = $x[$i]*$sin + $y[$i]*$cos +
$ycenter*(1.0-$cos) - $xcenter*$sin;
43: $poly->addPt($nx + $xpos - 75,$ny +
$ypos - 75);
44: }
45: return $poly;
46: }
Copyright © 1994 - 2018 Linux Journal. All rights reserved.