Skip to content

Commit

Permalink
Use embedded symbology renderer by default for TAB/KML files
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Mar 6, 2021
1 parent 49539d0 commit 031e2b0
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
17 changes: 16 additions & 1 deletion src/core/providers/ogr/qgsogrprovider.cpp
Expand Up @@ -48,7 +48,7 @@ email : sherman at mrcc.com
#include "qgsogrdbconnection.h"
#include "qgsgeopackageproviderconnection.h"
#include "qgis.h"

#include "qgsembeddedsymbolrenderer.h"

#define CPL_SUPRESS_CPLUSPLUS //#spellok
#include <gdal.h> // to collect version information
Expand Down Expand Up @@ -2967,6 +2967,12 @@ void QgsOgrProvider::computeCapabilities()
//supports transactions
ability |= TransactionSupport;
}

if ( GDALGetMetadataItem( mOgrLayer->driver(), GDAL_DCAP_FEATURE_STYLES, nullptr ) != nullptr )
{
ability |= FeatureSymbology;
ability |= CreateRenderer;
}
}

ability |= ReadLayerMetadata;
Expand Down Expand Up @@ -4616,6 +4622,15 @@ bool QgsOgrProvider::doesStrictFeatureTypeCheck() const
return mGDALDriverName != QLatin1String( "ESRI Shapefile" ) || ( mOGRGeomType == wkbPoint || mOGRGeomType == wkbPoint25D );
}

QgsFeatureRenderer *QgsOgrProvider::createRenderer( const QVariantMap & ) const
{
if ( !( mCapabilities & FeatureSymbology ) )
return nullptr;

std::unique_ptr< QgsSymbol > defaultSymbol( QgsSymbol::defaultSymbol( QgsWkbTypes::geometryType( wkbType() ) ) );
return new QgsEmbeddedSymbolRenderer( defaultSymbol.release() );
}

OGRwkbGeometryType QgsOgrProvider::ogrWkbSingleFlatten( OGRwkbGeometryType type )
{
type = wkbFlatten( type );
Expand Down
1 change: 1 addition & 0 deletions src/core/providers/ogr/qgsogrprovider.h
Expand Up @@ -159,6 +159,7 @@ class QgsOgrProvider final: public QgsVectorDataProvider
QString description() const override;
QgsTransaction *transaction() const override;
bool doesStrictFeatureTypeCheck() const override;
QgsFeatureRenderer *createRenderer( const QVariantMap &configuration = QVariantMap() ) const override;

//! Returns OGR geometry type
static OGRwkbGeometryType getOgrGeomType( const QString &driverName, OGRLayerH ogrLayer );
Expand Down

0 comments on commit 031e2b0

Please sign in to comment.