35   if ( !rendererAbstractMetadata )
 
   38   if ( !rendererMetadata )
 
   43   if ( !iconName.isEmpty() )
 
   52 static void _initRendererWidgetFunctions()
 
   54   static bool sInitialized = 
false;
 
   58   _initRenderer( QStringLiteral( 
"extent" ), QgsPointCloudExtentRendererWidget::create, QStringLiteral( 
"styleicons/pointcloudextent.svg" ) );
 
   59   _initRenderer( QStringLiteral( 
"rgb" ), QgsPointCloudRgbRendererWidget::create, QStringLiteral( 
"styleicons/multibandcolor.svg" ) );
 
   60   _initRenderer( QStringLiteral( 
"ramp" ), QgsPointCloudAttributeByRampRendererWidget::create, QStringLiteral( 
"styleicons/singlebandpseudocolor.svg" ) );
 
   61   _initRenderer( QStringLiteral( 
"classified" ), QgsPointCloudClassifiedRendererWidget::create, QStringLiteral( 
"styleicons/paletted.svg" ) );
 
   73   layout()->setContentsMargins( 0, 0, 0, 0 );
 
   76   _initRendererWidgetFunctions();
 
   80   for ( 
const QString &name : renderers )
 
   83       cboRenderers->addItem( m->icon(), m->visibleName(), name );
 
   86   cboRenderers->setCurrentIndex( -1 ); 
 
   91   connect( cboRenderers, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsPointCloudRendererPropertiesWidget::rendererChanged );
 
   93   connect( mBlendModeComboBox, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
 
   99   connect( mPointSizeSpinBox, qgis::overload<double>::of( &QgsDoubleSpinBox::valueChanged ), 
this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
 
  104   mMaxErrorSpinBox->setClearValue( 0.3 );
 
  106   connect( mMaxErrorSpinBox, qgis::overload<double>::of( &QgsDoubleSpinBox::valueChanged ), 
this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
 
  109   connect( mPointStyleComboBox, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsPointCloudRendererPropertiesWidget::emitWidgetChanged );
 
  126   mLayer = qobject_cast< QgsPointCloudLayer * >( layer );
 
  128   mBlockChangedSignal = 
true;
 
  129   mOpacityWidget->setOpacity( mLayer->
opacity() );
 
  130   mBlendModeComboBox->setBlendMode( mLayer->
blendMode() );
 
  137     int rendererIdx = cboRenderers->findData( rendererName );
 
  138     cboRenderers->setCurrentIndex( rendererIdx );
 
  141     Q_ASSERT( rendererIdx != -1 && 
"there must be a renderer!" );
 
  147     mPointStyleComboBox->setCurrentIndex( mPointStyleComboBox->findData( mLayer->
renderer()->
pointSymbol() ) );
 
  153   mBlockChangedSignal = 
false;
 
  165   mLayer->
setOpacity( mOpacityWidget->opacity() );
 
  166   mLayer->
setBlendMode( mBlendModeComboBox->blendMode() );
 
  170   else if ( !cboRenderers->currentData().toString().isEmpty() )
 
  186 void QgsPointCloudRendererPropertiesWidget::rendererChanged()
 
  188   if ( cboRenderers->currentIndex() == -1 )
 
  190     QgsDebugMsg( QStringLiteral( 
"No current item -- this should never happen!" ) );
 
  194   QString rendererName = cboRenderers->currentData().toString();
 
  197   std::unique_ptr< QgsPointCloudRenderer > oldRenderer;
 
  198   std::unique_ptr< QgsPointCloudRenderer > newRenderer;
 
  200     newRenderer.reset( mActiveWidget->
renderer() );
 
  204     oldRenderer = std::move( newRenderer );
 
  214     stackedWidget->removeWidget( mActiveWidget );
 
  216     delete mActiveWidget;
 
  217     mActiveWidget = 
nullptr;
 
  222   if ( rendererMetadata )
 
  229     mActiveWidget = widget;
 
  230     stackedWidget->addWidget( mActiveWidget );
 
  231     stackedWidget->setCurrentWidget( mActiveWidget );
 
  233     if ( mMapCanvas || mMessageBar )
 
  248     stackedWidget->setCurrentWidget( pageNoWidget );
 
  253 void QgsPointCloudRendererPropertiesWidget::emitWidgetChanged()
 
  255   if ( !mBlockChangedSignal )
 
static QgsPointCloudRendererRegistry * pointCloudRendererRegistry()
Returns the application's point cloud renderer registry, used for managing point cloud layer 2D rende...
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
Base class for all map layer types.
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer.
virtual void setOpacity(double opacity)
Sets the opacity for the layer, where opacity is a value between 0 (totally transparent) and 1....
Represents a map layer supporting display of point clouds.
QgsPointCloudRenderer * renderer()
Returns the 2D renderer for the point cloud.
void setRenderer(QgsPointCloudRenderer *renderer)
Sets the 2D renderer for the point cloud.
Registry of 2D renderers for point clouds.
QgsPointCloudRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer.
QStringList renderersList() const
Returns a list of available renderers.
const QgsMapUnitScale & pointSizeMapUnitScale() const
Returns the map unit scale used for the point size.
void setMaximumScreenError(double error)
Sets the maximum screen error allowed when rendering the point cloud.
void setPointSizeUnit(const QgsUnitTypes::RenderUnit units)
Sets the units used for the point size.
PointSymbol pointSymbol() const
Returns the symbol used by the renderer for drawing points.
void setPointSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the point size.
virtual QgsPointCloudRenderer * clone() const =0
Create a deep copy of this renderer.
void setPointSize(double size)
Sets the point size.
PointSymbol
Rendering symbols for points.
@ Square
Renders points as squares.
@ Circle
Renders points as circles.
virtual QString type() const =0
Returns the identifier of the renderer type.
void setPointSymbol(PointSymbol symbol)
Sets the symbol used by the renderer for drawing points.
QgsUnitTypes::RenderUnit maximumScreenErrorUnit() const
Returns the unit for the maximum screen error allowed when rendering the point cloud.
QgsUnitTypes::RenderUnit pointSizeUnit() const
Returns the units used for the point size.
double maximumScreenError() const
Returns the maximum screen error allowed when rendering the point cloud.
void setMaximumScreenErrorUnit(QgsUnitTypes::RenderUnit unit)
Sets the unit for the maximum screen error allowed when rendering the point cloud.
double pointSize() const
Returns the point size.
The class is used as a container of context for various read/write operations on other objects.
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
void setMapCanvas(QgsMapCanvas *canvas)
Sets the map canvas associated with the widget.
void setMessageBar(QgsMessageBar *bar)
Sets the message bar associated with the widget.
QgsMapCanvas * mapCanvas() const
Returns the map canvas associated with the widget.
QgsMessageBar * messageBar() const
Returns the message bar associated with the widget.
QList< QgsUnitTypes::RenderUnit > RenderUnitList
List of render units.
@ RenderMetersInMapUnits
Meters value as Map units.
@ RenderPoints
Points (e.g., for font sizes)
@ RenderMillimeters
Millimeters.
@ RenderMapUnits
Map units.
#define QgsDebugMsgLevel(str, level)
QgsPointCloudRendererWidget *(* QgsPointCloudRendererWidgetFunc)(QgsPointCloudLayer *, QgsStyle *, QgsPointCloudRenderer *)