QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgspointcloudrendererpropertieswidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgspointcloudrendererpropertieswidget.cpp
3  ---------------------
4  begin : November 2020
5  copyright : (C) 2020 by Nyall Dawson
6  email : nyall dot dawson at gmail 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  ***************************************************************************/
16 
17 #include "qgis.h"
19 #include "qgsapplication.h"
20 #include "qgssymbolwidgetcontext.h"
22 #include "qgspointcloudlayer.h"
23 #include "qgspointcloudrenderer.h"
28 
30 #include "qgslogger.h"
31 #include "qgsproject.h"
32 #include "qgsprojectutils.h"
33 
34 static bool _initRenderer( const QString &name, QgsPointCloudRendererWidgetFunc f, const QString &iconName = QString() )
35 {
37  if ( !rendererAbstractMetadata )
38  return false;
39  QgsPointCloudRendererMetadata *rendererMetadata = dynamic_cast<QgsPointCloudRendererMetadata *>( rendererAbstractMetadata );
40  if ( !rendererMetadata )
41  return false;
42 
43  rendererMetadata->setWidgetFunction( f );
44 
45  if ( !iconName.isEmpty() )
46  {
47  rendererMetadata->setIcon( QgsApplication::getThemeIcon( iconName ) );
48  }
49 
50  QgsDebugMsgLevel( "Set for " + name, 2 );
51  return true;
52 }
53 
54 static void _initRendererWidgetFunctions()
55 {
56  static bool sInitialized = false;
57  if ( sInitialized )
58  return;
59 
60  _initRenderer( QStringLiteral( "extent" ), QgsPointCloudExtentRendererWidget::create, QStringLiteral( "styleicons/pointcloudextent.svg" ) );
61  _initRenderer( QStringLiteral( "rgb" ), QgsPointCloudRgbRendererWidget::create, QStringLiteral( "styleicons/multibandcolor.svg" ) );
62  _initRenderer( QStringLiteral( "ramp" ), QgsPointCloudAttributeByRampRendererWidget::create, QStringLiteral( "styleicons/singlebandpseudocolor.svg" ) );
63  _initRenderer( QStringLiteral( "classified" ), QgsPointCloudClassifiedRendererWidget::create, QStringLiteral( "styleicons/paletted.svg" ) );
64 
65  sInitialized = true;
66 }
67 
69  : QgsMapLayerConfigWidget( layer, nullptr, parent )
70  , mLayer( layer )
71  , mStyle( style )
72 {
73  setupUi( this );
74 
75  layout()->setContentsMargins( 0, 0, 0, 0 );
76 
77  // initialize registry's widget functions
78  _initRendererWidgetFunctions();
79 
81  const QStringList renderers = reg->renderersList();
82  for ( const QString &name : renderers )
83  {
85  cboRenderers->addItem( m->icon(), m->visibleName(), name );
86  }
87 
88  cboRenderers->setCurrentIndex( -1 ); // set no current renderer
89 
90  mPointStyleComboBox->addItem( tr( "Square" ), static_cast< int >( Qgis::PointCloudSymbol::Square ) );
91  mPointStyleComboBox->addItem( tr( "Circle" ), static_cast< int >( Qgis::PointCloudSymbol::Circle ) );
92 
93  connect( cboRenderers, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPointCloudRendererPropertiesWidget::rendererChanged );
94 
95  connect( mBlendModeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
96  connect( mOpacityWidget, &QgsOpacityWidget::opacityChanged, this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
97 
100 
101  connect( mPointSizeSpinBox, qOverload<double>( &QgsDoubleSpinBox::valueChanged ), this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
102  connect( mPointSizeUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
103 
104  mDrawOrderComboBox->addItem( tr( "Default" ), static_cast< int >( Qgis::PointCloudDrawOrder::Default ) );
105  mDrawOrderComboBox->addItem( tr( "Bottom to Top" ), static_cast< int >( Qgis::PointCloudDrawOrder::BottomToTop ) );
106  mDrawOrderComboBox->addItem( tr( "Top to Bottom" ), static_cast< int >( Qgis::PointCloudDrawOrder::TopToBottom ) );
107 
110  mMaxErrorSpinBox->setClearValue( 0.3 );
111 
112  connect( mMaxErrorSpinBox, qOverload<double>( &QgsDoubleSpinBox::valueChanged ), this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
113  connect( mMaxErrorUnitWidget, &QgsUnitSelectionWidget::changed, this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
114 
115  connect( mPointStyleComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
116  connect( mDrawOrderComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
117  syncToLayer( layer );
118 }
119 
121 {
122  mMapCanvas = context.mapCanvas();
123  mMessageBar = context.messageBar();
124  if ( mActiveWidget )
125  {
126  mActiveWidget->setContext( context );
127  }
128 }
129 
131 {
132  mLayer = qobject_cast< QgsPointCloudLayer * >( layer );
133 
134  mBlockChangedSignal = true;
135  mOpacityWidget->setOpacity( mLayer->opacity() );
136  mBlendModeComboBox->setShowClippingModes( QgsProjectUtils::layerIsContainedInGroupLayer( QgsProject::instance(), mLayer ) );
137  mBlendModeComboBox->setBlendMode( mLayer->blendMode() );
138 
139  if ( mLayer->renderer() )
140  {
141  // set current renderer from layer
142  const QString rendererName = mLayer->renderer()->type();
143 
144  const int rendererIdx = cboRenderers->findData( rendererName );
145  cboRenderers->setCurrentIndex( rendererIdx );
146 
147  // no renderer found... this mustn't happen
148  Q_ASSERT( rendererIdx != -1 && "there must be a renderer!" );
149 
150  mPointSizeSpinBox->setValue( mLayer->renderer()->pointSize() );
151  mPointSizeUnitWidget->setUnit( mLayer->renderer()->pointSizeUnit() );
152  mPointSizeUnitWidget->setMapUnitScale( mLayer->renderer()->pointSizeMapUnitScale() );
153 
154  mPointStyleComboBox->setCurrentIndex( mPointStyleComboBox->findData( static_cast< int >( mLayer->renderer()->pointSymbol() ) ) );
155  mDrawOrderComboBox->setCurrentIndex( mDrawOrderComboBox->findData( static_cast< int >( mLayer->renderer()->drawOrder2d() ) ) );
156 
157  mMaxErrorSpinBox->setValue( mLayer->renderer()->maximumScreenError() );
158  mMaxErrorUnitWidget->setUnit( mLayer->renderer()->maximumScreenErrorUnit() );
159  }
160 
161  mBlockChangedSignal = false;
162 }
163 
165 {
166  if ( mActiveWidget )
167  mActiveWidget->setDockMode( dockMode );
169 }
170 
172 {
173  mLayer->setOpacity( mOpacityWidget->opacity() );
174  mLayer->setBlendMode( mBlendModeComboBox->blendMode() );
175 
176  if ( mActiveWidget )
177  mLayer->setRenderer( mActiveWidget->renderer() );
178  else if ( !cboRenderers->currentData().toString().isEmpty() )
179  {
180  QDomElement elem;
181  mLayer->setRenderer( QgsApplication::pointCloudRendererRegistry()->rendererMetadata( cboRenderers->currentData().toString() )->createRenderer( elem, QgsReadWriteContext() ) );
182  }
183 
184  mLayer->renderer()->setPointSize( mPointSizeSpinBox->value() );
185  mLayer->renderer()->setPointSizeUnit( mPointSizeUnitWidget->unit() );
186  mLayer->renderer()->setPointSizeMapUnitScale( mPointSizeUnitWidget->getMapUnitScale() );
187 
188  mLayer->renderer()->setPointSymbol( static_cast< Qgis::PointCloudSymbol >( mPointStyleComboBox->currentData().toInt() ) );
189 
190  mLayer->renderer()->setMaximumScreenError( mMaxErrorSpinBox->value() );
191  mLayer->renderer()->setMaximumScreenErrorUnit( mMaxErrorUnitWidget->unit() );
192  mLayer->renderer()->setDrawOrder2d( static_cast< Qgis::PointCloudDrawOrder >( mDrawOrderComboBox->currentData().toInt() ) );
193 }
194 
195 void QgsPointCloudRendererPropertiesWidget::rendererChanged()
196 {
197  if ( cboRenderers->currentIndex() == -1 )
198  {
199  QgsDebugMsg( QStringLiteral( "No current item -- this should never happen!" ) );
200  return;
201  }
202 
203  const QString rendererName = cboRenderers->currentData().toString();
204 
205  //Retrieve the previous renderer: from the old active widget if possible, otherwise from the layer
206  std::unique_ptr< QgsPointCloudRenderer > oldRenderer;
207  std::unique_ptr< QgsPointCloudRenderer > newRenderer;
208  if ( mActiveWidget )
209  newRenderer.reset( mActiveWidget->renderer() );
210 
211  if ( newRenderer )
212  {
213  oldRenderer = std::move( newRenderer );
214  }
215  else
216  {
217  oldRenderer.reset( mLayer->renderer()->clone() );
218  }
219 
220  // get rid of old active widget (if any)
221  if ( mActiveWidget )
222  {
223  stackedWidget->removeWidget( mActiveWidget );
224 
225  delete mActiveWidget;
226  mActiveWidget = nullptr;
227  }
228 
229  QgsPointCloudRendererWidget *widget = nullptr;
231  if ( rendererMetadata )
232  widget = rendererMetadata->createRendererWidget( mLayer, mStyle, oldRenderer.get() );
233  oldRenderer.reset();
234 
235  if ( widget )
236  {
237  // instantiate the widget and set as active
238  mActiveWidget = widget;
239  stackedWidget->addWidget( mActiveWidget );
240  stackedWidget->setCurrentWidget( mActiveWidget );
241 
242  if ( mMapCanvas || mMessageBar )
243  {
244  QgsSymbolWidgetContext context;
245  context.setMapCanvas( mMapCanvas );
246  context.setMessageBar( mMessageBar );
247  mActiveWidget->setContext( context );
248  }
249 
252  widget->setDockMode( dockMode() );
253  }
254  else
255  {
256  // set default "no edit widget available" page
257  stackedWidget->setCurrentWidget( pageNoWidget );
258  }
259  emitWidgetChanged();
260 }
261 
262 void QgsPointCloudRendererPropertiesWidget::emitWidgetChanged()
263 {
264  if ( !mBlockChangedSignal )
265  emit widgetChanged();
266 }
267 
QgsPointCloudRendererWidget
Base class for point cloud 2D renderer settings widgets.
Definition: qgspointcloudrendererwidget.h:36
QgsOpacityWidget::opacityChanged
void opacityChanged(double opacity)
Emitted when the opacity is changed in the widget, where opacity ranges from 0.0 (transparent) to 1....
QgsSymbolWidgetContext::mapCanvas
QgsMapCanvas * mapCanvas() const
Returns the map canvas associated with the widget.
Definition: qgssymbolwidgetcontext.cpp:54
QgsUnitTypes::RenderInches
@ RenderInches
Inches.
Definition: qgsunittypes.h:174
QgsProjectUtils::layerIsContainedInGroupLayer
static bool layerIsContainedInGroupLayer(QgsProject *project, QgsMapLayer *layer)
Returns true if the specified layer is a child layer from any QgsGroupLayer in the given project.
Definition: qgsprojectutils.cpp:57
QgsPointCloudRenderer::maximumScreenErrorUnit
QgsUnitTypes::RenderUnit maximumScreenErrorUnit() const
Returns the unit for the maximum screen error allowed when rendering the point cloud.
Definition: qgspointcloudrenderer.cpp:142
QgsPointCloudRenderer::setPointSymbol
void setPointSymbol(Qgis::PointCloudSymbol symbol)
Sets the symbol used by the renderer for drawing points.
Definition: qgspointcloudrenderer.cpp:202
QgsReadWriteContext
The class is used as a container of context for various read/write operations on other objects.
Definition: qgsreadwritecontext.h:34
QgsPointCloudRenderer::pointSymbol
Qgis::PointCloudSymbol pointSymbol() const
Returns the symbol used by the renderer for drawing points.
Definition: qgspointcloudrenderer.cpp:197
QgsPanelWidget::setDockMode
virtual void setDockMode(bool dockMode)
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
Definition: qgspanelwidget.cpp:44
QgsDebugMsgLevel
#define QgsDebugMsgLevel(str, level)
Definition: qgslogger.h:39
QgsMapLayer::opacity
double opacity
Definition: qgsmaplayer.h:82
QgsPointCloudRenderer::setPointSize
void setPointSize(double size)
Sets the point size.
Definition: qgspointcloudrenderer.h:445
QgsMapLayer::blendMode
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer.
Definition: qgsmaplayer.cpp:320
QgsPointCloudLayer
Represents a map layer supporting display of point clouds.
Definition: qgspointcloudlayer.h:45
QgsApplication::pointCloudRendererRegistry
static QgsPointCloudRendererRegistry * pointCloudRendererRegistry()
Returns the application's point cloud renderer registry, used for managing point cloud layer 2D rende...
Definition: qgsapplication.cpp:2330
QgsPointCloudRendererPropertiesWidget::setDockMode
void setDockMode(bool dockMode) override
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
Definition: qgspointcloudrendererpropertieswidget.cpp:164
QgsPointCloudRendererMetadata
Convenience metadata class that uses static functions to create point cloud renderer and its widget.
Definition: qgspointcloudrendererregistry.h:126
QgsUnitTypes::RenderPoints
@ RenderPoints
Points (e.g., for font sizes)
Definition: qgsunittypes.h:173
QgsSymbolWidgetContext
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
Definition: qgssymbolwidgetcontext.h:35
QgsPanelWidget::openPanel
void openPanel(QgsPanelWidget *panel)
Open a panel or dialog depending on dock mode setting If dock mode is true this method will emit the ...
Definition: qgspanelwidget.cpp:84
qgspointcloudextentrendererwidget.h
qgis.h
QgsProject::instance
static QgsProject * instance()
Returns the QgsProject singleton instance.
Definition: qgsproject.cpp:480
QgsPointCloudRenderer::clone
virtual QgsPointCloudRenderer * clone() const =0
Create a deep copy of this renderer.
QgsUnitTypes::RenderMillimeters
@ RenderMillimeters
Millimeters.
Definition: qgsunittypes.h:169
QgsMapLayer::setBlendMode
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
Definition: qgsmaplayer.cpp:310
QgsDebugMsg
#define QgsDebugMsg(str)
Definition: qgslogger.h:38
QgsPointCloudLayer::renderer
QgsPointCloudRenderer * renderer()
Returns the 2D renderer for the point cloud.
Definition: qgspointcloudlayer.cpp:706
qgspointcloudrgbrendererwidget.h
qgssymbolwidgetcontext.h
QgsPointCloudRendererWidget::renderer
virtual QgsPointCloudRenderer * renderer()=0
Returns a new instance of a renderer as defined by the settings in the widget.
QgsPointCloudRendererRegistry::rendererMetadata
QgsPointCloudRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer.
Definition: qgspointcloudrendererregistry.cpp:70
QgsPanelWidget::dockMode
bool dockMode()
Returns the dock mode state.
Definition: qgspanelwidget.h:93
Qgis::PointCloudDrawOrder::TopToBottom
@ TopToBottom
Draw points with larger Z values first.
QgsPointCloudRendererMetadata::setWidgetFunction
void setWidgetFunction(QgsPointCloudRendererWidgetFunc f)
Definition: qgspointcloudrendererregistry.h:158
QgsPointCloudRendererPropertiesWidget::apply
void apply() override
Definition: qgspointcloudrendererpropertieswidget.cpp:171
QgsMapLayerConfigWidget
A panel widget that can be shown in the map style dock.
Definition: qgsmaplayerconfigwidget.h:115
QgsSymbolWidgetContext::setMapCanvas
void setMapCanvas(QgsMapCanvas *canvas)
Sets the map canvas associated with the widget.
Definition: qgssymbolwidgetcontext.cpp:49
QgsPanelWidget::showPanel
void showPanel(QgsPanelWidget *panel)
Emit when you require a panel to be show in the interface.
qgsapplication.h
qgsprojectutils.h
QgsSymbolWidgetContext::setMessageBar
void setMessageBar(QgsMessageBar *bar)
Sets the message bar associated with the widget.
Definition: qgssymbolwidgetcontext.cpp:59
QgsPointCloudRenderer::maximumScreenError
double maximumScreenError() const
Returns the maximum screen error allowed when rendering the point cloud.
Definition: qgspointcloudrenderer.cpp:132
qgspointcloudlayer.h
QgsPointCloudRendererWidgetFunc
QgsPointCloudRendererWidget *(* QgsPointCloudRendererWidgetFunc)(QgsPointCloudLayer *, QgsStyle *, QgsPointCloudRenderer *)
Definition: qgspointcloudrendererregistry.h:119
QgsPointCloudRendererPropertiesWidget::syncToLayer
void syncToLayer(QgsMapLayer *layer) override
Reset to original (vector layer) values.
Definition: qgspointcloudrendererpropertieswidget.cpp:130
qgspointcloudrgbrenderer.h
Qgis::PointCloudDrawOrder::BottomToTop
@ BottomToTop
Draw points with larger Z values last.
QgsPointCloudRendererAbstractMetadata::createRendererWidget
virtual QgsPointCloudRendererWidget * createRendererWidget(QgsPointCloudLayer *layer, QgsStyle *style, QgsPointCloudRenderer *oldRenderer)
Returns new instance of settings widget for the renderer.
Definition: qgspointcloudrendererregistry.h:105
QgsMapLayer::setOpacity
virtual void setOpacity(double opacity)
Sets the opacity for the layer, where opacity is a value between 0 (totally transparent) and 1....
Definition: qgsmaplayer.cpp:325
Qgis::PointCloudSymbol::Square
@ Square
Renders points as squares.
QgsPointCloudRenderer::setMaximumScreenErrorUnit
void setMaximumScreenErrorUnit(QgsUnitTypes::RenderUnit unit)
Sets the unit for the maximum screen error allowed when rendering the point cloud.
Definition: qgspointcloudrenderer.cpp:147
qgspointcloudrendererregistry.h
Qgis::PointCloudSymbol
PointCloudSymbol
Rendering symbols for point cloud points.
Definition: qgis.h:1888
qgspointcloudclassifiedrendererwidget.h
QgsPanelWidget::widgetChanged
void widgetChanged()
Emitted when the widget state changes.
QgsPointCloudRenderer::setPointSizeUnit
void setPointSizeUnit(const QgsUnitTypes::RenderUnit units)
Sets the units used for the point size.
Definition: qgspointcloudrenderer.h:465
QgsPointCloudRendererPropertiesWidget::setContext
void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the widget is shown, e.g., the associated map canvas and expression context...
Definition: qgspointcloudrendererpropertieswidget.cpp:120
Qgis::PointCloudDrawOrder
PointCloudDrawOrder
Pointcloud rendering order for 2d views.
Definition: qgis.h:1900
QgsUnitSelectionWidget::changed
void changed()
QgsPointCloudRenderer::setPointSizeMapUnitScale
void setPointSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the point size.
Definition: qgspointcloudrenderer.h:481
QgsPointCloudRendererAbstractMetadata
Stores metadata about one point cloud renderer class.
Definition: qgspointcloudrendererregistry.h:46
QgsPointCloudRendererRegistry::renderersList
QStringList renderersList() const
Returns a list of available renderers.
Definition: qgspointcloudrendererregistry.cpp:75
Qgis::PointCloudSymbol::Circle
@ Circle
Renders points as circles.
QgsPointCloudRendererWidget::setContext
virtual void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the renderer widget is shown, e.g., the associated map canvas and expressio...
Definition: qgspointcloudrendererwidget.cpp:23
QgsUnitTypes::RenderPixels
@ RenderPixels
Pixels.
Definition: qgsunittypes.h:171
QgsPointCloudRenderer::setMaximumScreenError
void setMaximumScreenError(double error)
Sets the maximum screen error allowed when rendering the point cloud.
Definition: qgspointcloudrenderer.cpp:137
QgsPointCloudRenderer::pointSize
double pointSize() const
Returns the point size.
Definition: qgspointcloudrenderer.h:456
QgsPointCloudRenderer::setDrawOrder2d
void setDrawOrder2d(Qgis::PointCloudDrawOrder order)
Sets the drawing order used by the renderer for drawing points.
Definition: qgspointcloudrenderer.cpp:212
QgsPointCloudRendererPropertiesWidget::QgsPointCloudRendererPropertiesWidget
QgsPointCloudRendererPropertiesWidget(QgsPointCloudLayer *layer, QgsStyle *style, QWidget *parent=nullptr)
Constructor for QgsPointCloudRendererPropertiesWidget, associated with the specified layer and style ...
Definition: qgspointcloudrendererpropertieswidget.cpp:68
qgspointcloudrendererpropertieswidget.h
QgsStyle
Definition: qgsstyle.h:159
QgsPointCloudLayer::setRenderer
void setRenderer(QgsPointCloudRenderer *renderer)
Sets the 2D renderer for the point cloud.
Definition: qgspointcloudlayer.cpp:716
Qgis::PointCloudDrawOrder::Default
@ Default
Draw points in the order they are stored.
qgspointcloudattributebyramprendererwidget.h
QgsMapLayer
Base class for all map layer types. This is the base class for all map layer types (vector,...
Definition: qgsmaplayer.h:72
QgsPointCloudRenderer::type
virtual QString type() const =0
Returns the identifier of the renderer type.
QgsUnitTypes::RenderMetersInMapUnits
@ RenderMetersInMapUnits
Meters value as Map units.
Definition: qgsunittypes.h:176
QgsPointCloudRenderer::pointSizeUnit
QgsUnitTypes::RenderUnit pointSizeUnit() const
Returns the units used for the point size.
Definition: qgspointcloudrenderer.h:473
QgsSymbolWidgetContext::messageBar
QgsMessageBar * messageBar() const
Returns the message bar associated with the widget.
Definition: qgssymbolwidgetcontext.cpp:64
qgspointcloudrendererwidget.h
QgsApplication::getThemeIcon
static QIcon getThemeIcon(const QString &name, const QColor &fillColor=QColor(), const QColor &strokeColor=QColor())
Helper to get a theme icon.
Definition: qgsapplication.cpp:693
qgslogger.h
QgsPointCloudRenderer::drawOrder2d
Qgis::PointCloudDrawOrder drawOrder2d() const
Returns the drawing order used by the renderer for drawing points.
Definition: qgspointcloudrenderer.cpp:207
QgsUnitTypes::RenderUnitList
QList< QgsUnitTypes::RenderUnit > RenderUnitList
List of render units.
Definition: qgsunittypes.h:240
QgsPointCloudRendererAbstractMetadata::setIcon
void setIcon(const QIcon &icon)
Sets an icon representing the renderer.
Definition: qgspointcloudrendererregistry.h:86
QgsPointCloudRendererMetadata::createRenderer
QgsPointCloudRenderer * createRenderer(QDomElement &elem, const QgsReadWriteContext &context) override
Returns new instance of the renderer given the DOM element.
Definition: qgspointcloudrendererregistry.h:144
QgsPointCloudRenderer::pointSizeMapUnitScale
const QgsMapUnitScale & pointSizeMapUnitScale() const
Returns the map unit scale used for the point size.
Definition: qgspointcloudrenderer.h:489
QgsPointCloudRendererRegistry
Registry of 2D renderers for point clouds.
Definition: qgspointcloudrendererregistry.h:184
qgspointcloudrenderer.h
QgsUnitTypes::RenderMapUnits
@ RenderMapUnits
Map units.
Definition: qgsunittypes.h:170
qgsproject.h