summaryrefslogtreecommitdiffstats
path: root/examples/opengl/overlay_x11/rubberbandwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/opengl/overlay_x11/rubberbandwidget.cpp')
-rw-r--r--examples/opengl/overlay_x11/rubberbandwidget.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/examples/opengl/overlay_x11/rubberbandwidget.cpp b/examples/opengl/overlay_x11/rubberbandwidget.cpp
new file mode 100644
index 0000000..7a3b003
--- /dev/null
+++ b/examples/opengl/overlay_x11/rubberbandwidget.cpp
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Implementation of a widget that draws a rubberband. Designed to be used
+** in an X11 overlay visual
+**
+** Copyright (C) 1999-2008 Trolltech ASA. All rights reserved.
+**
+** This file is part of an example program for Qt. This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include "rubberbandwidget.h"
+#include <qpainter.h>
+
+
+RubberbandWidget::RubberbandWidget( QColor transparentColor, QWidget *parent,
+ const char *name, WFlags f )
+ : QWidget( parent, name, f )
+{
+ setBackgroundColor( transparentColor );
+ on = FALSE;
+}
+
+
+void RubberbandWidget::mousePressEvent( QMouseEvent* e )
+{
+ p1 = e->pos();
+ p2 = p1;
+ p3 = p1;
+ on = TRUE;
+ setMouseTracking( TRUE );
+}
+
+
+void RubberbandWidget::mouseMoveEvent( QMouseEvent* e )
+{
+ if ( on ) {
+ p2 = e->pos();
+ QPainter p( this );
+ // Erase last drawn rubberband:
+ p.setPen( QPen( backgroundColor(), 3 ) );
+ p.drawRect( QRect( p1, p3 ) );
+ // Draw the new one:
+ p.setPen( QPen( white, 3 ) );
+ p.drawRect( QRect(p1, p2) );
+ p3 = p2;
+ }
+}
+
+void RubberbandWidget::mouseReleaseEvent( QMouseEvent* )
+{
+ if ( on ) {
+ QPainter p ( this );
+ p.eraseRect( rect() );
+ }
+ on = FALSE;
+ setMouseTracking( FALSE );
+}