removed raster layer drawing style getter/setter

This commit is contained in:
Radim Blazek 2013-05-15 17:58:44 +02:00
parent d64ee56556
commit 378a55ec9b
7 changed files with 53 additions and 67 deletions

View File

@ -113,7 +113,7 @@ class QgsRasterLayer : QgsMapLayer
void setDataProvider( const QString & provider ); void setDataProvider( const QString & provider );
/** \brief Accessor for drawing style */ /** \brief Accessor for drawing style */
DrawingStyle drawingStyle(); //DrawingStyle drawingStyle();
/** \brief Accessor that returns the width of the (unclipped) raster */ /** \brief Accessor that returns the width of the (unclipped) raster */
int width(); int width();
@ -125,7 +125,7 @@ class QgsRasterLayer : QgsMapLayer
LayerType rasterType(); LayerType rasterType();
/** \brief Mutator for drawing style */ /** \brief Mutator for drawing style */
void setDrawingStyle( const DrawingStyle & theDrawingStyle ); //void setDrawingStyle( const DrawingStyle & theDrawingStyle );
/**Set raster renderer. Takes ownership of the renderer object*/ /**Set raster renderer. Takes ownership of the renderer object*/
void setRenderer( QgsRasterRenderer* theRenderer /Transfer/ ); void setRenderer( QgsRasterRenderer* theRenderer /Transfer/ );

View File

@ -32,6 +32,7 @@
#include "qgsmaprenderer.h" #include "qgsmaprenderer.h"
#include "qgsmaptoolemitpoint.h" #include "qgsmaptoolemitpoint.h"
#include "qgsmaptopixel.h" #include "qgsmaptopixel.h"
#include "qgsmultibandcolorrenderer.h"
#include "qgsmultibandcolorrendererwidget.h" #include "qgsmultibandcolorrendererwidget.h"
#include "qgspalettedrendererwidget.h" #include "qgspalettedrendererwidget.h"
#include "qgsproject.h" #include "qgsproject.h"
@ -1206,7 +1207,7 @@ void QgsRasterLayerProperties::on_pbnExportTransparentPixelValues_clicked()
{ {
QTextStream myOutputStream( &myOutputFile ); QTextStream myOutputStream( &myOutputFile );
myOutputStream << "# " << tr( "QGIS Generated Transparent Pixel Value Export File" ) << "\n"; myOutputStream << "# " << tr( "QGIS Generated Transparent Pixel Value Export File" ) << "\n";
if ( /*rbtnThreeBand->isChecked() &&*/ QgsRasterLayer::MultiBandColor == mRasterLayer->drawingStyle() ) if ( rasterIsMultiBandColor() )
{ {
myOutputStream << "#\n#\n# " << tr( "Red" ) << "\t" << tr( "Green" ) << "\t" << tr( "Blue" ) << "\t" << tr( "Percent Transparent" ); myOutputStream << "#\n#\n# " << tr( "Red" ) << "\t" << tr( "Green" ) << "\t" << tr( "Blue" ) << "\t" << tr( "Percent Transparent" );
for ( int myTableRunner = 0; myTableRunner < tableTransparency->rowCount(); myTableRunner++ ) for ( int myTableRunner = 0; myTableRunner < tableTransparency->rowCount(); myTableRunner++ )
@ -1219,17 +1220,7 @@ void QgsRasterLayerProperties::on_pbnExportTransparentPixelValues_clicked()
} }
else else
{ {
if ( QgsRasterLayer::PalettedColor != mRasterLayer->drawingStyle() && myOutputStream << "#\n#\n# " << tr( "Value" ) << "\t" << tr( "Percent Transparent" );
QgsRasterLayer::PalettedSingleBandGray != mRasterLayer->drawingStyle() &&
QgsRasterLayer::PalettedSingleBandPseudoColor != mRasterLayer->drawingStyle() &&
QgsRasterLayer::PalettedMultiBandColor != mRasterLayer->drawingStyle() )
{
myOutputStream << "#\n#\n# " << tr( "Gray" ) << "\t" << tr( "Percent Transparent" );
}
else
{
myOutputStream << "#\n#\n# " << tr( "Indexed Value" ) << "\t" << tr( "Percent Transparent" );
}
for ( int myTableRunner = 0; myTableRunner < tableTransparency->rowCount(); myTableRunner++ ) for ( int myTableRunner = 0; myTableRunner < tableTransparency->rowCount(); myTableRunner++ )
{ {
@ -1331,7 +1322,7 @@ void QgsRasterLayerProperties::on_pbnImportTransparentPixelValues_clicked()
{ {
QTextStream myInputStream( &myInputFile ); QTextStream myInputStream( &myInputFile );
QString myInputLine; QString myInputLine;
if ( /*rbtnThreeBand->isChecked() &&*/ QgsRasterLayer::MultiBandColor == mRasterLayer->drawingStyle() ) if ( rasterIsMultiBandColor() )
{ {
for ( int myTableRunner = tableTransparency->rowCount() - 1; myTableRunner >= 0; myTableRunner-- ) for ( int myTableRunner = tableTransparency->rowCount() - 1; myTableRunner >= 0; myTableRunner-- )
{ {
@ -1714,3 +1705,9 @@ void QgsRasterLayerProperties::on_mResetColorRenderingBtn_clicked()
mColorizeCheck->setChecked( false ); mColorizeCheck->setChecked( false );
sliderColorizeStrength->setValue( 100 ); sliderColorizeStrength->setValue( 100 );
} }
bool QgsRasterLayerProperties::rasterIsMultiBandColor()
{
return mRasterLayer && dynamic_cast<QgsMultiBandColorRenderer*>( mRasterLayer->renderer() ) != 0;
}

View File

@ -155,6 +155,8 @@ class QgsRasterLayerProperties : public QgsOptionsDialogBase, private Ui::QgsRas
QgsRasterRendererWidget* mRendererWidget; QgsRasterRendererWidget* mRendererWidget;
bool rasterIsMultiBandColor();
void setupTransparencyTable( int nBands ); void setupTransparencyTable( int nBands );
/** \brief Clear the current transparency table and populate the table with the correct types for current drawing mode and data type*/ /** \brief Clear the current transparency table and populate the table with the correct types for current drawing mode and data type*/

View File

@ -788,7 +788,7 @@ void QgsRasterLayer::init()
{ {
mRasterType = QgsRasterLayer::GrayOrUndefined; mRasterType = QgsRasterLayer::GrayOrUndefined;
setDrawingStyle( QgsRasterLayer::UndefinedDrawingStyle ); setRendererForDrawingStyle( QgsRasterLayer::UndefinedDrawingStyle );
//Initialize the last view port structure, should really be a class //Initialize the last view port structure, should really be a class
mLastViewPort.mWidth = 0; mLastViewPort.mWidth = 0;
@ -895,16 +895,16 @@ void QgsRasterLayer::setDataProvider( QString const & provider )
QgsDebugMsg( "mRasterType = " + QString::number( mRasterType ) ); QgsDebugMsg( "mRasterType = " + QString::number( mRasterType ) );
if ( mRasterType == ColorLayer ) if ( mRasterType == ColorLayer )
{ {
QgsDebugMsg( "Setting mDrawingStyle to SingleBandColorDataStyle " + QString::number( SingleBandColorDataStyle ) ); QgsDebugMsg( "Setting drawing style to SingleBandColorDataStyle " + QString::number( SingleBandColorDataStyle ) );
setDrawingStyle( SingleBandColorDataStyle ); setRendererForDrawingStyle( SingleBandColorDataStyle );
} }
else if ( mRasterType == Palette && mDataProvider->colorInterpretation( 1 ) == QgsRaster::PaletteIndex ) else if ( mRasterType == Palette && mDataProvider->colorInterpretation( 1 ) == QgsRaster::PaletteIndex )
{ {
setDrawingStyle( PalettedColor ); //sensible default setRendererForDrawingStyle( PalettedColor ); //sensible default
} }
else if ( mRasterType == Palette && mDataProvider->colorInterpretation( 1 ) == QgsRaster::ContinuousPalette ) else if ( mRasterType == Palette && mDataProvider->colorInterpretation( 1 ) == QgsRaster::ContinuousPalette )
{ {
setDrawingStyle( SingleBandPseudoColor ); setRendererForDrawingStyle( SingleBandPseudoColor );
// Load color table // Load color table
QList<QgsColorRampShader::ColorRampItem> colorTable = mDataProvider->colorTable( 1 ); QList<QgsColorRampShader::ColorRampItem> colorTable = mDataProvider->colorTable( 1 );
QgsSingleBandPseudoColorRenderer* r = dynamic_cast<QgsSingleBandPseudoColorRenderer*>( renderer() ); QgsSingleBandPseudoColorRenderer* r = dynamic_cast<QgsSingleBandPseudoColorRenderer*>( renderer() );
@ -921,11 +921,11 @@ void QgsRasterLayer::setDataProvider( QString const & provider )
} }
else if ( mRasterType == Multiband ) else if ( mRasterType == Multiband )
{ {
setDrawingStyle( MultiBandColor ); //sensible default setRendererForDrawingStyle( MultiBandColor ); //sensible default
} }
else //GrayOrUndefined else //GrayOrUndefined
{ {
setDrawingStyle( SingleBandGray ); //sensible default setRendererForDrawingStyle( SingleBandGray ); //sensible default
} }
// Auto set alpha band // Auto set alpha band
@ -1092,19 +1092,20 @@ void QgsRasterLayer::setContrastEnhancement( QgsContrastEnhancement::ContrastEnh
void QgsRasterLayer::setDefaultContrastEnhancement() void QgsRasterLayer::setDefaultContrastEnhancement()
{ {
QgsDebugMsg( QString( "mDrawingStyle = %1" ).arg( mDrawingStyle ) ); QgsDebugMsg( "Entered" );
QSettings mySettings; QSettings mySettings;
QString myKey; QString myKey;
QString myDefault; QString myDefault;
if ( mDrawingStyle == SingleBandGray || mDrawingStyle == MultiBandSingleBandGray ) // TODO: we should not test renderer class here, move it somehow to renderers
if ( dynamic_cast<QgsSingleBandGrayRenderer*>( renderer() ) )
{ {
myKey = "singleBand"; myKey = "singleBand";
myDefault = "StretchToMinimumMaximum"; myDefault = "StretchToMinimumMaximum";
} }
else if ( mDrawingStyle == MultiBandColor ) else if ( dynamic_cast<QgsMultiBandColorRenderer*>( renderer() ) )
{ {
if ( QgsRasterBlock::typeSize( dataProvider()->srcDataType( 1 ) ) == 1 ) if ( QgsRasterBlock::typeSize( dataProvider()->srcDataType( 1 ) ) == 1 )
{ {
@ -1148,52 +1149,54 @@ void QgsRasterLayer::setDefaultContrastEnhancement()
void QgsRasterLayer::setDrawingStyle( QString const & theDrawingStyleQString ) void QgsRasterLayer::setDrawingStyle( QString const & theDrawingStyleQString )
{ {
QgsDebugMsg( "DrawingStyle = " + theDrawingStyleQString ); QgsDebugMsg( "DrawingStyle = " + theDrawingStyleQString );
DrawingStyle drawingStyle;
if ( theDrawingStyleQString == "SingleBandGray" )//no need to tr() this its not shown in ui if ( theDrawingStyleQString == "SingleBandGray" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = SingleBandGray; drawingStyle = SingleBandGray;
} }
else if ( theDrawingStyleQString == "SingleBandPseudoColor" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "SingleBandPseudoColor" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = SingleBandPseudoColor; drawingStyle = SingleBandPseudoColor;
} }
else if ( theDrawingStyleQString == "PalettedColor" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "PalettedColor" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = PalettedColor; drawingStyle = PalettedColor;
} }
else if ( theDrawingStyleQString == "PalettedSingleBandGray" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "PalettedSingleBandGray" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = PalettedSingleBandGray; drawingStyle = PalettedSingleBandGray;
} }
else if ( theDrawingStyleQString == "PalettedSingleBandPseudoColor" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "PalettedSingleBandPseudoColor" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = PalettedSingleBandPseudoColor; drawingStyle = PalettedSingleBandPseudoColor;
} }
else if ( theDrawingStyleQString == "PalettedMultiBandColor" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "PalettedMultiBandColor" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = PalettedMultiBandColor; drawingStyle = PalettedMultiBandColor;
} }
else if ( theDrawingStyleQString == "MultiBandSingleBandGray" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "MultiBandSingleBandGray" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = MultiBandSingleBandGray; drawingStyle = MultiBandSingleBandGray;
} }
else if ( theDrawingStyleQString == "MultiBandSingleBandPseudoColor" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "MultiBandSingleBandPseudoColor" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = MultiBandSingleBandPseudoColor; drawingStyle = MultiBandSingleBandPseudoColor;
} }
else if ( theDrawingStyleQString == "MultiBandColor" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "MultiBandColor" )//no need to tr() this its not shown in ui
{ {
mDrawingStyle = MultiBandColor; drawingStyle = MultiBandColor;
} }
else if ( theDrawingStyleQString == "SingleBandColorDataStyle" )//no need to tr() this its not shown in ui else if ( theDrawingStyleQString == "SingleBandColorDataStyle" )//no need to tr() this its not shown in ui
{ {
QgsDebugMsg( "Setting mDrawingStyle to SingleBandColorDataStyle " + QString::number( SingleBandColorDataStyle ) ); QgsDebugMsg( "Setting drawingStyle to SingleBandColorDataStyle " + QString::number( SingleBandColorDataStyle ) );
mDrawingStyle = SingleBandColorDataStyle; drawingStyle = SingleBandColorDataStyle;
QgsDebugMsg( "Setted mDrawingStyle to " + QString::number( mDrawingStyle ) ); QgsDebugMsg( "Setted drawingStyle to " + QString::number( drawingStyle ) );
} }
else else
{ {
mDrawingStyle = UndefinedDrawingStyle; drawingStyle = UndefinedDrawingStyle;
} }
setRendererForDrawingStyle( drawingStyle );
} }
void QgsRasterLayer::setLayerOrder( QStringList const & layers ) void QgsRasterLayer::setLayerOrder( QStringList const & layers )
@ -1413,24 +1416,6 @@ bool QgsRasterLayer::readSymbology( const QDomNode& layer_node, QString& errorMe
Raster layer project file XML of form: Raster layer project file XML of form:
\verbatim
<maplayer type="raster" visible="1" showInOverviewFlag="1">
<layername>Wynoochee_dem</layername>
<datasource>/home/mcoletti/mnt/MCOLETTIF8F9/c/Toolkit_Course/Answers/Training_Data/wynoochee_dem.img</datasource>
<zorder>0</zorder>
<transparencyLevelInt>255</transparencyLevelInt>
<rasterproperties>
<mDrawingStyle>SingleBandGray</mDrawingStyle>
<mInvertColor boolean="false"/>
<mStandardDeviations>0</mStandardDeviations>
<mRedBandName>Not Set</mRedBandName>
<mGreenBandName>Not Set</mGreenBandName>
<mBlueBandName>Not Set</mBlueBandName>
<mGrayBandName>Undefined</mGrayBandName>
</rasterproperties>
</maplayer>
\endverbatim
@note Called by QgsMapLayer::readXML(). @note Called by QgsMapLayer::readXML().
*/ */
bool QgsRasterLayer::readXml( const QDomNode& layer_node ) bool QgsRasterLayer::readXml( const QDomNode& layer_node )
@ -1505,11 +1490,9 @@ bool QgsRasterLayer::readXml( const QDomNode& layer_node )
bool res = readSymbology( layer_node, theError ); bool res = readSymbology( layer_node, theError );
// old wms settings we need to correct // old wms settings we need to correct
if ( res && if ( res && mProviderKey == "wms" )
mProviderKey == "wms" &&
mDrawingStyle == MultiBandColor )
{ {
mDrawingStyle = SingleBandColorDataStyle; setRendererForDrawingStyle( SingleBandColorDataStyle );
} }
// Check timestamp // Check timestamp

View File

@ -260,14 +260,14 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer
/** [ data provider interface ] Set the data provider */ /** [ data provider interface ] Set the data provider */
void setDataProvider( const QString & provider ); void setDataProvider( const QString & provider );
/** \brief Accessor for drawing style */
DrawingStyle drawingStyle() { return mDrawingStyle; }
/** \brief Accessor for raster layer type (which is a read only property) */ /** \brief Accessor for raster layer type (which is a read only property) */
LayerType rasterType() { return mRasterType; } LayerType rasterType() { return mRasterType; }
/** \brief Accessor for drawing style */
//DrawingStyle drawingStyle() { return mDrawingStyle; }
/** \brief Mutator for drawing style */ /** \brief Mutator for drawing style */
void setDrawingStyle( const DrawingStyle & theDrawingStyle ) { mDrawingStyle = theDrawingStyle; setRendererForDrawingStyle( theDrawingStyle ); } //void setDrawingStyle( const DrawingStyle & theDrawingStyle ) { mDrawingStyle = theDrawingStyle; setRendererForDrawingStyle( theDrawingStyle ); }
/**Set raster renderer. Takes ownership of the renderer object*/ /**Set raster renderer. Takes ownership of the renderer object*/
void setRenderer( QgsRasterRenderer* theRenderer ); void setRenderer( QgsRasterRenderer* theRenderer );
@ -439,7 +439,7 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer
/** Pointer to data provider */ /** Pointer to data provider */
QgsRasterDataProvider* mDataProvider; QgsRasterDataProvider* mDataProvider;
DrawingStyle mDrawingStyle; //DrawingStyle mDrawingStyle;
/** [ data provider interface ]The error message associated with the last error */ /** [ data provider interface ]The error message associated with the last error */
QString mError; QString mError;

View File

@ -17,6 +17,7 @@
#include "qgsmslayerbuilder.h" #include "qgsmslayerbuilder.h"
#include "qgsrasterlayer.h" #include "qgsrasterlayer.h"
#include "qgsrasterrendererregistry.h"
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>
@ -92,7 +93,8 @@ void QgsMSLayerBuilder::clearRasterSymbology( QgsRasterLayer* rl ) const
{ {
if ( rl->rasterType() == QgsRasterLayer::GrayOrUndefined ) if ( rl->rasterType() == QgsRasterLayer::GrayOrUndefined )
{ {
rl->setDrawingStyle( QgsRasterLayer::SingleBandPseudoColor ); //rl->setDrawingStyle( QgsRasterLayer::SingleBandPseudoColor );
rl->setRenderer( QgsRasterRendererRegistry::instance()->defaultRendererForDrawingStyle( QgsRasterLayer::SingleBandPseudoColor, rl->dataProvider() ) );
} }
} }
} }

View File

@ -31,6 +31,7 @@
#include "qgsmslayercache.h" #include "qgsmslayercache.h"
#include "qgsmsutils.h" #include "qgsmsutils.h"
#include "qgsrasterlayer.h" #include "qgsrasterlayer.h"
#include "qgsrasterrendererregistry.h"
#include "qgscolorrampshader.h" #include "qgscolorrampshader.h"
#include "qgscoordinatereferencesystem.h" #include "qgscoordinatereferencesystem.h"
#include "qgslabelattributes.h" #include "qgslabelattributes.h"
@ -1496,7 +1497,8 @@ void QgsSLDParser::clearRasterSymbology( QgsRasterLayer* rl ) const
{ {
if ( rl->rasterType() == QgsRasterLayer::GrayOrUndefined ) if ( rl->rasterType() == QgsRasterLayer::GrayOrUndefined )
{ {
rl->setDrawingStyle( QgsRasterLayer::SingleBandPseudoColor ); //rl->setDrawingStyle( QgsRasterLayer::SingleBandPseudoColor );
rl->setRenderer( QgsRasterRendererRegistry::instance()->defaultRendererForDrawingStyle( QgsRasterLayer::SingleBandPseudoColor, rl->dataProvider() ) );
} }
} }
} }