1/*
2 * Copyright 2006-2007, 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 <InterfaceDefs.h>
13
14#include <video_overlay.h>
15
16
17class HWInterface;
18class ServerBitmap;
19struct overlay_client_data;
20
21
22class Overlay {
23	public:
24		Overlay(HWInterface& interface, ServerBitmap* bitmap,
25			overlay_token token);
26		~Overlay();
27
28		status_t InitCheck() const;
29
30		status_t Suspend(ServerBitmap* bitmap, bool needTemporary);
31		status_t Resume(ServerBitmap* bitmap);
32
33		void SetClientData(overlay_client_data* clientData);
34		void SetFlags(uint32 flags);
35		void TakeOverToken(Overlay* other);
36
37		const overlay_buffer* OverlayBuffer() const;
38		overlay_client_data* ClientData() const;
39		overlay_token OverlayToken() const;
40
41		void SetColorSpace(uint32 colorSpace);
42
43		const overlay_window* OverlayWindow() const
44			{ return &fWindow; }
45		const overlay_view* OverlayView() const
46			{ return &fView; }
47
48		sem_id Semaphore() const
49			{ return fSemaphore; }
50
51		const rgb_color& Color() const
52			{ return fColor; }
53
54		void Configure(const BRect& source, const BRect& destination);
55		void Hide();
56
57	private:
58		void _FreeBuffer();
59		status_t _AllocateBuffer(ServerBitmap* bitmap);
60
61		HWInterface&			fHWInterface;
62		const overlay_buffer*	fOverlayBuffer;
63		overlay_client_data*	fClientData;
64		overlay_token			fOverlayToken;
65		overlay_view			fView;
66		overlay_window			fWindow;
67		sem_id					fSemaphore;
68		rgb_color				fColor;
69};
70
71#endif	// OVERLAY_H
72