diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-03-16 16:52:16 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-03-20 14:38:39 +0000 |
commit | 866b18557becde815d93cf0d5b01fa31b6a9cfa3 (patch) | |
tree | b891967842a36aed888945dcb030d2c4d2653d7a /src/render/renderstates | |
parent | d459685dce68357ff504e1f83a31f8b570dc507c (diff) |
QRenderState cleanup
Change-Id: Ie4ae9a2d17c05594dd2bddde85abf73f7ffbd686
Task-number: QTBUG-51430
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/renderstates')
23 files changed, 75 insertions, 75 deletions
diff --git a/src/render/renderstates/qalphacoverage.cpp b/src/render/renderstates/qalphacoverage.cpp index 366e2ed0c..58f6b006c 100644 --- a/src/render/renderstates/qalphacoverage.cpp +++ b/src/render/renderstates/qalphacoverage.cpp @@ -49,7 +49,7 @@ class QAlphaCoveragePrivate : public QRenderStatePrivate { public : QAlphaCoveragePrivate() - : QRenderStatePrivate(QRenderState::AlphaCoverage) + : QRenderStatePrivate(QRenderStatePrivate::AlphaCoverage) {} Q_DECLARE_PUBLIC(QAlphaCoverage) diff --git a/src/render/renderstates/qalphatest.cpp b/src/render/renderstates/qalphatest.cpp index 4bbc4dc02..3532bd493 100644 --- a/src/render/renderstates/qalphatest.cpp +++ b/src/render/renderstates/qalphatest.cpp @@ -51,7 +51,7 @@ class QAlphaTestPrivate : public QRenderStatePrivate { public: QAlphaTestPrivate() - : QRenderStatePrivate(QRenderState::AlphaTest) + : QRenderStatePrivate(QRenderStatePrivate::AlphaTest) , m_alphaFunction(QAlphaTest::Never) , m_referenceValue(0.0f) { diff --git a/src/render/renderstates/qblendequation.cpp b/src/render/renderstates/qblendequation.cpp index 86a9d39a7..930373886 100644 --- a/src/render/renderstates/qblendequation.cpp +++ b/src/render/renderstates/qblendequation.cpp @@ -51,7 +51,7 @@ class QBlendEquationPrivate : public QRenderStatePrivate { public: QBlendEquationPrivate() - : QRenderStatePrivate(QRenderState::BlendEquation) + : QRenderStatePrivate(QRenderStatePrivate::BlendEquation) , m_blendFunction(QBlendEquation::Add) { } diff --git a/src/render/renderstates/qblendequationarguments.cpp b/src/render/renderstates/qblendequationarguments.cpp index c9e057732..1b37683d2 100644 --- a/src/render/renderstates/qblendequationarguments.cpp +++ b/src/render/renderstates/qblendequationarguments.cpp @@ -50,7 +50,7 @@ namespace Qt3DRender { class QBlendEquationArgumentsPrivate : public QRenderStatePrivate { public: - QBlendEquationArgumentsPrivate(QRenderState::Type type = QRenderState::BlendEquationArguments) + QBlendEquationArgumentsPrivate(QRenderStatePrivate::Type type = QRenderStatePrivate::BlendEquationArguments) : QRenderStatePrivate(type) , m_sourceRgb(QBlendEquationArguments::Zero) , m_sourceAlpha(QBlendEquationArguments::Zero) @@ -129,8 +129,8 @@ void QBlendEquationArguments::copy(const QNode *ref) /*! \internal */ -QBlendEquationArguments::QBlendEquationArguments(QRenderState::Type type, QNode *parent) - : QRenderState(*new QBlendEquationArgumentsPrivate(type), parent) +QBlendEquationArguments::QBlendEquationArguments(QBlendEquationArgumentsPrivate &dd, QNode *parent) + : QRenderState(dd, parent) { } @@ -303,7 +303,7 @@ void QBlendEquationArguments::setBufferIndex(int bufferIndex) specified \a parent. */ QBlendStateSeparate::QBlendStateSeparate(QNode *parent) - : QBlendEquationArguments(QRenderState::BlendStateSeparate, parent) + : QBlendEquationArguments(*new QBlendEquationArgumentsPrivate(QRenderStatePrivate::BlendStateSeparate), parent) { } diff --git a/src/render/renderstates/qblendequationarguments.h b/src/render/renderstates/qblendequationarguments.h index 0403e9d7b..2aa6a55fd 100644 --- a/src/render/renderstates/qblendequationarguments.h +++ b/src/render/renderstates/qblendequationarguments.h @@ -110,7 +110,7 @@ Q_SIGNALS: protected: void copy(const Qt3DCore::QNode *ref) Q_DECL_OVERRIDE; - QBlendEquationArguments(QRenderState::Type type, Qt3DCore::QNode *parent = 0); + QBlendEquationArguments(QBlendEquationArgumentsPrivate &dd, Qt3DCore::QNode *parent = Q_NULLPTR); private: Q_DECLARE_PRIVATE(QBlendEquationArguments) diff --git a/src/render/renderstates/qclipplane.cpp b/src/render/renderstates/qclipplane.cpp index 8b0f9299c..14810fe17 100644 --- a/src/render/renderstates/qclipplane.cpp +++ b/src/render/renderstates/qclipplane.cpp @@ -48,7 +48,7 @@ class QClipPlanePrivate : public QRenderStatePrivate { public: QClipPlanePrivate() - : QRenderStatePrivate(QRenderState::ClipPlane) + : QRenderStatePrivate(QRenderStatePrivate::ClipPlane) , m_planeIndex(0) , m_normal() , m_distance(0.0f) diff --git a/src/render/renderstates/qcolormask.cpp b/src/render/renderstates/qcolormask.cpp index c5b1f75c2..88752f7a0 100644 --- a/src/render/renderstates/qcolormask.cpp +++ b/src/render/renderstates/qcolormask.cpp @@ -48,7 +48,7 @@ class QColorMaskPrivate : public QRenderStatePrivate { public: QColorMaskPrivate() - : QRenderStatePrivate(QRenderState::ColorMask) + : QRenderStatePrivate(QRenderStatePrivate::ColorMask) , m_redMasked(true) , m_greenMasked(true) , m_blueMasked(true) diff --git a/src/render/renderstates/qcullface.cpp b/src/render/renderstates/qcullface.cpp index 8f91a2749..45f1d0f99 100644 --- a/src/render/renderstates/qcullface.cpp +++ b/src/render/renderstates/qcullface.cpp @@ -51,7 +51,7 @@ class QCullFacePrivate : public QRenderStatePrivate { public: QCullFacePrivate() - : QRenderStatePrivate(QRenderState::CullFace) + : QRenderStatePrivate(QRenderStatePrivate::CullFace) , m_mode(QCullFace::Back) { } diff --git a/src/render/renderstates/qdepthmask.cpp b/src/render/renderstates/qdepthmask.cpp index be0047471..2c3e0feab 100644 --- a/src/render/renderstates/qdepthmask.cpp +++ b/src/render/renderstates/qdepthmask.cpp @@ -51,7 +51,7 @@ class QDepthMaskPrivate : public QRenderStatePrivate { public: QDepthMaskPrivate() - : QRenderStatePrivate(QRenderState::DepthMask) + : QRenderStatePrivate(QRenderStatePrivate::DepthMask) , m_mask(false) { } diff --git a/src/render/renderstates/qdepthtest.cpp b/src/render/renderstates/qdepthtest.cpp index 283c751c2..990aabc85 100644 --- a/src/render/renderstates/qdepthtest.cpp +++ b/src/render/renderstates/qdepthtest.cpp @@ -53,7 +53,7 @@ class QDepthTestPrivate : public QRenderStatePrivate { public : QDepthTestPrivate() - : QRenderStatePrivate(QRenderState::DepthTest) + : QRenderStatePrivate(QRenderStatePrivate::DepthTest) , m_depthFunction(QDepthTest::Never) { } diff --git a/src/render/renderstates/qdithering.cpp b/src/render/renderstates/qdithering.cpp index 2f704852b..022a2a8e4 100644 --- a/src/render/renderstates/qdithering.cpp +++ b/src/render/renderstates/qdithering.cpp @@ -51,7 +51,7 @@ class QDitheringPrivate : public QRenderStatePrivate { public: QDitheringPrivate() - : QRenderStatePrivate(QRenderState::Dithering) + : QRenderStatePrivate(QRenderStatePrivate::Dithering) {} Q_DECLARE_PUBLIC(QDithering) diff --git a/src/render/renderstates/qfrontface.cpp b/src/render/renderstates/qfrontface.cpp index 41a2da492..75db2c66c 100644 --- a/src/render/renderstates/qfrontface.cpp +++ b/src/render/renderstates/qfrontface.cpp @@ -51,7 +51,7 @@ class QFrontFacePrivate : public QRenderStatePrivate { public: QFrontFacePrivate() - : QRenderStatePrivate(QRenderState::FrontFace) + : QRenderStatePrivate(QRenderStatePrivate::FrontFace) , m_direction(QFrontFace::ClockWise) { } diff --git a/src/render/renderstates/qpointsize.cpp b/src/render/renderstates/qpointsize.cpp index 819d1c8ca..bc5eadd98 100644 --- a/src/render/renderstates/qpointsize.cpp +++ b/src/render/renderstates/qpointsize.cpp @@ -47,7 +47,7 @@ class QPointSizePrivate : public QRenderStatePrivate { public: QPointSizePrivate(QPointSize::SizeMode sizeMode, float value) - : QRenderStatePrivate(QRenderState::PointSize) + : QRenderStatePrivate(QRenderStatePrivate::PointSize) , m_sizeMode(sizeMode) , m_value(value) {} diff --git a/src/render/renderstates/qpolygonoffset.cpp b/src/render/renderstates/qpolygonoffset.cpp index f677bd285..f9a05d3dd 100644 --- a/src/render/renderstates/qpolygonoffset.cpp +++ b/src/render/renderstates/qpolygonoffset.cpp @@ -48,7 +48,7 @@ class QPolygonOffsetPrivate : public QRenderStatePrivate { public: QPolygonOffsetPrivate() - : QRenderStatePrivate(QRenderState::PolygonOffset) + : QRenderStatePrivate(QRenderStatePrivate::PolygonOffset) , m_scaleFactor(0) , m_depthSteps(0) { diff --git a/src/render/renderstates/qrenderstate.cpp b/src/render/renderstates/qrenderstate.cpp index 52fe5c5cb..0de1d405d 100644 --- a/src/render/renderstates/qrenderstate.cpp +++ b/src/render/renderstates/qrenderstate.cpp @@ -45,21 +45,20 @@ QT_BEGIN_NAMESPACE namespace Qt3DRender { -QRenderStatePrivate::QRenderStatePrivate(QRenderState::Type type) +QRenderStatePrivate::QRenderStatePrivate(Type type) : QNodePrivate(), m_type(type) { } -QRenderState::~QRenderState() +QRenderStatePrivate *QRenderStatePrivate::get(QRenderState *state) { - Q_ASSERT_X(Qt3DCore::QNodePrivate::get(this)->m_wasCleanedUp, Q_FUNC_INFO, "QNode::cleanup should have been called by now. A Qt3DRender::QRenderState subclass didn't call QNode::cleanup in its destructor"); + return state->d_func(); } -QRenderState::Type QRenderState::type() const +QRenderState::~QRenderState() { - Q_D(const QRenderState); - return d->m_type; + Q_ASSERT_X(Qt3DCore::QNodePrivate::get(this)->m_wasCleanedUp, Q_FUNC_INFO, "QNode::cleanup should have been called by now. A Qt3DRender::QRenderState subclass didn't call QNode::cleanup in its destructor"); } /*! \internal */ diff --git a/src/render/renderstates/qrenderstate.h b/src/render/renderstates/qrenderstate.h index 65bdd53a4..c26bb6f27 100644 --- a/src/render/renderstates/qrenderstate.h +++ b/src/render/renderstates/qrenderstate.h @@ -55,33 +55,8 @@ class QT3DRENDERSHARED_EXPORT QRenderState : public Qt3DCore::QNode Q_OBJECT public: - enum Type { - AlphaCoverage, - AlphaTest, - BlendEquation, - BlendEquationArguments, - BlendStateSeparate, - ColorMask, - CullFace, - DepthMask, - DepthTest, - Dithering, - FrontFace, - PointSize, - PolygonOffset, - ScissorTest, - StencilTest, - StencilMask, - StencilOp, - ClipPlane, - SeamlessCubemap - }; - Q_ENUM(Type) - ~QRenderState(); - Type type() const; - protected: QRenderState(QRenderStatePrivate &dd, Qt3DCore::QNode *parent = Q_NULLPTR); diff --git a/src/render/renderstates/qrenderstate_p.h b/src/render/renderstates/qrenderstate_p.h index 52af1f26c..e69537678 100644 --- a/src/render/renderstates/qrenderstate_p.h +++ b/src/render/renderstates/qrenderstate_p.h @@ -63,10 +63,35 @@ namespace Qt3DRender { class QT3DRENDERSHARED_PRIVATE_EXPORT QRenderStatePrivate : public Qt3DCore::QNodePrivate { public: - QRenderStatePrivate(QRenderState::Type type); + enum Type { + AlphaCoverage, + AlphaTest, + BlendEquation, + BlendEquationArguments, + BlendStateSeparate, + ColorMask, + CullFace, + DepthMask, + DepthTest, + Dithering, + FrontFace, + PointSize, + PolygonOffset, + ScissorTest, + StencilTest, + StencilMask, + StencilOp, + ClipPlane, + SeamlessCubemap + }; + + QRenderStatePrivate(Type type); Q_DECLARE_PUBLIC(QRenderState) - const QRenderState::Type m_type; + + const Type m_type; + + static QRenderStatePrivate *get(QRenderState *state); }; } diff --git a/src/render/renderstates/qscissortest.cpp b/src/render/renderstates/qscissortest.cpp index c9b435ab7..a0d637119 100644 --- a/src/render/renderstates/qscissortest.cpp +++ b/src/render/renderstates/qscissortest.cpp @@ -52,7 +52,7 @@ class QScissorTestPrivate : public QRenderStatePrivate { public: QScissorTestPrivate() - : QRenderStatePrivate(QRenderState::ScissorTest) + : QRenderStatePrivate(QRenderStatePrivate::ScissorTest) , m_left(0) , m_bottom(0) , m_width(0) diff --git a/src/render/renderstates/qseamlesscubemap.cpp b/src/render/renderstates/qseamlesscubemap.cpp index 44060c507..d3560c890 100644 --- a/src/render/renderstates/qseamlesscubemap.cpp +++ b/src/render/renderstates/qseamlesscubemap.cpp @@ -50,7 +50,7 @@ class QSeamlessCubemapPrivate : public QRenderStatePrivate { public: QSeamlessCubemapPrivate() - : QRenderStatePrivate(QRenderState::SeamlessCubemap) + : QRenderStatePrivate(QRenderStatePrivate::SeamlessCubemap) { } diff --git a/src/render/renderstates/qstencilmask.cpp b/src/render/renderstates/qstencilmask.cpp index 9a62a9cc2..cb11fd73f 100644 --- a/src/render/renderstates/qstencilmask.cpp +++ b/src/render/renderstates/qstencilmask.cpp @@ -48,7 +48,7 @@ class QStencilMaskPrivate : public QRenderStatePrivate { public: QStencilMaskPrivate() - : QRenderStatePrivate(QRenderState::StencilMask) + : QRenderStatePrivate(QRenderStatePrivate::StencilMask) , m_frontOutputMask(0) , m_backOutputMask(0) {} diff --git a/src/render/renderstates/qstenciloperation.cpp b/src/render/renderstates/qstenciloperation.cpp index ccc2fd149..81f44dac4 100644 --- a/src/render/renderstates/qstenciloperation.cpp +++ b/src/render/renderstates/qstenciloperation.cpp @@ -49,7 +49,7 @@ class QStencilOperationPrivate : public QRenderStatePrivate { public: QStencilOperationPrivate() - : QRenderStatePrivate(QRenderState::StencilOp) + : QRenderStatePrivate(QRenderStatePrivate::StencilOp) , m_front(new QStencilOperationArguments(QStencilOperationArguments::Front, q_ptr)) , m_back(new QStencilOperationArguments(QStencilOperationArguments::Back, q_ptr)) {} diff --git a/src/render/renderstates/qstenciltest.cpp b/src/render/renderstates/qstenciltest.cpp index 52a6ef115..3b08602cb 100644 --- a/src/render/renderstates/qstenciltest.cpp +++ b/src/render/renderstates/qstenciltest.cpp @@ -53,7 +53,7 @@ class QStencilTestPrivate : public QRenderStatePrivate { public: QStencilTestPrivate() - : QRenderStatePrivate(QRenderState::StencilTest) + : QRenderStatePrivate(QRenderStatePrivate::StencilTest) , m_front(new QStencilTestArguments(QStencilTestArguments::Front)) , m_back(new QStencilTestArguments(QStencilTestArguments::Back)) { diff --git a/src/render/renderstates/renderstateset.cpp b/src/render/renderstates/renderstateset.cpp index a833a81a4..3ac9d7a57 100644 --- a/src/render/renderstates/renderstateset.cpp +++ b/src/render/renderstates/renderstateset.cpp @@ -47,6 +47,7 @@ #include <Qt3DRender/private/graphicscontext_p.h> #include <Qt3DRender/private/renderstates_p.h> +#include <Qt3DRender/private/qrenderstate_p.h> #include <Qt3DRender/qalphacoverage.h> #include <Qt3DRender/qalphatest.h> @@ -259,16 +260,16 @@ bool RenderStateSet::contains(RenderStateImpl *ds) const RenderStateImpl* RenderStateImpl::getOrCreateState(QRenderState *renderState) { - switch (renderState->type()) { - case QRenderState::AlphaTest: { + switch (QRenderStatePrivate::get(renderState)->m_type) { + case QRenderStatePrivate::AlphaTest: { QAlphaTest *alphaTest = static_cast<QAlphaTest *>(renderState); return getOrCreateRenderStateImpl<AlphaFunc>(alphaTest->alphaFunction(), alphaTest->referenceValue()); } - case QRenderState::BlendEquation: { + case QRenderStatePrivate::BlendEquation: { QBlendEquation *blendEquation = static_cast<QBlendEquation *>(renderState); return getOrCreateRenderStateImpl<BlendEquation>(blendEquation->blendFunction()); } - case QRenderState::BlendEquationArguments: { + case QRenderStatePrivate::BlendEquationArguments: { QBlendEquationArguments *blendState = static_cast<QBlendEquationArguments *>(renderState); // just use the same values for RGB and Alpha return getOrCreateRenderStateImpl<BlendEquationArguments>(blendState->sourceRgb(), blendState->destinationRgb(), @@ -276,39 +277,39 @@ RenderStateImpl* RenderStateImpl::getOrCreateState(QRenderState *renderState) blendState->isEnabled(), blendState->bufferIndex()); } - case QRenderState::BlendStateSeparate: { + case QRenderStatePrivate::BlendStateSeparate: { QBlendEquationArguments *blendState = static_cast<QBlendEquationArguments *>(renderState); return getOrCreateRenderStateImpl<BlendEquationArguments>(blendState->sourceRgb(), blendState->destinationRgb(), blendState->sourceAlpha(), blendState->destinationAlpha(), blendState->isEnabled(), blendState->bufferIndex()); } - case QRenderState::CullFace: { + case QRenderStatePrivate::CullFace: { QCullFace *cullFace = static_cast<QCullFace *>(renderState); return getOrCreateRenderStateImpl<CullFace>(cullFace->mode()); } - case QRenderState::DepthMask: { + case QRenderStatePrivate::DepthMask: { QDepthMask *depthMask = static_cast<QDepthMask *>(renderState); return getOrCreateRenderStateImpl<DepthMask>(depthMask->mask()); } - case QRenderState::DepthTest: { + case QRenderStatePrivate::DepthTest: { QDepthTest *depthTest = static_cast<QDepthTest *>(renderState); return getOrCreateRenderStateImpl<DepthTest>(depthTest->depthFunction()); } - case QRenderState::AlphaCoverage: - case QRenderState::Dithering: - case QRenderState::FrontFace: { + case QRenderStatePrivate::AlphaCoverage: + case QRenderStatePrivate::Dithering: + case QRenderStatePrivate::FrontFace: { QFrontFace *frontFace = static_cast<QFrontFace *>(renderState); return getOrCreateRenderStateImpl<FrontFace>(frontFace->direction()); } - case QRenderState::ScissorTest: { + case QRenderStatePrivate::ScissorTest: { QScissorTest *scissorTest = static_cast<QScissorTest *>(renderState); return getOrCreateRenderStateImpl<ScissorTest>(scissorTest->left(), scissorTest->bottom(), scissorTest->width(), scissorTest->height()); } - case QRenderState::StencilTest: { + case QRenderStatePrivate::StencilTest: { QStencilTest *stencilTest = static_cast<QStencilTest *>(renderState); return getOrCreateRenderStateImpl<StencilTest>(stencilTest->front()->stencilFunction(), stencilTest->front()->referenceValue(), @@ -317,41 +318,41 @@ RenderStateImpl* RenderStateImpl::getOrCreateState(QRenderState *renderState) stencilTest->back()->referenceValue(), stencilTest->back()->comparisonMask()); } - case QRenderState::PointSize: { + case QRenderStatePrivate::PointSize: { QPointSize *pointSize = static_cast<QPointSize *>(renderState); const bool isProgrammable = (pointSize->sizeMode() == QPointSize::Programmable); return getOrCreateRenderStateImpl<PointSize>(isProgrammable, pointSize->value()); } - case QRenderState::PolygonOffset: { + case QRenderStatePrivate::PolygonOffset: { QPolygonOffset *polygonOffset = static_cast<QPolygonOffset *>(renderState); return getOrCreateRenderStateImpl<PolygonOffset>(polygonOffset->scaleFactor(), polygonOffset->depthSteps()); } - case QRenderState::ColorMask: { + case QRenderStatePrivate::ColorMask: { QColorMask *colorMask = static_cast<QColorMask *>(renderState); return getOrCreateRenderStateImpl<ColorMask>(colorMask->isRedMasked(), colorMask->isGreenMasked(), colorMask->isBlueMasked(), colorMask->isAlphaMasked()); } - case QRenderState::ClipPlane: { + case QRenderStatePrivate::ClipPlane: { QClipPlane *clipPlane = static_cast<QClipPlane *>(renderState); return getOrCreateRenderStateImpl<ClipPlane>(clipPlane->planeIndex(), clipPlane->normal(), clipPlane->distance()); } - case QRenderState::SeamlessCubemap: { + case QRenderStatePrivate::SeamlessCubemap: { QSeamlessCubemap *seamlessCubemap = static_cast<QSeamlessCubemap *>(renderState); return getOrCreateRenderStateImpl<SeamlessCubemap>(seamlessCubemap->isEnabled()); } - case QRenderState::StencilOp: { + case QRenderStatePrivate::StencilOp: { QStencilOperation *stencilOp = static_cast<QStencilOperation *>(renderState); const QStencilOperationArguments *front = stencilOp->front(); const QStencilOperationArguments *back = stencilOp->back(); return getOrCreateRenderStateImpl<StencilOp>(front->stencilTestFailureOperation(), front->depthTestFailureOperation(), front->allTestsPassOperation(), back->stencilTestFailureOperation(), back->depthTestFailureOperation(), back->allTestsPassOperation()); } - case QRenderState::StencilMask: { + case QRenderStatePrivate::StencilMask: { QStencilMask *stencilMask = static_cast<QStencilMask *>(renderState); return getOrCreateRenderStateImpl<StencilMask>(stencilMask->frontOutputMask(), stencilMask->backOutputMask()); } |