diff options
Diffstat (limited to 'examples/life/life.h')
-rw-r--r-- | examples/life/life.h | 58 |
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 |