diff options
Diffstat (limited to 'PerlQt/tutorials/t10/CannonField.pm')
-rw-r--r-- | PerlQt/tutorials/t10/CannonField.pm | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/PerlQt/tutorials/t10/CannonField.pm b/PerlQt/tutorials/t10/CannonField.pm deleted file mode 100644 index 08b2e10..0000000 --- a/PerlQt/tutorials/t10/CannonField.pm +++ /dev/null @@ -1,76 +0,0 @@ -package CannonField; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::signals - angleChanged => ['int'], - forceChanged => ['int']; -use TQt::slots - setAngle => ['int'], - setForce => ['int']; -use TQt::attributes qw( - ang - f -); -use POSIX qw(atan); - -sub angle () { ang } -sub force () { f } - -sub NEW { - shift->SUPER::NEW(@_); - - ang = 45; - f = 0; - setPalette(TQt::Palette(TQt::Color(250, 250, 200))); -} - -sub setAngle { - my $degrees = shift; - $degrees = 5 if $degrees < 5; - $degrees = 70 if $degrees > 70; - return if ang == $degrees; - ang = $degrees; - repaint(cannonRect(), 0); - emit angleChanged(ang); -} - -sub setForce { - my $newton = shift; - $newton = 0 if $newton < 0; - return if f == $newton; - f = $newton; - emit forceChanged(f); -} - -sub paintEvent { - my $e = shift; - return unless $e->rect->intersects(cannonRect()); - my $cr = cannonRect(); - my $pix = TQt::Pixmap($cr->size); - $pix->fill(this, $cr->topLeft); - - my $p = TQt::Painter($pix); - $p->setBrush(&blue); - $p->setPen(&NoPen); - $p->translate(0, $pix->height - 1); - $p->drawPie(TQt::Rect(-35, -35, 70, 70), 0, 90*16); - $p->rotate(- ang); - $p->drawRect(TQt::Rect(33, -4, 15, 8)); - $p->end; - - $p->begin(this); - $p->drawPixmap($cr->topLeft, $pix); -} - -sub cannonRect { - my $r = TQt::Rect(0, 0, 50, 50); - $r->moveBottomLeft(rect()->bottomLeft); - return $r; -} - -sub sizePolicy { - TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); -} - -1; |