本文整理汇总了C++中EventSelection::getSegment方法的典型用法代码示例。如果您正苦于以下问题:C++ EventSelection::getSegment方法的具体用法?C++ EventSelection::getSegment怎么用?C++ EventSelection::getSegment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EventSelection
的用法示例。
在下文中一共展示了EventSelection::getSegment方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BasicCommand
CollapseRestsCommand::CollapseRestsCommand
(EventSelection &selection) :
BasicCommand(getGlobalName(),
selection.getSegment(),
selection.getStartTime(),
selection.getEndTime())
{
// nothing else
}
示例2: MacroCommand
CutAndCloseCommand::CutAndCloseCommand(EventSelection &selection,
Clipboard *clipboard) :
MacroCommand(getGlobalName())
{
addCommand(new CutCommand(selection, clipboard));
addCommand(new CloseCommand(&selection.getSegment(),
selection.getEndTime(),
selection.getStartTime()));
}
示例3: BasicCommand
BasicSelectionCommand::BasicSelectionCommand(const QString &name,
EventSelection &selection,
bool bruteForceRedo) :
BasicCommand(name,
selection.getSegment(),
selection.getStartTime(),
selection.getEndTime(),
bruteForceRedo)
{
// nothing
}
示例4: NamedCommand
CopyCommand::CopyCommand(EventSelection &selection,
Clipboard *clipboard) :
NamedCommand(getGlobalName()),
m_targetClipboard(clipboard)
{
m_sourceClipboard = new Clipboard;
m_savedClipboard = 0;
std::string label = selection.getSegment().getLabel();
m_sourceClipboard->newSegment(&selection)->setLabel(
appendLabel(label, qstrtostr(tr("(excerpt)"))));
}
示例5: BasicCommand
EventUnquantizeCommand::EventUnquantizeCommand(
EventSelection &selection,
Quantizer *quantizer) :
BasicCommand(tr("Unquantize Events"),
selection.getSegment(),
selection.getStartTime(),
selection.getEndTime(),
true), // bruteForceRedo
m_quantizer(quantizer),
m_selection(&selection)
{
// nothing else
}
示例6: BasicCommand
AddIndicationCommand::AddIndicationCommand(std::string indicationType,
EventSelection &selection) :
BasicCommand(getGlobalName(indicationType),
selection.getSegment(),
std::min(selection.getStartTime(), selection.getNotationStartTime()),
std::max(selection.getEndTime(), selection.getNotationEndTime())),
m_indicationType(indicationType),
m_indicationStart(selection.getNotationStartTime()),
m_indicationDuration(selection.getTotalNotationDuration()),
m_lastInsertedEvent(0)
{
if (!canExecute()) {
throw CommandFailed
//!!! need to use text from trunk/src/gui/editors/notation/NotationView.cpp (but this requires an informal human-readable version of the indication name)
(qstrtostr(tr("Can't add identical overlapping indications")));
}
}
示例7: getSelection
void
MatrixSelector::setViewCurrentSelection(bool always)
{
if (always) m_previousCollisions.clear();
EventSelection* selection = 0;
bool changed = getSelection(selection);
if (!changed) {
delete selection;
return;
}
if (m_selectionToMerge && selection &&
m_selectionToMerge->getSegment() == selection->getSegment()) {
selection->addFromSelection(m_selectionToMerge);
m_scene->setSelection(selection, true);
} else if (!m_selectionToMerge) {
m_scene->setSelection(selection, true);
}
}
示例8: tr
void
MatrixMover::handleMouseRelease(const MatrixMouseEvent *e)
{
if (!e) return;
MATRIX_DEBUG << "MatrixMover::handleMouseRelease() - newPitch = "
<< e->pitch << endl;
if (!m_currentElement || !m_currentViewSegment) return;
timeT newTime = m_currentElement->getViewAbsoluteTime() +
(e->snappedLeftTime - m_clickSnappedLeftTime);
int newPitch = e->pitch;
if (newPitch > 127) newPitch = 127;
if (newPitch < 0) newPitch = 0;
// get a basic pitch difference calculation comparing the current element's
// pitch to the pitch the mouse was released at (see note in
// handleMouseMove)
using BaseProperties::PITCH;
timeT diffTime = newTime - m_currentElement->getViewAbsoluteTime();
int diffPitch = 0;
if (m_currentElement->event()->has(PITCH)) {
diffPitch = newPitch - m_currentElement->event()->get<Int>(PITCH);
}
EventSelection* selection = m_scene->getSelection();
// factor in transpose to adjust the height calculation
long pitchOffset = selection->getSegment().getTranspose();
diffPitch += (pitchOffset * -1);
if ((diffTime == 0 && diffPitch == 0) || selection->getAddedEvents() == 0) {
for (size_t i = 0; i < m_duplicateElements.size(); ++i) {
delete m_duplicateElements[i]->event();
delete m_duplicateElements[i];
}
m_duplicateElements.clear();
m_currentElement = 0;
return;
}
if (newPitch != m_lastPlayedPitch) {
long velocity = m_widget->getCurrentVelocity();
m_currentElement->event()->get<Int>(BaseProperties::VELOCITY, velocity);
m_scene->playNote(m_currentViewSegment->getSegment(), newPitch + (pitchOffset * -1), velocity);
m_lastPlayedPitch = newPitch;
}
QString commandLabel;
if (m_quickCopy) {
if (selection->getAddedEvents() < 2) {
commandLabel = tr("Copy and Move Event");
} else {
commandLabel = tr("Copy and Move Events");
}
} else {
if (selection->getAddedEvents() < 2) {
commandLabel = tr("Move Event");
} else {
commandLabel = tr("Move Events");
}
}
MacroCommand *macro = new MacroCommand(commandLabel);
EventSelection::eventcontainer::iterator it =
selection->getSegmentEvents().begin();
Segment &segment = m_currentViewSegment->getSegment();
EventSelection *newSelection = new EventSelection(segment);
timeT normalizeStart = selection->getStartTime();
timeT normalizeEnd = selection->getEndTime();
if (m_quickCopy) {
for (size_t i = 0; i < m_duplicateElements.size(); ++i) {
timeT time = m_duplicateElements[i]->getViewAbsoluteTime();
timeT endTime = time + m_duplicateElements[i]->getViewDuration();
if (time < normalizeStart) normalizeStart = time;
if (endTime > normalizeEnd) normalizeEnd = endTime;
macro->addCommand(new MatrixInsertionCommand
(segment, time, endTime,
m_duplicateElements[i]->event()));
delete m_duplicateElements[i]->event();
delete m_duplicateElements[i];
}
m_duplicateElements.clear();
m_quickCopy = false;
}
for (; it != selection->getSegmentEvents().end(); ++it) {
timeT newTime = (*it)->getAbsoluteTime() + diffTime;
int newPitch = 60;
if ((*it)->has(PITCH)) {
newPitch = (*it)->get<Int>(PITCH) + diffPitch;
//.........这里部分代码省略.........
示例9: hoveredOverNoteChanged
MatrixTool::FollowMode
MatrixMover::handleMouseMove(const MatrixMouseEvent *e)
{
if (!e) return NoFollow;
MATRIX_DEBUG << "MatrixMover::handleMouseMove() snapped time = "
<< e->snappedLeftTime << endl;
setBasicContextHelp(e->modifiers & Qt::ControlModifier);
if (!m_currentElement || !m_currentViewSegment) return NoFollow;
if (getSnapGrid()->getSnapSetting() != SnapGrid::NoSnap) {
setContextHelp(tr("Hold Shift to avoid snapping to beat grid"));
} else {
clearContextHelp();
}
timeT newTime = m_currentElement->getViewAbsoluteTime() +
(e->snappedLeftTime - m_clickSnappedLeftTime);
int newPitch = e->pitch;
emit hoveredOverNoteChanged(newPitch, true, newTime);
// get a basic pitch difference calculation comparing the current element's
// pitch to the clicked pitch (this does not take the transpose factor into
// account, so in a -9 segment, the initial result winds up being 9
// semitones too low)
using BaseProperties::PITCH;
int diffPitch = 0;
if (m_currentElement->event()->has(PITCH)) {
diffPitch = newPitch - m_currentElement->event()->get<Int>(PITCH);
}
EventSelection* selection = m_scene->getSelection();
// factor in transpose to adjust the height calculation
long pitchOffset = selection->getSegment().getTranspose();
diffPitch += (pitchOffset * -1);
for (EventSelection::eventcontainer::iterator it =
selection->getSegmentEvents().begin();
it != selection->getSegmentEvents().end(); ++it) {
MatrixElement *element = 0;
ViewElementList::iterator vi = m_currentViewSegment->findEvent(*it);
if (vi != m_currentViewSegment->getViewElementList()->end()) {
element = static_cast<MatrixElement *>(*vi);
}
if (!element) continue;
timeT diffTime = element->getViewAbsoluteTime() -
m_currentElement->getViewAbsoluteTime();
int epitch = 0;
if (element->event()->has(PITCH)) {
epitch = element->event()->get<Int>(PITCH);
}
element->reconfigure(newTime + diffTime,
element->getViewDuration(),
epitch + diffPitch);
element->setSelected(true);
}
if (newPitch != m_lastPlayedPitch) {
long velocity = m_widget->getCurrentVelocity();
m_currentElement->event()->get<Int>(BaseProperties::VELOCITY, velocity);
m_scene->playNote(m_currentViewSegment->getSegment(), newPitch + (pitchOffset * -1), velocity);
m_lastPlayedPitch = newPitch;
}
return FollowMode(FollowHorizontal | FollowVertical);
}