⛏️ index : haiku.git

/*
 * Copyright 2011, Haiku.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *		Philippe Houdoin
 */
#ifndef PICTURE_VIEW_H
#define PICTURE_VIEW_H


#include <Node.h>
#include <String.h>
#include <View.h>


class BBitmap;
class BFilePanel;

const uint32	kMsgLoadImage	= 'mLIM';


class PictureView : public BView {
public:
								PictureView(float width, float height,
									const entry_ref* ref);
	virtual						~PictureView();

			bool				HasChanged();
			void				Revert();
			void				Update();
			void				Update(const entry_ref* ref);

			BBitmap*			Bitmap();
			uint32				SuggestedType();
			const char*			SuggestedMIMEType();

	virtual	void				MessageReceived(BMessage* message);
	virtual	void				Draw(BRect updateRect);
	virtual	void				MouseDown(BPoint point);
	virtual	void				KeyDown(const char* bytes, int32 numBytes);
	virtual void				WindowActivated(bool active);
	virtual	void				MakeFocus(bool focused);

private:
			void				_BeginDrag(BPoint sourcePoint);
			void				_HandleDrop(BMessage* message);
			void				_ShowPopUpMenu(BPoint screen);
			BBitmap*			_CopyPicture(uint8 alpha);

			status_t			_LoadPicture(const entry_ref* ref);
			void				_SetPicture(BBitmap* bitmap);

			BBitmap*			fPicture;
			BBitmap*			fOriginalPicture;
			BBitmap*			fDefaultPicture;
			bool				fShowingPopUpMenu;
			BRect				fPictureRect;
			uint32				fPictureType;
			BString				fPictureMIMEType;
			bool 				fFocusChanging;
			BFilePanel*			fOpenPanel;
};

#endif