xref: /haiku/src/servers/app/drawing/Overlay.h (revision 0e50eab75e25d0d82090e22dbff766dfaa6f5e86)
1 /*
2  * Copyright 2006, Haiku, Inc.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Axel Dörfler, axeld@pinc-software.de
7  */
8 #ifndef OVERLAY_H
9 #define OVERLAY_H
10 
11 
12 #include "RGBColor.h"
13 
14 #include <video_overlay.h>
15 
16 
17 class HWInterface;
18 struct overlay_client_data;
19 
20 
21 class Overlay {
22 	public:
23 		Overlay(HWInterface& interface);
24 		~Overlay();
25 
26 		status_t InitCheck() const;
27 
28 		void SetOverlayData(const overlay_buffer* overlayBuffer,
29 			overlay_token token, overlay_client_data* clientData);
30 		void SetFlags(uint32 flags);
31 		void TakeOverToken(Overlay* other);
32 
33 		const overlay_buffer* OverlayBuffer() const;
34 		overlay_client_data* ClientData() const;
35 		overlay_token OverlayToken() const;
36 
37 		void SetColorSpace(uint32 colorSpace);
38 
39 		const overlay_window* OverlayWindow() const
40 			{ return &fWindow; }
41 		const overlay_view* OverlayView() const
42 			{ return &fView; }
43 
44 		sem_id Semaphore() const
45 			{ return fSemaphore; }
46 
47 		const RGBColor& Color() const
48 			{ return fColor; }
49 
50 		void Configure(const BRect& source, const BRect& destination);
51 		void Hide();
52 
53 	private:
54 		HWInterface&			fHWInterface;
55 		const overlay_buffer*	fOverlayBuffer;
56 		overlay_client_data*	fClientData;
57 		overlay_token			fOverlayToken;
58 		overlay_view			fView;
59 		overlay_window			fWindow;
60 		sem_id					fSemaphore;
61 		RGBColor				fColor;
62 };
63 
64 #endif	// OVERLAY_H
65