Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsrasterrendererregistry.h 3 : : --------------------------- 4 : : begin : January 2012 5 : : copyright : (C) 2012 by Marco Hugentobler 6 : : email : marco at sourcepole dot ch 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #ifndef QGSRASTERRENDERERREGISTRY_H 19 : : #define QGSRASTERRENDERERREGISTRY_H 20 : : 21 : : 22 : : #define SIP_NO_FILE 23 : : 24 : : 25 : : 26 : : #include "qgis_core.h" 27 : : #include "qgsrasterlayer.h" //for DrawingStyle enum 28 : : #include <QHash> 29 : : #include <QString> 30 : : 31 : : class QDomElement; 32 : : class QgsRasterInterface; 33 : : class QgsRasterLayer; 34 : : class QgsRasterRenderer; 35 : : class QgsRasterRendererWidget; 36 : : 37 : : typedef QgsRasterRenderer *( *QgsRasterRendererCreateFunc )( const QDomElement &, QgsRasterInterface *input ); 38 : : typedef QgsRasterRendererWidget *( *QgsRasterRendererWidgetCreateFunc )( QgsRasterLayer *, const QgsRectangle &extent ); 39 : : 40 : : /** 41 : : * \ingroup core 42 : : * \brief Registry for raster renderer entries. 43 : : */ 44 : 105 : struct CORE_EXPORT QgsRasterRendererRegistryEntry 45 : : { 46 : : QgsRasterRendererRegistryEntry( const QString &name, const QString &visibleName, QgsRasterRendererCreateFunc rendererFunction, 47 : : QgsRasterRendererWidgetCreateFunc widgetFunction ); 48 : : 49 : : /** 50 : : * Constructor for QgsRasterRendererRegistryEntry. 51 : : */ 52 : 0 : QgsRasterRendererRegistryEntry() = default; 53 : : QString name; 54 : : QString visibleName; //visible (and translatable) name 55 : : QIcon icon(); 56 : 0 : QgsRasterRendererCreateFunc rendererCreateFunction = nullptr ; //pointer to create function 57 : 0 : QgsRasterRendererWidgetCreateFunc widgetCreateFunction = nullptr ; //pointer to create function for renderer widget 58 : : }; 59 : : 60 : : /** 61 : : * \ingroup core 62 : : * \brief Registry for raster renderers. 63 : : * 64 : : * QgsRasterRendererRegistry is not usually directly created, but rather accessed through 65 : : * QgsApplication::rasterRendererRegistry(). 66 : : * 67 : : * \note not available in Python bindings 68 : : */ 69 : 5 : class CORE_EXPORT QgsRasterRendererRegistry 70 : : { 71 : : public: 72 : : 73 : : QgsRasterRendererRegistry(); 74 : : 75 : : void insert( const QgsRasterRendererRegistryEntry &entry ); 76 : : void insertWidgetFunction( const QString &rendererName, QgsRasterRendererWidgetCreateFunc func ); 77 : : bool rendererData( const QString &rendererName, QgsRasterRendererRegistryEntry &data ) const; 78 : : QStringList renderersList() const; 79 : : QList< QgsRasterRendererRegistryEntry > entries() const; 80 : : 81 : : /** 82 : : * Creates a default renderer for a raster drawing style (considering user options such as default contrast enhancement). 83 : : * Caller takes ownership. 84 : : */ 85 : : QgsRasterRenderer *defaultRendererForDrawingStyle( QgsRaster::DrawingStyle drawingStyle, QgsRasterDataProvider *provider ) const; 86 : : 87 : : private: 88 : : QHash< QString, QgsRasterRendererRegistryEntry > mEntries; 89 : : QStringList mSortedEntries; 90 : : 91 : : //read min/max values from 92 : : bool minMaxValuesForBand( int band, QgsRasterDataProvider *provider, double &minValue, double &maxValue ) const; 93 : : }; 94 : : 95 : : #endif // QGSRASTERRENDERERREGISTRY_H