示例#1
0
文件: staff.cpp 项目: ahwitz/verovio
int Staff::AlignVertically(FunctorParams *functorParams)
{
    AlignVerticallyParams *params = dynamic_cast<AlignVerticallyParams *>(functorParams);
    assert(params);

    params->m_staffN = this->GetN();

    // this gets (or creates) the measureAligner for the measure
    StaffAlignment *alignment = params->m_systemAligner->GetStaffAlignment(params->m_staffIdx, this, params->m_doc);

    assert(alignment);

    // Set the pointer of the m_alignment
    m_staffAlignment = alignment;

    std::vector<Object *>::iterator it;
    it = std::find_if(m_timeSpanningElements.begin(), m_timeSpanningElements.end(), ObjectComparison(VERSE));
    if (it != m_timeSpanningElements.end()) {
        Verse *v = dynamic_cast<Verse *>(*it);
        assert(v);
        alignment->SetVerseCount(v->GetN());
    }

    // for next staff
    params->m_staffIdx++;

    return FUNCTOR_CONTINUE;
}
示例#2
0
Object* ObjectListInterface::GetListFirst(const Object *startFrom, const std::type_info *elementType)
{
    ListOfObjects::iterator it = m_list.begin();
    std::advance(it, GetListIndex(startFrom));
    it = std::find_if(it, m_list.end(), ObjectComparison( elementType ) );
    return (it == m_list.end()) ? NULL : *it;
}
示例#3
0
Object* Object::GetFirst( const std::type_info *elementType )
{
    m_iteratorElementType = elementType;
    m_iteratorEnd = m_children.end();
    m_iteratorCurrent = std::find_if(m_children.begin(), m_iteratorEnd, ObjectComparison( m_iteratorElementType ) );
    return (m_iteratorCurrent == m_iteratorEnd) ? NULL : *m_iteratorCurrent;
}
示例#4
0
Object* ObjectListInterface::GetListFirstBackward(Object *startFrom, const std::type_info *elementType)
{
    ListOfObjects::iterator it = m_list.begin();
    std::advance(it, GetListIndex(startFrom));
    ListOfObjects::reverse_iterator rit(it);
    rit = std::find_if(rit, m_list.rend(), ObjectComparison( elementType ) );
    return (rit == m_list.rend()) ? NULL : *rit;
}
示例#5
0
Object* Object::GetNext( )
{
    m_iteratorCurrent++;
    m_iteratorCurrent = std::find_if(m_iteratorCurrent, m_iteratorEnd, ObjectComparison( m_iteratorElementType ) );
    return (m_iteratorCurrent == m_iteratorEnd) ? NULL : *m_iteratorCurrent;
}
示例#6
0
int Object::GetChildCount( const std::type_info *elementType )
{
    return (int)count_if (m_children.begin(), m_children.end(), ObjectComparison( elementType ));
}