xref: /haiku/src/servers/app/ScreenConfigurations.h (revision 899e0ef82b5624ace2ccfa5f5a58c8ebee54aaef)
1 /*
2  * Copyright 2009, Axel Dörfler, axeld@pinc-software.de.
3  * This file may be used under the terms of the MIT License.
4  */
5 #ifndef SCREEN_CONFIGURATIONS_H
6 #define SCREEN_CONFIGURATIONS_H
7 
8 
9 #include <Accelerant.h>
10 #include <Rect.h>
11 
12 #include <ObjectList.h>
13 
14 
15 class BMessage;
16 
17 
18 struct screen_configuration {
19 	int32			id;
20 	monitor_info	info;
21 	BRect			frame;
22 	display_mode	mode;
23 	float			brightness;
24 	bool			has_info;
25 	bool			is_current;
26 };
27 
28 
29 class ScreenConfigurations {
30 public:
31 								ScreenConfigurations();
32 								~ScreenConfigurations();
33 
34 			screen_configuration* CurrentByID(int32 id) const;
35 			screen_configuration* BestFit(int32 id, const monitor_info* info,
36 									bool* _exactMatch = NULL) const;
37 
38 			status_t			Set(int32 id, const monitor_info* info,
39 									const BRect& frame,
40 									const display_mode& mode);
41 			void				SetBrightness(int32 id, float brightness);
42 			float				Brightness(int32 id);
43 			void				Remove(screen_configuration* configuration);
44 
45 			status_t			Store(BMessage& settings) const;
46 			status_t			Restore(const BMessage& settings);
47 
48 private:
49 	typedef BObjectList<screen_configuration> ConfigurationList;
50 
51 			ConfigurationList	fConfigurations;
52 };
53 
54 
55 #endif	// SCREEN_CONFIGURATIONS_H
56 
57