1 # Additional PDFJ::Shape methods
2 # 2004 nakajima@netstock.co.jp
8 my($self, $x, $y, $w, $h, $headsize, $headangle, $style)
9 = PDFJ::Util::methodargs([qw(x y w h headsize headangle style)], @_);
12 my $axisangle = atan2(-$h, -$w);
13 my $x1 = $xt + $headsize * cos($axisangle + $headangle);
14 my $y1 = $yt + $headsize * sin($axisangle + $headangle);
15 my $x2 = $xt + $headsize * cos($axisangle - $headangle);
16 my $y2 = $yt + $headsize * sin($axisangle - $headangle);
17 my $hlen = $headsize * cos($headangle);
18 $w += $hlen * cos($axisangle);
19 $h += $hlen * sin($axisangle);
20 my $coords = [$xt, $yt, $x1, $y1, $x2, $y2, $xt, $yt];
21 $self->line($x, $y, $w, $h, $style);
22 $self->polygon($coords, 'f', $style);
26 my($self, $x, $y, $w, $h, $style)
27 = PDFJ::Util::methodargs([qw(x y w h style)], @_);
28 $self->setboundary($x, $y);
29 $self->setboundary($x + $w, $y + $h);
30 ($w, $h) = ($w / 2, $h / 2);
31 my $ch = abs($w * 3 / 2);
32 croak "too wide brace" if $ch > $h / 2;
33 my $lw = ($style && $style->{linewidth}) ? $style->{linewidth} / 2 :
34 ($self->{style} && $self->{style}{linewidth}) ?
35 $self->{style}{linewidth} / 2 :
38 $self->moveto($x, $y + $h);
39 $self->curveto(_bracecurve($x, $y + $h, $w + $lw, $ch));
40 $self->lineto($x + $w + $lw, $y + $h * 2 - $ch);
41 $self->curveto(_bracecurve2($x + $w + $lw, $y + $h * 2 - $ch, $w - $lw, $ch));
42 $self->curveto(_bracecurve($x + $w * 2, $y + $h * 2, -$w - $lw, -$ch));
43 $self->lineto($x + $w - $lw, $y + $h + $ch);
44 $self->curveto(_bracecurve2($x + $w - $lw, $y + $h + $ch, -$w + $lw, -$ch));
47 $self->moveto($x, $y + $h);
48 $self->curveto(_bracecurve($x, $y + $h, $w + $lw, -$ch));
49 $self->lineto($x + $w + $lw, $y + $ch);
50 $self->curveto(_bracecurve2($x + $w + $lw, $y + $ch, $w - $lw, -$ch));
51 $self->curveto(_bracecurve($x + $w * 2, $y, -$w - $lw, $ch));
52 $self->lineto($x + $w - $lw, $y + $h - $ch);
53 $self->curveto(_bracecurve2($x + $w - $lw, $y + $h - $ch, -$w + $lw, +$ch));
59 my($self, $x, $y, $w, $h, $style)
60 = PDFJ::Util::methodargs([qw(x y w h style)], @_);
61 my $coords = [$x + $w, $y, $x, $y, $x, $y + $h, $x + $w, $y + $h];
62 $self->polygon($coords, 's', $style);
66 my($self, $x, $y, $w, $h, $style)
67 = PDFJ::Util::methodargs([qw(x y w h style)], @_);
68 $self->setboundary($x, $y);
69 $self->setboundary($x + $w, $y + $h);
70 my $lw = ($style && $style->{linewidth}) ? $style->{linewidth}:
71 ($self->{style} && $self->{style}{linewidth}) ?
72 $self->{style}{linewidth} :
77 $self->moveto($x, $y + $h);
78 $self->curveto(_bracecurve2($x, $y + $h, $w, $h));
79 $self->curveto(_bracecurve($x + $w, $y + $h * 2, -$w + $lw, -$h));
80 $self->curveto(_bracecurve2($x + $lw, $y + $h, $w - $lw, -$h));
81 $self->curveto(_bracecurve($x + $w, $y, -$w, $h));
87 my($x, $y, $w, $h) = @_;
88 my($x1, $y1) = ($x + $w * 2 / 3, $y + $h / 4);
89 my($x2, $y2) = ($x + $w, $y + $h / 2);
90 my($x3, $y3) = ($x + $w, $y + $h);
91 ($x1, $y1, $x2, $y2, $x3, $y3);
94 my($x, $y, $w, $h) = @_;
95 my($x1, $y1, $x2, $y2, $x3, $y3) =
96 _bracecurve($x + $w, $y + $h, -$w, -$h);
97 ($x2, $y2, $x1, $y1, $x + $w, $y + $h);