File indexing completed on 2024-05-12 16:02:30

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2008 Jan Hambrecht <jaham@gmx.net>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "KoCheckerBoardPainter.h"
0008 #include <QPainter>
0009 
0010 KoCheckerBoardPainter::KoCheckerBoardPainter(int checkerSize)
0011     : m_checkerSize(checkerSize)
0012     , m_lightColor(Qt::lightGray)
0013     , m_darkColor(Qt::darkGray)
0014 {
0015     createChecker();
0016 }
0017 
0018 void KoCheckerBoardPainter::setCheckerColors(const QColor &lightColor, const QColor &darkColor)
0019 {
0020     m_lightColor = lightColor;
0021     m_darkColor = darkColor;
0022     createChecker();
0023 }
0024 
0025 void KoCheckerBoardPainter::setCheckerSize(int checkerSize)
0026 {
0027     m_checkerSize = checkerSize;
0028     createChecker();
0029 }
0030 
0031 void KoCheckerBoardPainter::paint(QPainter &painter, const QRectF &rect, const QPointF &patternOrigin) const
0032 {
0033     QBrush brush(m_checker);
0034     brush.setTransform(QTransform::fromTranslate(patternOrigin.x(), patternOrigin.y()));
0035     painter.fillRect(rect, brush);
0036 }
0037 
0038 void KoCheckerBoardPainter::paint(QPainter &painter, const QRectF &rect) const
0039 {
0040     paint(painter, rect, QPointF());
0041 }
0042 
0043 void KoCheckerBoardPainter::createChecker()
0044 {
0045     m_checker = QPixmap(2 * m_checkerSize, 2 * m_checkerSize);
0046     QPainter p(&m_checker);
0047     p.fillRect(0, 0, m_checkerSize, m_checkerSize, m_lightColor);
0048     p.fillRect(m_checkerSize, 0, m_checkerSize, m_checkerSize, m_darkColor);
0049     p.fillRect(0, m_checkerSize, m_checkerSize, m_checkerSize, m_darkColor);
0050     p.fillRect(m_checkerSize, m_checkerSize, m_checkerSize, m_checkerSize, m_lightColor);
0051     p.end();
0052 }