mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-18 00:03:05 -04:00
Why? - no benefits to QScopedPointer over std::unique_ptr - unlike QScopedPointer, std::unique_ptr has no overhead over regular pointers - using standard language features makes it more likely that compilers can optimise this use and static analysers can correctly handle code using unique_ptrs - QScopedPointer has an (IMO) uncertain future (given that Qt is dropping features which have become part of the c++ standard). Better to port now before wider use of QScopedPointer in the codebase!
123 lines
3.5 KiB
C++
123 lines
3.5 KiB
C++
/***************************************************************************
|
|
qgsnullsymbolrenderer.cpp
|
|
---------------------
|
|
begin : November 2014
|
|
copyright : (C) 2014 by Nyall Dawson
|
|
email : nyall dot dawson at gmail dot com
|
|
***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "qgsnullsymbolrenderer.h"
|
|
#include "qgssymbol.h"
|
|
#include "qgsgeometry.h"
|
|
|
|
#include <QDomDocument>
|
|
#include <QDomElement>
|
|
|
|
QgsNullSymbolRenderer::QgsNullSymbolRenderer()
|
|
: QgsFeatureRenderer( QStringLiteral( "nullSymbol" ) )
|
|
{
|
|
}
|
|
|
|
QgsSymbol* QgsNullSymbolRenderer::symbolForFeature( QgsFeature& , QgsRenderContext& )
|
|
{
|
|
return nullptr;
|
|
}
|
|
|
|
QgsSymbol* QgsNullSymbolRenderer::originalSymbolForFeature( QgsFeature&, QgsRenderContext& )
|
|
{
|
|
return nullptr;
|
|
}
|
|
|
|
bool QgsNullSymbolRenderer::renderFeature( QgsFeature &feature, QgsRenderContext &context, int layer, bool selected, bool drawVertexMarker )
|
|
{
|
|
//render selected features or features being edited only
|
|
if ( !selected && !drawVertexMarker )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
if ( !feature.hasGeometry() ||
|
|
feature.geometry().type() == QgsWkbTypes::NullGeometry ||
|
|
feature.geometry().type() == QgsWkbTypes::UnknownGeometry )
|
|
return true;
|
|
|
|
if ( !mSymbol )
|
|
{
|
|
//create default symbol
|
|
mSymbol.reset( QgsSymbol::defaultSymbol( feature.geometry().type() ) );
|
|
mSymbol->startRender( context );
|
|
}
|
|
|
|
mSymbol->renderFeature( feature, context, layer, selected, drawVertexMarker, mCurrentVertexMarkerType, mCurrentVertexMarkerSize );
|
|
|
|
return true;
|
|
}
|
|
|
|
void QgsNullSymbolRenderer::startRender( QgsRenderContext& context, const QgsFields& fields )
|
|
{
|
|
Q_UNUSED( context );
|
|
Q_UNUSED( fields );
|
|
}
|
|
|
|
void QgsNullSymbolRenderer::stopRender( QgsRenderContext& context )
|
|
{
|
|
if ( mSymbol.get() )
|
|
{
|
|
mSymbol->stopRender( context );
|
|
}
|
|
}
|
|
|
|
bool QgsNullSymbolRenderer::willRenderFeature( QgsFeature&, QgsRenderContext& )
|
|
{
|
|
//return true for every feature - so they are still selectable
|
|
return true;
|
|
}
|
|
|
|
QSet<QString> QgsNullSymbolRenderer::usedAttributes( const QgsRenderContext& ) const
|
|
{
|
|
return QSet<QString>();
|
|
}
|
|
|
|
QString QgsNullSymbolRenderer::dump() const
|
|
{
|
|
return QStringLiteral( "NULL" );
|
|
}
|
|
|
|
QgsFeatureRenderer* QgsNullSymbolRenderer::clone() const
|
|
{
|
|
QgsNullSymbolRenderer* r = new QgsNullSymbolRenderer();
|
|
return r;
|
|
}
|
|
|
|
QgsSymbolList QgsNullSymbolRenderer::symbols( QgsRenderContext& )
|
|
{
|
|
return QgsSymbolList();
|
|
}
|
|
|
|
QgsFeatureRenderer* QgsNullSymbolRenderer::create( QDomElement& element )
|
|
{
|
|
Q_UNUSED( element );
|
|
QgsNullSymbolRenderer* r = new QgsNullSymbolRenderer();
|
|
return r;
|
|
}
|
|
|
|
QDomElement QgsNullSymbolRenderer::save( QDomDocument& doc )
|
|
{
|
|
QDomElement rendererElem = doc.createElement( RENDERER_TAG_NAME );
|
|
rendererElem.setAttribute( QStringLiteral( "type" ), QStringLiteral( "nullSymbol" ) );
|
|
return rendererElem;
|
|
}
|
|
|
|
QgsNullSymbolRenderer* QgsNullSymbolRenderer::convertFromRenderer( const QgsFeatureRenderer *renderer )
|
|
{
|
|
Q_UNUSED( renderer );
|
|
return new QgsNullSymbolRenderer();
|
|
}
|