int Layer::AlignHorizontallyEnd(FunctorParams *functorParams) { AlignHorizontallyParams *params = dynamic_cast<AlignHorizontallyParams *>(functorParams); assert(params); params->m_scoreDefRole = SCOREDEF_CAUTIONARY; params->m_time = params->m_measureAligner->GetMaxTime(); if (this->GetCautionStaffDefClef()) { GetCautionStaffDefClef()->AlignHorizontally(params); } if (this->GetCautionStaffDefKeySig()) { GetCautionStaffDefKeySig()->AlignHorizontally(params); } if (this->GetCautionStaffDefMensur()) { GetCautionStaffDefMensur()->AlignHorizontally(params); } if (this->GetCautionStaffDefMeterSig()) { GetCautionStaffDefMeterSig()->AlignHorizontally(params); } params->m_scoreDefRole = SCOREDEF_NONE; Staff *staff = dynamic_cast<Staff *>(this->GetFirstParent(STAFF)); assert(staff); int graceAlignerId = params->m_doc->GetOptions()->m_graceRhythmAlign.GetValue() ? 0 : staff->GetN(); int i; for (i = 0; i < params->m_measureAligner->GetChildCount(); ++i) { Alignment *alignment = dynamic_cast<Alignment *>(params->m_measureAligner->GetChild(i)); assert(alignment); if (alignment->HasGraceAligner(graceAlignerId)) { alignment->GetGraceAligner(graceAlignerId)->AlignStack(); } } return FUNCTOR_CONTINUE; }