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