1/*
2 * Copyright Karsten Heimrich, host.haiku@gmx.de. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _FLURRY_H_
6#define _FLURRY_H_
7
8
9#include <DateTime.h>
10#include <GLView.h>
11#include <ScreenSaver.h>
12
13
14struct flurry_info_t;
15
16
17class FlurryView : public BGLView {
18public:
19									FlurryView(BRect bounds);
20	virtual							~FlurryView();
21
22			status_t				InitCheck() const;
23
24	virtual	void					AttachedToWindow();
25	virtual	void					DrawFlurryScreenSaver();
26	virtual	void					FrameResized(float width, float height);
27
28private:
29			void					_SetupFlurryBaseInfo();
30
31			double					_CurrentTime() const;
32			double					_SecondsSinceStart() const;
33
34private:
35			float					fWidth;
36			float					fHeight;
37
38			double					fStartTime;
39			double					fOldFrameTime;
40			flurry_info_t*			fFlurryInfo;
41
42			BTime					fTime;
43			BDateTime				fDateTime;
44};
45
46
47class Flurry : public BScreenSaver {
48public:
49									Flurry(BMessage* archive, image_id imageId);
50	virtual							~Flurry();
51
52	virtual	status_t				InitCheck();
53
54	virtual	status_t				StartSaver(BView* view, bool preview);
55	virtual	void					StopSaver();
56
57	virtual	void					Draw(BView*, int32 frame);
58	virtual	void					DirectConnected(direct_buffer_info* info);
59
60	virtual	void					StartConfig(BView* configView);
61	virtual	void					StopConfig();
62
63	virtual	status_t				SaveState(BMessage* into) const;
64
65private:
66			FlurryView*				fFlurryView;
67};
68
69
70#endif	// _FLURRY_H_
71