raster sip fixes

This commit is contained in:
Radim Blazek 2012-09-13 13:38:39 +02:00
parent 94c2e1cbb0
commit c6a29fa8a0
7 changed files with 43 additions and 10 deletions

View File

@ -6,7 +6,7 @@
* sense for Raster layers.
*/
class QgsRasterDataProvider : QgsDataProvider
class QgsRasterDataProvider : QgsDataProvider, QgsRasterInterface
{
%TypeHeaderCode
#include <qgsrasterdataprovider.h>

View File

@ -7,7 +7,39 @@ class QgsRasterInterface
{
%TypeHeaderCode
#include <qgsrasterinterface.h>
#include <qgsrasterresamplefilter.h>
//#include <qgsrasternuller.h>
#include <qgsrasterrenderer.h>
#include <qgsrasterprojector.h>
#include <qgsrasterdataprovider.h>
// QgsRasterRenderer subclass headers must be here because ConvertToSubClassCode
// from QgsRasterRenderer is probably included
#include <qgspalettedrasterrenderer.h>
#include <qgsmultibandcolorrenderer.h>
#include <qgssinglebandpseudocolorrenderer.h>
#include <qgssinglebandgrayrenderer.h>
#include <qgssinglebandcolordatarenderer.h>
%End
%ConvertToSubClassCode
if (dynamic_cast<QgsRasterResampleFilter*>(sipCpp) != NULL)
sipClass = sipClass_QgsRasterResampleFilter;
// if (dynamic_cast<QgsRasterNuller*>(sipCpp) != NULL)
// sipClass = sipClass_QgsRasterNuller;
if (dynamic_cast<QgsRasterRenderer*>(sipCpp) != NULL)
sipClass = sipClass_QgsRasterRenderer;
if (dynamic_cast<QgsRasterProjector*>(sipCpp) != NULL)
sipClass = sipClass_QgsRasterProjector;
if (dynamic_cast<QgsRasterDataProvider*>(sipCpp) != NULL)
{
sipClass = sipClass_QgsRasterDataProvider;
*sipCppRet = static_cast<QgsRasterDataProvider*>(sipCpp);
}
else
sipClass = 0;
%End
public:
enum DataType

View File

@ -23,11 +23,11 @@ class QgsRasterPipe
~QgsRasterPipe();
bool insert( int idx, QgsRasterInterface* theInterface );
bool insert( int idx, QgsRasterInterface* theInterface /Transfer/ );
bool replace( int idx, QgsRasterInterface* theInterface );
bool replace( int idx, QgsRasterInterface* theInterface /Transfer/ );
bool set( QgsRasterInterface * theInterface );
bool set( QgsRasterInterface * theInterface /Transfer/ );
bool remove( int idx );

View File

@ -1,7 +1,7 @@
/** Raster projector */
class QgsRasterProjector
class QgsRasterProjector : QgsRasterInterface
{
%TypeHeaderCode
#include <qgsrasterprojector.h>

View File

@ -1,4 +1,4 @@
class QgsRasterRenderer
class QgsRasterRenderer : QgsRasterInterface
{
%TypeHeaderCode
#include "qgsrasterrenderer.h"
@ -7,6 +7,7 @@ class QgsRasterRenderer
#include "qgssinglebandpseudocolorrenderer.h"
#include "qgssinglebandgrayrenderer.h"
#include "qgssinglebandcolordatarenderer.h"
#include "qgsrasterinterface.h"
%End
%ConvertToSubClassCode
@ -18,8 +19,8 @@ class QgsRasterRenderer
sipClass = sipClass_QgsSingleBandPseudoColorRenderer;
else if (dynamic_cast<QgsSingleBandGrayRenderer*>(sipCpp) != NULL)
sipClass = sipClass_QgsSingleBandGrayRenderer;
else if (dynamic_cast<QgsSingleBandGrayRenderer*>(sipCpp) != NULL)
sipClass = sipClass_QgsSingleBandGrayRenderer;
else if (dynamic_cast<QgsSingleBandGrayRenderer*>(sipCpp) != NULL)
sipClass = sipClass_QgsSingleBandGrayRenderer;
else
sipClass = 0;
%End

View File

@ -1,7 +1,7 @@
/** Raster resample filter */
class QgsRasterResampleFilter
class QgsRasterResampleFilter : QgsRasterInterface
{
%TypeHeaderCode
#include <qgsrasterresamplefilter.h>

View File

@ -46,7 +46,7 @@ class TestQgsRasterFileWriter(unittest.TestCase):
projector = QgsRasterProjector()
projector.setCRS( provider.crs(), provider.crs() )
if not pipe.insert( 2, projector.clone() ):
if not pipe.insert( 2, projector ):
print "Cannot set pipe projector"
return False