1/*
2 * Copyright 2001-2009, Haiku.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		DarkWyrm <bpmagic@columbus.rr.com>
7 *		Stephan A��mus <superstippi@gmx.de>
8 *		Axel D��rfler, axeld@pinc-software.de
9 */
10#ifndef SERVER_CURSOR_H
11#define SERVER_CURSOR_H
12
13
14#include "ServerBitmap.h"
15
16#include <Point.h>
17#include <String.h>
18
19
20class CursorManager;
21
22
23class ServerCursor : public ServerBitmap {
24public:
25								ServerCursor(BRect r, color_space space,
26									int32 flags, BPoint hotspot,
27									int32 bytesPerRow = -1,
28									screen_id screen = B_MAIN_SCREEN_ID);
29								ServerCursor(const uint8* cursorDataFromR5);
30								ServerCursor(const uint8* alreadyPaddedData,
31									uint32 width, uint32 height,
32									color_space format);
33								ServerCursor(const ServerCursor* cursor);
34
35	virtual						~ServerCursor();
36
37	//! Returns the cursor's hot spot
38			void				SetHotSpot(BPoint pt);
39			BPoint				GetHotSpot() const
40									{ return fHotSpot; }
41
42			void				SetOwningTeam(team_id tid)
43									{ fOwningTeam = tid; }
44			team_id				OwningTeam() const
45									{ return fOwningTeam; }
46
47			int32				Token() const
48									{ return fToken; }
49
50			void				AttachedToManager(CursorManager* manager);
51
52			const uint8*		CursorData() const
53									{ return fCursorData; }
54
55protected:
56	virtual	void				LastReferenceReleased();
57
58private:
59	friend class CursorManager;
60
61			BPoint				fHotSpot;
62			team_id				fOwningTeam;
63			uint8*				fCursorData;
64			CursorManager*		fManager;
65};
66
67
68typedef BReference<ServerCursor> ServerCursorReference;
69
70
71#endif	// SERVER_CURSOR_H
72