QskBoxRenderer with static methods
This commit is contained in:
parent
6ed417873e
commit
9d409ab89b
|
@ -49,7 +49,7 @@ void QskBoxClipNode::setBox( const QRectF& rect,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setIsRectangular( false );
|
setIsRectangular( false );
|
||||||
QskBoxRenderer().renderFill( rect, shape, border, m_geometry );
|
QskBoxRenderer::renderFill( rect, shape, border, m_geometry );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -90,7 +90,7 @@ void QskBoxFillNode::updateNode(
|
||||||
|
|
||||||
if ( dirtyGeometry )
|
if ( dirtyGeometry )
|
||||||
{
|
{
|
||||||
QskBoxRenderer().renderFill( rect, shapeMetrics, borderMetrics, d->geometry );
|
QskBoxRenderer::renderFill( rect, shapeMetrics, borderMetrics, d->geometry );
|
||||||
markDirty( QSGNode::DirtyGeometry );
|
markDirty( QSGNode::DirtyGeometry );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ QSK_QT_PRIVATE_BEGIN
|
||||||
#include <private/qsgnode_p.h>
|
#include <private/qsgnode_p.h>
|
||||||
QSK_QT_PRIVATE_END
|
QSK_QT_PRIVATE_END
|
||||||
|
|
||||||
Q_GLOBAL_STATIC( QSGVertexColorMaterial, qskMaterialVertex )
|
Q_GLOBAL_STATIC( QSGVertexColorMaterial, qskMaterialColorVertex )
|
||||||
|
|
||||||
static inline QskHashValue qskMetricsHash(
|
static inline QskHashValue qskMetricsHash(
|
||||||
const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& borderMetrics )
|
const QskBoxShapeMetrics& shape, const QskBoxBorderMetrics& borderMetrics )
|
||||||
|
@ -115,13 +115,13 @@ QskBoxRectangleNode::QskBoxRectangleNode()
|
||||||
{
|
{
|
||||||
Q_D( QskBoxRectangleNode );
|
Q_D( QskBoxRectangleNode );
|
||||||
|
|
||||||
setMaterial( qskMaterialVertex );
|
setMaterial( qskMaterialColorVertex );
|
||||||
setGeometry( &d->geometry );
|
setGeometry( &d->geometry );
|
||||||
}
|
}
|
||||||
|
|
||||||
QskBoxRectangleNode::~QskBoxRectangleNode()
|
QskBoxRectangleNode::~QskBoxRectangleNode()
|
||||||
{
|
{
|
||||||
if ( material() != qskMaterialVertex )
|
if ( material() != qskMaterialColorVertex )
|
||||||
delete material();
|
delete material();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,13 +229,11 @@ void QskBoxRectangleNode::updateNode( const QRectF& rect,
|
||||||
bool maybeFlat = false;
|
bool maybeFlat = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QskBoxRenderer renderer;
|
|
||||||
|
|
||||||
if ( !maybeFlat )
|
if ( !maybeFlat )
|
||||||
{
|
{
|
||||||
setMonochrome( false );
|
setMonochrome( false );
|
||||||
|
|
||||||
renderer.renderBox( d->rect, shape, borderMetrics,
|
QskBoxRenderer::renderBox( d->rect, shape, borderMetrics,
|
||||||
borderColors, fillGradient, *geometry() );
|
borderColors, fillGradient, *geometry() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -248,12 +246,12 @@ void QskBoxRectangleNode::updateNode( const QRectF& rect,
|
||||||
if ( hasFill )
|
if ( hasFill )
|
||||||
{
|
{
|
||||||
flatMaterial->setColor( fillGradient.rgbStart() );
|
flatMaterial->setColor( fillGradient.rgbStart() );
|
||||||
renderer.renderFill( d->rect, shape, QskBoxBorderMetrics(), *geometry() );
|
QskBoxRenderer::renderFill( d->rect, shape, QskBoxBorderMetrics(), *geometry() );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
flatMaterial->setColor( borderColors.left().rgbStart() );
|
flatMaterial->setColor( borderColors.left().rgbStart() );
|
||||||
renderer.renderBorder( d->rect, shape, borderMetrics, *geometry() );
|
QskBoxRenderer::renderBorder( d->rect, shape, borderMetrics, *geometry() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -262,7 +260,7 @@ void QskBoxRectangleNode::setMonochrome( bool on )
|
||||||
{
|
{
|
||||||
const auto material = this->material();
|
const auto material = this->material();
|
||||||
|
|
||||||
if ( on == ( material != qskMaterialVertex ) )
|
if ( on == ( material != qskMaterialColorVertex ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Q_D( QskBoxRectangleNode );
|
Q_D( QskBoxRectangleNode );
|
||||||
|
@ -278,7 +276,7 @@ void QskBoxRectangleNode::setMonochrome( bool on )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setMaterial( qskMaterialVertex );
|
setMaterial( qskMaterialColorVertex );
|
||||||
delete material;
|
delete material;
|
||||||
|
|
||||||
const QSGGeometry g( QSGGeometry::defaultAttributes_ColoredPoint2D(), 0 );
|
const QSGGeometry g( QSGGeometry::defaultAttributes_ColoredPoint2D(), 0 );
|
||||||
|
|
|
@ -32,7 +32,6 @@ class QSK_EXPORT QskBoxRectangleNode : public QSGGeometryNode
|
||||||
void setMonochrome( bool on );
|
void setMonochrome( bool on );
|
||||||
|
|
||||||
Q_DECLARE_PRIVATE( QskBoxRectangleNode )
|
Q_DECLARE_PRIVATE( QskBoxRectangleNode )
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -23,16 +23,19 @@ namespace QskVertex
|
||||||
class QSK_EXPORT QskBoxRenderer
|
class QSK_EXPORT QskBoxRenderer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void renderBorder( const QRectF&,
|
static void renderBorder( const QRectF&,
|
||||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
||||||
|
|
||||||
void renderFill( const QRectF&,
|
static void renderFill( const QRectF&,
|
||||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
||||||
|
|
||||||
void renderBox( const QRectF&,
|
static void renderBox( const QRectF&,
|
||||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
|
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
|
||||||
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
||||||
|
|
||||||
|
static void renderRect( const QRectF&, const QskGradient&, QSGGeometry& );
|
||||||
|
static void renderRect( const QRectF&, QSGGeometry& );
|
||||||
|
|
||||||
class Quad
|
class Quad
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -106,29 +109,29 @@ class QSK_EXPORT QskBoxRenderer
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void renderRectFill( const QRectF&,
|
static void renderRectFill( const QRectF&,
|
||||||
const QskBoxBorderMetrics&, QSGGeometry& );
|
const QskBoxBorderMetrics&, QSGGeometry& );
|
||||||
|
|
||||||
void renderRectBorder( const QRectF&,
|
static void renderRectBorder( const QRectF&,
|
||||||
const QskBoxBorderMetrics&, QSGGeometry& );
|
const QskBoxBorderMetrics&, QSGGeometry& );
|
||||||
|
|
||||||
void renderRect( const QRectF&, const QskBoxBorderMetrics&,
|
static void renderRect( const QRectF&, const QskBoxBorderMetrics&,
|
||||||
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
||||||
|
|
||||||
void renderRectellipseFill( const QRectF&,
|
static void renderRectellipseFill( const QRectF&,
|
||||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
||||||
|
|
||||||
void renderRectellipseBorder( const QRectF&,
|
static void renderRectellipseBorder( const QRectF&,
|
||||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&, QSGGeometry& );
|
||||||
|
|
||||||
void renderRectellipse( const QRectF&,
|
static void renderRectellipse( const QRectF&,
|
||||||
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
|
const QskBoxShapeMetrics&, const QskBoxBorderMetrics&,
|
||||||
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
const QskBoxBorderColors&, const QskGradient&, QSGGeometry& );
|
||||||
|
|
||||||
void renderDiagonalFill( const Metrics&, const QskGradient&,
|
static void renderDiagonalFill( const Metrics&, const QskGradient&,
|
||||||
int lineCount, QskVertex::ColoredLine* );
|
int lineCount, QskVertex::ColoredLine* );
|
||||||
|
|
||||||
void renderRectFill( const Quad&, const QskGradient&, QskVertex::ColoredLine* );
|
static void renderRectFill( const Quad&, const QskGradient&, QskVertex::ColoredLine* );
|
||||||
};
|
};
|
||||||
|
|
||||||
inline void QskBoxRenderer::renderBorder(
|
inline void QskBoxRenderer::renderBorder(
|
||||||
|
|
|
@ -543,7 +543,6 @@ void QskBoxRenderer::renderRectFill( const QRectF& rect,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
geometry.setDrawingMode( QSGGeometry::DrawTriangleStrip );
|
|
||||||
geometry.allocate( 4 );
|
geometry.allocate( 4 );
|
||||||
|
|
||||||
auto p = geometry.vertexDataAsPoint2D();
|
auto p = geometry.vertexDataAsPoint2D();
|
||||||
|
@ -553,6 +552,18 @@ void QskBoxRenderer::renderRectFill( const QRectF& rect,
|
||||||
p[3].set( quad.right, quad.bottom );
|
p[3].set( quad.right, quad.bottom );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QskBoxRenderer::renderRect( const QRectF& rect,
|
||||||
|
const QskGradient& gradient, QSGGeometry& geometry )
|
||||||
|
{
|
||||||
|
renderRect( rect, QskBoxBorderMetrics(),
|
||||||
|
QskBoxBorderColors(), gradient, geometry );
|
||||||
|
}
|
||||||
|
|
||||||
|
void QskBoxRenderer::renderRect( const QRectF& rect, QSGGeometry& geometry )
|
||||||
|
{
|
||||||
|
renderRectFill( rect, QskBoxBorderMetrics(), geometry );
|
||||||
|
}
|
||||||
|
|
||||||
void QskBoxRenderer::renderRect( const QRectF& rect,
|
void QskBoxRenderer::renderRect( const QRectF& rect,
|
||||||
const QskBoxBorderMetrics& border, const QskBoxBorderColors& borderColors,
|
const QskBoxBorderMetrics& border, const QskBoxBorderColors& borderColors,
|
||||||
const QskGradient& gradient, QSGGeometry& geometry )
|
const QskGradient& gradient, QSGGeometry& geometry )
|
||||||
|
|
Loading…
Reference in New Issue