1/* 2 * Copyright 2013-2014, Stephan A��mus <superstippi@gmx.de>. 3 * Copyright 2020, Andrew Lindesay <apl@lindesay.co.nz> 4 * All rights reserved. Distributed under the terms of the MIT License. 5 */ 6#ifndef SHARED_BITMAP_H 7#define SHARED_BITMAP_H 8 9 10#include <Referenceable.h> 11#include <String.h> 12 13#include "HaikuDepotConstants.h" 14 15 16class BBitmap; 17class BDataIO; 18class BPositionIO; 19 20 21class SharedBitmap : public BReferenceable { 22public: 23 SharedBitmap(BBitmap* bitmap); 24 SharedBitmap(int32 resourceID); 25 SharedBitmap(const char* mimeType); 26 SharedBitmap(BPositionIO& data); 27 SharedBitmap(BDataIO& data, size_t size); 28 ~SharedBitmap(); 29 30 const BBitmap* Bitmap(BitmapSize which); 31 32private: 33 void _InitWithData(BDataIO& data, size_t size); 34 BBitmap* _CreateBitmapFromResource(int32 size) const; 35 BBitmap* _CreateBitmapFromBuffer(int32 size) const; 36 BBitmap* _CreateBitmapFromMimeType(int32 size) const; 37 38 BBitmap* _LoadBitmapFromBuffer(const void* buffer, 39 size_t dataSize) const; 40 BBitmap* _LoadArchivedBitmapFromStream( 41 BPositionIO& stream) const; 42 BBitmap* _LoadTranslatorBitmapFromStream( 43 BPositionIO& stream) const; 44 BBitmap* _LoadIconFromBuffer(const void* buffer, 45 size_t dataSize, int32 size) const; 46 47private: 48 int32 fResourceID; 49 uint8* fBuffer; 50 off_t fSize; 51 BString fMimeType; 52 BBitmap* fBitmap[4]; 53}; 54 55 56typedef BReference<SharedBitmap> BitmapRef; 57 58 59#endif // SHARED_BITMAP_H 60