本文整理汇总了C++中ms::Measure类的典型用法代码示例。如果您正苦于以下问题:C++ Measure类的具体用法?C++ Measure怎么用?C++ Measure使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Measure类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: rewind
void Cursor::rewind(RewindMode mode)
{
//
// rewind to start of score
//
if (mode == SCORE_START) {
_segment = nullptr;
Ms::Measure* m = _score->firstMeasure();
if (m) {
_segment = m->first(_filter);
nextInTrack();
}
}
//
// rewind to start of selection
//
else if (mode == SELECTION_START) {
if (!_score->selection().isRange())
return;
_segment = _score->selection().startSegment();
_track = _score->selection().staffStart() * VOICES;
nextInTrack();
}
//
// rewind to end of selection
//
else if (mode == SELECTION_END) {
if (!_score->selection().isRange())
return;
_segment = _score->selection().endSegment();
_track = (_score->selection().staffEnd() * VOICES) - 1; // be sure _track exists
}
_score->inputState().setTrack(_track);
_score->inputState().setSegment(_segment);
}
开发者ID:Jojo-Schmitz,项目名称:MuseScore,代码行数:35,代码来源:cursor.cpp
示例2: add
void Cursor::add(Element* wrapped)
{
Ms::Element* s = wrapped->element();
if (!_segment || !s)
return;
wrapped->setOwnership(Ownership::SCORE);
s->setTrack(_track);
s->setParent(_segment);
if (s->isChordRest())
s->score()->undoAddCR(toChordRest(s), _segment->measure(), _segment->tick());
else if (s->type() == ElementType::KEYSIG) {
Ms::Segment* ns = _segment->measure()->undoGetSegment(SegmentType::KeySig, _segment->tick());
s->setParent(ns);
_score->undoAddElement(s);
}
else if (s->type() == ElementType::TIMESIG) {
Ms::Measure* m = _segment->measure();
Fraction tick = m->tick();
_score->cmdAddTimeSig(m, _track, toTimeSig(s), false);
m = _score->tick2measure(tick);
_segment = m->first(_filter);
nextInTrack();
}
else if (s->type() == ElementType::LAYOUT_BREAK) {
Ms::Measure* m = _segment->measure();
s->setParent(m);
_score->undoAddElement(s);
}
else {
_score->undoAddElement(s);
}
_score->setLayoutAll();
}
开发者ID:Jojo-Schmitz,项目名称:MuseScore,代码行数:35,代码来源:cursor.cpp
示例3: setTempo
static void setTempo(Ms::Score* score, int tempo)
{
Ms::TempoText* tt = new Ms::TempoText(score);
tt->setTempo(double(tempo)/60.0);
tt->setTrack(0);
QString tempoText = Ms::TempoText::duration2tempoTextString(Ms::TDuration::DurationType::V_QUARTER);
tempoText += QString(" = %1").arg(tempo);
tt->setPlainText(tempoText);
Ms::Measure* measure = score->firstMeasure();
Ms::Segment* segment = measure->getSegment(Ms::Segment::Type::ChordRest, 0);
segment->add(tt);
}
开发者ID:Angeldude,项目名称:MuseScore,代码行数:12,代码来源:importbww.cpp
示例4: nextMeasure
bool Cursor::nextMeasure()
{
if (_segment == 0)
return false;
Ms::Measure* m = _segment->measure()->nextMeasure();
if (m == 0) {
_segment = 0;
return false;
}
_segment = m->first(_filter);
nextInTrack();
return _segment != 0;
}
开发者ID:Jojo-Schmitz,项目名称:MuseScore,代码行数:13,代码来源:cursor.cpp
示例5: setTempo
static void setTempo(Ms::Score* score, int tempo)
{
Ms::TempoText* tt = new Ms::TempoText(score);
tt->setTempo(double(tempo)/60.0);
tt->setTrack(0);
#if 0 // TODO WS
Ms::QTextCursor* c = tt->startCursorEdit();
c->movePosition(QTextCursor::EndOfLine);
addSymbolToText(SymCode(0xe105, 1), c);
c->insertText(" = ");
c->insertText(QString("%1").arg(tempo));
tt->endEdit();
#endif
Ms::Measure* measure = score->firstMeasure();
Ms::Segment* segment = measure->getSegment(Ms::Segment::SegChordRest, 0);
segment->add(tt);
}
开发者ID:AndresDose,项目名称:MuseScore,代码行数:17,代码来源:importbww.cpp
示例6: endMeasure
void MsScWriter::endMeasure(const Bww::MeasureEndFlags mef)
{
qDebug() << "MsScWriter::endMeasure()";
if (mef.repeatEnd)
currentMeasure->setRepeatFlags(Ms::RepeatEnd);
if (mef.endingEnd) {
if (lastVolta) {
qDebug("adding volta\n");
if (ending == 1)
lastVolta->setVoltaType(Ms::VoltaType::CLOSED);
else
lastVolta->setVoltaType(Ms::VoltaType::OPEN);
lastVolta->setEndElement(currentMeasure);
currentMeasure->addSpannerBack(lastVolta);
lastVolta = 0;
}
else {
qDebug("lastVolta == 0 on stop\n");
}
}
if (mef.lastOfSystem) {
Ms::LayoutBreak* lb = new Ms::LayoutBreak(score);
lb->setTrack(0);
lb->setLayoutBreakType(Ms::LAYOUT_BREAK_LINE);
currentMeasure->add(lb);
}
if (mef.lastOfPart && !mef.repeatEnd) {
currentMeasure->setEndBarLineType(Ms::END_BAR, false, true);
}
else if (mef.doubleBarLine) {
currentMeasure->setEndBarLineType(Ms::DOUBLE_BAR, false, true);
}
// BarLine* barLine = new BarLine(score);
// bool visible = true;
// barLine->setSubtype(NORMAL_BAR);
// barLine->setTrack(0);
// currentMeasure->setEndBarLineType(barLine->subtype(), false, visible);
}
开发者ID:AndresDose,项目名称:MuseScore,代码行数:41,代码来源:importbww.cpp
示例7: endMeasure
void MsScWriter::endMeasure(const Bww::MeasureEndFlags mef)
{
qDebug() << "MsScWriter::endMeasure()";
if (mef.repeatEnd)
currentMeasure->setRepeatEnd(true);
if (mef.endingEnd) {
if (lastVolta) {
qDebug("adding volta");
if (ending == 1)
lastVolta->setVoltaType(Ms::Volta::Type::CLOSED);
else
lastVolta->setVoltaType(Ms::Volta::Type::OPEN);
lastVolta->setTick2(tick);
lastVolta = 0;
}
else {
qDebug("lastVolta == 0 on stop");
}
}
if (mef.lastOfSystem) {
Ms::LayoutBreak* lb = new Ms::LayoutBreak(score);
lb->setTrack(0);
lb->setLayoutBreakType(Ms::LayoutBreak::Type::LINE);
currentMeasure->add(lb);
}
if (mef.lastOfPart && !mef.repeatEnd) {
//TODO currentMeasure->setEndBarLineType(Ms::BarLineType::END, false, true);
}
else if (mef.doubleBarLine) {
//TODO currentMeasure->setEndBarLineType(Ms::BarLineType::DOUBLE, false, true);
}
// BarLine* barLine = new BarLine(score);
// bool visible = true;
// barLine->setSubtype(BarLineType::NORMAL);
// barLine->setTrack(0);
// currentMeasure->setEndBarLineType(barLine->subtype(), false, visible);
}
开发者ID:Angeldude,项目名称:MuseScore,代码行数:40,代码来源:importbww.cpp
示例8: doTriplet
void MsScWriter::doTriplet(Ms::Chord* cr, StartStop triplet)
{
qDebug() << "MsScWriter::doTriplet(" << triplet << ")"
;
if (triplet == ST_START) {
tuplet = new Ms::Tuplet(score);
tuplet->setTrack(0);
tuplet->setRatio(Ms::Fraction(3, 2));
tuplet->setTick(tick);
currentMeasure->add(tuplet);
}
else if (triplet == ST_STOP) {
if (tuplet) {
cr->setTuplet(tuplet);
tuplet->add(cr);
tuplet = 0;
}
else
qDebug("BWW::import: triplet stop without triplet start");
}
else if (triplet == ST_CONTINUE) {
if (!tuplet)
qDebug("BWW::import: triplet continue without triplet start");
}
else if (triplet == ST_NONE) {
if (tuplet)
qDebug("BWW::import: triplet none inside triplet");
}
else
qDebug("unknown triplet type %d", triplet);
if (tuplet) {
cr->setTuplet(tuplet);
tuplet->add(cr);
}
}
开发者ID:Angeldude,项目名称:MuseScore,代码行数:36,代码来源:importbww.cpp
示例9: note
void MsScWriter::note(const QString pitch, const QVector<Bww::BeamType> beamList,
const QString type, const int dots,
bool tieStart, bool /*TODO tieStop */,
StartStop triplet,
bool grace)
{
qDebug() << "MsScWriter::note()"
<< "type:" << type
<< "dots:" << dots
<< "grace" << grace
;
if (!stepAlterOctMap.contains(pitch)
|| !typeMap.contains(type)) {
// TODO: error message
return;
}
StepAlterOct sao = stepAlterOctMap.value(pitch);
int ticks = 4 * Ms::MScore::division / type.toInt();
if (dots) ticks = 3 * ticks / 2;
qDebug() << "ticks:" << ticks;
Ms::TDuration durationType(Ms::TDuration::DurationType::V_INVALID);
durationType.setVal(ticks);
qDebug() << "duration:" << durationType.name();
if (triplet != ST_NONE) ticks = 2 * ticks / 3;
Ms::Beam::Mode bm = (beamList.at(0) == Bww::BM_BEGIN) ? Ms::Beam::Mode::BEGIN : Ms::Beam::Mode::AUTO;
Ms::Direction sd = Ms::Direction::AUTO;
// create chord
Ms::Chord* cr = new Ms::Chord(score);
//ws cr->setTick(tick);
cr->setBeamMode(bm);
cr->setTrack(0);
if (grace) {
cr->setNoteType(Ms::NoteType::GRACE32);
cr->setDurationType(Ms::TDuration::DurationType::V_32ND);
sd = Ms::Direction::UP;
}
else {
if (durationType.type() == Ms::TDuration::DurationType::V_INVALID)
durationType.setType(Ms::TDuration::DurationType::V_QUARTER);
cr->setDurationType(durationType);
sd = Ms::Direction::DOWN;
}
cr->setDuration(durationType.fraction());
cr->setDots(dots);
cr->setStemDirection(sd);
// add note to chord
Ms::Note* note = new Ms::Note(score);
note->setTrack(0);
xmlSetPitch(note, sao.s.toLatin1(), sao.a, sao.o);
if (tieStart) {
Ms::Tie* tie = new Ms::Tie(score);
note->setTieFor(tie);
tie->setStartNote(note);
tie->setTrack(0);
}
cr->add(note);
// add chord to measure
if (!grace) {
Ms::Segment* s = currentMeasure->getSegment(cr, tick);
s->add(cr);
if (!currentGraceNotes.isEmpty()) {
for (int i = currentGraceNotes.size() - 1; i >=0; i--)
cr->add(currentGraceNotes.at(i));
currentGraceNotes.clear();
}
doTriplet(cr, triplet);
int tickBefore = tick;
tick += ticks;
Ms::Fraction nl(Ms::Fraction::fromTicks(tick - currentMeasure->tick()));
currentMeasure->setLen(nl);
qDebug() << "MsScWriter::note()"
<< "tickBefore:" << tickBefore
<< "tick:" << tick
<< "nl:" << nl.print()
;
}
else {
currentGraceNotes.append(cr);
}
}
开发者ID:Angeldude,项目名称:MuseScore,代码行数:84,代码来源:importbww.cpp
示例10: beginMeasure
void MsScWriter::beginMeasure(const Bww::MeasureBeginFlags mbf)
{
qDebug() << "MsScWriter::beginMeasure()";
++measureNumber;
// create a new measure
currentMeasure = new Ms::Measure(score);
currentMeasure->setTick(tick);
currentMeasure->setTimesig(Ms::Fraction(beats, beat));
currentMeasure->setNo(measureNumber);
score->measures()->add(currentMeasure);
if (mbf.repeatBegin)
currentMeasure->setRepeatStart(true);
if (mbf.irregular)
currentMeasure->setIrregular(true);
if (mbf.endingFirst || mbf.endingSecond) {
Ms::Volta* volta = new Ms::Volta(score);
volta->setTrack(0);
volta->endings().clear();
if (mbf.endingFirst) {
volta->setText("1");
volta->endings().append(1);
ending = 1;
}
else {
volta->setText("2");
volta->endings().append(2);
ending = 2;
}
volta->setTick(currentMeasure->tick());
score->addElement(volta);
lastVolta = volta;
}
// set clef, key and time signature in the first measure
if (measureNumber == 1) {
// clef
Ms::Clef* clef = new Ms::Clef(score);
clef->setClefType(Ms::ClefType::G);
clef->setTrack(0);
Ms::Segment* s = currentMeasure->getSegment(clef, tick);
s->add(clef);
// keysig
Ms::KeySigEvent key;
key.setKey(Ms::Key::D);
Ms::KeySig* keysig = new Ms::KeySig(score);
keysig->setKeySigEvent(key);
keysig->setTrack(0);
s = currentMeasure->getSegment(keysig, tick);
s->add(keysig);
// timesig
Ms::TimeSig* timesig = new Ms::TimeSig(score);
timesig->setSig(Ms::Fraction(beats, beat));
timesig->setTrack(0);
s = currentMeasure->getSegment(timesig, tick);
s->add(timesig);
qDebug("tempo %d", tempo);
}
}
开发者ID:Angeldude,项目名称:MuseScore,代码行数:62,代码来源:importbww.cpp
注:本文中的ms::Measure类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论