1/*
2 * Copyright 2006, Haiku.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Stephan A��mus <superstippi@gmx.de>
7 */
8
9#ifndef ICON_PROPERTY_H
10#define ICON_PROPERTY_H
11
12#include <GraphicsDefs.h>
13
14#include "Property.h"
15
16class IconProperty : public Property {
17 public:
18								IconProperty(uint32 identifier,
19											 const uchar* icon,
20											 uint32 width, uint32 height,
21											 color_space format,
22											 BMessage* message = NULL);
23								IconProperty(const IconProperty& other);
24								IconProperty(BMessage* archive);
25	virtual						~IconProperty();
26
27	// BArchivable interface
28	virtual	status_t			Archive(BMessage* archive,
29										bool deep = true) const;
30	static	BArchivable*		Instantiate(BMessage* archive);
31
32	// Property interface
33	virtual	Property*			Clone() const;
34
35	virtual	type_code			Type() const
36									{ return B_RGB_COLOR_TYPE; }
37
38	virtual	bool				SetValue(const char* value);
39	virtual	bool				SetValue(const Property* other);
40	virtual	void				GetValue(BString& string);
41
42	virtual	bool				InterpolateTo(const Property* other,
43											  float scale);
44	// IconProperty
45			BMessage*			Message() const
46									{ return fMessage; }
47
48			void				SetMessage(const BMessage* message);
49
50			const uchar* 		Icon() const { return fIcon; }
51			uint32 				Width() const { return fWidth; }
52			uint32 				Height() const { return fHeight; }
53			color_space 		Format() const { return fFormat; }
54 private:
55			BMessage*			fMessage;
56
57			const uchar* 		fIcon;
58			uint32				fWidth;
59			uint32				fHeight;
60			color_space			fFormat;
61};
62
63
64#endif // ICON_PROPERTY_H
65
66
67