vrtdataset.h
00001 /******************************************************************************
00002  * $Id: vrtdataset.h 19819 2010-06-09 16:52:42Z warmerdam $
00003  *
00004  * Project:  Virtual GDAL Datasets
00005  * Purpose:  Declaration of virtual gdal dataset classes.
00006  * Author:   Frank Warmerdam, warmerdam@pobox.com
00007  *
00008  ******************************************************************************
00009  * Copyright (c) 2001, Frank Warmerdam <warmerdam@pobox.com>
00010  *
00011  * Permission is hereby granted, free of charge, to any person obtaining a
00012  * copy of this software and associated documentation files (the "Software"),
00013  * to deal in the Software without restriction, including without limitation
00014  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
00015  * and/or sell copies of the Software, and to permit persons to whom the
00016  * Software is furnished to do so, subject to the following conditions:
00017  *
00018  * The above copyright notice and this permission notice shall be included
00019  * in all copies or substantial portions of the Software.
00020  *
00021  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00022  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00023  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00024  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00025  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00026  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00027  * DEALINGS IN THE SOFTWARE.
00028  ****************************************************************************/
00029 
00030 #ifndef VIRTUALDATASET_H_INCLUDED
00031 #define VIRTUALDATASET_H_INCLUDED
00032 
00033 #include "gdal_priv.h"
00034 #include "gdal_pam.h"
00035 #include "gdal_vrt.h"
00036 #include "cpl_hash_set.h"
00037 
00038 int VRTApplyMetadata( CPLXMLNode *, GDALMajorObject * );
00039 CPLXMLNode *VRTSerializeMetadata( GDALMajorObject * );
00040 
00041 /************************************************************************/
00042 /*                              VRTSource                               */
00043 /************************************************************************/
00044 
00045 class VRTSource 
00046 {
00047 public:
00048     virtual ~VRTSource();
00049 
00050     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize, 
00051                               void *pData, int nBufXSize, int nBufYSize, 
00052                               GDALDataType eBufType, 
00053                               int nPixelSpace, int nLineSpace ) = 0;
00054 
00055     virtual CPLErr  XMLInit( CPLXMLNode *psTree, const char * ) = 0;
00056     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath ) = 0;
00057     
00058     virtual void   GetFileList(char*** ppapszFileList, int *pnSize,
00059                                int *pnMaxSize, CPLHashSet* hSetFiles);
00060 };
00061 
00062 typedef VRTSource *(*VRTSourceParser)(CPLXMLNode *, const char *);
00063 
00064 VRTSource *VRTParseCoreSources( CPLXMLNode *psTree, const char * );
00065 VRTSource *VRTParseFilterSources( CPLXMLNode *psTree, const char * );
00066 
00067 /************************************************************************/
00068 /*                              VRTDataset                              */
00069 /************************************************************************/
00070 
00071 class CPL_DLL VRTDataset : public GDALDataset
00072 {
00073     char           *pszProjection;
00074 
00075     int            bGeoTransformSet;
00076     double         adfGeoTransform[6];
00077 
00078     int           nGCPCount;
00079     GDAL_GCP      *pasGCPList;
00080     char          *pszGCPProjection;
00081 
00082     int            bNeedsFlush;
00083     int            bWritable;
00084     
00085     char          *pszVRTPath;
00086 
00087   public:
00088                  VRTDataset(int nXSize, int nYSize);
00089                 ~VRTDataset();
00090 
00091     void          SetNeedsFlush() { bNeedsFlush = TRUE; }
00092     virtual void  FlushCache();
00093     
00094     void SetWritable(int bWritable) { this->bWritable = bWritable; }
00095 
00096     virtual const char *GetProjectionRef(void);
00097     virtual CPLErr SetProjection( const char * );
00098     virtual CPLErr GetGeoTransform( double * );
00099     virtual CPLErr SetGeoTransform( double * );
00100 
00101     virtual CPLErr SetMetadata( char **papszMD, const char *pszDomain = "" );
00102     virtual CPLErr SetMetadataItem( const char *pszName, const char *pszValue,
00103                                     const char *pszDomain = "" );
00104 
00105     virtual int    GetGCPCount();
00106     virtual const char *GetGCPProjection();
00107     virtual const GDAL_GCP *GetGCPs();
00108     virtual CPLErr SetGCPs( int nGCPCount, const GDAL_GCP *pasGCPList,
00109                             const char *pszGCPProjection );
00110 
00111     virtual CPLErr AddBand( GDALDataType eType, 
00112                             char **papszOptions=NULL );
00113                             
00114     virtual char      **GetFileList();
00115 
00116     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath);
00117     virtual CPLErr      XMLInit( CPLXMLNode *, const char * );
00118  
00119     static int          Identify( GDALOpenInfo * );
00120     static GDALDataset *Open( GDALOpenInfo * );
00121     static GDALDataset *OpenXML( const char *, const char * = NULL, GDALAccess eAccess = GA_ReadOnly );
00122     static GDALDataset *Create( const char * pszName,
00123                                 int nXSize, int nYSize, int nBands,
00124                                 GDALDataType eType, char ** papszOptions );
00125     static CPLErr       Delete( const char * pszFilename );
00126 };
00127 
00128 /************************************************************************/
00129 /*                           VRTWarpedDataset                           */
00130 /************************************************************************/
00131 
00132 class GDALWarpOperation;
00133 class VRTWarpedRasterBand;
00134 
00135 class CPL_DLL VRTWarpedDataset : public VRTDataset
00136 {
00137     int               nBlockXSize;
00138     int               nBlockYSize;
00139     GDALWarpOperation *poWarper;
00140 
00141     friend class VRTWarpedRasterBand;
00142 
00143 public:
00144     int               nOverviewCount;
00145     VRTWarpedDataset  **papoOverviews;
00146 
00147 public:
00148                       VRTWarpedDataset( int nXSize, int nYSize );
00149                      ~VRTWarpedDataset();
00150 
00151     CPLErr            Initialize( /* GDALWarpOptions */ void * );
00152 
00153     virtual CPLErr IBuildOverviews( const char *, int, int *,
00154                                     int, int *, GDALProgressFunc, void * );
00155     
00156     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
00157     virtual CPLErr    XMLInit( CPLXMLNode *, const char * );
00158 
00159     virtual CPLErr AddBand( GDALDataType eType, 
00160                             char **papszOptions=NULL );
00161                             
00162     virtual char      **GetFileList();
00163     
00164     CPLErr            ProcessBlock( int iBlockX, int iBlockY );
00165 
00166     void              GetBlockSize( int *, int * );
00167 };
00168 
00169 /************************************************************************/
00170 /*                            VRTRasterBand                             */
00171 /*                                                                      */
00172 /*      Provides support for all the various kinds of metadata but      */
00173 /*      no raster access.  That is handled by derived classes.          */
00174 /************************************************************************/
00175 
00176 class CPL_DLL VRTRasterBand : public GDALRasterBand
00177 {
00178   protected:
00179     int            bNoDataValueSet;
00180     int            bHideNoDataValue; // If set to true, will not report the existance of nodata
00181     double         dfNoDataValue;
00182 
00183     GDALColorTable *poColorTable;
00184 
00185     GDALColorInterp eColorInterp;
00186 
00187     char           *pszUnitType;
00188     char           **papszCategoryNames;
00189     
00190     double         dfOffset;
00191     double         dfScale;
00192 
00193     CPLXMLNode    *psSavedHistograms;
00194 
00195     void           Initialize( int nXSize, int nYSize );
00196 
00197   public:
00198 
00199                     VRTRasterBand();
00200     virtual        ~VRTRasterBand();
00201 
00202     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
00203     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
00204 
00205     virtual CPLErr SetNoDataValue( double );
00206     virtual double GetNoDataValue( int *pbSuccess = NULL );
00207 
00208     virtual CPLErr SetColorTable( GDALColorTable * ); 
00209     virtual GDALColorTable *GetColorTable();
00210 
00211     virtual CPLErr SetColorInterpretation( GDALColorInterp );
00212     virtual GDALColorInterp GetColorInterpretation();
00213 
00214     virtual const char *GetUnitType();
00215     CPLErr SetUnitType( const char * ); 
00216 
00217     virtual char **GetCategoryNames();
00218     virtual CPLErr SetCategoryNames( char ** );
00219 
00220     virtual CPLErr SetMetadata( char **papszMD, const char *pszDomain = "" );
00221     virtual CPLErr SetMetadataItem( const char *pszName, const char *pszValue,
00222                                     const char *pszDomain = "" );
00223 
00224     virtual double GetOffset( int *pbSuccess = NULL );
00225     CPLErr SetOffset( double );
00226     virtual double GetScale( int *pbSuccess = NULL );
00227     CPLErr SetScale( double );
00228     
00229     virtual CPLErr  GetHistogram( double dfMin, double dfMax,
00230                           int nBuckets, int * panHistogram,
00231                           int bIncludeOutOfRange, int bApproxOK,
00232                           GDALProgressFunc, void *pProgressData );
00233 
00234     virtual CPLErr GetDefaultHistogram( double *pdfMin, double *pdfMax,
00235                                         int *pnBuckets, int ** ppanHistogram,
00236                                         int bForce,
00237                                         GDALProgressFunc, void *pProgressData);
00238 
00239     virtual CPLErr SetDefaultHistogram( double dfMin, double dfMax,
00240                                         int nBuckets, int *panHistogram );
00241 
00242     CPLErr         CopyCommonInfoFrom( GDALRasterBand * );
00243     
00244     virtual void   GetFileList(char*** ppapszFileList, int *pnSize,
00245                                int *pnMaxSize, CPLHashSet* hSetFiles);
00246     
00247     virtual void   SetDescription( const char * );
00248 };
00249 
00250 /************************************************************************/
00251 /*                         VRTSourcedRasterBand                         */
00252 /************************************************************************/
00253 
00254 class CPL_DLL VRTSourcedRasterBand : public VRTRasterBand
00255 {
00256     int            bAlreadyInIRasterIO;
00257     
00258     void           Initialize( int nXSize, int nYSize );
00259 
00260   public:
00261     int            nSources;
00262     VRTSource    **papoSources;
00263     int            bEqualAreas;
00264 
00265                    VRTSourcedRasterBand( GDALDataset *poDS, int nBand );
00266                    VRTSourcedRasterBand( GDALDataType eType, 
00267                                          int nXSize, int nYSize );
00268                    VRTSourcedRasterBand( GDALDataset *poDS, int nBand, 
00269                                          GDALDataType eType, 
00270                                          int nXSize, int nYSize );
00271     virtual        ~VRTSourcedRasterBand();
00272 
00273     virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
00274                               void *, int, int, GDALDataType,
00275                               int, int );
00276 
00277     virtual char      **GetMetadata( const char * pszDomain = "" );
00278     virtual CPLErr      SetMetadata( char ** papszMetadata,
00279                                      const char * pszDomain = "" );
00280     virtual CPLErr      SetMetadataItem( const char * pszName,
00281                                          const char * pszValue,
00282                                          const char * pszDomain = "" );
00283 
00284     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
00285     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
00286 
00287     CPLErr         AddSource( VRTSource * );
00288     CPLErr         AddSimpleSource( GDALRasterBand *poSrcBand, 
00289                                     int nSrcXOff=-1, int nSrcYOff=-1, 
00290                                     int nSrcXSize=-1, int nSrcYSize=-1, 
00291                                     int nDstXOff=-1, int nDstYOff=-1, 
00292                                     int nDstXSize=-1, int nDstYSize=-1,
00293                                     const char *pszResampling = "near",
00294                                     double dfNoDataValue = VRT_NODATA_UNSET);
00295     CPLErr         AddComplexSource( GDALRasterBand *poSrcBand, 
00296                                      int nSrcXOff=-1, int nSrcYOff=-1, 
00297                                      int nSrcXSize=-1, int nSrcYSize=-1, 
00298                                      int nDstXOff=-1, int nDstYOff=-1, 
00299                                      int nDstXSize=-1, int nDstYSize=-1,
00300                                      double dfScaleOff=0.0, 
00301                                      double dfScaleRatio=1.0,
00302                                      double dfNoDataValue = VRT_NODATA_UNSET,
00303                                      int nColorTableComponent = 0);
00304 
00305     CPLErr         AddFuncSource( VRTImageReadFunc pfnReadFunc, void *hCBData,
00306                                   double dfNoDataValue = VRT_NODATA_UNSET );
00307 
00308 
00309     virtual CPLErr IReadBlock( int, int, void * );
00310     
00311     virtual void   GetFileList(char*** ppapszFileList, int *pnSize,
00312                                int *pnMaxSize, CPLHashSet* hSetFiles);
00313 };
00314 
00315 /************************************************************************/
00316 /*                         VRTWarpedRasterBand                          */
00317 /************************************************************************/
00318 
00319 class CPL_DLL VRTWarpedRasterBand : public VRTRasterBand
00320 {
00321   public:
00322                    VRTWarpedRasterBand( GDALDataset *poDS, int nBand,
00323                                      GDALDataType eType = GDT_Unknown );
00324     virtual        ~VRTWarpedRasterBand();
00325 
00326     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
00327     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
00328 
00329     virtual CPLErr IReadBlock( int, int, void * );
00330     virtual CPLErr IWriteBlock( int, int, void * );
00331 
00332     virtual int GetOverviewCount();
00333     virtual GDALRasterBand *GetOverview(int);
00334 };
00335 
00336 /************************************************************************/
00337 /*                         VRTDerivedRasterBand                         */
00338 /************************************************************************/
00339 
00340 class CPL_DLL VRTDerivedRasterBand : public VRTSourcedRasterBand
00341 {
00342 
00343  public:
00344     char *pszFuncName;
00345     GDALDataType eSourceTransferType;
00346 
00347     VRTDerivedRasterBand(GDALDataset *poDS, int nBand);
00348     VRTDerivedRasterBand(GDALDataset *poDS, int nBand, 
00349                          GDALDataType eType, int nXSize, int nYSize);
00350     virtual        ~VRTDerivedRasterBand();
00351 
00352     virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
00353                               void *, int, int, GDALDataType,
00354                               int, int );
00355 
00356     static CPLErr AddPixelFunction
00357         (const char *pszFuncName, GDALDerivedPixelFunc pfnPixelFunc);
00358     static GDALDerivedPixelFunc GetPixelFunction(const char *pszFuncName);
00359 
00360     void SetPixelFunctionName(const char *pszFuncName);
00361     void SetSourceTransferType(GDALDataType eDataType);
00362 
00363     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
00364     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
00365 
00366 };
00367 
00368 /************************************************************************/
00369 /*                           VRTRawRasterBand                           */
00370 /************************************************************************/
00371 
00372 class RawRasterBand;
00373 
00374 class CPL_DLL VRTRawRasterBand : public VRTRasterBand
00375 {
00376     RawRasterBand  *poRawRaster;
00377 
00378     char           *pszSourceFilename;
00379     int            bRelativeToVRT;
00380 
00381   public:
00382                    VRTRawRasterBand( GDALDataset *poDS, int nBand,
00383                                      GDALDataType eType = GDT_Unknown );
00384     virtual        ~VRTRawRasterBand();
00385 
00386     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
00387     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
00388 
00389     virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
00390                               void *, int, int, GDALDataType,
00391                               int, int );
00392 
00393     virtual CPLErr IReadBlock( int, int, void * );
00394     virtual CPLErr IWriteBlock( int, int, void * );
00395 
00396     CPLErr         SetRawLink( const char *pszFilename, 
00397                                const char *pszVRTPath,
00398                                int bRelativeToVRT, 
00399                                vsi_l_offset nImageOffset, 
00400                                int nPixelOffset, int nLineOffset, 
00401                                const char *pszByteOrder );
00402 
00403     void           ClearRawLink();
00404 
00405     virtual void   GetFileList(char*** ppapszFileList, int *pnSize,
00406                                int *pnMaxSize, CPLHashSet* hSetFiles);
00407 };
00408 
00409 /************************************************************************/
00410 /*                              VRTDriver                               */
00411 /************************************************************************/
00412 
00413 class VRTDriver : public GDALDriver
00414 {
00415   public:
00416                  VRTDriver();
00417                  ~VRTDriver();
00418 
00419     char         **papszSourceParsers;
00420 
00421     virtual char      **GetMetadata( const char * pszDomain = "" );
00422     virtual CPLErr      SetMetadata( char ** papszMetadata,
00423                                      const char * pszDomain = "" );
00424 
00425     VRTSource   *ParseSource( CPLXMLNode *psSrc, const char *pszVRTPath );
00426     void         AddSourceParser( const char *pszElementName, 
00427                                   VRTSourceParser pfnParser );
00428 };
00429 
00430 /************************************************************************/
00431 /*                           VRTSimpleSource                            */
00432 /************************************************************************/
00433 
00434 class VRTSimpleSource : public VRTSource
00435 {
00436 protected:
00437     GDALRasterBand      *poRasterBand;
00438 
00439     int                 nSrcXOff;
00440     int                 nSrcYOff;
00441     int                 nSrcXSize;
00442     int                 nSrcYSize;
00443 
00444     int                 nDstXOff;
00445     int                 nDstYOff;
00446     int                 nDstXSize;
00447     int                 nDstYSize;
00448 
00449     int                 bNoDataSet;
00450     double              dfNoDataValue;
00451 
00452 public:
00453             VRTSimpleSource();
00454     virtual ~VRTSimpleSource();
00455 
00456     virtual CPLErr  XMLInit( CPLXMLNode *psTree, const char * );
00457     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
00458 
00459     void           SetSrcBand( GDALRasterBand * );
00460     void           SetSrcWindow( int, int, int, int );
00461     void           SetDstWindow( int, int, int, int );
00462     void           SetNoDataValue( double dfNoDataValue );
00463 
00464     int            GetSrcDstWindow( int, int, int, int, int, int, 
00465                                     int *, int *, int *, int *,
00466                                     int *, int *, int *, int * );
00467 
00468     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize, 
00469                               void *pData, int nBufXSize, int nBufYSize, 
00470                               GDALDataType eBufType, 
00471                               int nPixelSpace, int nLineSpace );
00472 
00473     void            DstToSrc( double dfX, double dfY,
00474                               double &dfXOut, double &dfYOut );
00475     void            SrcToDst( double dfX, double dfY,
00476                               double &dfXOut, double &dfYOut );
00477     
00478     virtual void   GetFileList(char*** ppapszFileList, int *pnSize,
00479                                int *pnMaxSize, CPLHashSet* hSetFiles);
00480 };
00481 
00482 /************************************************************************/
00483 /*                          VRTAveragedSource                           */
00484 /************************************************************************/
00485 
00486 class VRTAveragedSource : public VRTSimpleSource
00487 {
00488 public:
00489                     VRTAveragedSource();
00490     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize, 
00491                               void *pData, int nBufXSize, int nBufYSize, 
00492                               GDALDataType eBufType, 
00493                               int nPixelSpace, int nLineSpace );
00494     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
00495 };
00496 
00497 /************************************************************************/
00498 /*                           VRTComplexSource                           */
00499 /************************************************************************/
00500 
00501 class VRTComplexSource : public VRTSimpleSource
00502 {
00503 public:
00504                    VRTComplexSource();
00505     virtual        ~VRTComplexSource();
00506 
00507     virtual CPLErr RasterIO( int nXOff, int nYOff, int nXSize, int nYSize, 
00508                              void *pData, int nBufXSize, int nBufYSize, 
00509                              GDALDataType eBufType, 
00510                              int nPixelSpace, int nLineSpace );
00511     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
00512     virtual CPLErr XMLInit( CPLXMLNode *, const char * );
00513     double  LookupValue( double dfInput );
00514 
00515     int            bDoScaling;
00516     double         dfScaleOff;
00517     double         dfScaleRatio;
00518     double         *padfLUTInputs;
00519     double         *padfLUTOutputs;
00520     int            nLUTItemCount;
00521     int            nColorTableComponent;
00522 };
00523 
00524 /************************************************************************/
00525 /*                           VRTFilteredSource                          */
00526 /************************************************************************/
00527 
00528 class VRTFilteredSource : public VRTComplexSource
00529 {
00530 private:
00531     int          IsTypeSupported( GDALDataType eType );
00532 
00533 protected:
00534     int          nSupportedTypesCount;
00535     GDALDataType aeSupportedTypes[20];
00536 
00537     int          nExtraEdgePixels;
00538 
00539 public:
00540             VRTFilteredSource();
00541     virtual ~VRTFilteredSource();
00542 
00543     void    SetExtraEdgePixels( int );
00544     void    SetFilteringDataTypesSupported( int, GDALDataType * );
00545 
00546     virtual CPLErr  FilterData( int nXSize, int nYSize, GDALDataType eType, 
00547                                 GByte *pabySrcData, GByte *pabyDstData ) = 0;
00548 
00549     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize, 
00550                               void *pData, int nBufXSize, int nBufYSize, 
00551                               GDALDataType eBufType, 
00552                               int nPixelSpace, int nLineSpace );
00553 };
00554 
00555 /************************************************************************/
00556 /*                       VRTKernelFilteredSource                        */
00557 /************************************************************************/
00558 
00559 class VRTKernelFilteredSource : public VRTFilteredSource
00560 {
00561 protected:
00562     int     nKernelSize;
00563 
00564     double  *padfKernelCoefs;
00565 
00566     int     bNormalized;
00567 
00568 public:
00569             VRTKernelFilteredSource();
00570     virtual ~VRTKernelFilteredSource();
00571 
00572     virtual CPLErr  XMLInit( CPLXMLNode *psTree, const char * );
00573     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
00574 
00575     virtual CPLErr  FilterData( int nXSize, int nYSize, GDALDataType eType, 
00576                                 GByte *pabySrcData, GByte *pabyDstData );
00577 
00578     CPLErr          SetKernel( int nKernelSize, double *padfCoefs );
00579     void            SetNormalized( int );
00580 };
00581 
00582 /************************************************************************/
00583 /*                       VRTAverageFilteredSource                       */
00584 /************************************************************************/
00585 
00586 class VRTAverageFilteredSource : public VRTKernelFilteredSource
00587 {
00588 public:
00589             VRTAverageFilteredSource( int nKernelSize );
00590     virtual ~VRTAverageFilteredSource();
00591 
00592     virtual CPLErr  XMLInit( CPLXMLNode *psTree, const char * );
00593     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
00594 };
00595 
00596 /************************************************************************/
00597 /*                            VRTFuncSource                             */
00598 /************************************************************************/
00599 class VRTFuncSource : public VRTSource
00600 {
00601 public:
00602             VRTFuncSource();
00603     virtual ~VRTFuncSource();
00604 
00605     virtual CPLErr  XMLInit( CPLXMLNode *, const char *) { return CE_Failure; }
00606     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
00607 
00608     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize, 
00609                               void *pData, int nBufXSize, int nBufYSize, 
00610                               GDALDataType eBufType, 
00611                               int nPixelSpace, int nLineSpace );
00612 
00613     VRTImageReadFunc    pfnReadFunc;
00614     void               *pCBData;
00615     GDALDataType        eType;
00616     
00617     float               fNoDataValue;
00618 };
00619 
00620 #endif /* ndef VIRTUALDATASET_H_INCLUDED */
 All Classes Files Functions

Generated for GDAL by doxygen 1.7.4.