⛏️ index : haiku.git

/*
 * Copyright 2002-2006, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *		Mattias Sundblad
 *		Andrew Bachmann
 */

#include "ColorMenuItem.h"

#include <Message.h>
#include <Rect.h>


ColorMenuItem::ColorMenuItem(const char* label, rgb_color color,
	BMessage *message)
	:
	BMenuItem(label, message, 0, 0),
	fItemColor(color)
{
	message->AddData("color", B_RGB_COLOR_TYPE, &color, sizeof(rgb_color));
}


void
ColorMenuItem::DrawContent()
{
	BMenu* menu = Menu();
	if (menu) {
		rgb_color menuColor = menu->HighColor();
		BRect colorSquare(Frame());

		if (colorSquare.Width() > colorSquare.Height()) {
			// large button
			colorSquare.left += 8;
			colorSquare.top += 2;
			colorSquare.bottom -= 2;
		}
		colorSquare.right = colorSquare.left + colorSquare.Height();
		if (IsMarked()) {
			menu->SetHighColor(ui_color(B_NAVIGATION_BASE_COLOR));
			menu->StrokeRect(colorSquare);
		}
		colorSquare.InsetBy(1, 1);
		menu->SetHighColor(fItemColor);
		menu->FillRect(colorSquare);
		menu->SetHighColor(menuColor);
		menu->MovePenBy(colorSquare.right + 5.0f, 4.0f);
		BMenuItem::DrawContent();
	}
}