xref: /haiku/src/servers/app/BitmapManager.h (revision 7ee53ed3bd2222305c93a4959f8c587c373ed97c)
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  */
8 #ifndef BITMAP_MANAGER_H
9 #define BITMAP_MANAGER_H
10 
11 
12 #include <GraphicsDefs.h>
13 #include <List.h>
14 #include <Locker.h>
15 #include <OS.h>
16 #include <Rect.h>
17 
18 
19 class ClientMemoryAllocator;
20 class HWInterface;
21 class ServerBitmap;
22 
23 
24 class BitmapManager {
25 public:
26 								BitmapManager();
27 	virtual						~BitmapManager();
28 
29 			ServerBitmap*		CreateBitmap(ClientMemoryAllocator* allocator,
30 									HWInterface& hwInterface, BRect bounds,
31 									color_space space, uint32 flags,
32 									int32 bytesPerRow = -1,
33 									int32 screen = B_MAIN_SCREEN_ID.id,
34 									uint8* _allocationFlags = NULL);
35 
36 			ServerBitmap*		CloneFromClient(area_id clientArea,
37 									int32 areaOffset, BRect bounds,
38 									color_space space, uint32 flags,
39 									int32 bytesPerRow = -1);
40 
41 			void				BitmapRemoved(ServerBitmap* bitmap);
42 
43 			void				SuspendOverlays();
44 			void				ResumeOverlays();
45 
46 protected:
47 			BList				fBitmapList;
48 			BList				fOverlays;
49 			BLocker				fLock;
50 };
51 
52 extern BitmapManager* gBitmapManager;
53 
54 #endif	/* BITMAP_MANAGER_H */
55