xref: /haiku/src/servers/app/BitmapManager.h (revision 25a7b01d15612846f332751841da3579db313082)
116ed1e1dSAxel Dörfler /*
20eed9183SAxel Dörfler  * Copyright 2001-2009, Haiku.
316ed1e1dSAxel Dörfler  * Distributed under the terms of the MIT License.
416ed1e1dSAxel Dörfler  *
516ed1e1dSAxel Dörfler  * Authors:
616ed1e1dSAxel Dörfler  *		DarkWyrm <bpmagic@columbus.rr.com>
716ed1e1dSAxel Dörfler  */
816ed1e1dSAxel Dörfler #ifndef BITMAP_MANAGER_H
916ed1e1dSAxel Dörfler #define BITMAP_MANAGER_H
1016ed1e1dSAxel Dörfler 
1116ed1e1dSAxel Dörfler 
1216ed1e1dSAxel Dörfler #include <GraphicsDefs.h>
1316ed1e1dSAxel Dörfler #include <List.h>
1416ed1e1dSAxel Dörfler #include <Locker.h>
1516ed1e1dSAxel Dörfler #include <OS.h>
1616ed1e1dSAxel Dörfler #include <Rect.h>
1716ed1e1dSAxel Dörfler 
180eed9183SAxel Dörfler 
1916ed1e1dSAxel Dörfler class ClientMemoryAllocator;
2037b502f2SAxel Dörfler class HWInterface;
2116ed1e1dSAxel Dörfler class ServerBitmap;
2216ed1e1dSAxel Dörfler 
230eed9183SAxel Dörfler 
2416ed1e1dSAxel Dörfler class BitmapManager {
2516ed1e1dSAxel Dörfler public:
2616ed1e1dSAxel Dörfler 								BitmapManager();
2716ed1e1dSAxel Dörfler 	virtual						~BitmapManager();
2816ed1e1dSAxel Dörfler 
2937b502f2SAxel Dörfler 			ServerBitmap*		CreateBitmap(ClientMemoryAllocator* allocator,
3037b502f2SAxel Dörfler 									HWInterface& hwInterface, BRect bounds,
31dcd70f0eSStephan Aßmus 									color_space space, uint32 flags,
32dcd70f0eSStephan Aßmus 									int32 bytesPerRow = -1,
330eed9183SAxel Dörfler 									int32 screen = B_MAIN_SCREEN_ID.id,
3421c8c925SAxel Dörfler 									uint8* _allocationFlags = NULL);
354b0459b2SAxel Dörfler 
36*577f5876Sczeidler 			ServerBitmap*		CloneFromClient(area_id clientArea,
37*577f5876Sczeidler 									int32 areaOffset, BRect bounds,
38*577f5876Sczeidler 									color_space space, uint32 flags,
39*577f5876Sczeidler 									int32 bytesPerRow = -1);
40*577f5876Sczeidler 
414b0459b2SAxel Dörfler 			void				BitmapRemoved(ServerBitmap* bitmap);
4216ed1e1dSAxel Dörfler 
43117b384eSAxel Dörfler 			void				SuspendOverlays();
44117b384eSAxel Dörfler 			void				ResumeOverlays();
45117b384eSAxel Dörfler 
4616ed1e1dSAxel Dörfler protected:
4716ed1e1dSAxel Dörfler 			BList				fBitmapList;
48117b384eSAxel Dörfler 			BList				fOverlays;
4916ed1e1dSAxel Dörfler 			BLocker				fLock;
5016ed1e1dSAxel Dörfler };
5116ed1e1dSAxel Dörfler 
5216ed1e1dSAxel Dörfler extern BitmapManager* gBitmapManager;
5316ed1e1dSAxel Dörfler 
5416ed1e1dSAxel Dörfler #endif	/* BITMAP_MANAGER_H */
55