From e57995449d5e5a8ed659229d98274bea0d824cef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Fri, 23 Jun 2006 23:14:12 +0000 Subject: [PATCH] beginning to check up on gui components: * added a group of controls to access and manipulate colors (incomplete) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17917 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/icon-o-matic/CanvasView.cpp | 2 +- src/apps/icon-o-matic/IconEditorApp.cpp | 8 -- src/apps/icon-o-matic/Jamfile | 5 + src/apps/icon-o-matic/MainWindow.cpp | 12 ++- src/apps/icon-o-matic/MainWindow.h | 2 + .../icon-o-matic/generic/gui/SwatchView.cpp | 2 + .../icon-o-matic/generic/gui/SwatchView.h | 14 ++- .../gui/panel/color_picker/ColorField.h | 2 - .../gui/panel/color_picker/ColorPickerDefs.h | 6 -- .../panel/color_picker/ColorPickerPanel.cpp | 2 - .../gui/panel/color_picker/ColorPickerView.h | 2 - .../gui/panel/color_picker/ColorSlider.h | 2 - .../panel/color_picker => support}/rgb_hsv.h | 0 src/apps/icon-o-matic/gui/StyleView.cpp | 20 ++++ src/apps/icon-o-matic/gui/StyleView.h | 22 +++++ src/apps/icon-o-matic/gui/SwatchGroup.cpp | 99 +++++++++++++++++++ src/apps/icon-o-matic/gui/SwatchGroup.h | 35 +++++++ 17 files changed, 206 insertions(+), 29 deletions(-) delete mode 100644 src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerDefs.h rename src/apps/icon-o-matic/generic/{gui/panel/color_picker => support}/rgb_hsv.h (100%) create mode 100644 src/apps/icon-o-matic/gui/StyleView.cpp create mode 100644 src/apps/icon-o-matic/gui/StyleView.h create mode 100644 src/apps/icon-o-matic/gui/SwatchGroup.cpp create mode 100644 src/apps/icon-o-matic/gui/SwatchGroup.h diff --git a/src/apps/icon-o-matic/CanvasView.cpp b/src/apps/icon-o-matic/CanvasView.cpp index 3fbd2e1fa5..279fab3ddc 100644 --- a/src/apps/icon-o-matic/CanvasView.cpp +++ b/src/apps/icon-o-matic/CanvasView.cpp @@ -23,7 +23,7 @@ CanvasView::CanvasView(BRect frame) fBitmap(new BBitmap(BRect(0, 0, 63, 63), 0, B_RGB32)), fIcon(NULL), fRenderer(new IconRenderer(fBitmap)), - fDirtyIconArea(LONG_MAX, LONG_MAX, LONG_MIN, LONG_MIN), + fDirtyIconArea(fBitmap->Bounds()), fCanvasOrigin(50.0, 50.0), fZoomLevel(8.0), diff --git a/src/apps/icon-o-matic/IconEditorApp.cpp b/src/apps/icon-o-matic/IconEditorApp.cpp index 214889d0dc..548f8049a3 100644 --- a/src/apps/icon-o-matic/IconEditorApp.cpp +++ b/src/apps/icon-o-matic/IconEditorApp.cpp @@ -15,9 +15,6 @@ #include "Document.h" #include "MainWindow.h" -// testing: -#include "ColorPickerPanel.h" - using std::nothrow; // constructor @@ -71,11 +68,6 @@ IconEditorApp::ReadyToRun() { fMainWindow = new MainWindow(this, fDocument); fMainWindow->Show(); - - ColorPickerPanel* panel = new ColorPickerPanel( - BRect(80, 80, 200, 200), - (rgb_color){ 100, 200, 150, 255 }); - panel->Show(); } diff --git a/src/apps/icon-o-matic/Jamfile b/src/apps/icon-o-matic/Jamfile index 72b1850ff5..62719e3aa5 100644 --- a/src/apps/icon-o-matic/Jamfile +++ b/src/apps/icon-o-matic/Jamfile @@ -17,6 +17,7 @@ local sourceDirs = generic/listener generic/selection generic/support + gui gradient shape shape/commands @@ -43,6 +44,8 @@ Application Icon-O-Matic : Selectable.cpp Selection.cpp # generic/gui + Group.cpp + SwatchView.cpp # generic/gui/panel Panel.cpp # generic/gui/panel/color_picker @@ -66,6 +69,8 @@ Application Icon-O-Matic : RWLocker.cpp support.cpp support_ui.cpp + # gui + SwatchGroup.cpp # gradient Gradient.cpp # shape diff --git a/src/apps/icon-o-matic/MainWindow.cpp b/src/apps/icon-o-matic/MainWindow.cpp index a65dd3f56e..5b0ee58534 100644 --- a/src/apps/icon-o-matic/MainWindow.cpp +++ b/src/apps/icon-o-matic/MainWindow.cpp @@ -15,6 +15,7 @@ #include "Document.h" #include "CanvasView.h" #include "IconEditorApp.h" +#include "SwatchGroup.h" // TODO: just for testing #include "AffineTransformer.h" @@ -148,8 +149,17 @@ MainWindow::_Init() BView* MainWindow::_CreateGUI(BRect bounds) { + BView* bg = new BView(bounds, "bg", B_FOLLOW_ALL, 0); + bg->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + + fSwatchGroup = new SwatchGroup(BRect(0, 0, 100, 100)); + bounds.top = fSwatchGroup->Frame().bottom + 1; + fCanvasView = new CanvasView(bounds); - return fCanvasView; + bg->AddChild(fSwatchGroup); + bg->AddChild(fCanvasView); + + return bg; } diff --git a/src/apps/icon-o-matic/MainWindow.h b/src/apps/icon-o-matic/MainWindow.h index 6b43951e7c..f8a35fbc74 100644 --- a/src/apps/icon-o-matic/MainWindow.h +++ b/src/apps/icon-o-matic/MainWindow.h @@ -14,6 +14,7 @@ class CanvasView; class Document; class IconEditorApp; +class SwatchGroup; class ViewState; class MainWindow : public BWindow { @@ -34,6 +35,7 @@ class MainWindow : public BWindow { Document* fDocument; CanvasView* fCanvasView; + SwatchGroup* fSwatchGroup; // TODO: for testing only... ViewState* fState; }; diff --git a/src/apps/icon-o-matic/generic/gui/SwatchView.cpp b/src/apps/icon-o-matic/generic/gui/SwatchView.cpp index 84bf22b174..a0dc391bf3 100644 --- a/src/apps/icon-o-matic/generic/gui/SwatchView.cpp +++ b/src/apps/icon-o-matic/generic/gui/SwatchView.cpp @@ -50,6 +50,7 @@ SwatchView::~SwatchView() delete fDroppedMessage; } +#if LIB_LAYOUT // layoutprefs minimax SwatchView::layoutprefs() @@ -75,6 +76,7 @@ SwatchView::layout(BRect frame) ResizeTo(frame.Width(), frame.Height()); return Frame(); } +#endif // LIB_LAYOUT // Draw void diff --git a/src/apps/icon-o-matic/generic/gui/SwatchView.h b/src/apps/icon-o-matic/generic/gui/SwatchView.h index 67fcca0672..c6393acbdd 100644 --- a/src/apps/icon-o-matic/generic/gui/SwatchView.h +++ b/src/apps/icon-o-matic/generic/gui/SwatchView.h @@ -11,13 +11,15 @@ #include +#if LIB_LAYOUT #include +#endif -enum { - MSG_COLOR_DROP = 'PSTE', -}; - -class SwatchView : public MView, public BView { +class SwatchView : + #if LIB_LAYOUT + public MView, + #endif + public BView { public: SwatchView(const char* name, BMessage* message, @@ -27,9 +29,11 @@ class SwatchView : public MView, public BView { float height = 24.0); virtual ~SwatchView(); + #if LIB_LAYOUT // MView virtual minimax layoutprefs(); virtual BRect layout(BRect frame); + #endif // BView virtual void Draw(BRect updateRect); diff --git a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorField.h b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorField.h index 3fdb5f26df..1532f19fd3 100644 --- a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorField.h +++ b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorField.h @@ -9,8 +9,6 @@ #ifndef _COLOR_FIELD_H #define _COLOR_FIELD_H -#include "ColorPickerDefs.h" - #include #if LIB_LAYOUT diff --git a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerDefs.h b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerDefs.h deleted file mode 100644 index 339c420dcd..0000000000 --- a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerDefs.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef COLOR_PICKER_COMMON_H -#define COLOR_PICKER_COMMON_H - -#define LIB_LAYOUT 0 - -#endif // COLOR_PICKER_COMMON_H diff --git a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerPanel.cpp b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerPanel.cpp index 49691e4fae..2384af4e23 100644 --- a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerPanel.cpp +++ b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerPanel.cpp @@ -10,8 +10,6 @@ #include -#include "ColorPickerDefs.h" - #if LIB_LAYOUT # include # include diff --git a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerView.h b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerView.h index c79ce0ad42..ac28359012 100644 --- a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerView.h +++ b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorPickerView.h @@ -9,8 +9,6 @@ #ifndef COLOR_PICKER_VIEW_H #define COLOR_PICKER_VIEW_H -#include "ColorPickerDefs.h" - #include #if LIB_LAYOUT diff --git a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorSlider.h b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorSlider.h index 341d1a018f..c122b1bfa3 100644 --- a/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorSlider.h +++ b/src/apps/icon-o-matic/generic/gui/panel/color_picker/ColorSlider.h @@ -9,8 +9,6 @@ #ifndef _COLOR_SLIDER_H #define _COLOR_SLIDER_H -#include "ColorPickerDefs.h" - #include #if LIB_LAYOUT diff --git a/src/apps/icon-o-matic/generic/gui/panel/color_picker/rgb_hsv.h b/src/apps/icon-o-matic/generic/support/rgb_hsv.h similarity index 100% rename from src/apps/icon-o-matic/generic/gui/panel/color_picker/rgb_hsv.h rename to src/apps/icon-o-matic/generic/support/rgb_hsv.h diff --git a/src/apps/icon-o-matic/gui/StyleView.cpp b/src/apps/icon-o-matic/gui/StyleView.cpp new file mode 100644 index 0000000000..9dfebfedb7 --- /dev/null +++ b/src/apps/icon-o-matic/gui/StyleView.cpp @@ -0,0 +1,20 @@ +/* + * Copyright 2006, Haiku. + * Distributed under the terms of the MIT License. + * + * Authors: + * Stephan Aßmus + */ + +#include "StyleView.h" + +StyleView::StyleView(BRect frame) + : BView(frame, "style view", B_FOLLOW_NONE, 0) +{ +} + + +StyleView::~StyleView() +{ +} + diff --git a/src/apps/icon-o-matic/gui/StyleView.h b/src/apps/icon-o-matic/gui/StyleView.h new file mode 100644 index 0000000000..5b40eeff26 --- /dev/null +++ b/src/apps/icon-o-matic/gui/StyleView.h @@ -0,0 +1,22 @@ +/* + * Copyright 2006, Haiku. + * Distributed under the terms of the MIT License. + * + * Authors: + * Stephan Aßmus + */ + +#ifndef STYLE_VIEW_H +#define STYLE_VIEW_H + +#include + +class StyleView : public { + public: + StyleView(BRect frame); + virtual ~StyleView(); + + private: +}; + +#endif // STYLE_VIEW_H diff --git a/src/apps/icon-o-matic/gui/SwatchGroup.cpp b/src/apps/icon-o-matic/gui/SwatchGroup.cpp new file mode 100644 index 0000000000..9a7a560e2d --- /dev/null +++ b/src/apps/icon-o-matic/gui/SwatchGroup.cpp @@ -0,0 +1,99 @@ +/* + * Copyright 2006, Haiku. + * Distributed under the terms of the MIT License. + * + * Authors: + * Stephan Aßmus + */ + +#include "SwatchGroup.h" + +#include "ui_defines.h" +#include "rgb_hsv.h" + +#include "ColorField.h" +#include "ColorSlider.h" +#include "Group.h" +#include "SwatchView.h" + +enum { + MSG_SET_COLOR = 'stcl', +}; + +// constructor +SwatchGroup::SwatchGroup(BRect frame) + : BView(frame, "style view", B_FOLLOW_NONE, 0) +{ + frame = BRect(0, 0, 100, 15); + fTopSwatchViews = new Group(frame, "top swatch group"); + fBottomSwatchViews = new Group(frame, "bottom swatch group"); + + // create swatch views with rainbow default palette + float h = 0; + float s = 1.0; + float v = 1.0; + rgb_color color; + color.alpha = 255; + float r, g, b; + for (int32 i = 0; i < 20; i++) { + if (i < 10) { + h = ((float)i / 9.0) * 6.0; + } else { + h = ((float)(i - 9) / 10.0) * 6.0; + v = 0.5; + } + HSV_to_RGB(h, s, v, r, g, b); + color.red = (uint8)(255.0 * r); + color.green = (uint8)(255.0 * g); + color.blue = (uint8)(255.0 * b); + fSwatchViews[i] = new SwatchView("swatch", new BMessage(MSG_SET_COLOR), + this, color, 17.0, 14.0); + + if (i < 10) + fTopSwatchViews->AddChild(fSwatchViews[i]); + else + fBottomSwatchViews->AddChild(fSwatchViews[i]); + } + // create color field and slider + color = kBlack; + + fColorField = new ColorField(BPoint(0.0, 0.0), H_SELECTED, + 1.0, B_HORIZONTAL); + fColorSlider = new ColorSlider(BPoint(0.0, 0.0), H_SELECTED, + 1.0, 1.0, B_HORIZONTAL); + fColorField->SetMarkerToColor(color); + fColorSlider->SetMarkerToColor(color); + + // layout gui + fTopSwatchViews->SetSpacing(0, 0); + fTopSwatchViews->ResizeToPreferred(); + fBottomSwatchViews->SetSpacing(0, 0); + fBottomSwatchViews->ResizeToPreferred(); + float width = fTopSwatchViews->Frame().Width(); + fColorField->ResizeTo(width, 40); + fColorField->FrameResized(width, 40); + fColorSlider->ResizeTo(width, 15); + fColorSlider->FrameResized(width, 40); + + fTopSwatchViews->MoveTo(0, 4); + fBottomSwatchViews->MoveTo(0, fTopSwatchViews->Frame().bottom + 1); + fColorField->MoveTo(0, fBottomSwatchViews->Frame().bottom + 3); + fColorSlider->MoveTo(0, fColorField->Frame().bottom + 1); + + // configure self + ResizeTo(width, fColorSlider->Frame().bottom + 4); + SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + + // add views + AddChild(fTopSwatchViews); + AddChild(fBottomSwatchViews); + AddChild(fColorField); + AddChild(fColorSlider); + +} + +// destructor +SwatchGroup::~SwatchGroup() +{ +} + diff --git a/src/apps/icon-o-matic/gui/SwatchGroup.h b/src/apps/icon-o-matic/gui/SwatchGroup.h new file mode 100644 index 0000000000..21ef57b459 --- /dev/null +++ b/src/apps/icon-o-matic/gui/SwatchGroup.h @@ -0,0 +1,35 @@ +/* + * Copyright 2006, Haiku. + * Distributed under the terms of the MIT License. + * + * Authors: + * Stephan Aßmus + */ + +#ifndef SWATCH_GROUP_H +#define SWATCH_GROUP_H + +#include + +class ColorField; +class ColorSlider; +class Group; +class SwatchView; + +class SwatchGroup : public BView { + public: + SwatchGroup(BRect frame); + virtual ~SwatchGroup(); + + private: + + SwatchView* fCurrentColorSV; + SwatchView* fSwatchViews[20]; + ColorField* fColorField; + ColorSlider* fColorSlider; + + Group* fTopSwatchViews; + Group* fBottomSwatchViews; +}; + +#endif // SWATCH_GROUP_H