xref: /haiku/src/servers/app/Screen.h (revision f75a7bf508f3156d63a14f8fd77c5e0ca4d08c42)
1 /*
2  * Copyright (c) 2001-2008, Haiku, Inc.
3  * Distributed under the terms of the MIT license.
4  *
5  * Authors:
6  *		Adi Oanca <adioanca@myrealbox.com>
7  *		Axel Dörfler, axeld@pinc-software.de
8  *		Stephan Aßmus, <superstippi@gmx.de>
9  */
10 #ifndef SCREEN_H
11 #define SCREEN_H
12 
13 
14 #include <Accelerant.h>
15 #include <GraphicsDefs.h>
16 #include <Point.h>
17 
18 
19 class DrawingEngine;
20 class HWInterface;
21 
22 class Screen {
23  public:
24 								Screen(::HWInterface *interface, int32 id);
25 								Screen();
26 	virtual						~Screen();
27 
28 			status_t			Initialize();
29 			void				Shutdown();
30 
31 			int32				ID() const { return fID; }
32 			status_t			GetMonitorInfo(monitor_info& info) const;
33 
34 			status_t			SetMode(const display_mode& mode,
35 									bool makeDefault);
36 			status_t			SetMode(uint16 width, uint16 height,
37 									uint32 colorspace,
38 									const display_timing& timing,
39 									bool makeDefault);
40 			status_t			SetPreferredMode();
41 			status_t			SetBestMode(uint16 width, uint16 height,
42 									uint32 colorspace, float frequency);
43 
44 			void				GetMode(display_mode* mode) const;
45 			void				GetMode(uint16 &width, uint16 &height,
46 									uint32 &colorspace, float &frequency) const;
47 			BRect				Frame() const;
48 			color_space			ColorSpace() const;
49 
50 			bool				IsDefaultMode() const { return fIsDefault; }
51 
52 	inline	DrawingEngine*		GetDrawingEngine() const
53 									{ return fDriver; }
54 	inline	::HWInterface*		HWInterface() const
55 									{ return fHWInterface; }
56 
57  private:
58 			int32				_FindBestMode(const display_mode* modeList,
59 									uint32 count, uint16 width, uint16 height,
60 									uint32 colorspace, float frequency) const;
61 
62 			int32				fID;
63 			DrawingEngine*		fDriver;
64 			::HWInterface*		fHWInterface;
65 			bool				fIsDefault;
66 };
67 
68 #endif	/* SCREEN_H */
69