您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ staffIdx函数代码示例

51自学网 2021-06-03 08:21:19
  C++
这篇教程C++ staffIdx函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中staffIdx函数的典型用法代码示例。如果您正苦于以下问题:C++ staffIdx函数的具体用法?C++ staffIdx怎么用?C++ staffIdx使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了staffIdx函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: setUserOff

void OttavaSegment::layout()      {      if (autoplace())            setUserOff(QPointF());      TextLineSegment::layout();      if (parent()) {            qreal yo = score()->styleP(StyleIdx::ottavaY) * mag();            if (ottava()->placement() == Element::Placement::BELOW)                  yo = -yo + staff()->height();            rypos() += yo;            if (autoplace()) {                  qreal minDistance = spatium() * .7;                  Shape s1 = shape().translated(pos());                  if (ottava()->placement() == Element::Placement::ABOVE) {                        qreal d  = system()->topDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = -d - minDistance;                        }                  else {                        qreal d  = system()->bottomDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = d + minDistance;                        }                  }            else                  adjustReadPos();            }      }
开发者ID:apatton090,项目名称:MuseScore,代码行数:29,


示例2: QPointF

QLineF Text::dragAnchor() const      {      QPointF p1;      if (parent()->type() == MEASURE) {            Measure* m     = static_cast<Measure*>(parent());            System* system = m->system();            qreal yp       = system->staff(staffIdx())->y() + system->y() + system->page()->pos().x();            qreal xp       = m->canvasPos().x(); // m->tick2pos(tick()) + m->canvasPos().x();            p1 = QPointF(xp, yp);            }      else {            p1 = QPointF(parent()->canvasBoundingRect().topLeft());            if (parent()->type() == SEGMENT) {                  Segment* s = static_cast<Segment*>(parent());                  p1.ry() += s ? s->measure()->system()->staff(staffIdx())->y() : 0.0;                  }            }      qreal tw = width();      qreal th = height();      qreal x  = 0.0;      qreal y  = 0.0;      if (align() & ALIGN_BOTTOM)            y = th;      else if (align() & ALIGN_VCENTER)            y = (th * .5);      else if (align() & ALIGN_BASELINE)            y = baseLine();      if (align() & ALIGN_RIGHT)            x = tw;      else if (align() & ALIGN_HCENTER)            x = (tw * .5);      return QLineF(p1, canvasBoundingRect().topLeft() + QPointF(x, y));      }
开发者ID:guifre2,项目名称:MuseScore,代码行数:34,


示例3: staffIdx

void BarLine::getY(qreal* y1, qreal* y2) const      {      if (parent() && parent()->type() == SEGMENT) {            int staffIdx1    = staffIdx();            int staffIdx2    = staffIdx1 + _span - 1;            if (staffIdx2 >= score()->nstaves()) {                  qDebug("BarLine: bad _span %d/n", _span);                  staffIdx2 = score()->nstaves() - 1;                  }            Segment* segment = static_cast<Segment*>(parent());            Measure* measure = segment->measure();            System* system   = measure->system();            StaffLines* l1   = measure->staffLines(staffIdx1);            StaffLines* l2   = measure->staffLines(staffIdx2);            qreal yp = system ? system->staff(staffIdx())->y() : 0.0;            *y1 = l1->y1() - yp;            *y2 = l2->y2() - yp;            }      else {            // for use in palette            *y1 = 0.0;            *y2 = 4.0 * spatium();            }      *y2 += yoff;      }
开发者ID:Mistobaan,项目名称:MuseScore,代码行数:27,


示例4: score

void OttavaSegment::layout()      {      TextLineBaseSegment::layout();      if (parent()) {            qreal y;            if (placeAbove()) {                  y = score()->styleP(Sid::ottavaPosAbove);                  }            else {                  qreal sh = ottava()->staff() ? ottava()->staff()->height() : 0;                  y = score()->styleP(Sid::ottavaPosBelow) + sh;                  }            rypos() = y;            if (autoplace()) {                  setUserOff(QPointF());                  qreal minDistance = spatium() * .7;                  Shape s1 = shape().translated(pos());                  if (ottava()->placeAbove()) {                        qreal d  = system()->topDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = -d - minDistance;                        }                  else {                        qreal d  = system()->bottomDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = d + minDistance;                        }                  }            }      }
开发者ID:CombatCube,项目名称:MuseScore,代码行数:30,


示例5: setUserOff

void PedalSegment::layout()      {      if (autoplace())            setUserOff(QPointF());      TextLineBaseSegment::layout();      if (parent()) {     // for palette            rypos() += score()->styleP(pedal()->placeBelow() ? StyleIdx::pedalPosBelow : StyleIdx::pedalPosAbove);            if (autoplace()) {                  qreal minDistance = spatium() * .7;                  Shape s1 = shape().translated(pos());                  if (pedal()->placeBelow()) {                        qreal d  = system()->bottomDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = d + minDistance;                        }                  else {                        qreal d  = system()->topDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = -(d + minDistance);                        }                  }            else                  adjustReadPos();            }      }
开发者ID:trig-ger,项目名称:MuseScore,代码行数:26,


示例6: setUserOff

void TextLineSegment::layout()      {      if (autoplace())            setUserOff(QPointF());      TextLineBaseSegment::layout();      if (parent()) {            if (textLine()->placeBelow()) {                  qreal sh = staff() ? staff()->height() : 0.0;                  rypos() = sh + score()->styleP(StyleIdx::textLinePosBelow) * mag();                  }            else                  rypos() = score()->styleP(StyleIdx::textLinePosAbove) * mag();            if (autoplace()) {                  qreal minDistance = spatium() * .7;                  Shape s1 = shape().translated(pos());                  if (textLine()->placeAbove()) {                        qreal d  = system()->topDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = -d - minDistance;                        }                  else {                        qreal d  = system()->bottomDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = d + minDistance;                        }                  }            else                  adjustReadPos();            }      }
开发者ID:AntonioBL,项目名称:MuseScore,代码行数:31,


示例7: setUserOff

void TrillSegment::layout()      {      if (autoplace())            setUserOff(QPointF());      if (staff())            setMag(staff()->mag(tick()));      if (isSingleType() || isBeginType()) {            Accidental* a = trill()->accidental();            if (a) {                  a->layout();                  a->setMag(a->mag() * .6);                  qreal _spatium = spatium();                  a->setPos(_spatium * 1.3, -2.2 * _spatium);                  a->setParent(this);                  }            switch (trill()->trillType()) {                  case Trill::Type::TRILL_LINE:                        symbolLine(SymId::ornamentTrill, SymId::wiggleTrill);                        break;                  case Trill::Type::PRALLPRALL_LINE:                        symbolLine(SymId::wiggleTrill, SymId::wiggleTrill);                        break;                  case Trill::Type::UPPRALL_LINE:                              symbolLine(SymId::ornamentBottomLeftConcaveStroke,                                 SymId::ornamentZigZagLineNoRightEnd, SymId::ornamentZigZagLineWithRightEnd);                        break;                  case Trill::Type::DOWNPRALL_LINE:                              symbolLine(SymId::ornamentLeftVerticalStroke,                                 SymId::ornamentZigZagLineNoRightEnd, SymId::ornamentZigZagLineWithRightEnd);                        break;                  }            }      else            symbolLine(SymId::wiggleTrill, SymId::wiggleTrill);      if (parent()) {            qreal yo = score()->styleP(trill()->placeBelow() ? Sid::trillPosBelow : Sid::trillPosAbove);            rypos() = yo;            if (autoplace()) {                  qreal minDistance = spatium();                  Shape s1 = shape().translated(pos());                  if (trill()->placeAbove()) {                        qreal d  = system()->topDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = -d - minDistance;                        }                  else {                        qreal d  = system()->bottomDistance(staffIdx(), s1);                        if (d > -minDistance)                              rUserYoffset() = d + minDistance;                        }                  }            }      }
开发者ID:emeraldimp,项目名称:MuseScore,代码行数:55,


示例8: score

void BarLine::endEdit()      {      shiftDrag = false;      if (ctrlDrag) {                      // if single bar line edit            ctrlDrag = false;            _customSpan       = true;           // mark bar line as custom spanning            int newSpan       = _span;          // copy edited span values            int newSpanFrom   = _spanFrom;            int newSpanTo     = _spanTo;            _span             = _origSpan;      // restore original span values            _spanFrom         = _origSpanFrom;            _spanTo           = _origSpanTo;            score()->undoChangeSingleBarLineSpan(this, newSpan, newSpanFrom, newSpanTo);            return;            }      // if same as staff settings, do nothing      if (staff()->barLineSpan() == _span && staff()->barLineFrom() == _spanFrom && staff()->barLineTo() == _spanTo)            return;      int idx1 = staffIdx();      if(_span != staff()->barLineSpan()) {            // if now bar lines span more staves            if (_span > staff()->barLineSpan()) {                  int idx2 = idx1 + _span;                  // set span 0 to all additional staves                  for (int idx = idx1 + 1; idx < idx2; ++idx)                        // mensurstrich special case:                        // if line spans to top line of a stave AND current staff is                        //    the last spanned staff BUT NOT the last score staff                        //          keep its bar lines                        // otherwise remove them                        if(_spanTo > 0 || !(idx == idx2-1 && idx != score()->nstaves()-1) )                              score()->undoChangeBarLineSpan(score()->staff(idx), 0, 0,                                          (score()->staff(idx)->lines()-1)*2);                  }            // if now bar lines span fewer staves            else {                  int idx1 = staffIdx() + _span;                  int idx2 = staffIdx() + staff()->barLineSpan();                  // set standard span for each no-longer-spanned staff                  for (int idx = idx1; idx < idx2; ++idx)                        score()->undoChangeBarLineSpan(score()->staff(idx), 1, 0, (score()->staff(idx)->lines()-1)*2);                  }            }      // update span for the staff the edited bar line belongs to      score()->undoChangeBarLineSpan(staff(), _span, _spanFrom, _spanTo);      }
开发者ID:Soerboe,项目名称:MuseScore,代码行数:51,


示例9: measure

Element* Marker::nextSegmentElement()      {      Segment* seg;      if (markerType() == Marker::Type::FINE) {            seg = measure()->last();            return seg->firstElement(staffIdx());            }      Measure* prevMeasure = measure()->prevMeasureMM();      if (prevMeasure) {            seg = prevMeasure->last();            return seg->firstElement(staffIdx());            }      return Element::nextSegmentElement();      }
开发者ID:akdor1154,项目名称:MuseScore,代码行数:14,


示例10: magS

void BarLine::drawDots(QPainter* painter, qreal x) const      {      const Sym& dotsym = symbols[score()->symIdx()][dotSym];      qreal mags = magS();      qreal _spatium = spatium();      if (parent() == 0) {    // for use in palette            dotsym.draw(painter, mags, QPointF(x, 1.5 * _spatium));            dotsym.draw(painter, mags, QPointF(x, 2.5 * _spatium));            }      else {            System* s = measure()->system();            int _staffIdx = staffIdx();            qreal dy  = s->staff(_staffIdx)->y();            for (int i = 0; i < _span; ++i) {                  Staff* staff  = score()->staff(_staffIdx + i);                  StaffType* st = staff->staffType();                  qreal doty1   = st->doty1() * _spatium;                  qreal doty2   = st->doty2() * _spatium;                  qreal staffy  = s->staff(_staffIdx + i)->y() - dy;                  dotsym.draw(painter, mags, QPointF(x, staffy + doty1));                  dotsym.draw(painter, mags, QPointF(x, staffy + doty2));                  }            }      }
开发者ID:Mistobaan,项目名称:MuseScore,代码行数:27,


示例11: measure

QLineF FretDiagram::dragAnchor() const      {      Measure* m     = measure();      System* system = m->system();      qreal yp      = system->staff(staffIdx())->y() + system->y();      qreal xp      = m->tick2pos(segment()->tick()) + m->pagePos().x();      QPointF p1(xp, yp);      qreal x  = 0.0;      qreal y  = 0.0;#if 0 // TODOxx      qreal tw = width();      qreal th = height();      if (_align & ALIGN_BOTTOM)            y = th;      else if (_align & ALIGN_VCENTER)            y = (th * .5);      else if (_align & ALIGN_BASELINE)            y = baseLine();      if (_align & ALIGN_RIGHT)            x = tw;      else if (_align & ALIGN_HCENTER)            x = (tw * .5);#endif      return QLineF(p1, abbox().topLeft() + QPointF(x, y));      }
开发者ID:gthomas,项目名称:MuseScore,代码行数:26,


示例12: setUserOff

void StaffText::layout()      {      if (autoplace())            setUserOff(QPointF());      QPointF p(textStyle().offset(spatium()));      if (placement() == Element::Placement::BELOW)            p.ry() =  - p.ry() + lineHeight();      setPos(p);      Text::layout1();      if (!parent()) // palette & clone trick          return;      if (autoplace() && segment()) {            qreal minDistance = score()->styleP(StyleIdx::dynamicsMinDistance);  // TODO            Shape s1          = segment()->staffShape(staffIdx()).translated(segment()->pos());            Shape s2          = shape().translated(segment()->pos());            if (placement() == Element::Placement::ABOVE) {                  qreal d = s2.minVerticalDistance(s1);                  if (d > -minDistance)                        rUserYoffset() = -d - minDistance;                  }            else {                  qreal d = s1.minVerticalDistance(s2);                  if (d > -minDistance)                        rUserYoffset() = d + minDistance;                  }            }      adjustReadPos();      }
开发者ID:AntonioBL,项目名称:MuseScore,代码行数:30,


示例13: setPos

void Jump::layout()      {      setPos(QPointF(0.0, score()->styleP(Sid::jumpPosAbove)));      TextBase::layout1();      if (parent() && autoplace()) {            setUserOff(QPointF());#if 0            int si             = staffIdx();            qreal minDistance  = 0.5 * spatium(); // score()->styleP(Sid::tempoMinDistance);            Shape& s1          = measure()->staffShape(si);            Shape s2           = shape().translated(pos());            if (placeAbove()) {                  qreal d = s2.minVerticalDistance(s1);                  if (d > -minDistance) {                        qreal yd       = -d - minDistance;                        rUserYoffset() = yd;                        s2.translate(QPointF(0.0, yd));                        }                  }            else {                  qreal d = s1.minVerticalDistance(s2);                  if (d > -minDistance) {                        qreal yd       = d + minDistance;                        rUserYoffset() = yd;                        s2.translate(QPointF(0.0, yd));                        }                  }            s1.add(s2);#endif            }      }
开发者ID:frankvanbever,项目名称:MuseScore,代码行数:32,


示例14: pagePos

void Bracket::endEditDrag(){    qreal ay1 = pagePos().y();    qreal ay2 = ay1 + h2 * 2;    int staffIdx1 = staffIdx();    int staffIdx2;    int n = system()->staves()->size();    if (staffIdx1 + 1 >= n)        staffIdx2 = staffIdx1;    else {        qreal ay  = parent()->pagePos().y();        System* s = system();        qreal y   = s->staff(staffIdx1)->y() + ay;        qreal h1  = staff()->height();        for (staffIdx2 = staffIdx1 + 1; staffIdx2 < n; ++staffIdx2) {            qreal h = s->staff(staffIdx2)->y() + ay - y;            if (ay2 < (y + (h + h1) * .5))                break;            y += h;        }        staffIdx2 -= 1;    }    qreal sy = system()->staff(staffIdx1)->y();    qreal ey = system()->staff(staffIdx2)->y() + score()->staff(staffIdx2)->height();    h2 = (ey - sy) * .5;    score()->undoChangeBracketSpan(staff(), _column, staffIdx2 - staffIdx1 + 1);}
开发者ID:joergsichermann,项目名称:MuseScore,代码行数:30,


示例15: drag

QRectF Dynamic::drag(EditData* ed)      {      QRectF f = Element::drag(ed);      //      // move anchor      //      Qt::KeyboardModifiers km = qApp->keyboardModifiers();      if (km != (Qt::ShiftModifier | Qt::ControlModifier)) {            int si;            Segment* seg = 0;            if (score()->pos2measure(ed->pos, &si, 0, &seg, 0) == nullptr)                  return f;            if (seg && (seg != segment() || staffIdx() != si)) {                  QPointF pos1(canvasPos());                  score()->undo(new ChangeParent(this, seg, si));                  setUserOff(QPointF());                  layout();                  QPointF pos2(canvasPos());                  setUserOff(pos1 - pos2);                  ed->startMove = pos2;                  }            }      return f;      }
开发者ID:NupurMalpani,项目名称:MuseScore,代码行数:25,


示例16: setUserOff

void RehearsalMark::layout()      {      if (autoplace())            setUserOff(QPointF());      setPos(textStyle().offset(spatium()));      Text::layout1();      Segment* s = segment();      if (s) {            if (!s->rtick()) {                  // first CR of measure, decide whether to align to barline                  if (!s->prev() && align() & AlignmentFlags::CENTER) {                        // measure with no clef / keysig / timesig                        rxpos() -= s->x();                        }                  else if (align() & AlignmentFlags::RIGHT) {                        // measure with clef / keysig / timesig, rehearsal mark right aligned                        // align left edge of rehearsal to barline if that is further to left                        qreal leftX = bbox().x();                        qreal barlineX = -s->x();                        rxpos() += qMin(leftX, barlineX) + width();                        }                  }            if (autoplace()) {                  Shape s1 = s->staffShape(staffIdx()).translated(s->pos());                  Shape s2 = shape().translated(s->pos());                  qreal d  = s2.minVerticalDistance(s1);                  if (d > 0)                        setUserOff(QPointF(0.0, -d));                  }            }      }
开发者ID:Angeldude,项目名称:MuseScore,代码行数:31,


示例17: magS

void BarLine::drawDots(QPainter* painter, qreal x) const      {      const Sym& dotsym = symbols[score()->symIdx()][dotSym];      qreal mags = magS();      qreal _spatium = spatium();      if (parent() == 0) {    // for use in palette            dotsym.draw(painter, mags, QPointF(x, 1.5 * _spatium));            dotsym.draw(painter, mags, QPointF(x, 2.5 * _spatium));            }      else if (parent()->type() == SEGMENT) {            System* s = static_cast<Segment*>(parent())->measure()->system();            int staffIdx1    = staffIdx();            int staffIdx2    = staffIdx1 + _span - 1;            int sp = _span;            if (staffIdx2 >= score()->nstaves()) {                  qDebug("BarLine: bad _span %d", _span);                  staffIdx2 = score()->nstaves() - 1;                  sp = staffIdx2 - staffIdx1 + 1;                  }            qreal dy  = s->staff(staffIdx1)->y();            for (int i = 0; i < sp; ++i) {                  Staff* staff  = score()->staff(staffIdx1 + i);                  StaffType* st = staff->staffType();                  qreal doty1   = st->doty1() * _spatium;                  qreal doty2   = st->doty2() * _spatium;                  qreal staffy  = s->staff(staffIdx1 + i)->y() - dy;                  dotsym.draw(painter, mags, QPointF(x, staffy + doty1));                  dotsym.draw(painter, mags, QPointF(x, staffy + doty2));                  }            }      }
开发者ID:shadowphiar,项目名称:MuseScore,代码行数:34,


示例18: dragAnchor

QLineF FretDiagram::dragAnchor() const      {      if (parent()->type() == Element::Type::SEGMENT) {            Segment* s     = static_cast<Segment*>(parent());            Measure* m     = s->measure();            System* system = m->system();            qreal yp      = system->staff(staffIdx())->y() + system->y();            qreal xp      = m->tick2pos(s->tick()) + m->pagePos().x();            QPointF p1(xp, yp);            qreal x  = 0.0;            qreal y  = 0.0;#if 0 // TODOxx            qreal tw = width();            qreal th = height();            if (_align & AlignmentFlags::BOTTOM)                  y = th;            else if (_align & AlignmentFlags::VCENTER)                  y = (th * .5);            else if (_align & AlignmentFlags::BASELINE)                  y = baseLine();            if (_align & AlignmentFlags::RIGHT)                  x = tw;            else if (_align & AlignmentFlags::HCENTER)                  x = (tw * .5);#endif            return QLineF(p1, abbox().topLeft() + QPointF(x, y));            }      return QLineF(parent()->pagePos(), abbox().topLeft());      }
开发者ID:JessicaWhite17,项目名称:MuseScore,代码行数:30,


示例19: system

QPointF LineSegment::gripAnchor(int grip) const      {      if (subtype() == SEGMENT_MIDDLE) {            qreal y = system()->staffY(staffIdx());            qreal x;            switch(grip) {                  case GRIP_LINE_START:                        x = system()->firstMeasure()->abbox().left();                        break;                  case GRIP_LINE_END:                        x = system()->lastMeasure()->abbox().right();                        break;                  default:                  case GRIP_LINE_MIDDLE:                        x = 0; // No Anchor                        y = 0;                        break;                  }            return QPointF(x, y);            }      else {            if (grip == GRIP_LINE_MIDDLE) // center grip                  return QPointF(0, 0);            else {                  System* s;                  QPointF pt(line()->linePos(grip, &s));                  return pt + s->pagePos();                  }            }      }
开发者ID:guifre2,项目名称:MuseScore,代码行数:30,


示例20: spatium

void Ambitus::draw(QPainter* p) const      {      qreal _spatium = spatium();      qreal lw = lineWidth().val() * _spatium;      p->setPen(QPen(curColor(), lw, Qt::SolidLine, Qt::RoundCap));      drawSymbol(noteHead(), p, _topPos);      drawSymbol(noteHead(), p, _bottomPos);      if (_hasLine)            p->drawLine(_line);      // draw ledger lines (if not in a palette)      if (segment() && track() > -1) {            int tick          = segment()->tick();            Staff* stf        = score()->staff(staffIdx());            qreal lineDist    = stf->lineDistance(tick);            int numOfLines    = stf->lines(tick);            qreal step        = lineDist * _spatium;            qreal stepTolerance = step * 0.1;            qreal ledgerOffset = score()->styleS(Sid::ledgerLineLength).val() * 0.5 * _spatium;            p->setPen(QPen(curColor(), score()->styleS(Sid::ledgerLineWidth).val() * _spatium,                        Qt::SolidLine, Qt::RoundCap) );            if (_topPos.y()-stepTolerance <= -step) {                  qreal xMin = _topPos.x() - ledgerOffset;                  qreal xMax = _topPos.x() + headWidth() + ledgerOffset;                  for (qreal y = -step; y >= _topPos.y()-stepTolerance; y -= step)                        p->drawLine(QPointF(xMin, y), QPointF(xMax, y));                  }            if (_bottomPos.y()+stepTolerance >= numOfLines * step) {                  qreal xMin = _bottomPos.x() - ledgerOffset;                  qreal xMax = _bottomPos.x() + headWidth() + ledgerOffset;                  for (qreal y = numOfLines*step; y <= _bottomPos.y()+stepTolerance; y += step)                        p->drawLine(QPointF(xMin, y), QPointF(xMax, y));                  }            }      }
开发者ID:IsaacWeiss,项目名称:MuseScore,代码行数:35,


示例21: pagePos

void Bracket::endEditDrag()      {      h2 += yoff * .5;      yoff = 0.0;      qreal ay1 = pagePos().y();      qreal ay2 = ay1 + h2 * 2;      int staffIdx1 = staffIdx();      int staffIdx2;      int n = system()->staves()->size();      if (staffIdx1 + 1 >= n)            staffIdx2 = staffIdx1;      else {            qreal ay  = parent()->pagePos().y();            System* s = system();            qreal y   = s->staff(staffIdx1)->y() + ay;            qreal h1  = staff()->height();            for (staffIdx2 = staffIdx1 + 1; staffIdx2 < n; ++staffIdx2) {                  qreal h = s->staff(staffIdx2)->y() + ay - y;                  if (ay2 < (y + (h + h1) * .5))                        break;                  y += h;                  }            staffIdx2 -= 1;            }      qreal sy = system()->staff(staffIdx1)->y();      qreal ey = system()->staff(staffIdx2)->y() + score()->staff(staffIdx2)->height();      h2 = (ey - sy) * .5 + score()->styleS(ST_bracketDistance).val() * spatium();      int span = staffIdx2 - staffIdx1 + 1;      staff()->setBracketSpan(_column, span);      }
开发者ID:cymerio,项目名称:MuseScore,代码行数:35,


示例22: pos

QPointF BarLine::pagePos() const      {      if (parent() == 0)            return pos();      System* system;      if (parent()->type() != Element::Type::SEGMENT)            system = static_cast<System*>(parent());      else            system = static_cast<Segment*>(parent())->measure()->system();      qreal yp = y();      if (system) {            // get first not hidden staff            int staffIdx1 = staffIdx();            Staff* staff1 = score()->staff(staffIdx1);            SysStaff* sysStaff1 = system->staff(staffIdx1);            while ( staff1 && sysStaff1 && !(sysStaff1->show() && staff1->show()) ) {                  staffIdx1++;                  staff1 = score()->staff(staffIdx1);                  sysStaff1 = system->staff(staffIdx1);                  }            yp += system->staffYpage(staffIdx1);            }      return QPointF(pageX(), yp);      }
开发者ID:Soerboe,项目名称:MuseScore,代码行数:25,


示例23: spatium

void BarLine::drawDots(QPainter* painter, qreal x) const      {      qreal _spatium = spatium();      if (parent() == 0) {    // for use in palette            drawSymbol(SymId::repeatDot, painter, QPointF(x, 2.0 * _spatium));            drawSymbol(SymId::repeatDot, painter, QPointF(x, 3.0 * _spatium));            }      else if (parent()->type() == Element::Type::SEGMENT) {            System* s = static_cast<Segment*>(parent())->measure()->system();            int staffIdx1    = staffIdx();            int staffIdx2    = staffIdx1 + _span - 1;            int sp = _span;            if (staffIdx2 >= score()->nstaves()) {                  qDebug("BarLine: bad _span %d", _span);                  staffIdx2 = score()->nstaves() - 1;                  sp = staffIdx2 - staffIdx1 + 1;                  }            qreal dy  = s->staff(staffIdx1)->y();            for (int i = 0; i < sp; ++i) {                  Staff* staff  = score()->staff(staffIdx1 + i);                  StaffType* st = staff->staffType();                  qreal doty1   = (st->doty1() + .5) * _spatium;                  qreal doty2   = (st->doty2() + .5) * _spatium;                  qreal staffy  = s->staff(staffIdx1 + i)->y() - dy;                  drawSymbol(SymId::repeatDot, painter, QPointF(x, staffy + doty1));                  drawSymbol(SymId::repeatDot, painter, QPointF(x, staffy + doty2));                  }            }      }
开发者ID:Soerboe,项目名称:MuseScore,代码行数:32,


示例24: foreach

QString ChordRest::accessibleExtraInfo()      {      QString rez = "";      foreach (Articulation* a, articulations())            rez = QString("%1 %2").arg(rez).arg(a->screenReaderInfo());      foreach (Element* l, lyricsList()) {            if (!l)                  continue;            rez = QString("%1 %2").arg(rez).arg(l->screenReaderInfo());            }      if (segment()) {            foreach (Element* e, segment()->annotations()) {                  if (e->staffIdx() == staffIdx() )                        rez = QString("%1 %2").arg(rez).arg(e->screenReaderInfo());                  }            SpannerMap& smap = score()->spannerMap();            auto spanners = smap.findOverlapping(tick(), tick());            for (auto i = spanners.begin(); i < spanners.end(); i++) {                  const ::Interval<Spanner*> interval = *i;                  Spanner* s = interval.value;                  if (s->type() == Element::Type::VOLTA || //voltas are added for barlines                      s->type() == Element::Type::TIE    ) //ties are added in notes                        continue;                  Segment* seg = 0;                  if (s->type() == Element::Type::SLUR) {                        if (s->tick() == tick() && s->track() == track())                              rez = tr("%1 Start of %2").arg(rez).arg(s->screenReaderInfo());                        if (s->tick2() == tick() && s->track2() == track())                              rez = tr("%1 End of %2").arg(rez).arg(s->screenReaderInfo());                        }                  else  {                        if (s->tick() == tick() && s->staffIdx() == staffIdx())                              rez = tr("%1 Start of %2").arg(rez).arg(s->screenReaderInfo());                        seg = segment()->next1MM(Segment::Type::ChordRest);                        if (!seg)                              continue;                        if (s->tick2() == seg->tick() && s->staffIdx() == staffIdx())                              rez = tr("%1 End of %2").arg(rez).arg(s->screenReaderInfo());                        }                  }            }      return rez;      }
开发者ID:DannyBehar,项目名称:MuseScore,代码行数:47,


示例25: measure

QLineF Dynamic::dragAnchor() const      {      qreal xp = 0.0;      for (Element* e = parent(); e; e = e->parent())            xp += e->x();      qreal yp = measure()->system()->staffYpage(staffIdx());      QPointF p(xp, yp);      return QLineF(p, canvasPos());      }
开发者ID:BlueMockingbird,项目名称:MuseScore,代码行数:9,


示例26: parent

void Text::layout()      {      if (styled() && !_editMode) {            SimpleText::layout();            }      else {            _doc->setDefaultFont(textStyle().font(spatium()));            qreal w = -1.0;            qreal x = 0.0;            qreal y = 0.0;            if (parent() && layoutToParentWidth()) {                  w = parent()->width();                  if (parent()->type() == HBOX || parent()->type() == VBOX || parent()->type() == TBOX) {                        Box* box = static_cast<Box*>(parent());                        x += box->leftMargin() * MScore::DPMM;                        y += box->topMargin() * MScore::DPMM;                        w = box->width()   - ((box->leftMargin() + box->rightMargin()) * MScore::DPMM);                        }                  }            QTextOption to = _doc->defaultTextOption();            to.setUseDesignMetrics(true);            to.setWrapMode(w <= 0.0 ? QTextOption::NoWrap : QTextOption::WrapAtWordBoundaryOrAnywhere);            _doc->setDefaultTextOption(to);            if (w < 0.0)                  w = _doc->idealWidth();            _doc->setTextWidth(w);            setbbox(QRectF(QPointF(0.0, 0.0), _doc->size()));            if (hasFrame())                  layoutFrame();            _doc->setModified(false);            textStyle().layout(this);      // process alignment#if 0 // TODO  TEXT_STYLE_TEXTLINE            if ((textStyle().align() & ALIGN_VCENTER) && (textStyle() == TEXT_STYLE_TEXTLINE)) {                  // special case: vertically centered text with TextLine needs to                  // take into account the line width                  TextLineSegment* tls = static_cast<TextLineSegment*>(parent());                  TextLine* tl = tls->textLine();                  if (tl) {                        qreal textlineLineWidth = point(tl->lineWidth());                        rypos() -= textlineLineWidth * .5;                        }                  }#endif            rxpos() += x;            rypos() += y;            }      if (parent() && parent()->type() == SEGMENT) {            Segment* s = static_cast<Segment*>(parent());            rypos() += s ? s->measure()->system()->staff(staffIdx())->y() : 0.0;            }      adjustReadPos();      }
开发者ID:guifre2,项目名称:MuseScore,代码行数:56,


示例27: pos

QPointF Breath::pagePos() const      {      if (parent() == 0)            return pos();      System* system = segment()->measure()->system();      qreal yp = y();      if (system)            yp += system->staff(staffIdx())->y() + system->y();      return QPointF(pageX(), yp);      }
开发者ID:Soerboe,项目名称:MuseScore,代码行数:10,


示例28: pos

QPointF BarLine::pagePos() const      {      if (parent() == 0)            return pos();      System* system = measure()->system();      qreal yp = y();      if (system)            yp += system->staffY(staffIdx());      return QPointF(pageX(), yp);      }
开发者ID:Mistobaan,项目名称:MuseScore,代码行数:10,


示例29: spatium

QPointF SLine::linePos(int grip, System** sys)      {      qreal _spatium = spatium();      qreal x = 0.0;      if (anchor() == ANCHOR_SEGMENT) {            Segment* seg = static_cast<Segment*>(grip == 0 ? startElement() : endElement());            Measure* m   = seg->measure();            *sys         = m->system();            if (*sys == 0)                  return QPointF(x, 0.0);            x            = seg->pos().x() + m->pos().x();            if (grip == GRIP_LINE_END) {                  if (((*sys)->firstMeasure() == m) && (seg->tick() == m->tick())) {                        m = m->prevMeasure();                        if (m) {                              *sys = m->system();                              x = m->pos().x() + m->width();                              }                        }                  }            }      else {            // anchor() == ANCHOR_MEASURE            Measure* m;            if (grip == GRIP_LINE_START) {                  m = static_cast<Measure*>(startElement());                  x = m->pos().x();                  }            else {                  m = static_cast<Measure*>(endElement());                  x = m->pos().x() + m->bbox().right();                  if (type() == VOLTA) {                        Segment* seg = m->last();                        if (seg->subtype() == SegEndBarLine) {                              Element* e = seg->element(0);                              if (e && e->type() == BAR_LINE) {                                    if (static_cast<BarLine*>(e)->subtype() == START_REPEAT)                                          x -= e->width() - _spatium * .5;                                    else                                          x -= _spatium * .5;                                    }                              }                        }                  }            *sys = m->system();            }      //DEBUG:      if ((*sys)->staves()->isEmpty())            return QPointF(x, 0.0);      qreal y = (*sys)->staff(staffIdx())->y();      return QPointF(x, y);      }
开发者ID:madwort,项目名称:MuseScore,代码行数:55,



注:本文中的staffIdx函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ stalloc函数代码示例
C++ staff函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。