Blob Blame Raw


#include "toonz/tpalettehandle.h"

//=============================================================================
// TPaletteHandle
//-----------------------------------------------------------------------------

TPaletteHandle::TPaletteHandle()
	: m_palette(0), m_styleIndex(-1), m_styleParamIndex(-1)
{
	connectBroadcasts(this);
}

//-----------------------------------------------------------------------------

TPaletteHandle::~TPaletteHandle()
{
}

//-----------------------------------------------------------------------------

TPalette *TPaletteHandle::getPalette() const
{
	return m_palette;
}

//-----------------------------------------------------------------------------

int TPaletteHandle::getStyleIndex() const
{
	return m_styleIndex;
}

//-----------------------------------------------------------------------------

int TPaletteHandle::getStyleParamIndex() const
{
	return m_styleParamIndex;
}

//-----------------------------------------------------------------------------

TColorStyle *TPaletteHandle::getStyle() const
{
	if (!m_palette || m_styleIndex == -1)
		return 0;
	return m_palette->getStyle(m_styleIndex);
}

//-----------------------------------------------------------------------------

bool TPaletteHandle::connectBroadcasts(const QObject *receiver)
{
	bool ret = true;

	ret = connect(this, SIGNAL(broadcastPaletteChanged()), receiver, SIGNAL(paletteChanged())) && ret;
	ret = connect(this, SIGNAL(broadcastPaletteTitleChanged()), receiver, SIGNAL(paletteTitleChanged())) && ret;
	ret = connect(this, SIGNAL(broadcastColorStyleSwitched()), receiver, SIGNAL(colorStyleSwitched())) && ret;
	ret = connect(this, SIGNAL(broadcastColorStyleChanged()), receiver, SIGNAL(colorStyleChanged())) && ret;
	ret = connect(this, SIGNAL(broadcastColorStyleChangedOnMouseRelease()),
				  receiver, SIGNAL(colorStyleChangedOnMouseRelease())) &&
		  ret;

	return ret;
}

//-----------------------------------------------------------------------------

bool TPaletteHandle::disconnectBroadcasts(const QObject *receiver)
{
	bool ret = true;

	ret = disconnect(this, SIGNAL(broadcastPaletteChanged()), receiver, SIGNAL(paletteChanged())) && ret;
	ret = disconnect(this, SIGNAL(broadcastPaletteTitleChanged()), receiver, SIGNAL(paletteTitleChanged())) && ret;
	ret = disconnect(this, SIGNAL(broadcastColorStyleSwitched()), receiver, SIGNAL(colorStyleSwitched())) && ret;
	ret = disconnect(this, SIGNAL(broadcastColorStyleChanged()), receiver, SIGNAL(colorStyleChanged())) && ret;
	ret = disconnect(this, SIGNAL(broadcastColorStyleChangedOnMouseRelease()),
					 receiver, SIGNAL(colorStyleChangedOnMouseRelease())) &&
		  ret;

	return ret;
}

//-----------------------------------------------------------------------------

void TPaletteHandle::setPalette(TPalette *palette, int styleIndex)
{
	if (m_palette == palette)
		setStyleIndex(styleIndex);
	else {
		m_palette = palette;
		m_styleIndex = styleIndex;
		m_styleParamIndex = 0;

		emit paletteSwitched();
	}
}

//-----------------------------------------------------------------------------

void TPaletteHandle::setStyleIndex(int index)
{
	//	if(m_styleIndex != index)
	//	{
	m_styleIndex = index;
	m_styleParamIndex = 0;
	emit broadcastColorStyleSwitched();
	//	}
}

//-----------------------------------------------------------------------------

void TPaletteHandle::setStyleParamIndex(int index)
{
	if (m_styleParamIndex != index) {
		m_styleParamIndex = index;
		emit broadcastColorStyleSwitched();
	}
}

//-----------------------------------------------------------------------------

void TPaletteHandle::notifyPaletteChanged()
{
	emit broadcastPaletteChanged();
}

//-----------------------------------------------------------------------------

void TPaletteHandle::notifyPaletteTitleChanged()
{
	emit broadcastPaletteTitleChanged();
}

//-----------------------------------------------------------------------------

void TPaletteHandle::notifyColorStyleSwitched()
{
	emit broadcastColorStyleSwitched();
}

//-----------------------------------------------------------------------------

void TPaletteHandle::notifyColorStyleChanged(bool onDragging, bool setDirtyFlag)
{

	if (setDirtyFlag && getPalette() && !getPalette()->getDirtyFlag())
		getPalette()->setDirtyFlag(true);

	emit broadcastColorStyleChanged();

	if (!onDragging)
		emit broadcastColorStyleChangedOnMouseRelease();
}