using more intuitive function names for QskBoxRenderer

This commit is contained in:
Uwe Rathmann 2024-09-19 08:39:14 +02:00
parent 46e5630f48
commit cc455dff5a
4 changed files with 44 additions and 24 deletions

View File

@ -67,7 +67,7 @@ void QskBoxClipNode::setBox( const QRectF& rect,
else else
{ {
setIsRectangular( false ); setIsRectangular( false );
QskBoxRenderer::renderFillGeometry( rect, shape, border, m_geometry ); QskBoxRenderer::setFillLines( rect, shape, border, m_geometry );
} }
/* /*

View File

@ -112,8 +112,8 @@ void QskBoxRectangleNode::updateFilling( const QRectF& rect,
{ {
setColoring( QskFillNode::Polychrome ); setColoring( QskFillNode::Polychrome );
QskBoxRenderer::renderBox( rect, shape, QskBoxRenderer::setColoredFillLines( rect, shape,
borderMetrics, QskBoxBorderColors(), fillGradient, *geometry() ); borderMetrics, fillGradient, *geometry() );
markDirty( QSGNode::DirtyGeometry ); markDirty( QSGNode::DirtyGeometry );
} }
@ -132,7 +132,7 @@ void QskBoxRectangleNode::updateFilling( const QRectF& rect,
if ( dirtyMetrics ) if ( dirtyMetrics )
{ {
QskBoxRenderer::renderFillGeometry( QskBoxRenderer::setFillLines(
rect, shape, borderMetrics, *geometry() ); rect, shape, borderMetrics, *geometry() );
markDirty( QSGNode::DirtyGeometry ); markDirty( QSGNode::DirtyGeometry );
@ -165,8 +165,8 @@ void QskBoxRectangleNode::updateBorder( const QRectF& rect,
else else
setColoring( borderColors.left().rgbStart() ); setColoring( borderColors.left().rgbStart() );
QskBoxRenderer::renderBox( rect, shape, borderMetrics, QskBoxRenderer::setColoredBorderLines( rect, shape, borderMetrics,
borderColors, QskGradient(), *this->geometry() ); borderColors, *this->geometry() );
markDirty( QSGNode::DirtyGeometry ); markDirty( QSGNode::DirtyGeometry );
} }
@ -208,7 +208,7 @@ void QskBoxRectangleNode::updateBox( const QRectF& rect,
fillGradient.setDirection( QskGradient::Linear ); fillGradient.setDirection( QskGradient::Linear );
} }
QskBoxRenderer::renderBox( rect, shape, borderMetrics, QskBoxRenderer::setColoredBorderAndFillLines( rect, shape, borderMetrics,
borderColors, fillGradient, *geometry() ); borderColors, fillGradient, *geometry() );
markDirty( QSGNode::DirtyGeometry ); markDirty( QSGNode::DirtyGeometry );

View File

@ -109,7 +109,7 @@ bool QskBoxRenderer::isGradientSupported( const QskGradient& gradient )
return false; return false;
} }
void QskBoxRenderer::renderBorderGeometry( void QskBoxRenderer::setBorderLines(
const QRectF& rect, const QskBoxShapeMetrics& shape, const QRectF& rect, const QskBoxShapeMetrics& shape,
const QskBoxBorderMetrics& border, QSGGeometry& geometry ) const QskBoxBorderMetrics& border, QSGGeometry& geometry )
{ {
@ -124,13 +124,13 @@ void QskBoxRenderer::renderBorderGeometry(
stroker.setBorderLines( lines ); stroker.setBorderLines( lines );
} }
void QskBoxRenderer::renderFillGeometry( void QskBoxRenderer::setFillLines(
const QRectF& rect, const QskBoxShapeMetrics& shape, QSGGeometry& geometry ) const QRectF& rect, const QskBoxShapeMetrics& shape, QSGGeometry& geometry )
{ {
renderFillGeometry( rect, shape, QskBoxBorderMetrics(), geometry ); setFillLines( rect, shape, QskBoxBorderMetrics(), geometry );
} }
void QskBoxRenderer::renderFillGeometry( void QskBoxRenderer::setFillLines(
const QRectF& rect, const QskBoxShapeMetrics& shape, const QRectF& rect, const QskBoxShapeMetrics& shape,
const QskBoxBorderMetrics& border, QSGGeometry& geometry ) const QskBoxBorderMetrics& border, QSGGeometry& geometry )
{ {
@ -144,15 +144,28 @@ void QskBoxRenderer::renderFillGeometry(
stroker.setFillLines( lines ); stroker.setFillLines( lines );
} }
void QskBoxRenderer::renderBox( const QRectF& rect, void QskBoxRenderer::setColoredFillLines( const QRectF& rect,
const QskBoxShapeMetrics& shape, const QskGradient& gradient, const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& border,
QSGGeometry& geometry ) const QskGradient& gradient, QSGGeometry& geometry )
{ {
renderBox( rect, shape, QskBoxBorderMetrics(), setColoredBorderAndFillLines( rect, shape, border,
QskBoxBorderColors(), gradient, geometry ); QskBoxBorderColors(), gradient, geometry );
} }
void QskBoxRenderer::renderBox( const QRectF& rect, void QskBoxRenderer::setColoredBorderLines( const QRectF& rect,
const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& border,
const QskBoxBorderColors& borderColors, QSGGeometry& geometry )
{
geometry.setDrawingMode( QSGGeometry::DrawTriangleStrip );
geometry.markVertexDataDirty();
const QskBoxBasicStroker stroker( QskBoxMetrics( rect, shape, border ), borderColors );
if ( auto lines = qskAllocateColoredLines( geometry, stroker.borderCount() ) )
stroker.setBoxLines( lines, nullptr );
}
void QskBoxRenderer::setColoredBorderAndFillLines( const QRectF& rect,
const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& border, const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& border,
const QskBoxBorderColors& borderColors, const QskGradient& gradient, const QskBoxBorderColors& borderColors, const QskGradient& gradient,
QSGGeometry& geometry ) QSGGeometry& geometry )

View File

@ -26,27 +26,34 @@ namespace QskBoxRenderer
- using shaders setting the color information - using shaders setting the color information
*/ */
QSK_EXPORT void renderBorderGeometry( const QRectF&, QSK_EXPORT void setBorderLines( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& ); const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
QSK_EXPORT void renderFillGeometry( const QRectF&, QSK_EXPORT void setFillLines( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& ); const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
QSK_EXPORT void renderFillGeometry( const QRectF&, QSK_EXPORT void setFillLines( const QRectF&,
const QskBoxShapeMetrics&, QSGGeometry& ); const QskBoxShapeMetrics&, QSGGeometry& );
/* /*
Filling the geometry usually with color information: Filling the geometry with color information:
see QSGGeometry::defaultAttributes_ColoredPoint2D() see QSGGeometry::defaultAttributes_ColoredPoint2D()
Usually used in combination with QSGVertexColorMaterial
*/ */
QSK_EXPORT bool isGradientSupported( const QskGradient& ); QSK_EXPORT bool isGradientSupported( const QskGradient& );
QSK_EXPORT void renderBox( const QRectF&, QSK_EXPORT void setColoredBorderLines( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
const QskBoxBorderColors&, QSGGeometry& );
QSK_EXPORT void setColoredFillLines( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
const QskGradient&, QSGGeometry& );
QSK_EXPORT void setColoredBorderAndFillLines( const QRectF&,
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& ); const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
QSK_EXPORT void renderBox( const QRectF&,
const QskBoxShapeMetrics&, const QskGradient&, QSGGeometry& );
} }
#endif #endif