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