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

0001 /**
0002  * SPDX-FileCopyrightText: 2006 C. Boemann (cbo@boemann.dk)
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 #include "KoColorPatch.h"
0007 
0008 #include <QPainter>
0009 
0010 KoColorPatch::KoColorPatch( QWidget *parent ) : QFrame( parent )
0011 {
0012     m_displayRenderer = KoDumbColorDisplayRenderer::instance();
0013     connect(m_displayRenderer, SIGNAL(displayConfigurationChanged()),
0014             SLOT(update()), Qt::UniqueConnection);
0015     setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
0016 }
0017 
0018 KoColorPatch::~KoColorPatch()
0019 {
0020 }
0021 
0022 QSize KoColorPatch::sizeHint() const
0023 {
0024     return QSize(12,12);
0025 }
0026 
0027 void KoColorPatch::setColor(const KoColor& c)
0028 {
0029     m_color = c;
0030 
0031     update();
0032 }
0033 void KoColorPatch::setDisplayRenderer(const KoColorDisplayRendererInterface *displayRenderer)
0034 {
0035     if (displayRenderer) {
0036         if (m_displayRenderer) {
0037             m_displayRenderer->disconnect(this);
0038         }
0039         m_displayRenderer = displayRenderer;
0040     } else {
0041         m_displayRenderer = KoDumbColorDisplayRenderer::instance();
0042     }
0043     connect(m_displayRenderer, SIGNAL(displayConfigurationChanged()),
0044             SLOT(update()), Qt::UniqueConnection);
0045 
0046 }
0047 
0048 QColor KoColorPatch::getColorFromDisplayRenderer(KoColor c)
0049 {
0050     QColor col;
0051     if (m_displayRenderer) {
0052         c.convertTo(m_displayRenderer->getPaintingColorSpace());
0053         col = m_displayRenderer->toQColor(c);
0054     } else {
0055         col = c.toQColor();
0056     }
0057     return col;
0058 }
0059 
0060 KoColor KoColorPatch::color() const
0061 {
0062     return m_color;
0063 }
0064 
0065 void KoColorPatch::mousePressEvent (QMouseEvent *e )
0066 {
0067     Q_UNUSED( e );
0068 
0069     emit triggered(this);
0070 }
0071 
0072 void KoColorPatch::paintEvent(QPaintEvent *pe)
0073 {
0074     QColor qc = getColorFromDisplayRenderer(m_color);
0075     QFrame::paintEvent(pe);
0076     QPainter painter( this );
0077     painter.setPen(QPen(qc, 0));
0078     painter.setBrush(QBrush(qc));
0079     painter.drawRect(contentsRect());
0080 }