Display Fx Icon as timeline/xsheet thumbnail (#130)
This commit is contained in:
parent
89e7fc6f69
commit
df81651d5e
6 changed files with 64 additions and 40 deletions
|
@ -37,7 +37,12 @@ class DVAPI TXshZeraryFxColumn final : public TXshCellColumn {
|
||||||
TZeraryColumnFx *m_zeraryColumnFx;
|
TZeraryColumnFx *m_zeraryColumnFx;
|
||||||
TXshZeraryFxLevel *m_zeraryFxLevel;
|
TXshZeraryFxLevel *m_zeraryFxLevel;
|
||||||
|
|
||||||
|
bool m_iconVisible;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
bool isIconVisible() { return m_iconVisible; }
|
||||||
|
void setIconVisible(bool visible) { m_iconVisible = visible; }
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Constructs a TXshZeraryFxColumn with default value.
|
Constructs a TXshZeraryFxColumn with default value.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -9,6 +9,18 @@
|
||||||
|
|
||||||
#include "tcommon.h"
|
#include "tcommon.h"
|
||||||
|
|
||||||
|
#include <QPixmap>
|
||||||
|
|
||||||
|
#undef DVAPI
|
||||||
|
#undef DVVAR
|
||||||
|
#ifdef TOONZQT_EXPORTS
|
||||||
|
#define DVAPI DV_EXPORT_API
|
||||||
|
#define DVVAR DV_EXPORT_VAR
|
||||||
|
#else
|
||||||
|
#define DVAPI DV_IMPORT_API
|
||||||
|
#define DVVAR DV_IMPORT_VAR
|
||||||
|
#endif
|
||||||
|
|
||||||
class QPixmap;
|
class QPixmap;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -136,13 +148,16 @@ const struct {
|
||||||
{0, 0}};
|
{0, 0}};
|
||||||
};
|
};
|
||||||
|
|
||||||
class FxIconPixmapManager { // singleton
|
class DVAPI FxIconPixmapManager final : public QObject { // singleton
|
||||||
|
Q_OBJECT
|
||||||
std::map<std::string, QPixmap> m_pms;
|
|
||||||
|
|
||||||
FxIconPixmapManager();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
std::map<std::string, QPixmap> m_pms;
|
||||||
|
|
||||||
|
public:
|
||||||
|
FxIconPixmapManager();
|
||||||
|
~FxIconPixmapManager();
|
||||||
|
|
||||||
static FxIconPixmapManager *instance();
|
static FxIconPixmapManager *instance();
|
||||||
|
|
||||||
const QPixmap &getFxIconPm(std::string type);
|
const QPixmap &getFxIconPm(std::string type);
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "toonzqt/gutil.h"
|
#include "toonzqt/gutil.h"
|
||||||
#include "toonzqt/icongenerator.h"
|
#include "toonzqt/icongenerator.h"
|
||||||
#include "toonzqt/intfield.h"
|
#include "toonzqt/intfield.h"
|
||||||
|
#include "toonzqt/fxiconmanager.h"
|
||||||
|
|
||||||
// TnzLib includes
|
// TnzLib includes
|
||||||
#include "toonz/txshcolumn.h"
|
#include "toonz/txshcolumn.h"
|
||||||
|
@ -1111,38 +1112,28 @@ void ColumnArea::DrawHeader::drawThumbnail(QPixmap &iconPixmap) const {
|
||||||
// All other thumbnails
|
// All other thumbnails
|
||||||
p.setPen(m_viewer->getTextColor());
|
p.setPen(m_viewer->getTextColor());
|
||||||
|
|
||||||
// for zerary fx, display fxId here instead of thumbnail
|
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
||||||
TXshZeraryFxColumn *zColumn = dynamic_cast<TXshZeraryFxColumn *>(column);
|
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
||||||
if (zColumn) {
|
TXshZeraryFxColumn *zColumn = dynamic_cast<TXshZeraryFxColumn *>(column);
|
||||||
QFont lastfont = p.font();
|
|
||||||
QFont font("Verdana", 8);
|
|
||||||
p.setFont(font);
|
|
||||||
|
|
||||||
TFx *fx = zColumn->getZeraryColumnFx()->getZeraryFx();
|
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
||||||
QString fxName = QString::fromStdWString(fx->getFxId());
|
Preferences::LoadOnDemand &&
|
||||||
p.drawText(thumbnailImageRect, Qt::TextWrapAnywhere | Qt::TextWordWrap,
|
((levelColumn && !levelColumn->isIconVisible()) ||
|
||||||
fxName);
|
(meshColumn && !meshColumn->isIconVisible()) ||
|
||||||
p.setFont(lastfont);
|
(zColumn && !zColumn->isIconVisible())) &&
|
||||||
|
col >= 0) {
|
||||||
|
// display nothing
|
||||||
} else {
|
} else {
|
||||||
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
if (!iconPixmap.isNull()) {
|
||||||
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
p.drawPixmap(thumbnailImageRect, iconPixmap);
|
||||||
|
|
||||||
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
|
||||||
Preferences::LoadOnDemand &&
|
|
||||||
((levelColumn && !levelColumn->isIconVisible()) ||
|
|
||||||
(meshColumn && !meshColumn->isIconVisible())) &&
|
|
||||||
col >= 0) {
|
|
||||||
// display nothing
|
|
||||||
} else {
|
|
||||||
if (!iconPixmap.isNull()) {
|
|
||||||
p.drawPixmap(thumbnailImageRect, iconPixmap);
|
|
||||||
}
|
|
||||||
// notify that the column icon is already shown
|
|
||||||
if (levelColumn)
|
|
||||||
levelColumn->setIconVisible(true);
|
|
||||||
else if (meshColumn)
|
|
||||||
meshColumn->setIconVisible(true);
|
|
||||||
}
|
}
|
||||||
|
// notify that the column icon is already shown
|
||||||
|
if (levelColumn)
|
||||||
|
levelColumn->setIconVisible(true);
|
||||||
|
else if (meshColumn)
|
||||||
|
meshColumn->setIconVisible(true);
|
||||||
|
else if (zColumn)
|
||||||
|
zColumn->setIconVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1727,21 +1718,27 @@ QPixmap ColumnArea::getColumnIcon(int columnIndex) {
|
||||||
if (!xl)
|
if (!xl)
|
||||||
return QPixmap();
|
return QPixmap();
|
||||||
else {
|
else {
|
||||||
bool onDemand = false;
|
TXshColumn *column = xsh->getColumn(columnIndex);
|
||||||
|
TXshZeraryFxColumn *zColumn = dynamic_cast<TXshZeraryFxColumn *>(column);
|
||||||
|
bool onDemand = false;
|
||||||
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
||||||
Preferences::LoadOnDemand) {
|
Preferences::LoadOnDemand) {
|
||||||
onDemand = m_viewer->getCurrentColumn() != columnIndex;
|
onDemand = m_viewer->getCurrentColumn() != columnIndex;
|
||||||
if (!onDemand) {
|
if (!onDemand) {
|
||||||
TXshColumn *column = xsh->getColumn(columnIndex);
|
|
||||||
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
||||||
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
||||||
if ((levelColumn && !levelColumn->isIconVisible()) ||
|
if ((levelColumn && !levelColumn->isIconVisible()) ||
|
||||||
(meshColumn && !meshColumn->isIconVisible()))
|
(meshColumn && !meshColumn->isIconVisible()) ||
|
||||||
|
(zColumn && !zColumn->isIconVisible()))
|
||||||
return QPixmap();
|
return QPixmap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QPixmap icon =
|
QPixmap icon =
|
||||||
IconGenerator::instance()->getIcon(xl, cell.m_frameId, false, onDemand);
|
zColumn
|
||||||
|
? FxIconPixmapManager::instance()->getFxIconPm(
|
||||||
|
zColumn->getZeraryColumnFx()->getZeraryFx()->getFxType())
|
||||||
|
: IconGenerator::instance()->getIcon(xl, cell.m_frameId, false,
|
||||||
|
onDemand);
|
||||||
QRect thumbnailImageRect = o->rect(PredefinedRect::THUMBNAIL);
|
QRect thumbnailImageRect = o->rect(PredefinedRect::THUMBNAIL);
|
||||||
if (thumbnailImageRect.isEmpty()) return QPixmap();
|
if (thumbnailImageRect.isEmpty()) return QPixmap();
|
||||||
return scalePixmapKeepingAspectRatio(icon, thumbnailImageRect.size());
|
return scalePixmapKeepingAspectRatio(icon, thumbnailImageRect.size());
|
||||||
|
@ -2327,6 +2324,8 @@ void ColumnArea::mousePressEvent(QMouseEvent *event) {
|
||||||
// toggle columnIcon visibility with alt+click
|
// toggle columnIcon visibility with alt+click
|
||||||
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
||||||
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
||||||
|
TXshZeraryFxColumn *zColumn =
|
||||||
|
dynamic_cast<TXshZeraryFxColumn *>(column);
|
||||||
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
||||||
Preferences::LoadOnDemand &&
|
Preferences::LoadOnDemand &&
|
||||||
(event->modifiers() & Qt::AltModifier)) {
|
(event->modifiers() & Qt::AltModifier)) {
|
||||||
|
@ -2334,6 +2333,8 @@ void ColumnArea::mousePressEvent(QMouseEvent *event) {
|
||||||
levelColumn->setIconVisible(!levelColumn->isIconVisible());
|
levelColumn->setIconVisible(!levelColumn->isIconVisible());
|
||||||
else if (meshColumn)
|
else if (meshColumn)
|
||||||
meshColumn->setIconVisible(!meshColumn->isIconVisible());
|
meshColumn->setIconVisible(!meshColumn->isIconVisible());
|
||||||
|
else if (zColumn)
|
||||||
|
zColumn->setIconVisible(!zColumn->isIconVisible());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,8 @@
|
||||||
|
|
||||||
TXshZeraryFxColumn::TXshZeraryFxColumn(int frameCount)
|
TXshZeraryFxColumn::TXshZeraryFxColumn(int frameCount)
|
||||||
: m_zeraryColumnFx(new TZeraryColumnFx())
|
: m_zeraryColumnFx(new TZeraryColumnFx())
|
||||||
, m_zeraryFxLevel(new TXshZeraryFxLevel()) {
|
, m_zeraryFxLevel(new TXshZeraryFxLevel())
|
||||||
|
, m_iconVisible(false) {
|
||||||
m_zeraryColumnFx->addRef();
|
m_zeraryColumnFx->addRef();
|
||||||
m_zeraryColumnFx->setColumn(this);
|
m_zeraryColumnFx->setColumn(this);
|
||||||
m_zeraryFxLevel->addRef();
|
m_zeraryFxLevel->addRef();
|
||||||
|
|
|
@ -27,6 +27,7 @@ set(MOC_HEADERS
|
||||||
../include/toonzqt/functiontreeviewer.h
|
../include/toonzqt/functiontreeviewer.h
|
||||||
../include/toonzqt/functionviewer.h
|
../include/toonzqt/functionviewer.h
|
||||||
../include/toonzqt/fxhistogramrender.h
|
../include/toonzqt/fxhistogramrender.h
|
||||||
|
../include/toonzqt/fxiconmanager.h
|
||||||
../include/toonzqt/fxschematicnode.h
|
../include/toonzqt/fxschematicnode.h
|
||||||
../include/toonzqt/fxschematicscene.h
|
../include/toonzqt/fxschematicscene.h
|
||||||
../include/toonzqt/fxselection.h
|
../include/toonzqt/fxselection.h
|
||||||
|
@ -87,7 +88,6 @@ set(HEADERS
|
||||||
../include/toonzqt/dvmimedata.h
|
../include/toonzqt/dvmimedata.h
|
||||||
../include/toonzqt/flipconsoleowner.h
|
../include/toonzqt/flipconsoleowner.h
|
||||||
../include/toonzqt/freelayout.h
|
../include/toonzqt/freelayout.h
|
||||||
../include/toonzqt/fxiconmanager.h
|
|
||||||
../include/toonzqt/fxtypes.h
|
../include/toonzqt/fxtypes.h
|
||||||
../include/toonzqt/glwidget_for_highdpi.h
|
../include/toonzqt/glwidget_for_highdpi.h
|
||||||
../include/toonzqt/lutcalibrator.h
|
../include/toonzqt/lutcalibrator.h
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
FxIconPixmapManager::FxIconPixmapManager() {}
|
FxIconPixmapManager::FxIconPixmapManager() {}
|
||||||
|
|
||||||
|
FxIconPixmapManager::~FxIconPixmapManager() {}
|
||||||
|
|
||||||
FxIconPixmapManager *FxIconPixmapManager::instance() {
|
FxIconPixmapManager *FxIconPixmapManager::instance() {
|
||||||
static FxIconPixmapManager _instance;
|
static FxIconPixmapManager _instance;
|
||||||
return &_instance;
|
return &_instance;
|
||||||
|
|
Loading…
Reference in a new issue