1/*
2 * Copyright (c) 2008-2009, Haiku, Inc.
3 * Distributed under the terms of the MIT license.
4 *
5 * Authors:
6 *		Artur Wyszynski <harakash@gmail.com>
7 */
8
9
10#include "GradientsWindow.h"
11
12
13GradientsWindow::GradientsWindow()
14	: BWindow(BRect(0, 0, 230, 490), "Gradients Test", B_TITLED_WINDOW,
15		B_NOT_RESIZABLE | B_NOT_ZOOMABLE)
16{
17	BRect field(10, 10, Bounds().Width() - 10, 30);
18	fGradientsMenu = new BPopUpMenu("gradientsType");
19	fLinearItem = new BMenuItem("Linear", new BMessage(MSG_LINEAR));
20	fRadialItem = new BMenuItem("Radial", new BMessage(MSG_RADIAL));
21	fRadialFocusItem = new BMenuItem("Radial focus",
22		new BMessage(MSG_RADIAL_FOCUS));
23
24	fDiamondItem = new BMenuItem("Diamond", new BMessage(MSG_DIAMOND));
25	fConicItem = new BMenuItem("Conic", new BMessage(MSG_CONIC));
26	fGradientsMenu->AddItem(fLinearItem);
27	fGradientsMenu->AddItem(fRadialItem);
28	fGradientsMenu->AddItem(fRadialFocusItem);
29	fGradientsMenu->AddItem(fDiamondItem);
30	fGradientsMenu->AddItem(fConicItem);
31	fLinearItem->SetMarked(true);
32	fGradientsTypeField = new BMenuField(field, "gradientsField",
33		"Gradient type:", fGradientsMenu, B_FOLLOW_LEFT | B_FOLLOW_BOTTOM,
34		B_WILL_DRAW | B_NAVIGABLE | B_FRAME_EVENTS);
35	fGradientsTypeField->SetViewColor(255, 255, 255);
36	fGradientsTypeField->SetDivider(110);
37	AddChild(fGradientsTypeField);
38
39	BRect bounds = Bounds();
40	bounds.top = 40;
41	fGradientsView = new GradientsView(bounds);
42	AddChild(fGradientsView);
43
44	MoveTo((BScreen().Frame().Width() - Bounds().Width()) / 2,
45		(BScreen().Frame().Height() - Bounds().Height()) / 2 );
46}
47
48
49bool
50GradientsWindow::QuitRequested()
51{
52	be_app->PostMessage(B_QUIT_REQUESTED);
53	return true;
54}
55
56
57void
58GradientsWindow::MessageReceived(BMessage *msg)
59{
60	switch (msg->what) {
61		case MSG_LINEAR:
62			fGradientsView->SetType(BGradient::TYPE_LINEAR);
63			break;
64		case MSG_RADIAL:
65			fGradientsView->SetType(BGradient::TYPE_RADIAL);
66			break;
67		case MSG_RADIAL_FOCUS:
68			fGradientsView->SetType(BGradient::TYPE_RADIAL_FOCUS);
69			break;
70		case MSG_DIAMOND:
71			fGradientsView->SetType(BGradient::TYPE_DIAMOND);
72			break;
73		case MSG_CONIC:
74			fGradientsView->SetType(BGradient::TYPE_CONIC);
75			break;
76		default:
77			BWindow::MessageReceived(msg);
78			break;
79	}
80}
81