File indexing completed on 2024-06-16 04:16:00

0001 /*
0002  *  SPDX-FileCopyrightText: 2010 Adam Celarek <kdedev at xibo dot at>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KIS_COLOR_SELECTOR_RING_H
0008 #define KIS_COLOR_SELECTOR_RING_H
0009 
0010 #include "kis_color_selector_component.h"
0011 
0012 #include <QImage>
0013 
0014 class KisColorSelectorRing : public KisColorSelectorComponent
0015 {
0016     Q_OBJECT
0017 public:
0018     explicit KisColorSelectorRing(KisColorSelector *parent);
0019     int innerRadius() const;
0020     void setColor(const KoColor &color) override;
0021     void setInnerRingRadiusFraction(qreal newFraction);
0022 
0023 protected:
0024     void paint(QPainter*) override;
0025     KoColor selectColor(int x, int y) override;
0026     bool containsPointInComponentCoords(int x, int y) const override;
0027 
0028 private:
0029     void paintCache(qreal devicePixelRatioF);
0030     void colorCache();
0031     int outerRadius() const;
0032 
0033     QImage m_pixelCache;
0034     const KoColorSpace* m_cachedColorSpace {0};
0035     int m_cachedSize {0};
0036     qreal m_lastHue {0.0};
0037     QList<QRgb> m_cachedColors;
0038     qreal m_innerRingRadiusFraction {0.85};
0039 
0040     qreal R {0.0};
0041     qreal G {0.0};
0042     qreal B {0.0};
0043     qreal Gamma {1.0};
0044 };
0045 
0046 #endif // KIS_COLOR_SELECTOR_RING_H