LineSegment* Trill::createLineSegment() { TrillSegment* seg = new TrillSegment(score()); seg->setTrack(track()); seg->setColor(color()); return seg; }
void Trill::layout() { qreal _spatium = spatium(); SLine::layout(); if (score() == gscore) return; TrillSegment* ls = static_cast<TrillSegment*>(frontSegment()); // // special case: // if end segment is first chord/rest segment in measure, // shorten trill line so it ends at end of previous measure // Segment* seg1 = startSegment(); Segment* seg2 = endSegment(); if (seg2 && (seg1->system() == seg2->system()) && (spannerSegments().size() == 1) && (seg2->tick() == seg2->measure()->tick()) ) { qreal x1 = seg2->pagePos().x(); Measure* m = seg2->measure()->prevMeasure(); if (m) { Segment* s2 = m->last(); qreal x2 = s2->pagePos().x(); qreal dx = x1 - x2 + _spatium * .3; ls->setPos2(ls->ipos2() + QPointF(-dx, 0.0)); ls->layout(); } } if (_accidental) _accidental->setParent(ls); }
LineSegment* Trill::createLineSegment() { TrillSegment* seg = new TrillSegment(this, score()); seg->setTrack(track()); seg->setColor(color()); seg->initElementStyle(&trillSegmentStyle); return seg; }
void Trill::layout() { SLine::layout(); if (score() == gscore) return; if (spannerSegments().empty()) return; TrillSegment* ls = toTrillSegment(frontSegment()); #if 0 // this is now handled differently, in SLine::linePos // // special case: // if end segment is first chord/rest segment in measure, // shorten trill line so it ends at end of previous measure // qreal _spatium = spatium(); Segment* seg1 = startSegment(); Segment* seg2 = endSegment(); if (seg1 && seg2 && (seg1->system() == seg2->system()) && (spannerSegments().size() == 1) && (seg2->tick() == seg2->measure()->tick()) ) { qreal x1 = seg2->pagePos().x(); Measure* m = seg2->measure()->prevMeasure(); if (m) { Segment* s2 = m->last(); qreal x2 = s2->pagePos().x(); qreal dx = x1 - x2 + _spatium * .3; ls->setPos2(ls->ipos2() + QPointF(-dx, 0.0)); ls->layout(); } } #endif if (spannerSegments().empty()) qDebug("Trill: no segments"); if (_accidental) _accidental->setParent(ls); }
void Trill::layout() { qreal _spatium = spatium(); setPos(0.0, yoff() * _spatium); SLine::layout(); // // special case: // if end segment is first chord/rest segment in measure, // shorten trill line so it ends at end of previous measure // Segment* seg1 = static_cast<Segment*>(startElement()); Segment* seg2 = static_cast<Segment*>(endElement()); if (seg2 && (seg1->system() == seg2->system()) && (spannerSegments().size() == 1) && (seg2->tick() == seg2->measure()->tick()) ) { qreal x1 = seg2->pagePos().x(); Measure* m = seg2->measure()->prevMeasure(); if (m) { Segment* s2 = m->last(); qreal x2 = s2->pagePos().x(); qreal dx = x1 - x2 + _spatium * .3; TrillSegment* ls = static_cast<TrillSegment*>(frontSegment()); ls->setPos2(ls->ipos2() + QPointF(-dx, 0.0)); ls->layout(); } } if (_accidental) { _accidental->setMag(.6); _accidental->layout(); _accidental->setPos(_spatium*1.3, -2.2*_spatium); _accidental->adjustReadPos(); } }