GDAL: vrtdataset.h Source File

- Main Page
- Related Pages
- Classes
- Files

- File List
- File Members

# vrtdataset.h

    00001 /******************************************************************************
    00002  * $Id: vrtdataset.h 15021 2008-07-24 18:39:31Z rouault $
    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
    00037 int VRTApplyMetadata( CPLXMLNode *, GDALMajorObject * );
    00038 CPLXMLNode *VRTSerializeMetadata( GDALMajorObject * );
    00039
    00040 /************************************************************************/
    00041 /*                              VRTSource                               */
    00042 /************************************************************************/
    00043
    00044 class VRTSource
    00045 {
    00046 public:
    00047     virtual ~VRTSource();
    00048
    00049     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize,
    00050                               void *pData, int nBufXSize, int nBufYSize,
    00051                               GDALDataType eBufType,
    00052                               int nPixelSpace, int nLineSpace ) = 0;
    00053
    00054     virtual CPLErr  XMLInit( CPLXMLNode *psTree, const char * ) = 0;
    00055     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath ) = 0;
    00056 };
    00057
    00058 typedef VRTSource *(*VRTSourceParser)(CPLXMLNode *, const char *);
    00059
    00060 VRTSource *VRTParseCoreSources( CPLXMLNode *psTree, const char * );
    00061 VRTSource *VRTParseFilterSources( CPLXMLNode *psTree, const char * );
    00062
    00063 /************************************************************************/
    00064 /*                              VRTDataset                              */
    00065 /************************************************************************/
    00066
    00067 class CPL_DLL VRTDataset : public GDALDataset
    00068 {
    00069     char           *pszProjection;
    00070
    00071     int            bGeoTransformSet;
    00072     double         adfGeoTransform[6];
    00073
    00074     int           nGCPCount;
    00075     GDAL_GCP      *pasGCPList;
    00076     char          *pszGCPProjection;
    00077
    00078     int            bNeedsFlush;
    00079     int            bWritable;
    00080
    00081     char          *pszVRTPath;
    00082
    00083   public:
    00084                  VRTDataset(int nXSize, int nYSize);
    00085                 ~VRTDataset();
    00086
    00087     void          SetNeedsFlush() { bNeedsFlush = TRUE; }
    00088     virtual void  FlushCache();
    00089
    00090     void SetWritable(int bWritable) { this->bWritable = bWritable; }
    00091
    00092     virtual const char *GetProjectionRef(void);
    00093     virtual CPLErr SetProjection( const char * );
    00094     virtual CPLErr GetGeoTransform( double * );
    00095     virtual CPLErr SetGeoTransform( double * );
    00096
    00097     virtual CPLErr SetMetadata( char **papszMD, const char *pszDomain = "" );
    00098     virtual CPLErr SetMetadataItem( const char *pszName, const char *pszValue,
    00099                                     const char *pszDomain = "" );
    00100
    00101     virtual int    GetGCPCount();
    00102     virtual const char *GetGCPProjection();
    00103     virtual const GDAL_GCP *GetGCPs();
    00104     virtual CPLErr SetGCPs( int nGCPCount, const GDAL_GCP *pasGCPList,
    00105                             const char *pszGCPProjection );
    00106
    00107     virtual CPLErr AddBand( GDALDataType eType,
    00108                             char **papszOptions=NULL );
    00109
    00110     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath);
    00111     virtual CPLErr      XMLInit( CPLXMLNode *, const char * );
    00112
    00113     static int          Identify( GDALOpenInfo * );
    00114     static GDALDataset *Open( GDALOpenInfo * );
    00115     static GDALDataset *OpenXML( const char *, const char * = NULL );
    00116     static GDALDataset *Create( const char * pszName,
    00117                                 int nXSize, int nYSize, int nBands,
    00118                                 GDALDataType eType, char ** papszOptions );
    00119 };
    00120
    00121 /************************************************************************/
    00122 /*                           VRTWarpedDataset                           */
    00123 /************************************************************************/
    00124
    00125 class GDALWarpOperation;
    00126 class VRTWarpedRasterBand;
    00127
    00128 class CPL_DLL VRTWarpedDataset : public VRTDataset
    00129 {
    00130     int               nBlockXSize;
    00131     int               nBlockYSize;
    00132     GDALWarpOperation *poWarper;
    00133
    00134     friend class VRTWarpedRasterBand;
    00135
    00136 public:
    00137     int               nOverviewCount;
    00138     VRTWarpedDataset  **papoOverviews;
    00139
    00140 public:
    00141                       VRTWarpedDataset( int nXSize, int nYSize );
    00142                      ~VRTWarpedDataset();
    00143
    00144     CPLErr            Initialize( /* GDALWarpOptions */ void * );
    00145
    00146     virtual CPLErr IBuildOverviews( const char *, int, int *,
    00147                                     int, int *, GDALProgressFunc, void * );
    00148
    00149     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
    00150     virtual CPLErr    XMLInit( CPLXMLNode *, const char * );
    00151
    00152     virtual CPLErr AddBand( GDALDataType eType,
    00153                             char **papszOptions=NULL );
    00154
    00155     CPLErr            ProcessBlock( int iBlockX, int iBlockY );
    00156
    00157     void              GetBlockSize( int *, int * );
    00158 };
    00159
    00160 /************************************************************************/
    00161 /*                            VRTRasterBand                             */
    00162 /*                                                                      */
    00163 /*      Provides support for all the various kinds of metadata but      */
    00164 /*      no raster access.  That is handled by derived classes.          */
    00165 /************************************************************************/
    00166
    00167 class CPL_DLL VRTRasterBand : public GDALRasterBand
    00168 {
    00169   protected:
    00170     int            bNoDataValueSet;
    00171     double         dfNoDataValue;
    00172
    00173     GDALColorTable *poColorTable;
    00174
    00175     GDALColorInterp eColorInterp;
    00176
    00177     char           *pszUnitType;
    00178     char           **papszCategoryNames;
    00179
    00180     double         dfOffset;
    00181     double         dfScale;
    00182
    00183     CPLXMLNode    *psSavedHistograms;
    00184
    00185     void           Initialize( int nXSize, int nYSize );
    00186
    00187   public:
    00188
    00189                     VRTRasterBand();
    00190     virtual        ~VRTRasterBand();
    00191
    00192     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
    00193     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
    00194
    00195     virtual CPLErr SetNoDataValue( double );
    00196     virtual double GetNoDataValue( int *pbSuccess = NULL );
    00197
    00198     virtual CPLErr SetColorTable( GDALColorTable * );
    00199     virtual GDALColorTable *GetColorTable();
    00200
    00201     virtual CPLErr SetColorInterpretation( GDALColorInterp );
    00202     virtual GDALColorInterp GetColorInterpretation();
    00203
    00204     virtual const char *GetUnitType();
    00205     CPLErr SetUnitType( const char * );
    00206
    00207     virtual char **GetCategoryNames();
    00208     virtual CPLErr SetCategoryNames( char ** );
    00209
    00210     virtual CPLErr SetMetadata( char **papszMD, const char *pszDomain = "" );
    00211     virtual CPLErr SetMetadataItem( const char *pszName, const char *pszValue,
    00212                                     const char *pszDomain = "" );
    00213
    00214     virtual double GetOffset( int *pbSuccess = NULL );
    00215     CPLErr SetOffset( double );
    00216     virtual double GetScale( int *pbSuccess = NULL );
    00217     CPLErr SetScale( double );
    00218
    00219     virtual CPLErr  GetHistogram( double dfMin, double dfMax,
    00220                           int nBuckets, int * panHistogram,
    00221                           int bIncludeOutOfRange, int bApproxOK,
    00222                           GDALProgressFunc, void *pProgressData );
    00223
    00224     virtual CPLErr GetDefaultHistogram( double *pdfMin, double *pdfMax,
    00225                                         int *pnBuckets, int ** ppanHistogram,
    00226                                         int bForce,
    00227                                         GDALProgressFunc, void *pProgressData);
    00228
    00229     virtual CPLErr SetDefaultHistogram( double dfMin, double dfMax,
    00230                                         int nBuckets, int *panHistogram );
    00231
    00232     CPLErr         CopyCommonInfoFrom( GDALRasterBand * );
    00233 };
    00234
    00235 /************************************************************************/
    00236 /*                         VRTSourcedRasterBand                         */
    00237 /************************************************************************/
    00238
    00239 class CPL_DLL VRTSourcedRasterBand : public VRTRasterBand
    00240 {
    00241
    00242     void           Initialize( int nXSize, int nYSize );
    00243
    00244   public:
    00245     int            nSources;
    00246     VRTSource    **papoSources;
    00247     int            bEqualAreas;
    00248
    00249                    VRTSourcedRasterBand( GDALDataset *poDS, int nBand );
    00250                    VRTSourcedRasterBand( GDALDataType eType,
    00251                                          int nXSize, int nYSize );
    00252                    VRTSourcedRasterBand( GDALDataset *poDS, int nBand,
    00253                                          GDALDataType eType,
    00254                                          int nXSize, int nYSize );
    00255     virtual        ~VRTSourcedRasterBand();
    00256
    00257     virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
    00258                               void *, int, int, GDALDataType,
    00259                               int, int );
    00260
    00261     virtual char      **GetMetadata( const char * pszDomain = "" );
    00262     virtual CPLErr      SetMetadata( char ** papszMetadata,
    00263                                      const char * pszDomain = "" );
    00264     virtual CPLErr      SetMetadataItem( const char * pszName,
    00265                                          const char * pszValue,
    00266                                          const char * pszDomain = "" );
    00267
    00268     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
    00269     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
    00270
    00271     CPLErr         AddSource( VRTSource * );
    00272     CPLErr         AddSimpleSource( GDALRasterBand *poSrcBand,
    00273                                     int nSrcXOff=-1, int nSrcYOff=-1,
    00274                                     int nSrcXSize=-1, int nSrcYSize=-1,
    00275                                     int nDstXOff=-1, int nDstYOff=-1,
    00276                                     int nDstXSize=-1, int nDstYSize=-1,
    00277                                     const char *pszResampling = "near",
    00278                                     double dfNoDataValue = VRT_NODATA_UNSET);
    00279     CPLErr         AddComplexSource( GDALRasterBand *poSrcBand,
    00280                                      int nSrcXOff=-1, int nSrcYOff=-1,
    00281                                      int nSrcXSize=-1, int nSrcYSize=-1,
    00282                                      int nDstXOff=-1, int nDstYOff=-1,
    00283                                      int nDstXSize=-1, int nDstYSize=-1,
    00284                                      double dfScaleOff=0.0,
    00285                                      double dfScaleRatio=1.0,
    00286                                      double dfNoDataValue = VRT_NODATA_UNSET,
    00287                                      int nColorTableComponent = 0);
    00288
    00289     CPLErr         AddFuncSource( VRTImageReadFunc pfnReadFunc, void *hCBData,
    00290                                   double dfNoDataValue = VRT_NODATA_UNSET );
    00291
    00292
    00293     virtual CPLErr IReadBlock( int, int, void * );
    00294 };
    00295
    00296 /************************************************************************/
    00297 /*                         VRTWarpedRasterBand                          */
    00298 /************************************************************************/
    00299
    00300 class CPL_DLL VRTWarpedRasterBand : public VRTRasterBand
    00301 {
    00302   public:
    00303                    VRTWarpedRasterBand( GDALDataset *poDS, int nBand,
    00304                                      GDALDataType eType = GDT_Unknown );
    00305     virtual        ~VRTWarpedRasterBand();
    00306
    00307     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
    00308     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
    00309
    00310     virtual CPLErr IReadBlock( int, int, void * );
    00311     virtual CPLErr IWriteBlock( int, int, void * );
    00312
    00313     virtual int GetOverviewCount();
    00314     virtual GDALRasterBand *GetOverview(int);
    00315 };
    00316
    00317 /************************************************************************/
    00318 /*                         VRTDerivedRasterBand                         */
    00319 /************************************************************************/
    00320
    00321 class CPL_DLL VRTDerivedRasterBand : public VRTSourcedRasterBand
    00322 {
    00323
    00324  public:
    00325     char *pszFuncName;
    00326     GDALDataType eSourceTransferType;
    00327
    00328     VRTDerivedRasterBand(GDALDataset *poDS, int nBand);
    00329     VRTDerivedRasterBand(GDALDataset *poDS, int nBand,
    00330                          GDALDataType eType, int nXSize, int nYSize);
    00331     virtual        ~VRTDerivedRasterBand();
    00332
    00333     virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
    00334                               void *, int, int, GDALDataType,
    00335                               int, int );
    00336
    00337     static CPLErr AddPixelFunction
    00338         (const char *pszFuncName, GDALDerivedPixelFunc pfnPixelFunc);
    00339     static GDALDerivedPixelFunc GetPixelFunction(const char *pszFuncName);
    00340
    00341     void SetPixelFunctionName(const char *pszFuncName);
    00342     void SetSourceTransferType(GDALDataType eDataType);
    00343
    00344     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
    00345     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
    00346
    00347 };
    00348
    00349 /************************************************************************/
    00350 /*                           VRTRawRasterBand                           */
    00351 /************************************************************************/
    00352
    00353 class RawRasterBand;
    00354
    00355 class CPL_DLL VRTRawRasterBand : public VRTRasterBand
    00356 {
    00357     RawRasterBand  *poRawRaster;
    00358
    00359     char           *pszSourceFilename;
    00360     int            bRelativeToVRT;
    00361
    00362   public:
    00363                    VRTRawRasterBand( GDALDataset *poDS, int nBand,
    00364                                      GDALDataType eType = GDT_Unknown );
    00365     virtual        ~VRTRawRasterBand();
    00366
    00367     virtual CPLErr         XMLInit( CPLXMLNode *, const char * );
    00368     virtual CPLXMLNode *   SerializeToXML( const char *pszVRTPath );
    00369
    00370     virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
    00371                               void *, int, int, GDALDataType,
    00372                               int, int );
    00373
    00374     virtual CPLErr IReadBlock( int, int, void * );
    00375     virtual CPLErr IWriteBlock( int, int, void * );
    00376
    00377     CPLErr         SetRawLink( const char *pszFilename,
    00378                                const char *pszVRTPath,
    00379                                int bRelativeToVRT,
    00380                                vsi_l_offset nImageOffset,
    00381                                int nPixelOffset, int nLineOffset,
    00382                                const char *pszByteOrder );
    00383
    00384     void           ClearRawLink();
    00385
    00386 };
    00387
    00388 /************************************************************************/
    00389 /*                              VRTDriver                               */
    00390 /************************************************************************/
    00391
    00392 class VRTDriver : public GDALDriver
    00393 {
    00394   public:
    00395                  VRTDriver();
    00396                  ~VRTDriver();
    00397
    00398     char         **papszSourceParsers;
    00399
    00400     virtual char      **GetMetadata( const char * pszDomain = "" );
    00401     virtual CPLErr      SetMetadata( char ** papszMetadata,
    00402                                      const char * pszDomain = "" );
    00403
    00404     VRTSource   *ParseSource( CPLXMLNode *psSrc, const char *pszVRTPath );
    00405     void         AddSourceParser( const char *pszElementName,
    00406                                   VRTSourceParser pfnParser );
    00407 };
    00408
    00409 /************************************************************************/
    00410 /*                           VRTSimpleSource                            */
    00411 /************************************************************************/
    00412
    00413 class VRTSimpleSource : public VRTSource
    00414 {
    00415 protected:
    00416     GDALRasterBand      *poRasterBand;
    00417
    00418     int                 nSrcXOff;
    00419     int                 nSrcYOff;
    00420     int                 nSrcXSize;
    00421     int                 nSrcYSize;
    00422
    00423     int                 nDstXOff;
    00424     int                 nDstYOff;
    00425     int                 nDstXSize;
    00426     int                 nDstYSize;
    00427
    00428     int                 bNoDataSet;
    00429     double              dfNoDataValue;
    00430
    00431 public:
    00432             VRTSimpleSource();
    00433     virtual ~VRTSimpleSource();
    00434
    00435     virtual CPLErr  XMLInit( CPLXMLNode *psTree, const char * );
    00436     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
    00437
    00438     void           SetSrcBand( GDALRasterBand * );
    00439     void           SetSrcWindow( int, int, int, int );
    00440     void           SetDstWindow( int, int, int, int );
    00441     void           SetNoDataValue( double dfNoDataValue );
    00442
    00443     int            GetSrcDstWindow( int, int, int, int, int, int,
    00444                                     int *, int *, int *, int *,
    00445                                     int *, int *, int *, int * );
    00446
    00447     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize,
    00448                               void *pData, int nBufXSize, int nBufYSize,
    00449                               GDALDataType eBufType,
    00450                               int nPixelSpace, int nLineSpace );
    00451
    00452     void            DstToSrc( double dfX, double dfY,
    00453                               double &dfXOut, double &dfYOut );
    00454     void            SrcToDst( double dfX, double dfY,
    00455                               double &dfXOut, double &dfYOut );
    00456
    00457 };
    00458
    00459 /************************************************************************/
    00460 /*                          VRTAveragedSource                           */
    00461 /************************************************************************/
    00462
    00463 class VRTAveragedSource : public VRTSimpleSource
    00464 {
    00465 public:
    00466                     VRTAveragedSource();
    00467     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize,
    00468                               void *pData, int nBufXSize, int nBufYSize,
    00469                               GDALDataType eBufType,
    00470                               int nPixelSpace, int nLineSpace );
    00471     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
    00472 };
    00473
    00474 /************************************************************************/
    00475 /*                           VRTComplexSource                           */
    00476 /************************************************************************/
    00477
    00478 class VRTComplexSource : public VRTSimpleSource
    00479 {
    00480 public:
    00481                    VRTComplexSource();
    00482     virtual        ~VRTComplexSource();
    00483
    00484     virtual CPLErr RasterIO( int nXOff, int nYOff, int nXSize, int nYSize,
    00485                              void *pData, int nBufXSize, int nBufYSize,
    00486                              GDALDataType eBufType,
    00487                              int nPixelSpace, int nLineSpace );
    00488     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
    00489     virtual CPLErr XMLInit( CPLXMLNode *, const char * );
    00490     double  LookupValue( double dfInput );
    00491
    00492     int            bDoScaling;
    00493     double         dfScaleOff;
    00494     double         dfScaleRatio;
    00495     double         *padfLUTInputs;
    00496     double         *padfLUTOutputs;
    00497     int            nLUTItemCount;
    00498     int            nColorTableComponent;
    00499 };
    00500
    00501 /************************************************************************/
    00502 /*                           VRTFilteredSource                          */
    00503 /************************************************************************/
    00504
    00505 class VRTFilteredSource : public VRTComplexSource
    00506 {
    00507 private:
    00508     int          IsTypeSupported( GDALDataType eType );
    00509
    00510 protected:
    00511     int          nSupportedTypesCount;
    00512     GDALDataType aeSupportedTypes[20];
    00513
    00514     int          nExtraEdgePixels;
    00515
    00516 public:
    00517             VRTFilteredSource();
    00518     virtual ~VRTFilteredSource();
    00519
    00520     void    SetExtraEdgePixels( int );
    00521     void    SetFilteringDataTypesSupported( int, GDALDataType * );
    00522
    00523     virtual CPLErr  FilterData( int nXSize, int nYSize, GDALDataType eType,
    00524                                 GByte *pabySrcData, GByte *pabyDstData ) = 0;
    00525
    00526     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize,
    00527                               void *pData, int nBufXSize, int nBufYSize,
    00528                               GDALDataType eBufType,
    00529                               int nPixelSpace, int nLineSpace );
    00530 };
    00531
    00532 /************************************************************************/
    00533 /*                       VRTKernelFilteredSource                        */
    00534 /************************************************************************/
    00535
    00536 class VRTKernelFilteredSource : public VRTFilteredSource
    00537 {
    00538 protected:
    00539     int     nKernelSize;
    00540
    00541     double  *padfKernelCoefs;
    00542
    00543     int     bNormalized;
    00544
    00545 public:
    00546             VRTKernelFilteredSource();
    00547     virtual ~VRTKernelFilteredSource();
    00548
    00549     virtual CPLErr  XMLInit( CPLXMLNode *psTree, const char * );
    00550     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
    00551
    00552     virtual CPLErr  FilterData( int nXSize, int nYSize, GDALDataType eType,
    00553                                 GByte *pabySrcData, GByte *pabyDstData );
    00554
    00555     CPLErr          SetKernel( int nKernelSize, double *padfCoefs );
    00556     void            SetNormalized( int );
    00557 };
    00558
    00559 /************************************************************************/
    00560 /*                       VRTAverageFilteredSource                       */
    00561 /************************************************************************/
    00562
    00563 class VRTAverageFilteredSource : public VRTKernelFilteredSource
    00564 {
    00565 public:
    00566             VRTAverageFilteredSource( int nKernelSize );
    00567     virtual ~VRTAverageFilteredSource();
    00568
    00569     virtual CPLErr  XMLInit( CPLXMLNode *psTree, const char * );
    00570     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
    00571 };
    00572
    00573 /************************************************************************/
    00574 /*                            VRTFuncSource                             */
    00575 /************************************************************************/
    00576 class VRTFuncSource : public VRTSource
    00577 {
    00578 public:
    00579             VRTFuncSource();
    00580     virtual ~VRTFuncSource();
    00581
    00582     virtual CPLErr  XMLInit( CPLXMLNode *, const char *) { return CE_Failure; }
    00583     virtual CPLXMLNode *SerializeToXML( const char *pszVRTPath );
    00584
    00585     virtual CPLErr  RasterIO( int nXOff, int nYOff, int nXSize, int nYSize,
    00586                               void *pData, int nBufXSize, int nBufYSize,
    00587                               GDALDataType eBufType,
    00588                               int nPixelSpace, int nLineSpace );
    00589
    00590     VRTImageReadFunc    pfnReadFunc;
    00591     void               *pCBData;
    00592     GDALDataType        eType;
    00593
    00594     float               fNoDataValue;
    00595 };
    00596
    00597 #endif /* ndef VIRTUALDATASET_H_INCLUDED */

Generated for GDAL by 1.5.9.