[QGIS Commit] r15432 - in trunk/qgis: images images/themes/default
src/app src/core/raster src/ui
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Fri Mar 11 09:44:05 EST 2011
Author: timlinux
Date: 2011-03-11 06:44:05 -0800 (Fri, 11 Mar 2011)
New Revision: 15432
Added:
trunk/qgis/images/themes/default/mActionFullHistogramStretch.png
Modified:
trunk/qgis/images/images.qrc
trunk/qgis/src/app/qgisapp.cpp
trunk/qgis/src/app/qgisapp.h
trunk/qgis/src/core/raster/qgsrasterlayer.cpp
trunk/qgis/src/core/raster/qgsrasterlayer.h
trunk/qgis/src/ui/qgisapp.ui
Log:
[FEATURE] Added histogram stretch to full dataset icon to raster toolbar
Modified: trunk/qgis/images/images.qrc
===================================================================
--- trunk/qgis/images/images.qrc 2011-03-11 08:15:36 UTC (rev 15431)
+++ trunk/qgis/images/images.qrc 2011-03-11 14:44:05 UTC (rev 15432)
@@ -1,5 +1,5 @@
<RCC>
- <qresource prefix="/images" >
+ <qresource prefix="/images">
<file>icons/qgis-icon-16x16.png</file>
<file>icons/qgis-icon-60x60.png</file>
<file>north_arrows/gpsarrow2.svg</file>
@@ -74,6 +74,7 @@
<file>themes/default/mActionFolder.png</file>
<file>themes/default/mActionFormAnnotation.png</file>
<file>themes/default/mActionFromSelectedFeature.png</file>
+ <file>themes/default/mActionFullHistogramStretch.png</file>
<file>themes/default/mActionGroupItems.png</file>
<file>themes/default/mActionHelpAbout.png</file>
<file>themes/default/mActionHelpAPI.png</file>
@@ -402,7 +403,7 @@
<file>themes/newgis/mIconPolygonLayer.png</file>
<file>themes/newgis/mIconTableLayer.png</file>
</qresource>
- <qresource prefix="/images/tips" >
+ <qresource prefix="/images/tips">
<file alias="symbol_levels.png">qgis_tips/symbol_levels.png</file>
</qresource>
</RCC>
Added: trunk/qgis/images/themes/default/mActionFullHistogramStretch.png
===================================================================
--- trunk/qgis/images/themes/default/mActionFullHistogramStretch.png (rev 0)
+++ trunk/qgis/images/themes/default/mActionFullHistogramStretch.png 2011-03-11 14:44:05 UTC (rev 15432)
@@ -0,0 +1,14 @@
+PNG
+
+
+IHDR àw=ø sRGB ®Îé bKGD ÿ ÿ ÿ ½§ pHYs
+×
+×B(x tIMEÛ#3/kà 6IDATHǵËUÆ¿so=ºº*UÕ]StMFNp`Ú 27ñµ04:ã&"¸hpÑ`"´ H.Yw
+êÆ? \8!2Muß[ÇŤ'ÝÎLÒ8\¸ðýÎùν·kFgQmÚ¾ç?ÐOÿÞøì»·ß;{_>9¥µâwkÓ?, at t^&Ú·ýÐöw¼U+
+=òók³
:{>ÏçëO»=¾!ªÈrñq:ºçá8}oò\8±HÑsÏî|×=>09ݸùNÉ|¾ùÙÜÉjÓ~LJ ¦i>Q¯×½ Ê Í-(N@ñÒÓG×{Nð%$ J¥¬ãÏ @*NÐæ($ý<âpdI[ 0<<8®³À îwåÎ'÷Ç)µ|fF!. at Hã
_¿úWå®ðí%uABH5CB
+ß?{ §Ï~Ê z*_²[0-Sh¡µF.3Nøxëjw4{ÿg03 ¬q pê̽ù>.\s
+FÌ)tÂhý8];ö`03.^ºøGíØÔæfpêÌÌÝ\ÒÏ -ÕèÌ@k
+ß÷F£Q^©òwÞ¦îSÔ¾ßú÷½N tZ«;©1¼~$¶óàJÞ/?¦iF¿nCÑÕBåHtäaîoZÒìÐZèµHJ mõzÝzP@ MY.ÞæÛPZY¤µF̹âåæ9iµ$Ú
+R
+à^´Ö(äiȨ:xÖÙµ*À²ÍmM}ON´z,JS
+ÏsO+vÖr/¼r.ûújíÍúV¯0·ÁHa̱ΠïG×÷PÃSÞD×ÍLÌzßT¶} Ú´·IEHµ$ÚsiæcxÛ·ºBT@öfcÆa¹R:`eÌ+³Þù_eTö& ÃçýãåGG6w½ûÛÝ7¦÷pæ®þßWÿlÿòëüÜBqþÚÂÐÍë·¥ô·´Ö¿-ÿý×Z½Ûd IEND®B`
\ No newline at end of file
Modified: trunk/qgis/src/app/qgisapp.cpp
===================================================================
--- trunk/qgis/src/app/qgisapp.cpp 2011-03-11 08:15:36 UTC (rev 15431)
+++ trunk/qgis/src/app/qgisapp.cpp 2011-03-11 14:44:05 UTC (rev 15432)
@@ -839,6 +839,7 @@
// Raster toolbar items
connect( mActionLocalHistogramStretch, SIGNAL( triggered() ), this, SLOT( localHistogramStretch() ) );
+ connect( mActionFullHistogramStretch, SIGNAL( triggered() ), this, SLOT( fullHistogramStretch() ) );
// Help Menu Items
@@ -1354,6 +1355,7 @@
mActionConfigureShortcuts->setIcon( getThemeIcon( "/mActionOptions.png" ) );
mActionHelpContents->setIcon( getThemeIcon( "/mActionHelpContents.png" ) );
mActionLocalHistogramStretch->setIcon( getThemeIcon( "/mActionLocalHistogramStretch.png" ) );
+ mActionFullHistogramStretch->setIcon( getThemeIcon( "/mActionFullHistogramStretch.png" ) );
mActionQgisHomePage->setIcon( getThemeIcon( "/mActionQgisHomePage.png" ) );
mActionAbout->setIcon( getThemeIcon( "/mActionHelpAbout.png" ) );
mActionSponsors->setIcon( getThemeIcon( "/mActionHelpSponsors.png" ) );
@@ -4838,6 +4840,49 @@
delete optionsDialog;
}
+void QgisApp::fullHistogramStretch()
+{
+ QgsMapLayer * layer = mMapLegend->currentLayer();
+
+ if ( !layer )
+ {
+ QMessageBox::information( this,
+ tr( "No Layer Selected" ),
+ tr( "To perform a full histogram stretch, you need to have a raster layer selected." ) );
+ return;
+ }
+
+ QgsRasterLayer* rlayer = qobject_cast<QgsRasterLayer *>( layer );
+ if ( !rlayer )
+ {
+ QMessageBox::information( this,
+ tr( "No Raster Layer Selected" ),
+ tr( "To perform a full histogram stretch, you need to have a raster layer selected." ) );
+ return;
+ }
+ if ( rlayer->drawingStyle() == QgsRasterLayer::SingleBandGray ||
+ rlayer->drawingStyle() == QgsRasterLayer::MultiBandSingleBandGray ||
+ rlayer->drawingStyle() == QgsRasterLayer::MultiBandColor
+ )
+ {
+ rlayer->setContrastEnhancementAlgorithm( "StretchToMinimumMaximum" );
+ rlayer->setMinimumMaximumUsingDataset();
+ rlayer->setCacheImage( NULL );
+ //refreshLayerSymbology( rlayer->getLayerID() );
+ mMapCanvas->refresh();
+ return;
+ }
+ else
+ {
+ QMessageBox::information( this,
+ tr( "No Valid Raster Layer Selected" ),
+ tr( "To perform a local histogram stretch, you need to have a grayscale "
+ "or multiband (multiband single layer, singleband grayscale or multiband color) "
+ " raster layer selected." ) );
+ return;
+ }
+}
+
void QgisApp::localHistogramStretch()
{
QgsMapLayer * layer = mMapLegend->currentLayer();
Modified: trunk/qgis/src/app/qgisapp.h
===================================================================
--- trunk/qgis/src/app/qgisapp.h 2011-03-11 08:15:36 UTC (rev 15431)
+++ trunk/qgis/src/app/qgisapp.h 2011-03-11 14:44:05 UTC (rev 15432)
@@ -495,6 +495,8 @@
void zoomActualSize();
//! perform a local histogram stretch on the active raster layer (stretch based on pixel values in view extent)
void localHistogramStretch();
+ //! perform a full histogram stretch on the active raster layer (stretch based on pixels values in full dataset)
+ void fullHistogramStretch();
//! plugin manager
void showPluginManager();
//! load python support if possible
Modified: trunk/qgis/src/core/raster/qgsrasterlayer.cpp
===================================================================
--- trunk/qgis/src/core/raster/qgsrasterlayer.cpp 2011-03-11 08:15:36 UTC (rev 15431)
+++ trunk/qgis/src/core/raster/qgsrasterlayer.cpp 2011-03-11 14:44:05 UTC (rev 15432)
@@ -2730,6 +2730,42 @@
}
}
+void QgsRasterLayer::setMinimumMaximumUsingDataset()
+{
+ double myMinMax[2];
+ if ( rasterType() == QgsRasterLayer::GrayOrUndefined || drawingStyle() == QgsRasterLayer::SingleBandGray || drawingStyle() == QgsRasterLayer::MultiBandSingleBandGray )
+ {
+ QgsRasterBandStats myRasterBandStats = bandStatistics( bandNumber( mGrayBandName ) );
+ float myMin = myRasterBandStats.minimumValue;
+ float myMax = myRasterBandStats.maximumValue;
+ setMinimumValue( grayBandName(), myMin );
+ setMaximumValue( grayBandName(), myMax );
+ setUserDefinedGrayMinimumMaximum( false );
+ }
+ else if ( rasterType() == QgsRasterLayer::Multiband )
+ {
+ QgsRasterBandStats myRasterBandStats = bandStatistics( bandNumber( mRedBandName ) );
+ float myMin = myRasterBandStats.minimumValue;
+ float myMax = myRasterBandStats.maximumValue;
+ setMinimumValue( redBandName(), myMin );
+ setMaximumValue( redBandName(), myMax );
+
+ myRasterBandStats = bandStatistics( bandNumber( mGreenBandName ) );
+ myMin = myRasterBandStats.minimumValue;
+ myMax = myRasterBandStats.maximumValue;
+ setMinimumValue( greenBandName(), myMin );
+ setMaximumValue( greenBandName(), myMax );
+
+ myRasterBandStats = bandStatistics( bandNumber( mGreenBandName ) );
+ myMin = myRasterBandStats.minimumValue;
+ myMax = myRasterBandStats.maximumValue;
+ setMinimumValue( greenBandName(), myMin );
+ setMaximumValue( greenBandName(), myMax );
+
+ setUserDefinedRGBMinimumMaximum( false );
+ }
+}
+
void QgsRasterLayer::setMinimumValue( unsigned int theBand, double theValue, bool theGenerateLookupTableFlag )
{
QgsDebugMsg( "setMinimumValue theValue = " + QString::number( theValue ) );
Modified: trunk/qgis/src/core/raster/qgsrasterlayer.h
===================================================================
--- trunk/qgis/src/core/raster/qgsrasterlayer.h 2011-03-11 08:15:36 UTC (rev 15431)
+++ trunk/qgis/src/core/raster/qgsrasterlayer.h 2011-03-11 14:44:05 UTC (rev 15432)
@@ -596,9 +596,15 @@
/** \brief Mutator for setting the maximum value for contrast enhancement */
void setMaximumValue( QString theBand, double theValue, bool theGenerateLookupTableFlag = true );
- /** \brief Sets the minimum and maximum values for the band(s) currently being displayed using the only pixel values from the last/current extent */
+ /** \brief Sets the minimum and maximum values for the band(s) currently
+ * being displayed using the only pixel values from the last/current extent
+ * */
void setMinimumMaximumUsingLastExtent();
+ /** \brief Sets the minimum and maximum values for the band(s) currently
+ * being displayed using the only pixel values from the dataset min/max */
+ void setMinimumMaximumUsingDataset();
+
/** \brief Mutator for setting the minimum value for contrast enhancement */
void setMinimumValue( unsigned int theBand, double theValue, bool theGenerateLookupTableFlag = true );
Modified: trunk/qgis/src/ui/qgisapp.ui
===================================================================
--- trunk/qgis/src/ui/qgisapp.ui 2011-03-11 08:15:36 UTC (rev 15431)
+++ trunk/qgis/src/ui/qgisapp.ui 2011-03-11 14:44:05 UTC (rev 15432)
@@ -17,7 +17,7 @@
<x>0</x>
<y>0</y>
<width>717</width>
- <height>23</height>
+ <height>24</height>
</rect>
</property>
<widget class="QMenu" name="mEditMenu">
@@ -357,6 +357,7 @@
<attribute name="toolBarBreak">
<bool>true</bool>
</attribute>
+ <addaction name="mActionFullHistogramStretch"/>
<addaction name="mActionLocalHistogramStretch"/>
</widget>
<widget class="QToolBar" name="mLabelToolBar">
@@ -1457,6 +1458,18 @@
<string>Python Console</string>
</property>
</action>
+ <action name="mActionFullHistogramStretch">
+ <property name="icon">
+ <iconset resource="../../images/images.qrc">
+ <normaloff>:/images/themes/default/mActionFullHistogramStretch.png</normaloff>:/images/themes/default/mActionFullHistogramStretch.png</iconset>
+ </property>
+ <property name="text">
+ <string>Full histogram stretch</string>
+ </property>
+ <property name="toolTip">
+ <string>Stretch histogram to full dataset</string>
+ </property>
+ </action>
</widget>
<resources>
<include location="../../images/images.qrc"/>
More information about the QGIS-commit
mailing list