* Copyright 2006-2007, Haiku, Inc.
* Distributed under the terms of the MIT License.
*
* Authors:
* Axel DΓΆrfler, axeld@pinc-software.de
*/
#ifndef OVERLAY_H
#define OVERLAY_H
#include <InterfaceDefs.h>
#include <video_overlay.h>
class HWInterface;
class ServerBitmap;
struct overlay_client_data;
class Overlay {
public:
Overlay(HWInterface& interface, ServerBitmap* bitmap,
overlay_token token);
~Overlay();
status_t InitCheck() const;
status_t Suspend(ServerBitmap* bitmap, bool needTemporary);
status_t Resume(ServerBitmap* bitmap);
void SetClientData(overlay_client_data* clientData);
void SetFlags(uint32 flags);
void TakeOverToken(Overlay* other);
const overlay_buffer* OverlayBuffer() const;
overlay_client_data* ClientData() const;
overlay_token OverlayToken() const;
void SetColorSpace(uint32 colorSpace);
const overlay_window* OverlayWindow() const
{ return &fWindow; }
const overlay_view* OverlayView() const
{ return &fView; }
sem_id Semaphore() const
{ return fSemaphore; }
const rgb_color& Color() const
{ return fColor; }
void Configure(const BRect& source, const BRect& destination);
void Hide();
private:
void _FreeBuffer();
status_t _AllocateBuffer(ServerBitmap* bitmap);
HWInterface& fHWInterface;
const overlay_buffer* fOverlayBuffer;
overlay_client_data* fClientData;
overlay_token fOverlayToken;
overlay_view fView;
overlay_window fWindow;
sem_id fSemaphore;
rgb_color fColor;
};
#endif