1 /*
2 * Copyright 2002-2006, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 * Mattias Sundblad
7 * Andrew Bachmann
8 */
9
10 #include "ColorMenuItem.h"
11
12 #include <Message.h>
13 #include <Rect.h>
14
15
ColorMenuItem(const char * label,rgb_color color,BMessage * message)16 ColorMenuItem::ColorMenuItem(const char* label, rgb_color color,
17 BMessage *message)
18 :
19 BMenuItem(label, message, 0, 0),
20 fItemColor(color)
21 {
22 message->AddData("color", B_RGB_COLOR_TYPE, &color, sizeof(rgb_color));
23 }
24
25
26 void
DrawContent()27 ColorMenuItem::DrawContent()
28 {
29 BMenu* menu = Menu();
30 if (menu) {
31 rgb_color menuColor = menu->HighColor();
32 BRect colorSquare(Frame());
33
34 if (colorSquare.Width() > colorSquare.Height()) {
35 // large button
36 colorSquare.left += 8;
37 colorSquare.top += 2;
38 colorSquare.bottom -= 2;
39 }
40 colorSquare.right = colorSquare.left + colorSquare.Height();
41 if (IsMarked()) {
42 menu->SetHighColor(ui_color(B_NAVIGATION_BASE_COLOR));
43 menu->StrokeRect(colorSquare);
44 }
45 colorSquare.InsetBy(1, 1);
46 menu->SetHighColor(fItemColor);
47 menu->FillRect(colorSquare);
48 menu->SetHighColor(menuColor);
49 menu->MovePenBy(colorSquare.right + 5.0f, 4.0f);
50 BMenuItem::DrawContent();
51 }
52 }
53