xref: /haiku/src/apps/icon-o-matic/generic/gui/SwatchView.h (revision f50e7b8dc594beaaabf630f212852bb983882ddd)
1128277c9SStephan Aßmus /*
2*f50e7b8dSStephan Aßmus  * Copyright 2006-2012, Haiku.
3128277c9SStephan Aßmus  * Distributed under the terms of the MIT License.
4128277c9SStephan Aßmus  *
5128277c9SStephan Aßmus  * Authors:
6128277c9SStephan Aßmus  *		Stephan Aßmus <superstippi@gmx.de>
7128277c9SStephan Aßmus  */
8128277c9SStephan Aßmus #ifndef SWATCH_VIEW_H
9128277c9SStephan Aßmus #define SWATCH_VIEW_H
10128277c9SStephan Aßmus 
11128277c9SStephan Aßmus #include <View.h>
12128277c9SStephan Aßmus 
13128277c9SStephan Aßmus 
14*f50e7b8dSStephan Aßmus class SwatchView : public BView {
15128277c9SStephan Aßmus public:
16*f50e7b8dSStephan Aßmus 								SwatchView(const char* name, BMessage* message,
17*f50e7b8dSStephan Aßmus 									BHandler* target, rgb_color color,
18*f50e7b8dSStephan Aßmus 									float width = 24.0, float height = 24.0);
19128277c9SStephan Aßmus 	virtual						~SwatchView();
20128277c9SStephan Aßmus 
21128277c9SStephan Aßmus 	// BView
22128277c9SStephan Aßmus 	virtual	void				Draw(BRect updateRect);
23128277c9SStephan Aßmus 	virtual	void				MessageReceived(BMessage* message);
24128277c9SStephan Aßmus 
25128277c9SStephan Aßmus 	virtual	void				MouseDown(BPoint where);
26128277c9SStephan Aßmus 	virtual	void				MouseUp(BPoint where);
27128277c9SStephan Aßmus 	virtual	void				MouseMoved(BPoint where, uint32 transit,
28128277c9SStephan Aßmus 									const BMessage* dragMessage);
29128277c9SStephan Aßmus 
30128277c9SStephan Aßmus 	// SwatchView
31128277c9SStephan Aßmus 			void				SetColor(rgb_color color);
32*f50e7b8dSStephan Aßmus 	inline	rgb_color			Color() const
33128277c9SStephan Aßmus 									{ return fColor; }
34128277c9SStephan Aßmus 
35128277c9SStephan Aßmus 			void				SetClickedMessage(BMessage* message);
36128277c9SStephan Aßmus 			void				SetDroppedMessage(BMessage* message);
37128277c9SStephan Aßmus 
38128277c9SStephan Aßmus private:
39128277c9SStephan Aßmus 			void				_Invoke(const BMessage* message);
40128277c9SStephan Aßmus 			void				_StrokeRect(BRect frame, rgb_color leftTop,
41128277c9SStephan Aßmus 									rgb_color rightBottom);
42128277c9SStephan Aßmus 			void				_DragColor();
43128277c9SStephan Aßmus 
44*f50e7b8dSStephan Aßmus private:
45128277c9SStephan Aßmus 			rgb_color			fColor;
46128277c9SStephan Aßmus 			BPoint				fTrackingStart;
47128277c9SStephan Aßmus 			bool				fActive;
48128277c9SStephan Aßmus 			bool				fDropInvokes;
49128277c9SStephan Aßmus 
50128277c9SStephan Aßmus 			BMessage*			fClickMessage;
51128277c9SStephan Aßmus 			BMessage*			fDroppedMessage;
52128277c9SStephan Aßmus 			BHandler*			fTarget;
53128277c9SStephan Aßmus 
54128277c9SStephan Aßmus 			float				fWidth;
55128277c9SStephan Aßmus 			float				fHeight;
56128277c9SStephan Aßmus };
57128277c9SStephan Aßmus 
58128277c9SStephan Aßmus #endif // SWATCH_VIEW_H
59