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;
|
||||
TXshZeraryFxLevel *m_zeraryFxLevel;
|
||||
|
||||
bool m_iconVisible;
|
||||
|
||||
public:
|
||||
bool isIconVisible() { return m_iconVisible; }
|
||||
void setIconVisible(bool visible) { m_iconVisible = visible; }
|
||||
|
||||
/*!
|
||||
Constructs a TXshZeraryFxColumn with default value.
|
||||
*/
|
||||
|
|
|
@ -9,6 +9,18 @@
|
|||
|
||||
#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;
|
||||
|
||||
namespace {
|
||||
|
@ -136,13 +148,16 @@ const struct {
|
|||
{0, 0}};
|
||||
};
|
||||
|
||||
class FxIconPixmapManager { // singleton
|
||||
|
||||
std::map<std::string, QPixmap> m_pms;
|
||||
|
||||
FxIconPixmapManager();
|
||||
class DVAPI FxIconPixmapManager final : public QObject { // singleton
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
std::map<std::string, QPixmap> m_pms;
|
||||
|
||||
public:
|
||||
FxIconPixmapManager();
|
||||
~FxIconPixmapManager();
|
||||
|
||||
static FxIconPixmapManager *instance();
|
||||
|
||||
const QPixmap &getFxIconPm(std::string type);
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include "toonzqt/gutil.h"
|
||||
#include "toonzqt/icongenerator.h"
|
||||
#include "toonzqt/intfield.h"
|
||||
#include "toonzqt/fxiconmanager.h"
|
||||
|
||||
// TnzLib includes
|
||||
#include "toonz/txshcolumn.h"
|
||||
|
@ -1111,26 +1112,15 @@ void ColumnArea::DrawHeader::drawThumbnail(QPixmap &iconPixmap) const {
|
|||
// All other thumbnails
|
||||
p.setPen(m_viewer->getTextColor());
|
||||
|
||||
// for zerary fx, display fxId here instead of thumbnail
|
||||
TXshZeraryFxColumn *zColumn = dynamic_cast<TXshZeraryFxColumn *>(column);
|
||||
if (zColumn) {
|
||||
QFont lastfont = p.font();
|
||||
QFont font("Verdana", 8);
|
||||
p.setFont(font);
|
||||
|
||||
TFx *fx = zColumn->getZeraryColumnFx()->getZeraryFx();
|
||||
QString fxName = QString::fromStdWString(fx->getFxId());
|
||||
p.drawText(thumbnailImageRect, Qt::TextWrapAnywhere | Qt::TextWordWrap,
|
||||
fxName);
|
||||
p.setFont(lastfont);
|
||||
} else {
|
||||
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
||||
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
||||
TXshZeraryFxColumn *zColumn = dynamic_cast<TXshZeraryFxColumn *>(column);
|
||||
|
||||
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
||||
Preferences::LoadOnDemand &&
|
||||
((levelColumn && !levelColumn->isIconVisible()) ||
|
||||
(meshColumn && !meshColumn->isIconVisible())) &&
|
||||
(meshColumn && !meshColumn->isIconVisible()) ||
|
||||
(zColumn && !zColumn->isIconVisible())) &&
|
||||
col >= 0) {
|
||||
// display nothing
|
||||
} else {
|
||||
|
@ -1142,7 +1132,8 @@ void ColumnArea::DrawHeader::drawThumbnail(QPixmap &iconPixmap) const {
|
|||
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)
|
||||
return QPixmap();
|
||||
else {
|
||||
TXshColumn *column = xsh->getColumn(columnIndex);
|
||||
TXshZeraryFxColumn *zColumn = dynamic_cast<TXshZeraryFxColumn *>(column);
|
||||
bool onDemand = false;
|
||||
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
||||
Preferences::LoadOnDemand) {
|
||||
onDemand = m_viewer->getCurrentColumn() != columnIndex;
|
||||
if (!onDemand) {
|
||||
TXshColumn *column = xsh->getColumn(columnIndex);
|
||||
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
||||
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
||||
if ((levelColumn && !levelColumn->isIconVisible()) ||
|
||||
(meshColumn && !meshColumn->isIconVisible()))
|
||||
(meshColumn && !meshColumn->isIconVisible()) ||
|
||||
(zColumn && !zColumn->isIconVisible()))
|
||||
return QPixmap();
|
||||
}
|
||||
}
|
||||
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);
|
||||
if (thumbnailImageRect.isEmpty()) return QPixmap();
|
||||
return scalePixmapKeepingAspectRatio(icon, thumbnailImageRect.size());
|
||||
|
@ -2327,6 +2324,8 @@ void ColumnArea::mousePressEvent(QMouseEvent *event) {
|
|||
// toggle columnIcon visibility with alt+click
|
||||
TXshLevelColumn *levelColumn = column->getLevelColumn();
|
||||
TXshMeshColumn *meshColumn = column->getMeshColumn();
|
||||
TXshZeraryFxColumn *zColumn =
|
||||
dynamic_cast<TXshZeraryFxColumn *>(column);
|
||||
if (Preferences::instance()->getColumnIconLoadingPolicy() ==
|
||||
Preferences::LoadOnDemand &&
|
||||
(event->modifiers() & Qt::AltModifier)) {
|
||||
|
@ -2334,6 +2333,8 @@ void ColumnArea::mousePressEvent(QMouseEvent *event) {
|
|||
levelColumn->setIconVisible(!levelColumn->isIconVisible());
|
||||
else if (meshColumn)
|
||||
meshColumn->setIconVisible(!meshColumn->isIconVisible());
|
||||
else if (zColumn)
|
||||
zColumn->setIconVisible(!zColumn->isIconVisible());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
|
||||
TXshZeraryFxColumn::TXshZeraryFxColumn(int frameCount)
|
||||
: m_zeraryColumnFx(new TZeraryColumnFx())
|
||||
, m_zeraryFxLevel(new TXshZeraryFxLevel()) {
|
||||
, m_zeraryFxLevel(new TXshZeraryFxLevel())
|
||||
, m_iconVisible(false) {
|
||||
m_zeraryColumnFx->addRef();
|
||||
m_zeraryColumnFx->setColumn(this);
|
||||
m_zeraryFxLevel->addRef();
|
||||
|
|
|
@ -27,6 +27,7 @@ set(MOC_HEADERS
|
|||
../include/toonzqt/functiontreeviewer.h
|
||||
../include/toonzqt/functionviewer.h
|
||||
../include/toonzqt/fxhistogramrender.h
|
||||
../include/toonzqt/fxiconmanager.h
|
||||
../include/toonzqt/fxschematicnode.h
|
||||
../include/toonzqt/fxschematicscene.h
|
||||
../include/toonzqt/fxselection.h
|
||||
|
@ -87,7 +88,6 @@ set(HEADERS
|
|||
../include/toonzqt/dvmimedata.h
|
||||
../include/toonzqt/flipconsoleowner.h
|
||||
../include/toonzqt/freelayout.h
|
||||
../include/toonzqt/fxiconmanager.h
|
||||
../include/toonzqt/fxtypes.h
|
||||
../include/toonzqt/glwidget_for_highdpi.h
|
||||
../include/toonzqt/lutcalibrator.h
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
FxIconPixmapManager::FxIconPixmapManager() {}
|
||||
|
||||
FxIconPixmapManager::~FxIconPixmapManager() {}
|
||||
|
||||
FxIconPixmapManager *FxIconPixmapManager::instance() {
|
||||
static FxIconPixmapManager _instance;
|
||||
return &_instance;
|
||||
|
|
Loading…
Reference in a new issue