⛏️ index : haiku.git

/*
 * Copyright 2005, JΓ©rΓ΄me Duval. All rights reserved.
 * Distributed under the terms of the MIT License.
 *
 * Reworked from DarkWyrm version in CDPlayer
 */
 
#include "DrawButton.h"
#include "DrawingTidbits.h"

DrawButton::DrawButton(BRect frame, const char *name, const unsigned char *on, 
	const unsigned char *off, BMessage *msg, int32 resize, int32 flags)
	: BControl(frame, name, "", msg, resize, flags | B_WILL_DRAW),
		fOn(frame, B_CMAP8),
		fOff(frame, B_CMAP8),
		fButtonState(false)
{
	fOff.SetBits(off, (frame.Width() + 1) * (frame.Height() + 1), 0, B_CMAP8);
	fOn.SetBits(on, (frame.Width() + 1) * (frame.Height() + 1), 0, B_CMAP8);
}


DrawButton::~DrawButton(void)
{
}


void
DrawButton::AttachedToWindow()
{
	SetViewColor(B_TRANSPARENT_COLOR);
	ReplaceTransparentColor(&fOn, Parent()->ViewColor());
	ReplaceTransparentColor(&fOff, Parent()->ViewColor());
}


void 
DrawButton::MouseUp(BPoint pt)
{
	fButtonState = fButtonState ? false : true;
	Invalidate();
	Invoke();
}


void
DrawButton::Draw(BRect update)
{	
	if (fButtonState) {
		DrawBitmap(&fOn, BPoint(0,0));
	} else {
		DrawBitmap(&fOff, BPoint(0,0));
	}
}