]> git.sven.stormbind.net Git - sven/vym.git/blob - src/winter.h
Replace Pierre as the maintainer
[sven/vym.git] / src / winter.h
1 #ifndef WINTER_H
2 #define WINTER_H
3
4 #include <QGraphicsItem>
5 #include <QObject>
6 #include <QRectF>
7 #include <QTimer>
8
9 class QGraphicsView;
10 class QGraphicsScene;
11
12 class SnowFlake : public QGraphicsItem {
13   public:
14     enum SnowType { Smilla, Disc, Egg };
15
16     SnowFlake(QGraphicsScene *scene, SnowType type);
17     ~SnowFlake();
18     QRectF boundingRect() const;
19     void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
20     void animate();
21     void blow(const QPointF &v);
22
23   private:
24     SnowType type;
25     int size;
26     QList<QGraphicsLineItem *> lines;
27     QGraphicsEllipseItem *disc;
28     QPointF dv;
29     QPointF dblow;
30     qreal da;
31 };
32
33 class Winter : public QObject {
34     Q_OBJECT
35   public:
36     Winter(QGraphicsView *view);
37     ~Winter();
38     void updateView();
39     void setObstacles(QList<QRectF> obslist);
40
41   public slots:
42     void animate();
43     void makeSnow();
44
45   private:
46     QGraphicsView *view;
47     QList<SnowFlake *> fallingSnow;
48     QList<SnowFlake *> frozenSnow;
49     int maxFlakes;
50     QTimer *animTimer;
51     QTimer *snowTimer;
52     QList<QRectF> obstacles;
53
54     SnowFlake::SnowType type;
55     int maxFalling;
56     int maxUnfreeze;
57     // QGraphicsRectItem *test;
58
59     QRectF viewRect;
60 };
61
62 #endif