summaryrefslogtreecommitdiffstats
path: root/examples/life/life.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/life/life.h')
-rw-r--r--examples/life/life.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/examples/life/life.h b/examples/life/life.h
new file mode 100644
index 0000000..a66a3d1
--- /dev/null
+++ b/examples/life/life.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 1992-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.
+**
+*****************************************************************************/
+
+#ifndef LIFE_H
+#define LIFE_H
+
+#include <qframe.h>
+
+
+class LifeWidget : public QFrame
+{
+ Q_OBJECT
+public:
+ LifeWidget( int s = 10, QWidget *parent = 0, const char *name = 0 );
+
+ void setPoint( int i, int j );
+
+ int maxCol() { return maxi; }
+ int maxRow() { return maxj; }
+
+public slots:
+ void nextGeneration();
+ void clear();
+
+protected:
+ virtual void paintEvent( QPaintEvent * );
+ virtual void mouseMoveEvent( QMouseEvent * );
+ virtual void mousePressEvent( QMouseEvent * );
+ virtual void resizeEvent( QResizeEvent * );
+ void mouseHandle( const QPoint &pos );
+
+private:
+ enum { MAXSIZE = 50, MINSIZE = 10, BORDER = 5 };
+
+ bool cells[2][MAXSIZE + 2][MAXSIZE + 2];
+ int current;
+ int maxi, maxj;
+
+ int pos2index( int x )
+ {
+ return ( x - BORDER ) / SCALE + 1;
+ }
+ int index2pos( int i )
+ {
+ return ( i - 1 ) * SCALE + BORDER;
+ }
+
+ int SCALE;
+};
+
+
+#endif // LIFE_H