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