本文整理汇总了C++中TXsheet::insertColumn方法的典型用法代码示例。如果您正苦于以下问题:C++ TXsheet::insertColumn方法的具体用法?C++ TXsheet::insertColumn怎么用?C++ TXsheet::insertColumn使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TXsheet
的用法示例。
在下文中一共展示了TXsheet::insertColumn方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: emptyColumns
void CellsMover::emptyColumns(int c) const {
std::set<int> ii;
for (int i = 0; i < m_colCount; i++) ii.insert(c + i);
ColumnCmd::deleteColumns(ii, false, true);
TXsheet *xsh = getXsheet();
for (int i = 0; i < m_colCount; i++) xsh->insertColumn(c);
}
示例2: redo
void InsertEmptyColumnsUndo::redo() const {
TApp *app = TApp::instance();
TXsheet *xsh = app->getCurrentXsheet()->getXsheet();
// If this is the very first column, add one now since there is always
// 1 visible on the screen but its not actually there yet.
if (!xsh->getColumnCount()) xsh->insertColumn(0);
std::vector<std::pair<int, int>>::const_reverse_iterator bt,
bEnd = m_columnBlocks.rend();
for (bt = m_columnBlocks.rbegin(); bt != bEnd; ++bt)
for (int n = 0; n != bt->second; ++n) xsh->insertColumn(bt->first);
app->getCurrentScene()->setDirtyFlag(true);
app->getCurrentXsheet()->notifyXsheetChanged();
app->getCurrentObject()->notifyObjectIdSwitched();
}
示例3: cloneChild
void ColumnCmd::cloneChild(int index) {
if (!canResequence(index)) return;
/*-- カラムを取得 --*/
TXsheet *xsh = TApp::instance()->getCurrentXsheet()->getXsheet();
TXshColumn *column = xsh->getColumn(index);
assert(column);
// get the subxsheet to clone (childLevel, childXsh)
/*-- SubXsheetレベルを取得 --*/
TXshLevelColumn *lcolumn = column->getLevelColumn();
assert(lcolumn);
int r0 = 0, r1 = -1;
lcolumn->getRange(r0, r1);
assert(r0 <= r1);
/*-- SubXsheetの一番頭のセル --*/
TXshCell cell = lcolumn->getCell(r0);
assert(!cell.isEmpty());
/*- cell内に格納されているLevelを取得 -*/
TXshChildLevel *childLevel = cell.m_level->getChildLevel();
assert(childLevel);
/*- SubXsheetのXsheetを取得 -*/
TXsheet *childXsh = childLevel->getXsheet();
// insert a new empty column
/*- 隣に空きColumnをInsertしてCloneに備える -*/
int newColumnIndex = index + 1;
xsh->insertColumn(newColumnIndex);
// create a subxsheet (newChildLevel, newChildXsh)
ToonzScene *scene = TApp::instance()->getCurrentScene()->getScene();
ChildStack *childStack = scene->getChildStack();
TXshChildLevel *newChildLevel = childStack->createChild(0, newColumnIndex);
TXsheet *newChildXsh = newChildLevel->getXsheet();
// copy columns.
std::set<int> indices;
for (int i = 0; i < childXsh->getColumnCount(); i++) indices.insert(i);
StageObjectsData *data = new StageObjectsData();
data->storeColumns(indices, childXsh, 0);
data->storeColumnFxs(indices, childXsh, 0);
std::list<int> restoredSplineIds;
data->restoreObjects(indices, restoredSplineIds, newChildXsh,
StageObjectsData::eDoClone);
delete data;
cloneNotColumnLinkedFxsAndOutputsFx(childXsh, newChildXsh);
cloneXsheetTStageObjectTree(childXsh, newChildXsh);
/*--以下は、Clone SubXsheet
するときに、SubXsheet内にある子SubXsheetをクローンする関数
クローンされた中にある子SubXsheetは、同じもので良いので、スキップする --*/
// cloneSubXsheets(newChildXsh);
/*-- XSheetノードのFxSchematicでのDagNodePosを再現
FxやColumnノードの位置の再現は上のsetColumnで行っている
--*/
newChildXsh->getFxDag()->getXsheetFx()->getAttributes()->setDagNodePos(
childXsh->getFxDag()->getXsheetFx()->getAttributes()->getDagNodePos());
newChildXsh->updateFrameCount();
/*-- TXshChildLevel作成時にsetCellした1つ目のセルを消去 --*/
xsh->removeCells(0, newColumnIndex);
/*-- CloneしたColumnのセル番号順を再現 --*/
for (int r = r0; r <= r1; r++) {
TXshCell cell = lcolumn->getCell(r);
if (cell.isEmpty()) continue;
cell.m_level = newChildLevel;
xsh->setCell(r, newColumnIndex, cell);
}
TStageObjectId currentObjectId =
TApp::instance()->getCurrentObject()->getObjectId();
xsh->getStageObject(TStageObjectId::ColumnId(newColumnIndex))
->setParent(xsh->getStageObjectParent(currentObjectId));
xsh->updateFrameCount();
TUndoManager::manager()->add(
new CloneChildUndo(newChildLevel, newColumnIndex));
// notify changes
TApp::instance()->getCurrentScene()->setDirtyFlag(true);
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
}
示例4: apply
//.........这里部分代码省略.........
parentDir = scene->decodeFilePath(parentDir);
if (!TFileStatus(parentDir).doesExist()) {
QString question;
/*question = "Folder " +toQString(parentDir) +
" doesn't exist.\nDo you
want to create it?";*/
question = tr("Folder %1 doesn't exist.\nDo you want to create it?")
.arg(toQString(parentDir));
int ret = DVGui::MsgBox(question, QObject::tr("Yes"), QObject::tr("No"));
if (ret == 0 || ret == 2) return false;
try {
TSystem::mkDir(parentDir);
DvDirModel::instance()->refreshFolder(parentDir.getParentDir());
} catch (...) {
error(tr("Unable to create") + toQString(parentDir));
return false;
}
}
TXshLevel *level =
scene->createNewLevel(lType, levelName, TDimension(), 0, fp);
TXshSimpleLevel *sl = dynamic_cast<TXshSimpleLevel *>(level);
assert(sl);
sl->setPath(fp, true);
if (lType == TZP_XSHLEVEL || lType == OVL_XSHLEVEL) {
sl->getProperties()->setDpiPolicy(LevelProperties::DP_ImageDpi);
sl->getProperties()->setDpi(dpi);
sl->getProperties()->setImageDpi(TPointD(dpi, dpi));
sl->getProperties()->setImageRes(TDimension(xres, yres));
}
/*-- これからLevelを配置しようとしているセルが空いているかどうかのチェック
* --*/
bool areColumnsShifted = false;
TXshCell cell = xsh->getCell(row, col);
bool isInRange = true;
for (i = row; i < row + numFrames; i++) {
if (!cell.isEmpty()) {
isInRange = false;
break;
}
cell = xsh->getCell(i, col);
}
if (!validColumn) {
isInRange = false;
}
/*-- 別のLevelに占有されていた場合、Columnを1つ右に移動 --*/
if (!isInRange) {
col += 1;
TApp::instance()->getCurrentColumn()->setColumnIndex(col);
areColumnsShifted = true;
xsh->insertColumn(col);
}
CreateLevelUndo *undo =
new CreateLevelUndo(row, col, numFrames, step, areColumnsShifted);
TUndoManager::manager()->add(undo);
for (i = from; i <= to; i += inc) {
TFrameId fid(i);
TXshCell cell(sl, fid);
if (lType == PLI_XSHLEVEL)
sl->setFrame(fid, new TVectorImage());
else if (lType == TZP_XSHLEVEL) {
TRasterCM32P raster(xres, yres);
raster->fill(TPixelCM32());
TToonzImageP ti(raster, TRect());
ti->setDpi(dpi, dpi);
sl->setFrame(fid, ti);
ti->setSavebox(TRect(0, 0, xres - 1, yres - 1));
} else if (lType == OVL_XSHLEVEL) {
TRaster32P raster(xres, yres);
raster->clear();
TRasterImageP ri(raster);
ri->setDpi(dpi, dpi);
sl->setFrame(fid, ri);
}
for (j = 0; j < step; j++) xsh->setCell(row++, col, cell);
}
if (lType == TZP_XSHLEVEL || lType == OVL_XSHLEVEL) {
sl->save(fp);
DvDirModel::instance()->refreshFolder(fp.getParentDir());
}
undo->onAdd(sl);
app->getCurrentScene()->notifySceneChanged();
app->getCurrentScene()->notifyCastChange();
app->getCurrentXsheet()->notifyXsheetChanged();
// Cambia l'immagine corrente ma non cambiano ne' il frame ne' la colonna
// corrente
// (entrambi notificano il cambiamento dell'immagine al tool).
// devo verfificare che sia settato il tool giusto.
app->getCurrentTool()->onImageChanged(
(TImage::Type)app->getCurrentImageType());
return true;
}
示例5: apply
//.........这里部分代码省略.........
connect(m_vectorizer, SIGNAL(frameName(QString)), this, SLOT(onFrameName(QString)), Qt::QueuedConnection);
connect(m_vectorizer, SIGNAL(frameDone(int)), this, SLOT(onFrameDone(int)), Qt::QueuedConnection);
connect(m_vectorizer, SIGNAL(partialDone(int, int)), this, SLOT(onPartialDone(int, int)), Qt::QueuedConnection);
//We DON'T want the progress bar to be hidden at cancel press - since its modal
//behavior prevents the user to interfere with a possibly still active vectorization.
disconnect(m_progressDialog, SIGNAL(canceled()), m_progressDialog, SLOT(onCancel()));
//We first inform the vectorizer of a cancel press;
bool ret = connect(m_progressDialog, SIGNAL(canceled()), m_vectorizer, SLOT(cancel()));
//which eventually transmits the command to vectorization core, allowing full-time cancels
ret = ret && connect(m_progressDialog, SIGNAL(canceled()), m_vectorizer, SIGNAL(transmitCancel()));
//Only after the vectorizer has terminated its process - or got cancelled, we are allowed
//to proceed here.
ret = ret && connect(m_vectorizer, SIGNAL(finished()), this, SLOT(onFinished()), Qt::QueuedConnection);
assert(ret);
int newIndexColumn = c1 + 1;
std::set<TXshLevel *>::iterator it = levels.begin();
for (it; it != levels.end(); it++) {
TXshSimpleLevel *sl = dynamic_cast<TXshSimpleLevel *>(*it);
if (!sl || !sl->getSimpleLevel() || !isLevelToConvert(sl)) {
QString levelName = tr(toString(sl->getName()).c_str());
QString errorMsg = tr("Cannot convert to vector the current selection.") + levelName;
error(errorMsg);
continue;
}
std::vector<TFrameId> fids;
if (isCellSelection)
getSelectedFids(fids, sl, r0, c0, r1, c1);
else
sl->getFids(fids);
assert(fids.size() > 0);
close();
// Re-initialize progress Bar
m_progressDialog->setMaximum(fids.size() * 100);
m_progressDialog->setValue(0);
m_currFrame = 0;
// Re-initialize vectorizer
m_vectorizer->setLevel(sl);
m_vectorizer->setFids(fids);
// Start vectorizing
m_vectorizer->start();
m_progressDialog->show();
// Wait the vectorizer...
while (!l_quitLoop)
QCoreApplication::processEvents(QEventLoop::AllEvents | QEventLoop::WaitForMoreEvents);
l_quitLoop = false;
// Assign output X-sheet cells
TXshSimpleLevel *vl = m_vectorizer->getVectorizedLevel();
if (isCellSelection && vl) {
TXsheet *xsheet = TApp::instance()->getCurrentXsheet()->getXsheet();
xsheet->insertColumn(newIndexColumn);
int r, c;
for (c = c0; c <= c1; c++) {
for (r = r0; r <= r1; r++) {
TXshCell cell = xsheet->getCell(r, c);
TXshSimpleLevel *level = (!cell.isEmpty()) ? cell.getSimpleLevel()
: 0;
if (level != sl)
continue;
TFrameId curFid = cell.getFrameId();
std::vector<TFrameId> newFids;
vl->getFids(newFids);
std::vector<TFrameId>::iterator it1 = newFids.begin();
for (it1; it1 != newFids.end(); it1++) {
TFrameId id = *it1;
if (id.getNumber() == curFid.getNumber() || // Hanno stesso numero di frame
(id.getNumber() == 1 && curFid.getNumber() == -2)) // La vecchia cella non ha numero di frame
xsheet->setCell(r, newIndexColumn, TXshCell(vl, id));
}
}
}
newIndexColumn += 1;
} else if (vl) {
std::vector<TFrameId> gomi;
scene->getXsheet()->exposeLevel(0, scene->getXsheet()->getFirstFreeColumnIndex(), vl, gomi);
}
if (m_vectorizer->isCanceled())
break;
}
m_progressDialog->close();
delete m_vectorizer;
TApp::instance()->getCurrentScene()->notifyCastChange();
TApp::instance()->getCurrentXsheet()->notifyXsheetChanged();
return true;
}