Subversion Repositories Scribus

Rev

Rev 24342 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
Copyright (C) 2011 Elvis Stansvik <elvstone@gmail.com>

For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/


#include <algorithm>
#include <functional>

#include <QList>
#include <QString>
#include <QStringList>
#include <QtAlgorithms>

#include "tableborder.h"

/*
 * TableBorderLine definitions.
 */


TableBorderLine::TableBorderLine() = default;

TableBorderLine::TableBorderLine(double width, Qt::PenStyle style, const QString& color, double shade)
{
        m_width = width;
        m_style = style;
        m_color = color;
        m_shade = shade;
}

QString TableBorderLine::asString() const
{
        return QString("(%1,%2,%3,%4)").arg(width()).arg(style()).arg(color()).arg(shade());
}

/*
 * TableBorder definitions.
 */


TableBorder::TableBorder(double width, Qt::PenStyle style, const QString& color, double shade)
{
        addBorderLine(TableBorderLine(width, style, color, shade));
}

double TableBorder::width() const
{
        return isNull() ? 0.0 : m_borderLines.first().width();
}

TableBorderLine TableBorder::borderLine(int index) const
{
        if (index < 0 || index >= m_borderLines.size())
                return TableBorderLine();

        return m_borderLines.at(index);
}

void TableBorder::addBorderLine(const TableBorderLine& borderLine)
{
        m_borderLines.append(borderLine);
        std::stable_sort(m_borderLines.begin(), m_borderLines.end(), std::greater<TableBorderLine>());
}

void TableBorder::removeBorderLine(int index)
{
        if (index < 0 || index >= m_borderLines.size())
                return;

        m_borderLines.removeAt(index);
}

void TableBorder::replaceBorderLine(int index, const TableBorderLine& borderLine)
{
        if (index < 0 || index >= m_borderLines.size())
                return;

        m_borderLines.replace(index, borderLine);
        std::stable_sort(m_borderLines.begin(), m_borderLines.end(), std::greater<TableBorderLine>());
}

QString TableBorder::asString() const
{
        QStringList lines;
        for (const TableBorderLine& line : m_borderLines)
                lines << line.asString();
        return QString("TableBorder(%1)").arg(lines.join(","));
}