File indexing completed on 2024-05-19 04:27:22

0001 /*
0002  *  SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005  */
0006 
0007 #include "KoColorDisplayRendererInterface.h"
0008 
0009 #include <QGlobalStatic>
0010 
0011 #include <KoColorSpaceRegistry.h>
0012 #include <KoChannelInfo.h>
0013 #include <KoColorConversionTransformation.h>
0014 #include <KoColorSpace.h>
0015 
0016 Q_GLOBAL_STATIC(KoDumbColorDisplayRenderer, s_instance)
0017 
0018 KoColorDisplayRendererInterface::KoColorDisplayRendererInterface()
0019 {
0020 }
0021 
0022 KoColorDisplayRendererInterface::~KoColorDisplayRendererInterface()
0023 {
0024 }
0025 
0026 QImage KoDumbColorDisplayRenderer::toQImage(const KoColorSpace *srcColorSpace, const quint8 *data, QSize size, bool proofPaintColors) const
0027 {
0028     Q_UNUSED(proofPaintColors); // dumb converter doesn't know a painting color space
0029     return srcColorSpace->convertToQImage(data, size.width(), size.height(), 0,
0030                                           KoColorConversionTransformation::internalRenderingIntent(),
0031                                           KoColorConversionTransformation::internalConversionFlags());
0032 }
0033 
0034 QColor KoDumbColorDisplayRenderer::toQColor(const KoColor &c, bool proofToPaintColors) const
0035 {
0036     Q_UNUSED(proofToPaintColors);
0037     return c.toQColor();
0038 }
0039 
0040 KoColor KoDumbColorDisplayRenderer::approximateFromRenderedQColor(const QColor &c) const
0041 {
0042     KoColor color;
0043     color.fromQColor(c);
0044     return color;
0045 }
0046 
0047 KoColor KoDumbColorDisplayRenderer::fromHsv(int h, int s, int v, int a) const
0048 {
0049     h = qBound(0, h, 359);
0050     s = qBound(0, s, 255);
0051     v = qBound(0, v, 255);
0052     a = qBound(0, a, 255);
0053     QColor qcolor(QColor::fromHsv(h, s, v, a));
0054     return KoColor(qcolor, KoColorSpaceRegistry::instance()->rgb8());
0055 }
0056 
0057 void KoDumbColorDisplayRenderer::getHsv(const KoColor &srcColor, int *h, int *s, int *v, int *a) const
0058 {
0059     QColor qcolor = toQColor(srcColor);
0060     qcolor.getHsv(h, s, v, a);
0061 }
0062 
0063 KoColorDisplayRendererInterface* KoDumbColorDisplayRenderer::instance()
0064 {
0065     return s_instance;
0066 }
0067 
0068 qreal KoDumbColorDisplayRenderer::minVisibleFloatValue(const KoChannelInfo *chaninfo) const
0069 {
0070     Q_ASSERT(chaninfo);
0071     return chaninfo->getUIMin();
0072 }
0073 
0074 qreal KoDumbColorDisplayRenderer::maxVisibleFloatValue(const KoChannelInfo *chaninfo) const
0075 {
0076     Q_ASSERT(chaninfo);
0077     return chaninfo->getUIMax();
0078 }
0079 
0080 const KoColorSpace* KoDumbColorDisplayRenderer::getPaintingColorSpace() const
0081 {
0082     return KoColorSpaceRegistry::instance()->rgb8();
0083 }