QGIS API Documentation 3.43.0-Master (b60ef06885e)
qgsabstractrenderview.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsabstractrenderview.cpp
3 --------------------------------------
4 Date : June 2024
5 Copyright : (C) 2024 by Benoit De Mezzo
6 Email : benoit dot de dot mezzo at oslandia dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17#include <Qt3DRender/QNoDraw>
18#include <Qt3DRender/qsubtreeenabler.h>
19
21{
22 mViewName = viewName;
23 // in order to avoid a render pass on the render view, we add a NoDraw node
24 // which is disabled when the enabler is enabled, and vice versa
25 using namespace Qt3DRender;
26 mRoot = new QNoDraw;
27 mRoot->setEnabled( false );
28 mRoot->setObjectName( viewName + "::NoDraw" );
29 mRendererEnabler = new QSubtreeEnabler( mRoot );
30 mRendererEnabler->setEnablement( QSubtreeEnabler::Persistent );
31 mRendererEnabler->setObjectName( viewName + "::SubtreeEnabler" );
32}
33
35{
36 // if mRoot is still defined and not attached to a parent we have the responsibility to delete it
37 if ( !mRoot.isNull() && mRoot->parent() == nullptr )
38 {
39 delete mRoot.data();
40 mRoot.clear();
41 }
42}
43
45{
46 // noop
47}
48
49QPointer<Qt3DRender::QFrameGraphNode> QgsAbstractRenderView::topGraphNode() const
50{
51 return mRoot;
52}
53
55{
56 mRoot->setEnabled( !enable );
57 mRendererEnabler->setEnabled( enable );
58}
59
61{
62 return !mRoot->isEnabled() && mRendererEnabler->isEnabled();
63}
virtual ~QgsAbstractRenderView()
Default destructor.
QPointer< Qt3DRender::QFrameGraphNode > mRoot
Qt3DRender::QSubtreeEnabler * mRendererEnabler
QPointer< Qt3DRender::QFrameGraphNode > topGraphNode() const
Returns the top node of this render view branch. Will be used to register the render view.
virtual void setEnabled(bool enable)
Enable or disable via enable the render view sub tree.
virtual bool isEnabled() const
Returns true if render view is enabled.
virtual void updateWindowResize(int width, int height)
Called when 3D window is resized.
QgsAbstractRenderView(const QString &viewName)
Constructor for QgsAbstractRenderView with the specified parent object.