xref: /haiku/headers/os/game/WindowScreen.h (revision c90684742e7361651849be4116d0e5de3a817194)
1 /*
2  * Copyright 2006-2007, Haiku, Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef	_WINDOW_SCREEN_H
6 #define	_WINDOW_SCREEN_H
7 
8 
9 #include <Accelerant.h>
10 #include <GraphicsCard.h>
11 #include <OS.h>
12 #include <SupportDefs.h>
13 #include <Window.h>
14 #include <kernel/image.h>
15 
16 
17 void set_mouse_position(int32 x, int32 y);
18 	// Controls the mouse cursor position on screen
19 
20 
21 enum {
22 	B_ENABLE_VIEW_DRAWING	= 0x0001,
23 	B_ENABLE_DEBUGGER		= 0x0002
24 };
25 
26 class BWindowScreen : public BWindow {
27 	public:
28 							BWindowScreen(const char* title, uint32 space,
29 								status_t* _error, bool debugMode = false);
30 	        				BWindowScreen(const char* title, uint32 space,
31 	        					uint32 attributes, status_t* _error);
32 		virtual				~BWindowScreen();
33 
34 		virtual void		Quit();
35 		virtual void		ScreenConnected(bool active);
36         void				Disconnect();
37 
38 		virtual	void		WindowActivated(bool active);
39 		virtual void		WorkspaceActivated(int32 workspace, bool active);
40 		virtual void		ScreenChanged(BRect screenSize, color_space depth);
41 
42 		virtual void		Hide();
43 		virtual void		Show();
44 
45 		void				SetColorList(rgb_color* list, int32 firstIndex = 0,
46 								int32 lastIndex = 255);
47 		status_t			SetSpace(uint32 space);
48 
49 		bool				CanControlFrameBuffer();
50 		status_t			SetFrameBuffer(int32 width, int32 height);
51 		status_t			MoveDisplayArea(int32 x, int32 y);
52 
53 		rgb_color*			ColorList();
54 		frame_buffer_info*	FrameBufferInfo();
55 		graphics_card_hook	CardHookAt(int32 index);
56 		graphics_card_info*	CardInfo();
57 
58 		void				RegisterThread(thread_id thread);
59 		virtual	void		SuspensionHook(bool active);
60 		void				Suspend(char* label);
61 
62 	private:
63 		virtual status_t	Perform(perform_code d, void* arg);
64 
65 #if 0
66 		void*				IOBase();
67 			// deprecated API, always returns NULL
68 #endif
69 
70 		virtual void		_ReservedWindowScreen1();
71 		virtual void		_ReservedWindowScreen2();
72 		virtual void		_ReservedWindowScreen3();
73 		virtual void		_ReservedWindowScreen4();
74 
75 		// not implemented:
76 							BWindowScreen();
77 							BWindowScreen(BWindowScreen& other);
78 							BWindowScreen &operator=(BWindowScreen& other);
79 
80 		status_t			_InitData(uint32 space, uint32 attributes);
81 		void				_DisposeData();
82 
83 		status_t			_LockScreen(bool lock);
84 		status_t			_Activate();
85 		status_t			_Deactivate();
86 
87 		status_t			_SetupAccelerantHooks();
88 		void				_ResetAccelerantHooks();
89 
90 		status_t			_GetCardInfo();
91 		void				_Suspend();
92 		void				_Resume();
93 		status_t			_GetModeFromSpace(uint32 space, display_mode* mode);
94 		status_t			_InitClone();
95 		status_t			_AssertDisplayMode(display_mode* mode);
96 
97 		uint16				_reserved0;
98 		bool				_reserved1;
99 		bool				fWorkState;
100 		bool				fWindowState;
101 		bool				fActivateState;
102 		int32				fLockState;
103 		int32				fWorkspaceIndex;
104 
105 		display_mode*		fOriginalDisplayMode;
106 		display_mode*		fDisplayMode;
107 		sem_id				fDebugSem;
108 		image_id			fAddonImage;
109 		uint32				fAttributes;
110 
111 		rgb_color			fPalette[256];
112 
113 		graphics_card_info	fCardInfo;
114 		frame_buffer_info	fFrameBufferInfo;
115 
116 		char*				fDebugFrameBuffer;
117 		bool				fDebugState;
118 		bool				fDebugFirst;
119 		int32				fDebugWorkspace;
120 		int32				fDebugThreadCount;
121 		thread_id*			fDebugThreads;
122 
123 		uint32				fModeCount;
124 		display_mode*		fModeList;
125 
126 		GetAccelerantHook	fGetAccelerantHook;
127 		wait_engine_idle	fWaitEngineIdle;
128 
129 		uint32				_reserved[163];
130 };
131 
132 #endif	// _WINDOW_SCREEN_H
133