本文整理汇总了C++中Marker::setTick方法的典型用法代码示例。如果您正苦于以下问题:C++ Marker::setTick方法的具体用法?C++ Marker::setTick怎么用?C++ Marker::setTick使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Marker
的用法示例。
在下文中一共展示了Marker::setTick方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: adjustGlobalLists
void adjustGlobalLists(Undo& operations, int startPos, int diff)
{
const TempoList* t = &MusEGlobal::tempomap;
const AL::SigList* s = &AL::sigmap;
const KeyList* k = &MusEGlobal::keymap;
criTEvent it = t->rbegin();
AL::criSigEvent is = s->rbegin();
criKeyEvent ik = k->rbegin();
// key
for (; ik != k->rend(); ik++) {
const KeyEvent &ev = (KeyEvent)ik->second;
int tick = ev.tick;
int key = ev.key;
if (tick < startPos )
break;
if (tick > startPos && tick +diff < startPos ) { // remove
operations.push_back(UndoOp(UndoOp::DeleteKey, tick, key));
}
else {
operations.push_back(UndoOp(UndoOp::DeleteKey,tick, key));
operations.push_back(UndoOp(UndoOp::AddKey,tick+diff, key));
}
}
// tempo
for (; it != t->rend(); it++) {
const TEvent* ev = (TEvent*)it->second;
int tick = ev->tick;
int tempo = ev->tempo;
if (tick < startPos )
break;
if (tick > startPos && tick +diff < startPos ) { // remove
operations.push_back(UndoOp(UndoOp::DeleteTempo,tick, tempo));
}
else {
operations.push_back(UndoOp(UndoOp::DeleteTempo,tick, tempo));
operations.push_back(UndoOp(UndoOp::AddTempo,tick+diff, tempo));
}
}
// sig
for (; is != s->rend(); is++) {
const AL::SigEvent* ev = (AL::SigEvent*)is->second;
int tick = ev->tick;
if (tick < startPos )
break;
int z = ev->sig.z;
int n = ev->sig.n;
if (tick > startPos && tick +diff < startPos ) { // remove
operations.push_back(UndoOp(UndoOp::DeleteSig,tick, z, n));
}
else {
operations.push_back(UndoOp(UndoOp::DeleteSig,tick, z, n));
operations.push_back(UndoOp(UndoOp::AddSig,tick+diff, z, n));
}
}
MarkerList *markerlist = MusEGlobal::song->marker();
for(iMarker i = markerlist->begin(); i != markerlist->end(); ++i)
{
Marker* m = &i->second;
int tick = m->tick();
if (tick > startPos)
{
if (tick + diff < startPos ) { // these ticks should be removed
operations.push_back(UndoOp(UndoOp::ModifyMarker, 0, m));
} else {
Marker *newMarker = new Marker();
*newMarker = *m;
newMarker->setTick(tick + diff);
operations.push_back(UndoOp(UndoOp::ModifyMarker, newMarker, m));
}
}
}
}