|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Tnz6 includes
|
|
Toshihiro Shimizu |
890ddd |
#include "colormodelviewer.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "menubarcommandids.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "floatingpanelcommand.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tapp.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "pane.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzTools includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tools/cursormanager.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tools/cursors.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tools/stylepicker.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tools/toolcommandids.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tools/tool.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tools/toolhandle.h"
|
|
shun_iwasawa |
06bcc2 |
#include "../tnztools/stylepickertool.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzQt includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/menubarcommand.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/viewcommandids.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/dvdialog.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/icongenerator.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/gutil.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/tselectionhandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/styleselection.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzLib includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/palettecmd.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshlevelhandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tpalettehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tframehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tscenehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txsheethandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tcolumnhandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzscene.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txsheet.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/palettecontroller.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshlevel.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshsimplelevel.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshcell.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzCore includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tsystem.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "ttoonzimage.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Qt includes
|
|
Toshihiro Shimizu |
890ddd |
#include <qmimedata></qmimedata>
|
|
Toshihiro Shimizu |
890ddd |
#include <qmouseevent></qmouseevent>
|
|
Toshihiro Shimizu |
890ddd |
#include <qurl></qurl>
|
|
Toshihiro Shimizu |
890ddd |
#include <qmenu></qmenu>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#define LINES "Lines"
|
|
Toshihiro Shimizu |
890ddd |
#define AREAS "Areas"
|
|
Toshihiro Shimizu |
890ddd |
#define ALL "Lines & Areas"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
using namespace DVGui;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
namespace {
|
|
Shinya Kitaoka |
120a6e |
TPaletteHandle *getPaletteHandle() {
|
|
Shinya Kitaoka |
120a6e |
return TApp::instance()->getPaletteController()->getCurrentLevelPalette();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
} // namespace
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
/*! \class ColorModelViewer
|
|
Shinya Kitaoka |
120a6e |
\brief The ColorModelViewer class is a flip book used to manage
|
|
Shinya Kitaoka |
120a6e |
color model.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
Inherits \b FlipBook.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
This object show the reference image linked to current level
|
|
Shinya Kitaoka |
120a6e |
palette.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
/*! \fn void ColorModelViewer::resetImageViewer()
|
|
Shinya Kitaoka |
120a6e |
Set current level to TLevelP() and image to "0".
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
ColorModelViewer::ColorModelViewer(QWidget *parent)
|
|
Shinya Kitaoka |
120a6e |
: FlipBook(parent, QString(tr("Color Model")),
|
|
Shinya Kitaoka |
120a6e |
FlipConsole::cFullConsole &
|
|
Shinya Kitaoka |
120a6e |
(~(FlipConsole::eFilterRgbm | FlipConsole::cFilterGRgb |
|
|
Shinya Kitaoka |
120a6e |
FlipConsole::eRate | FlipConsole::eSound |
|
|
Shinya Kitaoka |
120a6e |
FlipConsole::eSaveImg | FlipConsole::eHisto |
|
|
Shinya Kitaoka |
120a6e |
FlipConsole::eCompare | FlipConsole::eCustomize |
|
|
Shinya Kitaoka |
120a6e |
FlipConsole::eSave | FlipConsole::eFilledRaster |
|
|
Shinya Kitaoka |
120a6e |
FlipConsole::eDefineLoadBox | FlipConsole::eUseLoadBox |
|
|
shun_iwasawa |
db5f54 |
FlipConsole::eDefineSubCamera | FlipConsole::eLocator)),
|
|
Shinya Kitaoka |
120a6e |
eDontKeepFilesOpened, true)
|
|
Shinya Kitaoka |
120a6e |
, m_mode(0)
|
|
Shinya Kitaoka |
120a6e |
, m_currentRefImgPath(TFilePath()) {
|
|
Shinya Kitaoka |
120a6e |
setObjectName("colormodel");
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
setToolCursor(m_imageViewer, ToolCursor::PickerCursor);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// Do not call the special procedure for flipbook closures...
|
|
Shinya Kitaoka |
120a6e |
disconnect(parentWidget(), SIGNAL(closeButtonPressed()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onCloseButtonPressed()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
bool ret = connect(this, SIGNAL(refImageNotFound()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onRefImageNotFound()), Qt::QueuedConnection);
|
|
Shinya Kitaoka |
120a6e |
assert(ret);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_imageViewer->setMouseTracking(true);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
ColorModelViewer::~ColorModelViewer() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Accept event if current palette is not empty, event data has urls and each
|
|
Shinya Kitaoka |
120a6e |
urls type are different from "src" and "tpl" .
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::dragEnterEvent(QDragEnterEvent *event) {
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = getPaletteHandle()->getPalette();
|
|
Shinya Kitaoka |
120a6e |
if (!palette) return;
|
|
Shinya Kitaoka |
120a6e |
const QMimeData *mimeData = event->mimeData();
|
|
Shinya Kitaoka |
120a6e |
if (!acceptResourceDrop(mimeData->urls())) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
foreach (QUrl url, mimeData->urls()) {
|
|
Shinya Kitaoka |
120a6e |
TFilePath fp(url.toLocalFile().toStdWString());
|
|
Shinya Kitaoka |
120a6e |
std::string type = fp.getType();
|
|
Shinya Kitaoka |
120a6e |
if (type == "scr" || type == "tpl") return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
event->acceptProposedAction();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! If event data has urls, convert each urls in path and set view and current
|
|
Toshihiro Shimizu |
890ddd |
palette reference image (recall loadImage() and setLevel()).
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::dropEvent(QDropEvent *event) {
|
|
Shinya Kitaoka |
120a6e |
const QMimeData *mimeData = event->mimeData();
|
|
Shinya Kitaoka |
120a6e |
if (mimeData->hasUrls()) {
|
|
Shinya Kitaoka |
120a6e |
foreach (QUrl url, mimeData->urls()) {
|
|
Shinya Kitaoka |
120a6e |
TFilePath fp(url.toLocalFile().toStdWString());
|
|
Shinya Kitaoka |
120a6e |
loadImage(fp);
|
|
Shinya Kitaoka |
120a6e |
setLevel(fp);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
event->acceptProposedAction();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Set current palette reference image to \b fp recall:
|
|
Shinya Kitaoka |
120a6e |
\b PaletteCmd::loadReferenceImage().
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::loadImage(const TFilePath &fp) {
|
|
Shinya Kitaoka |
120a6e |
if (fp.isEmpty()) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TPaletteHandle *paletteHandle = getPaletteHandle();
|
|
Shinya Kitaoka |
120a6e |
if (!paletteHandle->getPalette()) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
std::string type(fp.getType());
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QString question(
|
|
Shinya Kitaoka |
120a6e |
QObject::tr("The color model palette is different from the destination "
|
|
Shinya Kitaoka |
120a6e |
"palette.\nWhat do you want to do? "));
|
|
Shinya Kitaoka |
120a6e |
QList<qstring> list;</qstring>
|
|
Shinya Kitaoka |
120a6e |
list.append(QObject::tr("Overwrite the destination palette."));
|
|
Shinya Kitaoka |
120a6e |
list.append(QObject::tr(
|
|
Shinya Kitaoka |
120a6e |
"Keep the destination palette and apply it to the color model."));
|
|
Shinya Kitaoka |
120a6e |
/*- if the file is raster image (i.e. without palette), then add another
|
|
Shinya Kitaoka |
120a6e |
* option "add styles" -*/
|
|
Shinya Kitaoka |
120a6e |
if (type != "tlv" && type != "pli")
|
|
Shinya Kitaoka |
120a6e |
list.append(
|
|
Shinya Kitaoka |
120a6e |
QObject::tr("Add color model's palette to the destination palette."));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
int ret = DVGui::RadioButtonMsgBox(DVGui::WARNING, question, list);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
PaletteCmd::ColorModelPltBehavior pltBehavior;
|
|
Shinya Kitaoka |
120a6e |
switch (ret) {
|
|
Shinya Kitaoka |
120a6e |
case 0:
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
case 1:
|
|
Shinya Kitaoka |
120a6e |
pltBehavior = PaletteCmd::KeepColorModelPlt;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
case 2:
|
|
Shinya Kitaoka |
120a6e |
pltBehavior = PaletteCmd::ReplaceColorModelPlt;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
case 3:
|
|
Shinya Kitaoka |
120a6e |
pltBehavior = PaletteCmd::AddColorModelPlt;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
default:
|
|
Shinya Kitaoka |
120a6e |
pltBehavior = PaletteCmd::KeepColorModelPlt;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
ToonzScene *scene = TApp::instance()->getCurrentScene()->getScene();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
int paletteFrame = 0;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
PaletteCmd::loadReferenceImage(paletteHandle, pltBehavior, fp, paletteFrame,
|
|
Shinya Kitaoka |
120a6e |
scene);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TXshLevel *level = TApp::instance()->getCurrentLevel()->getLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!level) return;
|
|
Shinya Kitaoka |
120a6e |
std::vector<tframeid> fids;</tframeid>
|
|
Shinya Kitaoka |
120a6e |
level->getFids(fids);
|
|
Shinya Kitaoka |
120a6e |
invalidateIcons(level, fids);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Create and open the Right-click menu color model viewer.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::contextMenuEvent(QContextMenuEvent *event) {
|
|
Shinya Kitaoka |
120a6e |
/*-- Levelが取得できない場合はMenuを出さない --*/
|
|
Shinya Kitaoka |
120a6e |
TApp *app = TApp::instance();
|
|
Shinya Kitaoka |
120a6e |
TXshLevel *xl = app->getCurrentLevel()->getLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!xl) return;
|
|
Shinya Kitaoka |
120a6e |
TXshSimpleLevel *sl = xl->getSimpleLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!sl) return;
|
|
Shinya Kitaoka |
120a6e |
TPalette *currentPalette =
|
|
Shinya Kitaoka |
120a6e |
app->getPaletteController()->getCurrentLevelPalette()->getPalette();
|
|
Shinya Kitaoka |
120a6e |
if (!currentPalette) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QMenu menu(this);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(CommandManager::instance()->getAction(MI_LoadColorModel));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QAction *loadCurrentFrame =
|
|
Shinya Kitaoka |
120a6e |
new QAction(QString(tr("Use Current Frame")), this);
|
|
Shinya Kitaoka |
120a6e |
connect(loadCurrentFrame, SIGNAL(triggered()), SLOT(loadCurrentFrame()));
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(loadCurrentFrame);
|
|
Shinya Kitaoka |
120a6e |
|
|
shun_iwasawa |
9cbd0e |
if (!m_imageViewer->getImage()) {
|
|
shun_iwasawa |
9cbd0e |
menu.exec(event->globalPos());
|
|
shun_iwasawa |
9cbd0e |
return;
|
|
shun_iwasawa |
9cbd0e |
}
|
|
shun_iwasawa |
9cbd0e |
|
|
Shinya Kitaoka |
120a6e |
QAction *removeColorModel =
|
|
Shinya Kitaoka |
120a6e |
new QAction(QString(tr("Remove Color Model")), this);
|
|
Shinya Kitaoka |
120a6e |
connect(removeColorModel, SIGNAL(triggered()), SLOT(removeColorModel()));
|
|
Shinya Kitaoka |
120a6e |
menu.addAction(removeColorModel);
|
|
Shinya Kitaoka |
120a6e |
|
|
shun_iwasawa |
9cbd0e |
/* If there is at least one style with "picked pos" parameter, then enable
|
|
shun_iwasawa |
9cbd0e |
* repick command */
|
|
shun_iwasawa |
9cbd0e |
TRasterImageP ri = m_imageViewer->getImage();
|
|
shun_iwasawa |
9cbd0e |
if (ri && currentPalette->hasPickedPosStyle()) {
|
|
shun_iwasawa |
9cbd0e |
menu.addSeparator();
|
|
shun_iwasawa |
9cbd0e |
QAction *repickFromColorModelAct = new QAction(
|
|
shun_iwasawa |
9cbd0e |
QString(tr("Update Colors by Using Picked Positions")), this);
|
|
shun_iwasawa |
9cbd0e |
connect(repickFromColorModelAct, SIGNAL(triggered()),
|
|
shun_iwasawa |
9cbd0e |
SLOT(repickFromColorModel()));
|
|
shun_iwasawa |
9cbd0e |
menu.addAction(repickFromColorModelAct);
|
|
shun_iwasawa |
9cbd0e |
}
|
|
shun_iwasawa |
9cbd0e |
|
|
Shinya Kitaoka |
120a6e |
menu.addSeparator();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QString shortcut = QString::fromStdString(
|
|
Shinya Kitaoka |
120a6e |
CommandManager::instance()->getShortcutFromId(V_ZoomReset));
|
|
Shinya Kitaoka |
120a6e |
QAction *reset = menu.addAction(tr("Reset View") + "\t " + shortcut);
|
|
Shinya Kitaoka |
120a6e |
connect(reset, SIGNAL(triggered()), m_imageViewer, SLOT(resetView()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
shortcut = QString::fromStdString(
|
|
Shinya Kitaoka |
120a6e |
CommandManager::instance()->getShortcutFromId(V_ZoomFit));
|
|
Shinya Kitaoka |
120a6e |
QAction *fit = menu.addAction(tr("Fit to Window") + "\t" + shortcut);
|
|
Shinya Kitaoka |
120a6e |
connect(fit, SIGNAL(triggered()), m_imageViewer, SLOT(fitView()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
menu.exec(event->globalPos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! If left button is pressed recall \b pick() in event pos.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::mousePressEvent(QMouseEvent *event) {
|
|
Shinya Kitaoka |
120a6e |
if (event->button() == Qt::LeftButton) pick(event->pos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! If left button is moved recall \b pick() in event pos.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::mouseMoveEvent(QMouseEvent *event) {
|
|
Shinya Kitaoka |
120a6e |
if (event->buttons() & Qt::LeftButton) pick(event->pos());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Pick color from image and set it as current style.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::pick(const QPoint &p) {
|
|
Shinya Kitaoka |
120a6e |
TImageP img = m_imageViewer->getImage();
|
|
Shinya Kitaoka |
120a6e |
if (!img) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TPaletteHandle *ph =
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getPaletteController()->getCurrentLevelPalette();
|
|
Shinya Kitaoka |
120a6e |
TPalette *currentPalette = ph->getPalette();
|
|
Shinya Kitaoka |
120a6e |
if (!currentPalette) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
/*- 画面外ではPickできない -*/
|
|
Shinya Kitaoka |
120a6e |
if (!m_imageViewer->rect().contains(p)) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
StylePicker picker(img, currentPalette);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QPoint viewP = m_imageViewer->mapFrom(this, p);
|
|
Shinya Kitaoka |
120a6e |
TPointD pos = m_imageViewer->getViewAff().inv() *
|
|
Shinya Kitaoka |
120a6e |
TPointD(viewP.x() - m_imageViewer->width() / 2,
|
|
Shinya Kitaoka |
120a6e |
-viewP.y() + m_imageViewer->height() / 2);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
/*---
|
|
Shinya Kitaoka |
120a6e |
カレントToolに合わせてPickモードを変更
|
|
Shinya Kitaoka |
120a6e |
0=Area, 1=Line, 2=Line&Areas(default)
|
|
Shinya Kitaoka |
120a6e |
---*/
|
|
Shinya Kitaoka |
120a6e |
int styleIndex = picker.pickStyleId(pos, 1, m_mode);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (styleIndex < 0) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
/*-- pickLineモードのとき、取得Styleが0の場合 /
|
|
Shinya Kitaoka |
120a6e |
* PurePaintの部分をクリックした場合 はカレントStyleを変えない --*/
|
|
Shinya Kitaoka |
120a6e |
if (m_mode == 1) {
|
|
Shinya Kitaoka |
120a6e |
if (styleIndex == 0) return;
|
|
Shinya Kitaoka |
120a6e |
TToonzImageP ti = img;
|
|
Shinya Kitaoka |
120a6e |
if (ti && picker.pickTone(pos) == 255) return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
/*- Paletteに存在しない色が取れた場合はreturn -*/
|
|
Shinya Kitaoka |
120a6e |
TPalette::Page *page = currentPalette->getStylePage(styleIndex);
|
|
Shinya Kitaoka |
120a6e |
if (!page) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
/*-- Styleを選択している場合は選択を解除する --*/
|
|
Shinya Kitaoka |
120a6e |
TSelection *selection =
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentSelection()->getSelection();
|
|
Shinya Kitaoka |
120a6e |
if (selection) {
|
|
Shinya Kitaoka |
120a6e |
TStyleSelection *styleSelection =
|
|
Shinya Kitaoka |
120a6e |
dynamic_cast<tstyleselection *="">(selection);</tstyleselection>
|
|
Shinya Kitaoka |
120a6e |
if (styleSelection) styleSelection->selectNone();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
shun_iwasawa |
e897af |
/*
|
|
shun_iwasawa |
48c671 |
if the Style Picker tool is current and "organize palette" is activated,
|
|
shun_iwasawa |
e897af |
then move the picked style to the first page of the palette.
|
|
shun_iwasawa |
06bcc2 |
*/
|
|
shun_iwasawa |
48c671 |
TTool *tool = TApp::instance()->getCurrentTool()->getTool();
|
|
shun_iwasawa |
e897af |
if (tool->getName() == "T_StylePicker") {
|
|
shun_iwasawa |
e897af |
StylePickerTool *spTool = dynamic_cast<stylepickertool *="">(tool);</stylepickertool>
|
|
shun_iwasawa |
e897af |
if (spTool && spTool->isOrganizePaletteActive()) {
|
|
shun_iwasawa |
e897af |
TPoint point = picker.getRasterPoint(pos);
|
|
shun_iwasawa |
e897af |
PaletteCmd::organizePaletteStyle(ph, styleIndex, point);
|
|
shun_iwasawa |
48c671 |
}
|
|
shun_iwasawa |
48c671 |
}
|
|
shun_iwasawa |
06bcc2 |
|
|
Shinya Kitaoka |
120a6e |
ph->setStyleIndex(styleIndex);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::hideEvent(QHideEvent *e) {
|
|
Shinya Kitaoka |
120a6e |
TPaletteHandle *paletteHandle = getPaletteHandle();
|
|
Shinya Kitaoka |
120a6e |
TXshLevelHandle *levelHandle = TApp::instance()->getCurrentLevel();
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = TApp::instance()->getCurrentTool();
|
|
Shinya Kitaoka |
120a6e |
disconnect(paletteHandle, SIGNAL(paletteSwitched()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(showCurrentImage()));
|
|
Shinya Kitaoka |
120a6e |
disconnect(paletteHandle, SIGNAL(paletteChanged()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(showCurrentImage()));
|
|
Shinya Kitaoka |
120a6e |
disconnect(paletteHandle, SIGNAL(colorStyleChanged()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(showCurrentImage()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
disconnect(toolHandle, SIGNAL(toolSwitched()), this, SLOT(changePickType()));
|
|
Shinya Kitaoka |
120a6e |
disconnect(toolHandle, SIGNAL(toolChanged()), this, SLOT(changePickType()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
disconnect(levelHandle, SIGNAL(xshLevelViewChanged()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(updateViewer()));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::showEvent(QShowEvent *e) {
|
|
Shinya Kitaoka |
120a6e |
TPaletteHandle *paletteHandle = getPaletteHandle();
|
|
Shinya Kitaoka |
120a6e |
TXshLevelHandle *levelHandle = TApp::instance()->getCurrentLevel();
|
|
Shinya Kitaoka |
120a6e |
ToolHandle *toolHandle = TApp::instance()->getCurrentTool();
|
|
Shinya Kitaoka |
120a6e |
bool ret = connect(paletteHandle, SIGNAL(paletteSwitched()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(showCurrentImage()));
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(paletteHandle, SIGNAL(paletteChanged()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(showCurrentImage()));
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(paletteHandle, SIGNAL(colorStyleChanged()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(showCurrentImage()));
|
|
Shinya Kitaoka |
120a6e |
/*- ツールのTypeに合わせてPickのタイプも変え、カーソルも切り替える -*/
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(toolHandle, SIGNAL(toolSwitched()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(changePickType()));
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(toolHandle, SIGNAL(toolChanged()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(changePickType()));
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(levelHandle, SIGNAL(xshLevelViewChanged()), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(updateViewer()));
|
|
Shinya Kitaoka |
120a6e |
assert(ret);
|
|
Shinya Kitaoka |
120a6e |
changePickType();
|
|
Shinya Kitaoka |
120a6e |
showCurrentImage();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*- ツールのTypeに合わせてPickのタイプも変え、カーソルも切り替える -*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::changePickType() {
|
|
shun_iwasawa |
06bcc2 |
TTool *tool = TApp::instance()->getCurrentTool()->getTool();
|
|
shun_iwasawa |
06bcc2 |
if (tool->getName() == T_StylePicker) {
|
|
shun_iwasawa |
e897af |
StylePickerTool *stylePickerTool = dynamic_cast<stylepickertool *="">(tool);</stylepickertool>
|
|
shun_iwasawa |
06bcc2 |
if (stylePickerTool->isOrganizePaletteActive()) {
|
|
shun_iwasawa |
06bcc2 |
setToolCursor(m_imageViewer, ToolCursor::PickerCursorOrganize);
|
|
shun_iwasawa |
06bcc2 |
return;
|
|
shun_iwasawa |
06bcc2 |
}
|
|
shun_iwasawa |
06bcc2 |
}
|
|
shun_iwasawa |
06bcc2 |
|
|
shun_iwasawa |
06bcc2 |
TPropertyGroup *propGroup = tool->getProperties(0);
|
|
Shinya Kitaoka |
120a6e |
/*- Propertyの無いツールの場合 -*/
|
|
Shinya Kitaoka |
120a6e |
if (!propGroup) {
|
|
Shinya Kitaoka |
120a6e |
m_mode = 2;
|
|
Shinya Kitaoka |
120a6e |
setToolCursor(m_imageViewer, ToolCursor::PickerCursor);
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
/*- Mode: の無いツールの場合は0が返る -*/
|
|
Shinya Kitaoka |
120a6e |
TProperty *modeProp = propGroup->getProperty("Mode:");
|
|
Shinya Kitaoka |
120a6e |
if (!modeProp) {
|
|
Shinya Kitaoka |
120a6e |
m_mode = 2;
|
|
Shinya Kitaoka |
120a6e |
setToolCursor(m_imageViewer, ToolCursor::PickerCursor);
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
else {
|
|
Shinya Kitaoka |
120a6e |
std::string var = modeProp->getValueAsString();
|
|
Shinya Kitaoka |
120a6e |
if (var == LINES) {
|
|
Shinya Kitaoka |
120a6e |
m_mode = 1;
|
|
Shinya Kitaoka |
120a6e |
setToolCursor(m_imageViewer, ToolCursor::PickerCursorLine);
|
|
Shinya Kitaoka |
120a6e |
} else if (var == AREAS) {
|
|
Shinya Kitaoka |
120a6e |
m_mode = 0;
|
|
Shinya Kitaoka |
120a6e |
setToolCursor(m_imageViewer, ToolCursor::PickerCursorArea);
|
|
Shinya Kitaoka |
120a6e |
} else // Line & Areas
|
|
Shinya Kitaoka |
120a6e |
{
|
|
Shinya Kitaoka |
120a6e |
m_mode = 2;
|
|
Shinya Kitaoka |
120a6e |
setToolCursor(m_imageViewer, ToolCursor::PickerCursor);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! If current palette level exists reset image viewer and set current viewer
|
|
Toshihiro Shimizu |
890ddd |
to refences image path level.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::updateViewer() { getImageViewer()->repaint(); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::showCurrentImage() {
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = getPaletteHandle()->getPalette();
|
|
Shinya Kitaoka |
120a6e |
if (!palette) {
|
|
Shinya Kitaoka |
120a6e |
resetImageViewer();
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
TApp *app = TApp::instance();
|
|
Shinya Kitaoka |
120a6e |
TXshLevel *xl = app->getCurrentLevel()->getLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!xl) {
|
|
Shinya Kitaoka |
120a6e |
resetImageViewer();
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
/*-- UseCurrentFrameの場合、paletteを差し替える --*/
|
|
Shinya Kitaoka |
120a6e |
if (palette->getRefImgPath() == xl->getPath()) {
|
|
Shinya Kitaoka |
120a6e |
TXshSimpleLevel *sl = xl->getSimpleLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!sl) {
|
|
Shinya Kitaoka |
120a6e |
resetImageViewer();
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
/*- 同じTFrameIdだった場合、パレットを差し替える -*/
|
|
Shinya Kitaoka |
120a6e |
if (m_currentRefImgPath == xl->getPath()) {
|
|
Shinya Kitaoka |
120a6e |
TImageP refImg = m_imageViewer->getImage();
|
|
Shinya Kitaoka |
120a6e |
if (!refImg) {
|
|
Shinya Kitaoka |
120a6e |
resetImageViewer();
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TImageP refImg_clone = refImg->cloneImage();
|
|
Shinya Kitaoka |
120a6e |
refImg_clone->setPalette(palette);
|
|
Shinya Kitaoka |
120a6e |
m_imageViewer->setImage(refImg_clone);
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
/*- UseCurrentFrameのLevelに移動してきた場合、Levelを入れ直す -*/
|
|
Shinya Kitaoka |
120a6e |
else {
|
|
Shinya Kitaoka |
120a6e |
reloadCurrentFrame();
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
/*- 以下、通常のColorModelが読み込まれている場合 -*/
|
|
Shinya Kitaoka |
120a6e |
resetImageViewer();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
ToonzScene *scene = TApp::instance()->getCurrentScene()->getScene();
|
|
Shinya Kitaoka |
120a6e |
TFilePath fp = scene->decodeFilePath(palette->getRefImgPath());
|
|
Shinya Kitaoka |
120a6e |
if (TSystem::doesExistFileOrLevel(fp)) {
|
|
Shinya Kitaoka |
120a6e |
setLevel(fp, palette);
|
|
Shinya Kitaoka |
120a6e |
} else if (!fp.isEmpty())
|
|
Shinya Kitaoka |
120a6e |
emit refImageNotFound();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Clone current image and set it in viewer.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::loadCurrentFrame() {
|
|
Shinya Kitaoka |
120a6e |
TApp *app = TApp::instance();
|
|
Shinya Kitaoka |
120a6e |
TXshLevel *xl = app->getCurrentLevel()->getLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!xl) return;
|
|
Shinya Kitaoka |
120a6e |
TXshSimpleLevel *sl = xl->getSimpleLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!sl) return;
|
|
Shinya Kitaoka |
120a6e |
/*- カレントフレームのFIdの取得 -*/
|
|
Shinya Kitaoka |
120a6e |
TFrameId fid;
|
|
Shinya Kitaoka |
120a6e |
if (app->getCurrentFrame()->isEditingLevel())
|
|
Shinya Kitaoka |
120a6e |
fid = app->getCurrentFrame()->getFid();
|
|
Shinya Kitaoka |
120a6e |
else if (app->getCurrentFrame()->isEditingScene()) {
|
|
Shinya Kitaoka |
120a6e |
int columnIndex = app->getCurrentColumn()->getColumnIndex();
|
|
Shinya Kitaoka |
120a6e |
TXsheet *xsh = app->getCurrentXsheet()->getXsheet();
|
|
Shinya Kitaoka |
120a6e |
if (!xsh) return;
|
|
Shinya Kitaoka |
120a6e |
TXshColumn *column = xsh->getColumn(columnIndex);
|
|
Shinya Kitaoka |
120a6e |
if (!column) return;
|
|
Shinya Kitaoka |
120a6e |
int frame = app->getCurrentFrame()->getFrame();
|
|
Shinya Kitaoka |
120a6e |
fid = column->getCellColumn()->getCell(frame).getFrameId();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
TImageP img = sl->getFrame(fid, true);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TPalette *currentPalette =
|
|
Shinya Kitaoka |
120a6e |
app->getPaletteController()->getCurrentLevelPalette()->getPalette();
|
|
Shinya Kitaoka |
120a6e |
if (!img || !currentPalette) return;
|
|
Shinya Kitaoka |
120a6e |
TImageP refImg = img->cloneImage();
|
|
Shinya Kitaoka |
120a6e |
currentPalette->setRefImg(TImageP());
|
|
Shinya Kitaoka |
120a6e |
/*--onPaletteSwitchedでRefImagePathを見て、自分自身のパスを参照していたらUpdateのルーチンを切り替える--*/
|
|
Shinya Kitaoka |
120a6e |
currentPalette->setRefImgPath(xl->getPath());
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
std::vector<tframeid> fids;</tframeid>
|
|
Shinya Kitaoka |
120a6e |
fids.push_back(fid);
|
|
Shinya Kitaoka |
120a6e |
currentPalette->setRefLevelFids(fids);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_currentRefImgPath = xl->getPath();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_levels.clear();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_levelNames.clear();
|
|
Shinya Kitaoka |
120a6e |
m_framesCount = 1;
|
|
Shinya Kitaoka |
120a6e |
m_palette = 0;
|
|
Shinya Kitaoka |
120a6e |
m_lr = TLevelReaderP();
|
|
Shinya Kitaoka |
120a6e |
m_dim = TDimension(0, 0);
|
|
Shinya Kitaoka |
120a6e |
m_loadbox = TRect();
|
|
Shinya Kitaoka |
120a6e |
m_loadboxes.clear();
|
|
Shinya Kitaoka |
120a6e |
m_flipConsole->enableProgressBar(false);
|
|
Shinya Kitaoka |
120a6e |
m_flipConsole->setProgressBarStatus(0);
|
|
Shinya Kitaoka |
120a6e |
m_flipConsole->setFrameRange(1, 1, 1);
|
|
Shinya Kitaoka |
120a6e |
m_title1 = m_viewerTitle + " :: " +
|
|
Shinya Kitaoka |
120a6e |
m_currentRefImgPath.withoutParentDir().withFrame(fid);
|
|
Shinya Kitaoka |
120a6e |
m_title = " :: <use current="" frame="">";</use>
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_imageViewer->setImage(refImg);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
/*--
|
|
Shinya Kitaoka |
120a6e |
* UseCurrentFrameのLevelに移動してきたときに、改めてCurrentFrameを格納しなおす
|
|
Shinya Kitaoka |
120a6e |
* --*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::reloadCurrentFrame() {
|
|
Shinya Kitaoka |
120a6e |
TApp *app = TApp::instance();
|
|
Shinya Kitaoka |
120a6e |
TXshLevel *xl = app->getCurrentLevel()->getLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!xl) return;
|
|
Shinya Kitaoka |
120a6e |
TXshSimpleLevel *sl = xl->getSimpleLevel();
|
|
Shinya Kitaoka |
120a6e |
if (!sl) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TPalette *currentPalette =
|
|
Shinya Kitaoka |
120a6e |
app->getPaletteController()->getCurrentLevelPalette()->getPalette();
|
|
Shinya Kitaoka |
120a6e |
if (!currentPalette) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
std::vector<tframeid> fids = currentPalette->getRefLevelFids();</tframeid>
|
|
Shinya Kitaoka |
120a6e |
/*- CurrentFrameなので、1Frameのみのはず -*/
|
|
Shinya Kitaoka |
120a6e |
if (fids.size() != 1) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TImageP img = sl->getFrame(fids[0], true);
|
|
Shinya Kitaoka |
120a6e |
if (!img) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TImageP refImg = img->cloneImage();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
currentPalette->setRefImg(TImageP());
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
currentPalette->setRefImgPath(xl->getPath());
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
/*- currentRefImgPathの更新 -*/
|
|
Shinya Kitaoka |
120a6e |
m_currentRefImgPath = xl->getPath();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_levels.clear();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_levelNames.clear();
|
|
Shinya Kitaoka |
120a6e |
m_framesCount = 1;
|
|
Shinya Kitaoka |
120a6e |
m_palette = 0;
|
|
Shinya Kitaoka |
120a6e |
m_lr = TLevelReaderP();
|
|
Shinya Kitaoka |
120a6e |
m_dim = TDimension(0, 0);
|
|
Shinya Kitaoka |
120a6e |
m_loadbox = TRect();
|
|
Shinya Kitaoka |
120a6e |
m_loadboxes.clear();
|
|
Shinya Kitaoka |
120a6e |
m_flipConsole->enableProgressBar(false);
|
|
Shinya Kitaoka |
120a6e |
m_flipConsole->setProgressBarStatus(0);
|
|
Shinya Kitaoka |
120a6e |
m_flipConsole->setFrameRange(1, 1, 1);
|
|
Shinya Kitaoka |
120a6e |
m_title1 = m_viewerTitle + " :: " +
|
|
Shinya Kitaoka |
120a6e |
m_currentRefImgPath.withoutParentDir().withFrame(fids[0]);
|
|
Shinya Kitaoka |
120a6e |
m_title = " :: <use current="" frame="">";</use>
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_imageViewer->setImage(refImg);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Remove reference image from current palette using
|
|
Shinya Kitaoka |
120a6e |
\b PaletteCmd::removeReferenceImage() and reset image viewer.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::removeColorModel() {
|
|
Shinya Kitaoka |
120a6e |
PaletteCmd::removeReferenceImage(getPaletteHandle());
|
|
Shinya Kitaoka |
120a6e |
resetImageViewer();
|
|
Shinya Kitaoka |
120a6e |
m_currentRefImgPath = TFilePath();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void ColorModelViewer::onRefImageNotFound() {
|
|
Shinya Kitaoka |
120a6e |
DVGui::info(
|
|
Shinya Kitaoka |
120a6e |
tr("It is not possible to retrieve the color model set for the current "
|
|
Shinya Kitaoka |
120a6e |
"level."));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun_iwasawa |
9cbd0e |
//-----------------------------------------------------------------------------
|
|
shun_iwasawa |
9cbd0e |
|
|
shun_iwasawa |
9cbd0e |
void ColorModelViewer::repickFromColorModel() {
|
|
shun_iwasawa |
9cbd0e |
TImageP img = m_imageViewer->getImage();
|
|
shun_iwasawa |
9cbd0e |
if (!img) return;
|
|
shun_iwasawa |
9cbd0e |
TPaletteHandle *ph =
|
|
shun_iwasawa |
9cbd0e |
TApp::instance()->getPaletteController()->getCurrentLevelPalette();
|
|
shun_iwasawa |
9cbd0e |
|
|
shun_iwasawa |
9cbd0e |
PaletteCmd::pickColorByUsingPickedPosition(ph, img);
|
|
shun_iwasawa |
9cbd0e |
}
|
|
shun_iwasawa |
9cbd0e |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
OpenFloatingPanel openColorModelCommand(MI_OpenColorModel, "ColorModel",
|
|
Shinya Kitaoka |
120a6e |
QObject::tr("Color Model"));
|