From 18b0594cd60648cccadef4e8df93f2c099298bc9 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Wed, 16 Nov 2022 14:23:47 +0100 Subject: [PATCH] internal API simplyfied --- src/nodes/QskBoxRendererColorMap.h | 12 +++++++----- src/nodes/QskBoxRendererEllipse.cpp | 16 ++++++++++------ src/nodes/QskBoxRendererRect.cpp | 18 ++++++++---------- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/nodes/QskBoxRendererColorMap.h b/src/nodes/QskBoxRendererColorMap.h index 25606a01..af1e90ee 100644 --- a/src/nodes/QskBoxRendererColorMap.h +++ b/src/nodes/QskBoxRendererColorMap.h @@ -27,8 +27,10 @@ namespace QskVertex class ColorMapSolid { public: - constexpr inline ColorMapSolid( Color color ) - : m_color( color ) + constexpr inline ColorMapSolid() = default; + + inline ColorMapSolid( const QskGradient& gradient ) + : m_color( gradient.rgbStart() ) { } @@ -44,9 +46,9 @@ namespace QskVertex class ColorMapGradient { public: - inline ColorMapGradient( Color color1, Color color2 ) - : m_color1( color1 ) - , m_color2( color2 ) + inline ColorMapGradient( const QskGradient& gradient ) + : m_color1( gradient.rgbStart() ) + , m_color2( gradient.rgbEnd() ) { } diff --git a/src/nodes/QskBoxRendererEllipse.cpp b/src/nodes/QskBoxRendererEllipse.cpp index a0aa5736..6c641326 100644 --- a/src/nodes/QskBoxRendererEllipse.cpp +++ b/src/nodes/QskBoxRendererEllipse.cpp @@ -1033,16 +1033,18 @@ static inline void qskRenderFillRandom( const QskBoxRenderer::Metrics& metrics, const QskGradient& gradient, ColoredLine* line ) { + // here we know that: gradient.stepCount() <= 1 ! + const auto orientation = qskQtOrientation( gradient ); if ( gradient.isMonochrome() ) { - const ColorMapSolid map( gradient.rgbStart() ); + const ColorMapSolid map( gradient ); qskRenderFillLines( metrics, orientation, line, map ); } else { - const ColorMapGradient map( gradient.rgbStart(), gradient.rgbEnd() ); + const ColorMapGradient map( gradient ); qskRenderFillLines( metrics, orientation, line, map ); } } @@ -1051,6 +1053,8 @@ static inline void qskRenderBoxRandom( const QskBoxRenderer::Metrics& metrics, const QskBoxBorderColors& borderColors, const QskGradient& gradient, ColoredLine* fillLine, ColoredLine* borderLine ) { + // here we know that: gradient.stepCount() <= 1 ! + const auto& bc = borderColors; if ( bc.isMonochrome() ) @@ -1059,14 +1063,14 @@ static inline void qskRenderBoxRandom( if ( gradient.isMonochrome() ) { - const ColorMapSolid fillMap( gradient.rgbStart() ); + const ColorMapSolid fillMap( gradient ); qskRenderLines( metrics, Qt::Vertical, borderLine, borderMap, fillLine, fillMap ); } else { const auto orientation = qskQtOrientation( gradient ); - const ColorMapGradient fillMap( gradient.rgbStart(), gradient.rgbEnd() ); + const ColorMapGradient fillMap( gradient ); qskRenderLines( metrics, orientation, borderLine, borderMap, fillLine, fillMap ); } } @@ -1086,14 +1090,14 @@ static inline void qskRenderBoxRandom( if ( gradient.isMonochrome() ) { - const ColorMapSolid fillMap( gradient.rgbStart() ); + const ColorMapSolid fillMap( gradient ); qskRenderLines( metrics, Qt::Vertical, borderLine, tl, tr, bl, br, fillLine, fillMap ); } else { const auto orientation = qskQtOrientation( gradient ); - const ColorMapGradient fillMap( gradient.rgbStart(), gradient.rgbEnd() ); + 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 f2ea37c6..98c1384c 100644 --- a/src/nodes/QskBoxRendererRect.cpp +++ b/src/nodes/QskBoxRendererRect.cpp @@ -550,7 +550,7 @@ void QskBoxRenderer::renderRectFill( } const auto line = allocateLines< Line >( geometry, 2 ); - qskCreateFillRandom( Qt::Vertical, in, ColorMapSolid( Color() ), line ); + qskCreateFillRandom( Qt::Vertical, in, ColorMapSolid(), line ); } void QskBoxRenderer::renderRect( @@ -618,16 +618,14 @@ void QskBoxRenderer::renderRect( if ( fillLineCount > 0 ) { - const auto& gd = gradient; - - if ( gd.isMonochrome() ) + if ( gradient.isMonochrome() ) { - const ColorMapSolid colorMap( gd.rgbStart() ); + const ColorMapSolid colorMap( gradient ); qskCreateFillRandom( Qt::Vertical, in, colorMap, line ); } else { - bool fillRandom = gd.stepCount() <= 1; + bool fillRandom = gradient.stepCount() <= 1; if ( fillRandom ) { /* @@ -635,20 +633,20 @@ void QskBoxRenderer::renderRect( but we didn't implement a random fill algo for diagonal gradients yet. */ - fillRandom = !gd.linearDirection().isTilted(); + fillRandom = !gradient.linearDirection().isTilted(); } if ( fillRandom ) { - const auto orientation = gd.linearDirection().isVertical() + const auto orientation = gradient.linearDirection().isVertical() ? Qt::Vertical : Qt::Horizontal; - const ColorMapGradient colorMap( gd.rgbStart(), gd.rgbEnd() ); + const ColorMapGradient colorMap( gradient ); qskCreateFillRandom( orientation, in, colorMap, line ); } else { - qskCreateFillOrdered( in, gd, line ); + qskCreateFillOrdered( in, gradient, line ); } } }