internal API simplyfied

This commit is contained in:
Uwe Rathmann 2022-11-16 14:23:47 +01:00
parent 615e0016c2
commit 18b0594cd6
3 changed files with 25 additions and 21 deletions

View File

@ -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() )
{
}

View File

@ -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 );
}
}

View File

@ -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 );
}
}
}