File indexing completed on 2024-05-12 15:59:33

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::convertToQImage(const KoColorSpace *srcColorSpace, const quint8 *data, qint32 width, qint32 height) const
0027 {
0028     return srcColorSpace->convertToQImage(data, width, height, 0, KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::internalConversionFlags());
0029 }
0030 
0031 QColor KoDumbColorDisplayRenderer::toQColor(const KoColor &c) const
0032 {
0033     return c.toQColor();
0034 }
0035 
0036 KoColor KoDumbColorDisplayRenderer::approximateFromRenderedQColor(const QColor &c) const
0037 {
0038     KoColor color;
0039     color.fromQColor(c);
0040     return color;
0041 }
0042 
0043 KoColor KoDumbColorDisplayRenderer::fromHsv(int h, int s, int v, int a) const
0044 {
0045     h = qBound(0, h, 359);
0046     s = qBound(0, s, 255);
0047     v = qBound(0, v, 255);
0048     a = qBound(0, a, 255);
0049     QColor qcolor(QColor::fromHsv(h, s, v, a));
0050     return KoColor(qcolor, KoColorSpaceRegistry::instance()->rgb8());
0051 }
0052 
0053 void KoDumbColorDisplayRenderer::getHsv(const KoColor &srcColor, int *h, int *s, int *v, int *a) const
0054 {
0055     QColor qcolor = toQColor(srcColor);
0056     qcolor.getHsv(h, s, v, a);
0057 }
0058 
0059 KoColorDisplayRendererInterface* KoDumbColorDisplayRenderer::instance()
0060 {
0061     return s_instance;
0062 }
0063 
0064 qreal KoDumbColorDisplayRenderer::minVisibleFloatValue(const KoChannelInfo *chaninfo) const
0065 {
0066     Q_ASSERT(chaninfo);
0067     return chaninfo->getUIMin();
0068 }
0069 
0070 qreal KoDumbColorDisplayRenderer::maxVisibleFloatValue(const KoChannelInfo *chaninfo) const
0071 {
0072     Q_ASSERT(chaninfo);
0073     return chaninfo->getUIMax();
0074 }
0075 
0076 const KoColorSpace* KoDumbColorDisplayRenderer::getPaintingColorSpace() const
0077 {
0078     return KoColorSpaceRegistry::instance()->rgb8();
0079 }