Skip to content

Commit 44b9e73

Browse files
author
timlinux
committedFeb 18, 2011
Added local histogram stretch icon to the new raster toolbar and wired it up so it works
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@15192 c8812cc2-4d05-0410-92ff-de0c093fc19c

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed
 

‎images/images.qrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<file>north_arrows/gpsarrow.svg</file>
44
<file>north_arrows/gpsarrow2.svg</file>
55
<file>themes/default/mActionAddArrow.png</file>
6+
<file>themes/default/mActionLocalHistogramStretch.png</file>
67
<file>themes/newgis/mActionAddGPSLayer.png</file>
78
<file>themes/newgis/mActionAddImage.png</file>
89
<file>themes/newgis/mActionAddIsland.png</file>
Loading

‎src/app/qgisapp.cpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1209,6 +1209,12 @@ void QgisApp::createActions()
12091209
mWindowActions = new QActionGroup( this );
12101210
#endif
12111211

1212+
// Raster toolbar items
1213+
mActionLocalHistogramStretch = new QAction( getThemeIcon( "mActionmRasterLocalHistogramStretch.png" ), tr( "Local Histogram Stretch" ), this );
1214+
mActionLocalHistogramStretch->setStatusTip( tr( "Stretch histogram of active raster to view extents" ) );
1215+
connect( mActionLocalHistogramStretch, SIGNAL( triggered() ), this, SLOT( localHistogramStretch() ) );
1216+
1217+
12121218
// Help Menu Items
12131219

12141220
mActionHelpContents = new QAction( getThemeIcon( "mActionHelpContents.png" ), tr( "Help Contents" ), this );
@@ -1864,6 +1870,14 @@ void QgisApp::createToolBars()
18641870
mHelpToolBar->addAction( mActionHelpContents );
18651871
mHelpToolBar->addAction( QWhatsThis::createAction() );
18661872
mToolbarMenu->addAction( mHelpToolBar->toggleViewAction() );
1873+
1874+
//
1875+
// Raster Toolbar
1876+
mRasterToolBar = addToolBar( tr( "Raster" ) );
1877+
mRasterToolBar->setObjectName( "Raster" );
1878+
mRasterToolBar->addAction( mActionLocalHistogramStretch );
1879+
mToolbarMenu->addAction( mRasterToolBar->toggleViewAction() );
1880+
18671881

18681882
//Label Toolbar
18691883
mLabelToolBar = addToolBar( tr( "Label" ) );
@@ -2070,6 +2084,7 @@ void QgisApp::setTheme( QString theThemeName )
20702084
mActionOptions->setIcon( getThemeIcon( "/mActionOptions.png" ) );
20712085
mActionConfigureShortcuts->setIcon( getThemeIcon( "/mActionOptions.png" ) );
20722086
mActionHelpContents->setIcon( getThemeIcon( "/mActionHelpContents.png" ) );
2087+
mActionLocalHistogramStretch->setIcon( getThemeIcon( "/mActionLocalHistogramStretch.png" ) );
20732088
mActionQgisHomePage->setIcon( getThemeIcon( "/mActionQgisHomePage.png" ) );
20742089
mActionAbout->setIcon( getThemeIcon( "/mActionHelpAbout.png" ) );
20752090
mActionDraw->setIcon( getThemeIcon( "/mActionDraw.png" ) );
@@ -5459,6 +5474,48 @@ void QgisApp::options()
54595474
delete optionsDialog;
54605475
}
54615476

5477+
void QgisApp::localHistogramStretch()
5478+
{
5479+
QgsMapLayer * layer = mMapLegend->currentLayer();
5480+
5481+
if ( !layer )
5482+
{
5483+
QMessageBox::information( this,
5484+
tr( "No Layer Selected" ),
5485+
tr( "To perform a local histogram stretch, you need to have a raster layer selected." ) );
5486+
return;
5487+
}
5488+
5489+
QgsRasterLayer* rlayer = qobject_cast<QgsRasterLayer *>( layer );
5490+
if ( !rlayer )
5491+
{
5492+
QMessageBox::information( this,
5493+
tr( "No Raster Layer Selected" ),
5494+
tr( "To perform a local histogram stretch, you need to have a raster layer selected." ) );
5495+
return;
5496+
}
5497+
if ( rlayer->drawingStyle() == QgsRasterLayer::SingleBandGray ||
5498+
rlayer->drawingStyle() == QgsRasterLayer::MultiBandSingleBandGray
5499+
)
5500+
{
5501+
rlayer->setContrastEnhancementAlgorithm( "StretchToMinimumMaximum" );
5502+
rlayer->setMinimumMaximumUsingLastExtent();
5503+
rlayer->setCacheImage(NULL);
5504+
//refreshLayerSymbology( rlayer->getLayerID() );
5505+
mMapCanvas->refresh();
5506+
return;
5507+
}
5508+
else
5509+
{
5510+
QMessageBox::information( this,
5511+
tr( "No Valid Raster Layer Selected" ),
5512+
tr( "To perform a local histogram stretch, you need to have a grayscale "
5513+
"(multiband single layer, or singleband grayscale) raster layer "
5514+
"selected." ) );
5515+
return;
5516+
}
5517+
}
5518+
54625519
void QgisApp::helpContents()
54635520
{
54645521
openURL( "index.html" );

‎src/app/qgisapp.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ class QgisApp : public QMainWindow
361361
QToolBar *attributesToolBar() { return mAttributesToolBar; }
362362
QToolBar *pluginToolBar() { return mPluginToolBar; }
363363
QToolBar *helpToolBar() { return mHelpToolBar; }
364+
QToolBar *rasterToolBar() { return mRasterToolBar; }
364365

365366
//! run python
366367
void runPythonString( const QString &expr );
@@ -498,6 +499,8 @@ class QgisApp : public QMainWindow
498499
void zoomToLayerExtent();
499500
//! zoom to actual size of raster layer
500501
void zoomActualSize();
502+
//! perform a local histogram stretch on the active raster layer (stretch based on pixel values in view extent)
503+
void localHistogramStretch();
501504
//! plugin manager
502505
void showPluginManager();
503506
//! load python support if possible
@@ -876,6 +879,7 @@ class QgisApp : public QMainWindow
876879
QToolBar *mAttributesToolBar;
877880
QToolBar *mPluginToolBar;
878881
QToolBar *mHelpToolBar;
882+
QToolBar *mRasterToolBar;
879883
QToolBar *mLabelToolBar;
880884

881885
// actions for menus and toolbars -----------------
@@ -1013,6 +1017,8 @@ class QgisApp : public QMainWindow
10131017
QAction *mActionHelpSeparator2;
10141018
QAction *mActionAbout;
10151019

1020+
QAction *mActionLocalHistogramStretch;
1021+
10161022
QAction *mActionMoveLabel;
10171023
QAction *mActionRotateLabel;
10181024
QAction *mActionChangeLabelProperties;

0 commit comments

Comments
 (0)
Please sign in to comment.