Showing with 51 additions and 31 deletions.
  1. +51 −31 src/app/qgisapp.cpp
82 changes: 51 additions & 31 deletions src/app/qgisapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7010,58 +7010,78 @@ void QgisApp::histogramStretch( bool visibleAreaOnly, QgsRaster::ContrastEnhance

void QgisApp::increaseBrightness()
{
adjustBrightnessContrast( 1 );
int step = 1;
if ( QgsApplication::keyboardModifiers() == Qt::ShiftModifier )
{
step = 10;
}
adjustBrightnessContrast( step );
}

void QgisApp::decreaseBrightness()
{
adjustBrightnessContrast( -1 );
int step = -1;
if ( QgsApplication::keyboardModifiers() == Qt::ShiftModifier )
{
step = -10;
}
adjustBrightnessContrast( step );
}

void QgisApp::increaseContrast()
{
adjustBrightnessContrast( 1, false );
int step = 1;
if ( QgsApplication::keyboardModifiers() == Qt::ShiftModifier )
{
step = 10;
}
adjustBrightnessContrast( step, false );
}

void QgisApp::decreaseContrast()
{
adjustBrightnessContrast( -1, false );
int step = -1;
if ( QgsApplication::keyboardModifiers() == Qt::ShiftModifier )
{
step = -10;
}
adjustBrightnessContrast( step, false );
}


void QgisApp::adjustBrightnessContrast( int delta, bool updateBrightness )
{
QgsMapLayer * myLayer = mMapLegend->currentLayer();

if ( !myLayer )
foreach ( QgsMapLayer * layer, mMapLegend->selectedLayers() )
{
messageBar()->pushMessage( tr( "No Layer Selected" ),
tr( "To change brightness or contrast, you need to have a raster layer selected." ),
QgsMessageBar::INFO, messageTimeout() );
return;
}
if ( !layer )
{
messageBar()->pushMessage( tr( "No Layer Selected" ),
tr( "To change brightness or contrast, you need to have a raster layer selected." ),
QgsMessageBar::INFO, messageTimeout() );
return;
}

QgsRasterLayer* myRasterLayer = qobject_cast<QgsRasterLayer *>( myLayer );
if ( !myRasterLayer )
{
messageBar()->pushMessage( tr( "No Layer Selected" ),
tr( "To change brightness or contrast, you need to have a raster layer selected." ),
QgsMessageBar::INFO, messageTimeout() );
return;
}
QgsRasterLayer* rasterLayer = qobject_cast<QgsRasterLayer *>( layer );
if ( !rasterLayer )
{
messageBar()->pushMessage( tr( "No Layer Selected" ),
tr( "To change brightness or contrast, you need to have a raster layer selected." ),
QgsMessageBar::INFO, messageTimeout() );
return;
}

QgsBrightnessContrastFilter* brightnessFilter = myRasterLayer->brightnessFilter();
QgsBrightnessContrastFilter* brightnessFilter = rasterLayer->brightnessFilter();

if ( updateBrightness )
{
brightnessFilter->setBrightness( brightnessFilter->brightness() + delta );
}
else
{
brightnessFilter->setContrast( brightnessFilter->contrast() + delta );
}
if ( updateBrightness )
{
brightnessFilter->setBrightness( brightnessFilter->brightness() + delta );
}
else
{
brightnessFilter->setContrast( brightnessFilter->contrast() + delta );
}

myRasterLayer->triggerRepaint();
rasterLayer->triggerRepaint();
}
}

void QgisApp::helpContents()
Expand Down