xref: /haiku/src/add-ons/screen_savers/butterfly/Butterfly.h (revision e81a954787e50e56a7f06f72705b7859b6ab06d1)
1 /*
2  * Copyright 2010-2011, Haiku, Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Geoffry Song, goffrie@gmail.com
7  */
8 #ifndef _BUTTERFLY_H_
9 #define _BUTTERFLY_H_
10 
11 
12 #include <ScreenSaver.h>
13 
14 
15 class Butterfly : public BScreenSaver {
16 public:
17 								Butterfly(BMessage* archive, image_id imageID);
18 
19 	virtual	void				StartConfig(BView* view);
20 	virtual status_t			StartSaver(BView* view, bool preview);
21 	virtual void				Draw(BView* view, int32 frame);
22 
23 private:
24 	inline	rgb_color			_HueToColor(float hue);
25 	inline	BPoint				_Iterate();
26 
27 private:
28 			// base value for calculating the curves on each iteration
29 			float				fBase;
30 			// previously calculated points
31 			BPoint				fLast[3];
32 			// transformation from graph coordinates to view coordinates
33 			float				fScale;
34 			BPoint				fTrans;
35 			// bounding box of drawn figure
36 			BRect				fBounds;
37 };
38 
39 
40 #endif  // _BUTTERFLY_H_
41