|
Quantum GIS API Documentation
master-693a1fe
|
00001 /*************************************************************************** 00002 qgsrasterrendererregistry.h 00003 --------------------------- 00004 begin : January 2012 00005 copyright : (C) 2012 by Marco Hugentobler 00006 email : marco at sourcepole dot ch 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef QGSRASTERRENDERERREGISTRY_H 00019 #define QGSRASTERRENDERERREGISTRY_H 00020 00021 #include "qgsrasterlayer.h" //for DrawingStyle enum 00022 #include <QHash> 00023 #include <QString> 00024 00025 class QDomElement; 00026 class QgsRasterInterface; 00027 class QgsRasterLayer; 00028 class QgsRasterRenderer; 00029 class QgsRasterRendererWidget; 00030 00031 typedef QgsRasterRenderer*( *QgsRasterRendererCreateFunc )( const QDomElement&, QgsRasterInterface* input ); 00032 typedef QgsRasterRendererWidget*( *QgsRasterRendererWidgetCreateFunc )( QgsRasterLayer*, const QgsRectangle &extent ); 00033 00037 struct CORE_EXPORT QgsRasterRendererRegistryEntry 00038 { 00039 QgsRasterRendererRegistryEntry( const QString& theName, const QString& theVisibleName, QgsRasterRendererCreateFunc rendererFunction, 00040 QgsRasterRendererWidgetCreateFunc widgetFunction ); 00041 QgsRasterRendererRegistryEntry(); 00042 QString name; 00043 QString visibleName; //visible (and translatable) name 00044 QgsRasterRendererCreateFunc rendererCreateFunction; //pointer to create function 00045 QgsRasterRendererWidgetCreateFunc widgetCreateFunction; //pointer to create function for renderer widget 00046 }; 00047 00051 class CORE_EXPORT QgsRasterRendererRegistry 00052 { 00053 public: 00054 static QgsRasterRendererRegistry* instance(); 00055 ~QgsRasterRendererRegistry(); 00056 00057 void insert( QgsRasterRendererRegistryEntry entry ); 00058 void insertWidgetFunction( const QString& rendererName, QgsRasterRendererWidgetCreateFunc func ); 00059 bool rendererData( const QString& rendererName, QgsRasterRendererRegistryEntry& data ) const; 00060 QStringList renderersList() const; 00061 QList< QgsRasterRendererRegistryEntry > entries() const; 00062 00065 QgsRasterRenderer* defaultRendererForDrawingStyle( const QgsRasterLayer::DrawingStyle& theDrawingStyle, QgsRasterDataProvider* provider ) const; 00066 00067 protected: 00068 QgsRasterRendererRegistry(); 00069 00070 private: 00071 static QgsRasterRendererRegistry* mInstance; 00072 QHash< QString, QgsRasterRendererRegistryEntry > mEntries; 00073 QStringList mSortedEntries; 00074 00075 //read min/max values from 00076 bool minMaxValuesForBand( int band, QgsRasterDataProvider* provider, double& minValue, double& maxValue ) const; 00077 }; 00078 00079 #endif // QGSRASTERRENDERERREGISTRY_H