xref: /haiku/src/apps/icon-o-matic/generic/gui/SwatchView.h (revision 128277c969aa806add78941cd2972754c37a1572)
1*128277c9SStephan Aßmus /*
2*128277c9SStephan Aßmus  * Copyright 2006, Haiku.
3*128277c9SStephan Aßmus  * Distributed under the terms of the MIT License.
4*128277c9SStephan Aßmus  *
5*128277c9SStephan Aßmus  * Authors:
6*128277c9SStephan Aßmus  *		Stephan Aßmus <superstippi@gmx.de>
7*128277c9SStephan Aßmus  */
8*128277c9SStephan Aßmus 
9*128277c9SStephan Aßmus #ifndef SWATCH_VIEW_H
10*128277c9SStephan Aßmus #define SWATCH_VIEW_H
11*128277c9SStephan Aßmus 
12*128277c9SStephan Aßmus #include <View.h>
13*128277c9SStephan Aßmus 
14*128277c9SStephan Aßmus #include <layout.h>
15*128277c9SStephan Aßmus 
16*128277c9SStephan Aßmus enum {
17*128277c9SStephan Aßmus 	MSG_COLOR_DROP				= 'PSTE',
18*128277c9SStephan Aßmus };
19*128277c9SStephan Aßmus 
20*128277c9SStephan Aßmus class SwatchView : public MView, public BView {
21*128277c9SStephan Aßmus  public:
22*128277c9SStephan Aßmus 								SwatchView(const char* name,
23*128277c9SStephan Aßmus 										   BMessage* message,
24*128277c9SStephan Aßmus 										   BHandler* target,
25*128277c9SStephan Aßmus 										   rgb_color color,
26*128277c9SStephan Aßmus 										   float width = 24.0,
27*128277c9SStephan Aßmus 										   float height = 24.0);
28*128277c9SStephan Aßmus 	virtual						~SwatchView();
29*128277c9SStephan Aßmus 
30*128277c9SStephan Aßmus 								// MView
31*128277c9SStephan Aßmus 	virtual	minimax				layoutprefs();
32*128277c9SStephan Aßmus 	virtual	BRect				layout(BRect frame);
33*128277c9SStephan Aßmus 
34*128277c9SStephan Aßmus 								// BView
35*128277c9SStephan Aßmus 	virtual	void				Draw(BRect updateRect);
36*128277c9SStephan Aßmus 	virtual	void				MessageReceived(BMessage* message);
37*128277c9SStephan Aßmus 
38*128277c9SStephan Aßmus 	virtual	void				MouseDown(BPoint where);
39*128277c9SStephan Aßmus 	virtual	void				MouseUp(BPoint where);
40*128277c9SStephan Aßmus 	virtual	void				MouseMoved(BPoint where, uint32 transit,
41*128277c9SStephan Aßmus 										   const BMessage* dragMessage);
42*128277c9SStephan Aßmus 
43*128277c9SStephan Aßmus 								// SwatchView
44*128277c9SStephan Aßmus 			void				SetColor(rgb_color color);
45*128277c9SStephan Aßmus 			rgb_color			Color() const
46*128277c9SStephan Aßmus 									{ return fColor; }
47*128277c9SStephan Aßmus 
48*128277c9SStephan Aßmus 			void				SetClickedMessage(BMessage* message);
49*128277c9SStephan Aßmus 			void				SetDroppedMessage(BMessage* message);
50*128277c9SStephan Aßmus 
51*128277c9SStephan Aßmus  private:
52*128277c9SStephan Aßmus 			void				_Invoke(const BMessage* message);
53*128277c9SStephan Aßmus 			void				_StrokeRect(BRect frame, rgb_color leftTop,
54*128277c9SStephan Aßmus 										   rgb_color rightBottom);
55*128277c9SStephan Aßmus 			void				_DragColor();
56*128277c9SStephan Aßmus 
57*128277c9SStephan Aßmus 			rgb_color			fColor;
58*128277c9SStephan Aßmus 			BPoint				fTrackingStart;
59*128277c9SStephan Aßmus 			bool				fActive;
60*128277c9SStephan Aßmus 			bool				fDropInvokes;
61*128277c9SStephan Aßmus 
62*128277c9SStephan Aßmus 			BMessage*			fClickMessage;
63*128277c9SStephan Aßmus 			BMessage*			fDroppedMessage;
64*128277c9SStephan Aßmus 			BHandler*			fTarget;
65*128277c9SStephan Aßmus 
66*128277c9SStephan Aßmus 			float				fWidth;
67*128277c9SStephan Aßmus 			float				fHeight;
68*128277c9SStephan Aßmus };
69*128277c9SStephan Aßmus 
70*128277c9SStephan Aßmus #endif // SWATCH_VIEW_H
71