From c16eaa48bd1e4942fed776f8c3a0ffcd7e5fd357 Mon Sep 17 00:00:00 2001 From: Peter Hartmann Date: Wed, 15 Dec 2021 15:30:35 +0100 Subject: [PATCH] We don't need this commit either --- src/nodes/QskBoxRendererColorMap.h | 28 +++++++++++++++++++++------- src/nodes/QskBoxRendererEllipse.cpp | 6 +++--- src/nodes/QskBoxRendererRect.cpp | 2 +- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/nodes/QskBoxRendererColorMap.h b/src/nodes/QskBoxRendererColorMap.h index b6749b6b..757a8de6 100644 --- a/src/nodes/QskBoxRendererColorMap.h +++ b/src/nodes/QskBoxRendererColorMap.h @@ -44,20 +44,34 @@ namespace QskVertex class ColorMapGradient { public: - inline ColorMapGradient( Color color1, Color color2 ) - : m_color1( color1 ) - , m_color2( color2 ) + inline ColorMapGradient( const QskGradient& gradient ) + : m_gradient( gradient ) { } - inline Color colorAt( qreal value ) const + inline Color colorAt( qreal ratio ) const { - return m_color1.interpolatedTo( m_color2, value ); + const auto stops = m_gradient.stops(); + + for( int i = 0; i < m_gradient.stopCount(); ++i ) + { + const QskGradientStop stop = stops.at( i ); + + if( stop.position() >= ratio ) + { + const int start = ( i == 0 ) ? 0 : i - 1; + const int end = ( i == 0 ) ? 1 : i; + const QColor color = QskGradientStop::interpolated( stops.at( start ), + stops.at( end ), ratio ); + return Color( color ); + } + } + + return Color(); } private: - const Color m_color1; - const Color m_color2; + const QskGradient m_gradient; }; class ColorIterator diff --git a/src/nodes/QskBoxRendererEllipse.cpp b/src/nodes/QskBoxRendererEllipse.cpp index d5ee3563..a30562dc 100644 --- a/src/nodes/QskBoxRendererEllipse.cpp +++ b/src/nodes/QskBoxRendererEllipse.cpp @@ -902,7 +902,7 @@ static inline void qskRenderFillRandom( } else { - const ColorMapGradient map( gradient.startColor(), gradient.endColor() ); + const ColorMapGradient map( gradient ); qskRenderFillLines( metrics, orientation, line, map ); } } @@ -926,7 +926,7 @@ static inline void qskRenderBoxRandom( { const auto orientation = qskQtOrientation( gradient ); - const ColorMapGradient fillMap( gradient.startColor(), gradient.endColor() ); + const ColorMapGradient fillMap( gradient ); qskRenderLines( metrics, orientation, borderLine, borderMap, fillLine, fillMap ); } } @@ -948,7 +948,7 @@ static inline void qskRenderBoxRandom( { const auto orientation = qskQtOrientation( gradient ); - const ColorMapGradient fillMap( gradient.startColor(), gradient.endColor() ); + const ColorMapGradient fillMap( gradient ); qskRenderLines( metrics, orientation, borderLine, tl, tr, bl, br, fillLine, fillMap ); } } diff --git a/src/nodes/QskBoxRendererRect.cpp b/src/nodes/QskBoxRendererRect.cpp index 5b72c6b2..e0ae67f7 100644 --- a/src/nodes/QskBoxRendererRect.cpp +++ b/src/nodes/QskBoxRendererRect.cpp @@ -604,7 +604,7 @@ void QskBoxRenderer::renderRect( if ( fillRandom ) { - const ColorMapGradient colorMap( gd.startColor(), gd.endColor() ); + const ColorMapGradient colorMap( { Qt::Vertical, gd.startColor(), gd.endColor() } ); qskCreateFillRandom( gd.orientation(), in, colorMap, line ); } else