xref: /haiku/src/preferences/screensaver/ScreenCornerSelector.h (revision f2b4344867e97c3f4e742a1b4a15e6879644601a)
1 /*
2  * Copyright 2003-2006, Haiku.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Michael Phipps
7  *		Axel Dörfler, axeld@pinc-software.de
8  */
9 #ifndef SCREEN_CORNER_SELECTOR_H
10 #define SCREEN_CORNER_SELECTOR_H
11 
12 
13 #include "ScreenSaverSettings.h"
14 
15 #include <Control.h>
16 
17 
18 class ScreenCornerSelector : public BControl {
19 	public:
20 		ScreenCornerSelector(BRect frame, const char *name, BMessage* message,
21 			uint32 resizingMode);
22 
23 		virtual void Draw(BRect update);
24 		virtual void MouseDown(BPoint point);
25 		virtual void MouseUp(BPoint point);
26 		virtual void MouseMoved(BPoint where, uint32 transit, const BMessage* dragMessage);
27 		virtual void KeyDown(const char* bytes, int32 numBytes);
28 
29 		virtual void SetValue(int32 value);
30 		virtual int32 Value();
31 
32 		void SetCorner(screen_corner corner);
33 		screen_corner Corner() const;
34 
35 	private:
36 		BRect _MonitorFrame() const;
37 		BRect _InnerFrame(BRect monitorFrame) const;
38 		BRect _CenterFrame(BRect innerFrame) const;
39 		void _DrawStop(BRect innerFrame);
40 		void _DrawArrow(BRect innerFrame);
41 		screen_corner _ScreenCorner(BPoint point, screen_corner previous) const;
42 
43 		screen_corner fCurrentCorner;
44 		int32 fPreviousCorner;
45 };
46 
47 #endif	// SCREEN_CORNER_SELECTOR_H
48