[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Õ]Sž™tMFNp‘`Ú	2“7ñµ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Ïî|×=>0€9ݸùNɘ|¾ùÙÜÉjÓ~LJ‘	ƒ¦i>Q¯×½  Ê Í-(N@‚ñÒÓG×{Nð%$ ”J¥¬ã˜Ï @*NÐæŠ($ý<âpdŒI[ 0<<8®³À îˆwåÎ'÷Ç)µ|fF!. at Hㅁ _¿úWå®ðí%€›uABH­5CB€Š‹
+ß?ˆˆ{ §Ï~Ê z*_²Š[0-Sh­¡µF.Ÿ3Nœøxëj•w4‰™{ˆÿg03	¬q pêÌŽ½ù>.\›s
+†FŠÌ)tÂhý8Ž];ö`03.^ºøGíØÔæ•fpêÌÌÝ\Ò–Ï “-ÕèÌ@k
+ß÷F£Q^©òwÞ˜¦îSÔ¾ßú÷½N t‚Z«;©1¼~$¶óàJÞ/?¦išF¿”nCÑՁBåHtäaîoZÒìÐZèµHJ	–­mõzÝzP@ M‘Y.ÞæÛPZ–Y¤µF̹âåæ„9i’µ$Ú
+R
+à^‹´Ö(ä†iȨ:xÖÙµ*À²Ím†M}O‘N–´z,JS
+Ïs‘O+vÖr/¼r.ûújíÍúV¯0·ÁHa̱Î	ïG×÷›ˆPÃSÞD”‹×ÍLÌzßT›¶} Ú´·IEHµ$ÚsiæcxžÛ·ºBT@öfcÆ‹a¹R:`eÌ+“³Þù_eŽT›ö&  ÃçýãåGG6„‘w½ŸˆûÛžÝ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