xref: /haiku/src/servers/app/ServerCursor.h (revision eea5774f46bba925156498abf9cb1a1165647bf7)
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 
20 class CursorManager;
21 
22 
23 class ServerCursor : public ServerBitmap {
24 public:
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 
55 private:
56 	friend class CursorManager;
57 
58 			BPoint				fHotSpot;
59 			team_id				fOwningTeam;
60 			uint8*				fCursorData;
61 			CursorManager*		fManager;
62 };
63 
64 
65 typedef BReference<ServerCursor> ServerCursorReference;
66 
67 
68 #endif	// SERVER_CURSOR_H
69