summaryrefslogtreecommitdiffstats
path: root/PerlTQt/examples/drawlines/drawlines.pl
diff options
context:
space:
mode:
Diffstat (limited to 'PerlTQt/examples/drawlines/drawlines.pl')
-rw-r--r--PerlTQt/examples/drawlines/drawlines.pl74
1 files changed, 74 insertions, 0 deletions
diff --git a/PerlTQt/examples/drawlines/drawlines.pl b/PerlTQt/examples/drawlines/drawlines.pl
new file mode 100644
index 0000000..1d7575f
--- /dev/null
+++ b/PerlTQt/examples/drawlines/drawlines.pl
@@ -0,0 +1,74 @@
+#!/usr/bin/perl -w
+use strict;
+package ConnectWidget;
+use TQt;
+use TQt::isa qw(TQt::Widget);
+use TQt::attributes qw(
+ points
+ colors
+ count
+ down
+);
+use constant MAXPOINTS => 2000;
+use constant MAXCOLORS => 40;
+
+#
+# Constructs a ConnectWidget.
+#
+
+sub NEW {
+ shift->SUPER::NEW(@_[0,1], &WStaticContents);
+
+ setBackgroundColor(&white);
+ count = 0;
+ down = 0;
+ points = [];
+ my @colors;
+ for(1 .. MAXCOLORS) {
+ push @colors, TQt::Color(rand(255), rand(255), rand(255));
+ }
+ colors = \@colors;
+}
+
+sub paintEvent {
+ my $paint = TQt::Painter(this);
+ for(my $i = 0; $i < count-1; $i++) {
+ for(my $j = $i+1; $j < count; $j++) {
+ $paint->setPen(colors->[rand(MAXCOLORS)]);
+ $paint->drawLine(points->[$i], points->[$j]);
+ }
+ }
+}
+
+sub mousePressEvent {
+ down = 1;
+ count = 0;
+ points = [];
+ erase();
+}
+
+sub mouseReleaseEvent {
+ down = 0;
+ update();
+}
+
+sub mouseMoveEvent {
+ my $e = shift;
+ if(down && count < MAXPOINTS) {
+ my $paint = TQt::Painter(this);
+ push @{this->points}, TQt::Point($e->pos);
+ count++;
+ $paint->drawPoint($e->pos);
+ }
+}
+
+package main;
+use TQt;
+use ConnectWidget;
+
+my $a = TQt::Application(\@ARGV);
+my $connect = ConnectWidget;
+$connect->setCaption("PerlTQt Example - Draw lines");
+$a->setMainWidget($connect);
+$connect->show;
+exit $a->exec;