Exemplo n.º 1
0
void RenderCounter::generateContent()
{
    bool counters;
    counters = !m_counter->separator().isNull();

    if(!m_counterNode)
        m_counterNode = getCounter(m_counter->identifier().string(), true, counters);

    int value = m_counterNode->count();
    if(m_counterNode->isReset())
        value = m_counterNode->value();
    int total = value;
    if(m_counterNode->parent())
        total = m_counterNode->parent()->total();
    m_item = toListStyleType(value, total, (EListStyleType)m_counter->listStyle());

    if(counters)
    {
        CounterNode *counter = m_counterNode->parent();
        // we deliberately do not render the root counter-node
        while(counter->parent() && !(counter->isReset() && counter->parent()->isRoot()))
        {
            value = counter->count();
            total = counter->parent()->total();
            m_item = toListStyleType(value, total, (EListStyleType)m_counter->listStyle()) + m_counter->separator().string() + m_item;
            counter = counter->parent();
        };
    }
}