From f50e7b8dc594beaaabf630f212852bb983882ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sat, 12 May 2012 13:48:54 +0200 Subject: [PATCH] Cleanup & small fixes * Style cleanup * Don't delete message in case they happen to be the passed in pointers. --- .../icon-o-matic/generic/gui/SwatchView.cpp | 164 ++++++++---------- .../icon-o-matic/generic/gui/SwatchView.h | 42 ++--- 2 files changed, 88 insertions(+), 118 deletions(-) diff --git a/src/apps/icon-o-matic/generic/gui/SwatchView.cpp b/src/apps/icon-o-matic/generic/gui/SwatchView.cpp index 304d3332f4..e65751923c 100644 --- a/src/apps/icon-o-matic/generic/gui/SwatchView.cpp +++ b/src/apps/icon-o-matic/generic/gui/SwatchView.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2006, Haiku. + * Copyright 2006-2012, Haiku. * Distributed under the terms of the MIT License. * * Authors: @@ -8,6 +8,7 @@ #include "SwatchView.h" +#include #include #include @@ -22,62 +23,35 @@ #include "support.h" #include "support_ui.h" + #define DRAG_INIT_DIST 10.0 -// constructor -SwatchView::SwatchView(const char* name, BMessage* message, - BHandler* target, rgb_color color, - float width, float height) - : BView(BRect(0.0, 0.0, width, height), name, - B_FOLLOW_NONE, B_WILL_DRAW), - fColor(color), - fTrackingStart(-1.0, -1.0), - fActive(false), - fDropInvokes(false), - fClickMessage(message), - fDroppedMessage(NULL), - fTarget(target), - fWidth(width), - fHeight(height) + +SwatchView::SwatchView(const char* name, BMessage* message, BHandler* target, + rgb_color color, float width, float height) + : + BView(BRect(0.0, 0.0, width, height), name, B_FOLLOW_NONE, B_WILL_DRAW), + fColor(color), + fTrackingStart(-1.0, -1.0), + fActive(false), + fDropInvokes(false), + fClickMessage(message), + fDroppedMessage(NULL), + fTarget(target), + fWidth(width), + fHeight(height) { SetViewColor(B_TRANSPARENT_32_BIT); SetHighColor(fColor); } -// destructor + SwatchView::~SwatchView() { delete fClickMessage; delete fDroppedMessage; } -#if LIB_LAYOUT -// layoutprefs -minimax -SwatchView::layoutprefs() -{ - if (fWidth > 6.0 && fHeight > 6.0) { - mpm.mini.x = mpm.maxi.x = fWidth; - mpm.mini.y = mpm.maxi.y = fHeight; - } else { - mpm.mini.x = 6.0; - mpm.maxi.x = 10000.0; - mpm.mini.y = 6.0; - mpm.maxi.y = 10000.0; - } - mpm.weight = 1.0; - return mpm; -} - -// layout -BRect -SwatchView::layout(BRect frame) -{ - MoveTo(frame.LeftTop()); - ResizeTo(frame.Width(), frame.Height()); - return Frame(); -} -#endif // LIB_LAYOUT inline void blend_color(rgb_color& a, const rgb_color& b, float alpha) @@ -88,7 +62,7 @@ blend_color(rgb_color& a, const rgb_color& b, float alpha) a.blue = (uint8)(b.blue * alphaInv + a.blue * alpha); } -// Draw + void SwatchView::Draw(BRect updateRect) { @@ -148,27 +122,28 @@ SwatchView::Draw(BRect updateRect) } } -// MessageReceived + void SwatchView::MessageReceived(BMessage* message) { switch (message->what) { - case B_PASTE: { + case B_PASTE: + { rgb_color color; - if (restore_color_from_message(message, - color) >= B_OK) { + if (restore_color_from_message(message, color) == B_OK) { SetColor(color); _Invoke(fDroppedMessage); } break; } + default: BView::MessageReceived(message); break; } } -// MouseDown + void SwatchView::MouseDown(BPoint where) { @@ -176,29 +151,30 @@ SwatchView::MouseDown(BPoint where) fTrackingStart = where; } -// MouseUp + void SwatchView::MouseUp(BPoint where) { - if (Bounds().Contains(where) - && Bounds().Contains(fTrackingStart)) + if (Bounds().Contains(where) && Bounds().Contains(fTrackingStart)) _Invoke(fClickMessage); + fTrackingStart.x = -1.0; fTrackingStart.y = -1.0; } -// MouseMoved + void SwatchView::MouseMoved(BPoint where, uint32 transit, - const BMessage* dragMessage) + const BMessage* dragMessage) { if (transit == B_ENTERED_VIEW) { BCursor cursor(kDropperCursor); SetViewCursor(&cursor, true); } + if (Bounds().Contains(fTrackingStart)) { - if (point_point_distance(where, fTrackingStart) - > DRAG_INIT_DIST || transit == B_EXITED_VIEW) { + if (point_point_distance(where, fTrackingStart) > DRAG_INIT_DIST + || transit == B_EXITED_VIEW) { _DragColor(); fTrackingStart.x = -1.0; fTrackingStart.y = -1.0; @@ -206,7 +182,7 @@ SwatchView::MouseMoved(BPoint where, uint32 transit, } } -// SetColor + void SwatchView::SetColor(rgb_color color) { @@ -215,63 +191,73 @@ SwatchView::SetColor(rgb_color color) Invalidate(); } -// SetClickedMessage + void SwatchView::SetClickedMessage(BMessage* message) { - delete fClickMessage; + if (message != fClickMessage) + delete fClickMessage; fClickMessage = message; } -// SetDroppedMessage + void SwatchView::SetDroppedMessage(BMessage* message) { - delete fDroppedMessage; + if (message != fDroppedMessage) + delete fDroppedMessage; fDroppedMessage = message; } -// _Invoke + void SwatchView::_Invoke(const BMessage* _message) { - if (_message) { - BHandler* target = fTarget ? fTarget - : dynamic_cast(Window()); - BLooper* looper; - if (target && (looper = target->Looper())) { - BMessage message(*_message); - message.AddPointer("be:source", (void*)this); - message.AddInt64("be:when", system_time()); - message.AddBool("begin", true); - store_color_in_message(&message, fColor); - looper->PostMessage(&message, target); - } - } + if (_message == NULL) + return; + + BHandler* target = fTarget; + if (target == NULL) + target = Window(); + + if (target == NULL) + return; + + BLooper* looper = target->Looper(); + if (looper == NULL) + return; + + BMessage message(*_message); + message.AddPointer("be:source", (void*)this); + message.AddInt64("be:when", system_time()); + message.AddBool("begin", true); + store_color_in_message(&message, fColor); + looper->PostMessage(&message, target); } -// _StrokeRect + void -SwatchView::_StrokeRect(BRect r, rgb_color leftTop, - rgb_color rightBottom) +SwatchView::_StrokeRect(BRect r, rgb_color leftTop, rgb_color rightBottom) { BeginLineArray(4); - AddLine(BPoint(r.left, r.bottom - 1), - BPoint(r.left, r.top), leftTop); - AddLine(BPoint(r.left + 1, r.top), - BPoint(r.right, r.top), leftTop); - AddLine(BPoint(r.right, r.top + 1), - BPoint(r.right, r.bottom), rightBottom); - AddLine(BPoint(r.right - 1, r.bottom), - BPoint(r.left, r.bottom), rightBottom); + + AddLine(BPoint(r.left, r.bottom - 1), BPoint(r.left, r.top), leftTop); + AddLine(BPoint(r.left + 1, r.top), BPoint(r.right, r.top), leftTop); + AddLine(BPoint(r.right, r.top + 1), BPoint(r.right, r.bottom), + rightBottom); + AddLine(BPoint(r.right - 1, r.bottom), BPoint(r.left, r.bottom), + rightBottom); + EndLineArray(); } -// _DragColor + void SwatchView::_DragColor() { - BBitmap *bitmap = new BBitmap(BRect(0.0, 0.0, 15.0, 15.0), B_RGB32); + BBitmap* bitmap = new(std::nothrow) BBitmap(BRect(0.0, 0.0, 15.0, 15.0), + B_RGB32); + BMessage message = make_color_drop_message(fColor, bitmap); DragMessage(&message, bitmap, B_OP_ALPHA, BPoint(9.0, 9.0)); diff --git a/src/apps/icon-o-matic/generic/gui/SwatchView.h b/src/apps/icon-o-matic/generic/gui/SwatchView.h index c6393acbdd..a8ac1b81f8 100644 --- a/src/apps/icon-o-matic/generic/gui/SwatchView.h +++ b/src/apps/icon-o-matic/generic/gui/SwatchView.h @@ -1,63 +1,47 @@ /* - * Copyright 2006, Haiku. + * Copyright 2006-2012, Haiku. * Distributed under the terms of the MIT License. * * Authors: * Stephan Aßmus */ - #ifndef SWATCH_VIEW_H #define SWATCH_VIEW_H #include -#if LIB_LAYOUT -#include -#endif -class SwatchView : - #if LIB_LAYOUT - public MView, - #endif - public BView { - public: - SwatchView(const char* name, - BMessage* message, - BHandler* target, - rgb_color color, - float width = 24.0, - float height = 24.0); +class SwatchView : public BView { +public: + SwatchView(const char* name, BMessage* message, + BHandler* target, rgb_color color, + float width = 24.0, float height = 24.0); virtual ~SwatchView(); - #if LIB_LAYOUT - // MView - virtual minimax layoutprefs(); - virtual BRect layout(BRect frame); - #endif - - // BView + // BView virtual void Draw(BRect updateRect); virtual void MessageReceived(BMessage* message); virtual void MouseDown(BPoint where); virtual void MouseUp(BPoint where); virtual void MouseMoved(BPoint where, uint32 transit, - const BMessage* dragMessage); + const BMessage* dragMessage); - // SwatchView + // SwatchView void SetColor(rgb_color color); - rgb_color Color() const + inline rgb_color Color() const { return fColor; } void SetClickedMessage(BMessage* message); void SetDroppedMessage(BMessage* message); - private: +private: void _Invoke(const BMessage* message); void _StrokeRect(BRect frame, rgb_color leftTop, - rgb_color rightBottom); + rgb_color rightBottom); void _DragColor(); +private: rgb_color fColor; BPoint fTrackingStart; bool fActive;