Пример #1
0
void TmultiScore::updateSceneRect() {
  qreal sh;
  if (m_staves.size() == 1)
    sh = staff()->height() * m_scale;
  else
    sh = m_staves.last()->pos().y() + m_staves.last()->height();
  sh = qMax<qreal>(sh, viewport()->height() / transform().m11());
  QRectF scRec = staff()->mapToScene(QRectF(0.0, 0.0,
                staff()->width() + (staff()->isPianoStaff() ? 1.1 : 0.0), sh)).boundingRect();
  scoreScene()->setSceneRect(0.0, 0.0, scRec.width(), scRec.height());
  scoreScene()->restoreAfterRectChange();
  qreal minFree = 17.0;
  qreal free = viewport()->height() / transform().m11() - (m_staves.last()->pos().y() + m_staves.last()->height());
  if (free > minFree) {
    if ((int)(free / minFree) > m_fakeLines.size()) {
      for (int i = 0; i < int(free / minFree) - m_fakeLines.size(); ++i) {
        m_fakeLines << new Tscore5lines(scoreScene());
        m_fakeLines.last()->setDisabled(true);
      }
    } else if (free / minFree < (qreal)m_fakeLines.size())
        deleteFakeLines(m_fakeLines.size() - int(free / minFree));
  } else if (free < minFree)
        deleteFakeLines(m_fakeLines.size());
  for (int i = 0; i < m_fakeLines.size(); ++i) {
    m_fakeLines[i]->setWidth(staff()->width());
    m_fakeLines[i]->setPos(lastStaff()->pos().x(), lastStaff()->y() + lastStaff()->height() + i * (minFree));
  }
//   qDebug() << "updateSceneRect" << scoreScene()->sceneRect() << m_staves.size() << staff()->maxNoteCount() << m_fakeLines.size();
}
Пример #2
0
void TmultiScore::addStaff(TscoreStaff* st) {
  if (st == 0) { // create new staff at the end of a list
    m_staves << new TscoreStaff(scoreScene(), 0);
    lastStaff()->onClefChanged(m_staves.first()->scoreClef()->clef());
    lastStaff()->scoreClef()->setReadOnly(m_staves.first()->scoreClef()->readOnly());
    lastStaff()->setEnableKeySign(staff()->scoreKey());
    if (lastStaff()->scoreKey())
      lastStaff()->scoreKey()->setKeySignature(m_staves.first()->scoreKey()->keySignature());
    connect(lastStaff(), SIGNAL(hiNoteChanged(int,qreal)), this, SLOT(staffHiNoteChanged(int,qreal))); // ignore for first
    lastStaff()->setDisabled(m_isDisabled);
  } else { // staff of TsimpleScore is added this way
Пример #3
0
Element* Bracket::drop(const DropData& data)
      {
      Element* e = data.element;
      if (e->type() == BRACKET) {
            Bracket* b = static_cast<Bracket*>(e);
            b->setParent(parent());
            b->setTrack(track());
            b->setSpan(span());
            b->setFirstStaff(firstStaff());
            b->setLastStaff(lastStaff());
            b->setLevel(level());
            score()->undoRemoveElement(this);
            score()->undoAddElement(b);
            return b;
            }
      delete e;
      return 0;
      }