tahoma2d/toonz/sources/toonzlib/tpalettehandle.cpp
2016-06-15 15:43:10 +09:00

145 lines
4.6 KiB
C++

#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();
}