xref: /haiku/headers/os/translation/BitmapStream.h (revision 8780d2073d7a38e12283b707e17fb1c02cfd0ee6)
1*8780d207SAxel Dörfler /*
2*8780d207SAxel Dörfler  * Copyright 2009, Haiku Inc. All Rights Reserved.
3*8780d207SAxel Dörfler  * Distributed under the terms of the MIT License.
4*8780d207SAxel Dörfler  */
5*8780d207SAxel Dörfler #ifndef _BITMAP_STREAM_H
652a38012Sejakowatz #define _BITMAP_STREAM_H
752a38012Sejakowatz 
8*8780d207SAxel Dörfler 
952a38012Sejakowatz #include <ByteOrder.h>
10*8780d207SAxel Dörfler #include <DataIO.h>
11*8780d207SAxel Dörfler #include <TranslationDefs.h>
12*8780d207SAxel Dörfler #include <TranslatorFormats.h>
13*8780d207SAxel Dörfler 
1452a38012Sejakowatz 
1552a38012Sejakowatz class BBitmap;
1652a38012Sejakowatz 
17*8780d207SAxel Dörfler 
1852a38012Sejakowatz class BBitmapStream : public BPositionIO {
1952a38012Sejakowatz public:
2052a38012Sejakowatz 								BBitmapStream(BBitmap* bitmap = NULL);
21*8780d207SAxel Dörfler 	virtual						~BBitmapStream();
2252a38012Sejakowatz 
23*8780d207SAxel Dörfler 	virtual	ssize_t				ReadAt(off_t offset, void* buffer, size_t size);
24*8780d207SAxel Dörfler 	virtual	ssize_t				WriteAt(off_t offset, const void* buffer,
25*8780d207SAxel Dörfler 									size_t size);
26*8780d207SAxel Dörfler 	virtual	off_t				Seek(off_t position, uint32 seekMode);
27*8780d207SAxel Dörfler 	virtual	off_t				Position() const;
28*8780d207SAxel Dörfler 	virtual	off_t				Size() const;
29*8780d207SAxel Dörfler 	virtual	status_t			SetSize(off_t size);
3052a38012Sejakowatz 
31*8780d207SAxel Dörfler 			status_t			DetachBitmap(BBitmap** _bitmap);
3252a38012Sejakowatz 
33*8780d207SAxel Dörfler protected:
34*8780d207SAxel Dörfler 			void				SwapHeader(const TranslatorBitmap* source,
35*8780d207SAxel Dörfler 									TranslatorBitmap* destination);
3652a38012Sejakowatz 
3752a38012Sejakowatz protected:
3852a38012Sejakowatz 			TranslatorBitmap	fHeader;
3952a38012Sejakowatz 			BBitmap*			fBitmap;
4052a38012Sejakowatz 			size_t				fPosition;
4152a38012Sejakowatz 			size_t				fSize;
4252a38012Sejakowatz 			bool				fDetached;
4352a38012Sejakowatz 
4452a38012Sejakowatz private:
4552a38012Sejakowatz 	virtual	void _ReservedBitmapStream1();
4652a38012Sejakowatz 	virtual void _ReservedBitmapStream2();
47*8780d207SAxel Dörfler 
48*8780d207SAxel Dörfler private:
49*8780d207SAxel Dörfler 			TranslatorBitmap*	fBigEndianHeader;
50*8780d207SAxel Dörfler 			long				_reserved[5];
5152a38012Sejakowatz };
5252a38012Sejakowatz 
5352a38012Sejakowatz 
54*8780d207SAxel Dörfler #endif	// _BITMAP_STREAM_H
55