Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

gdal_priv.h

00001 /******************************************************************************
00002  * $Id: gdal_priv.h,v 1.46 2003/07/27 11:01:01 dron Exp $
00003  *
00004  * Name:     gdal_priv.h
00005  * Project:  GDAL Core
00006  * Purpose:  GDAL Core C++/Private declarations. 
00007  * Author:   Frank Warmerdam, warmerdam@pobox.com
00008  *
00009  ******************************************************************************
00010  * Copyright (c) 1998, Frank Warmerdam
00011  *
00012  * Permission is hereby granted, free of charge, to any person obtaining a
00013  * copy of this software and associated documentation files (the "Software"),
00014  * to deal in the Software without restriction, including without limitation
00015  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
00016  * and/or sell copies of the Software, and to permit persons to whom the
00017  * Software is furnished to do so, subject to the following conditions:
00018  *
00019  * The above copyright notice and this permission notice shall be included
00020  * in all copies or substantial portions of the Software.
00021  *
00022  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00023  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00024  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00025  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00026  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00027  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00028  * DEALINGS IN THE SOFTWARE.
00029  ******************************************************************************
00030  *
00031  * $Log: gdal_priv.h,v $
00032  * Revision 1.46  2003/07/27 11:01:01  dron
00033  * GDALRasterBlock::IsCached() method added.
00034  *
00035  * Revision 1.45  2003/05/08 14:38:40  warmerda
00036  * added BlockBasedFlushCache
00037  *
00038  * Revision 1.44  2003/05/06 05:20:38  sperkins
00039  * cleaned up comments
00040  *
00041  * Revision 1.43  2003/05/06 05:13:36  sperkins
00042  * added Fill() and GDALFillRaster()
00043  *
00044  * Revision 1.42  2003/04/25 19:47:57  warmerda
00045  * added RasterIO on GDALDataset, added lock count on blocks
00046  *
00047  * Revision 1.41  2003/03/20 22:10:53  warmerda
00048  * added support for reporting cache thrashing
00049  *
00050  * Revision 1.40  2003/03/18 06:00:57  warmerda
00051  * made GDALRasterBand::FlushCache() virtual
00052  *
00053  * Revision 1.39  2003/01/28 16:07:30  warmerda
00054  * improved documentation
00055  *
00056  * Revision 1.38  2002/10/21 18:05:42  warmerda
00057  * added AutoSkipDrivers() method on driver manager
00058  *
00059  * Revision 1.37  2002/09/11 14:17:52  warmerda
00060  * make SetDescription() and GetDescription() virtual
00061  *
00062  * Revision 1.36  2002/09/04 06:52:05  warmerda
00063  * added unload driver support to GDALDriver
00064  *
00065  * Revision 1.35  2002/07/09 20:33:12  warmerda
00066  * expand tabs
00067  *
00068  * Revision 1.34  2002/06/19 18:19:59  warmerda
00069  * GDALOpenInfo: added bIsDirecory flag, removed VSIStatBuf
00070  *
00071  * Revision 1.33  2002/06/12 21:13:27  warmerda
00072  * use metadata based driver info
00073  *
00074  * Revision 1.32  2002/05/29 15:58:26  warmerda
00075  * removed GetDescription(), added SetColorInterpretation()
00076  *
00077  * Revision 1.31  2002/05/28 18:56:22  warmerda
00078  * added shared dataset concept
00079  *
00080  * Revision 1.30  2002/03/01 14:29:09  warmerda
00081  * added GetBand() method on GDALRasterBand
00082  *
00083  * Revision 1.29  2001/12/15 15:42:27  warmerda
00084  * *** empty log message ***
00085  *
00086  * Revision 1.28  2001/11/18 00:52:15  warmerda
00087  * removed GDALProjDef
00088  *
00089  * Revision 1.27  2001/11/16 21:36:01  warmerda
00090  * added the AddBand() method on GDALDataset
00091  *
00092  * Revision 1.26  2001/10/17 21:47:02  warmerda
00093  * added SetGCPs() on GDALDataset
00094  *
00095  * Revision 1.25  2001/10/02 13:15:16  warmerda
00096  * added CPL_DLL for GDALDefaultOverviews
00097  *
00098  * Revision 1.24  2001/06/20 16:08:54  warmerda
00099  * GDALDefaultOverviews now remembers ovr filename, and allows explicit setting
00100  *
00101  * Revision 1.23  2001/02/06 16:30:21  warmerda
00102  * Added gdal_frmts.h
00103  *
00104  * Revision 1.22  2000/10/06 15:26:08  warmerda
00105  * added SetNoDataValue, SetCategoryNames
00106  *
00107  * Revision 1.21  2000/07/20 13:38:26  warmerda
00108  * make GetGDALDriverManager public with CPL_DLL
00109  *
00110  * Revision 1.20  2000/04/30 23:22:16  warmerda
00111  * added CreateCopy support
00112  *
00113  * Revision 1.19  2000/04/21 21:55:01  warmerda
00114  * majorobject updates, and overview building
00115  *
00116  * Revision 1.18  2000/04/04 23:44:29  warmerda
00117  * added AutoLoadDrivers() to GDALDriverManager
00118  *
00119  * Revision 1.17  2000/03/31 13:41:24  warmerda
00120  * added gcps
00121  *
00122  * Revision 1.16  2000/03/24 00:09:05  warmerda
00123  * rewrote cache management
00124  *
00125  * Revision 1.15  2000/03/09 23:22:03  warmerda
00126  * added GetHistogram
00127  *
00128  * Revision 1.14  2000/03/06 02:20:35  warmerda
00129  * added colortables, overviews, etc
00130  *
00131  * Revision 1.12  2000/01/31 15:00:25  warmerda
00132  * added some documentation
00133  *
00134  * Revision 1.11  2000/01/31 14:24:36  warmerda
00135  * implemented dataset delete
00136  *
00137  * Revision 1.10  1999/11/11 21:59:07  warmerda
00138  * added GetDriver() for datasets
00139  *
00140  * Revision 1.9  1999/10/21 13:23:45  warmerda
00141  * Added a bit of driver related documentation.
00142  *
00143  * Revision 1.8  1999/10/21 12:04:11  warmerda
00144  * Reorganized header.
00145  *
00146  * Revision 1.7  1999/10/01 14:44:02  warmerda
00147  * added documentation
00148  *
00149  * Revision 1.6  1999/04/21 04:16:25  warmerda
00150  * experimental docs
00151  *
00152  * Revision 1.5  1999/01/11 15:36:18  warmerda
00153  * Added projections support, and a few other things.
00154  *
00155  * Revision 1.4  1998/12/31 18:54:25  warmerda
00156  * Implement initial GDALRasterBlock support, and block cache
00157  *
00158  * Revision 1.3  1998/12/06 22:17:09  warmerda
00159  * Fill out rasterio support.
00160  *
00161  * Revision 1.2  1998/12/03 18:34:06  warmerda
00162  * Update to use CPL
00163  *
00164  * Revision 1.1  1998/10/18 06:15:11  warmerda
00165  * Initial implementation.
00166  *
00167  */
00168 
00169 #ifndef GDAL_PRIV_H_INCLUDED
00170 #define GDAL_PRIV_H_INCLUDED
00171 
00172 /* -------------------------------------------------------------------- */
00173 /*      Predeclare various classes before pulling in gdal.h, the        */
00174 /*      public declarations.                                            */
00175 /* -------------------------------------------------------------------- */
00176 class GDALMajorObject;
00177 class GDALDataset;
00178 class GDALRasterBand;
00179 class GDALDriver;
00180 
00181 /* -------------------------------------------------------------------- */
00182 /*      Pull in the public declarations.  This gets the C apis, and     */
00183 /*      also various constants.  However, we will still get to          */
00184 /*      provide the real class definitions for the GDAL classes.        */
00185 /* -------------------------------------------------------------------- */
00186 
00187 #include "gdal.h"
00188 #include "gdal_frmts.h"
00189 #include "cpl_vsi.h"
00190 #include "cpl_conv.h"
00191 
00192 /* ******************************************************************** */
00193 /*                           GDALMajorObject                            */
00194 /*                                                                      */
00195 /*      Base class providing metadata, description and other            */
00196 /*      services shared by major objects.                               */
00197 /* ******************************************************************** */
00198 
00199 class CPL_DLL GDALMajorObject
00200 {
00201   protected:
00202     char             *pszDescription;
00203     char            **papszMetadata;
00204     
00205   public:
00206                         GDALMajorObject();
00207     virtual            ~GDALMajorObject();
00208                         
00209     virtual const char *GetDescription() const;
00210     virtual void        SetDescription( const char * );
00211 
00212     virtual char      **GetMetadata( const char * pszDomain = "" );
00213     virtual CPLErr      SetMetadata( char ** papszMetadata,
00214                                      const char * pszDomain = "" );
00215     virtual const char *GetMetadataItem( const char * pszName,
00216                                          const char * pszDomain = "" );
00217     virtual CPLErr      SetMetadataItem( const char * pszName,
00218                                          const char * pszValue,
00219                                          const char * pszDomain = "" );
00220 };
00221 
00222 /* ******************************************************************** */
00223 /*                         GDALDefaultOverviews                         */
00224 /* ******************************************************************** */
00225 class CPL_DLL GDALDefaultOverviews
00226 {
00227     GDALDataset *poDS;
00228     GDALDataset *poODS;
00229     
00230     char        *pszOvrFilename;
00231     
00232   public:
00233                GDALDefaultOverviews();
00234                ~GDALDefaultOverviews();
00235 
00236     void       Initialize( GDALDataset *poDS, const char *pszName = NULL, 
00237                            int bNameIsOVR = FALSE );
00238     int        IsInitialized() { return poDS != NULL; }
00239 
00240     int        GetOverviewCount(int);
00241     GDALRasterBand *GetOverview(int,int);
00242 
00243     CPLErr     BuildOverviews( const char * pszBasename,
00244                                const char * pszResampling, 
00245                                int nOverviews, int * panOverviewList,
00246                                int nBands, int * panBandList,
00247                                GDALProgressFunc pfnProgress,
00248                                void *pProgressData );
00249 };
00250 
00251 /* ******************************************************************** */
00252 /*                             GDALDataset                              */
00253 /* ******************************************************************** */
00254 
00255 class CPL_DLL GDALDataset : public GDALMajorObject
00256 {
00257     friend GDALDatasetH GDALOpen( const char *, GDALAccess);
00258     friend GDALDatasetH GDALOpenShared( const char *, GDALAccess);
00259     friend class GDALDriver;
00260 
00261   protected:
00262     GDALDriver  *poDriver;
00263     GDALAccess  eAccess;
00264     
00265     // Stored raster information.
00266     int         nRasterXSize;
00267     int         nRasterYSize;
00268     int         nBands;
00269     GDALRasterBand **papoBands;
00270 
00271     int         nRefCount;
00272     int         bShared;
00273 
00274                 GDALDataset(void);
00275     void        RasterInitialize( int, int );
00276     void        SetBand( int, GDALRasterBand * );
00277 
00278     GDALDefaultOverviews oOvManager;
00279     
00280     virtual CPLErr IBuildOverviews( const char *, int, int *,
00281                                     int, int *, GDALProgressFunc, void * );
00282     
00283     virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
00284                               void *, int, int, GDALDataType,
00285                               int, int *, int, int, int );
00286 
00287     CPLErr BlockBasedRasterIO( GDALRWFlag, int, int, int, int,
00288                                void *, int, int, GDALDataType,
00289                                int, int *, int, int, int );
00290     void   BlockBasedFlushCache();
00291 
00292     friend class GDALRasterBand;
00293     
00294   public:
00295     virtual     ~GDALDataset();
00296 
00297     int         GetRasterXSize( void );
00298     int         GetRasterYSize( void );
00299     int         GetRasterCount( void );
00300     GDALRasterBand *GetRasterBand( int );
00301 
00302     virtual void FlushCache(void);
00303 
00304     virtual const char *GetProjectionRef(void);
00305     virtual CPLErr SetProjection( const char * );
00306 
00307     virtual CPLErr GetGeoTransform( double * );
00308     virtual CPLErr SetGeoTransform( double * );
00309 
00310     virtual CPLErr        AddBand( GDALDataType eType, 
00311                                    char **papszOptions=NULL );
00312 
00313     virtual void *GetInternalHandle( const char * );
00314     virtual GDALDriver *GetDriver(void);
00315 
00316     virtual int    GetGCPCount();
00317     virtual const char *GetGCPProjection();
00318     virtual const GDAL_GCP *GetGCPs();
00319     virtual CPLErr SetGCPs( int nGCPCount, const GDAL_GCP *pasGCPList,
00320                             const char *pszGCPProjection );
00321  
00322     CPLErr      RasterIO( GDALRWFlag, int, int, int, int,
00323                           void *, int, int, GDALDataType,
00324                           int, int *, int, int, int );
00325 
00326     int           Reference();
00327     int           Dereference();
00328     GDALAccess    GetAccess() { return eAccess; }
00329 
00330     int           GetShared();
00331     void          MarkAsShared();
00332 
00333     static GDALDataset **GetOpenDatasets( int *pnDatasetCount );
00334 
00335     CPLErr BuildOverviews( const char *, int, int *,
00336                            int, int *, GDALProgressFunc, void * );
00337 };
00338 
00339 /* ******************************************************************** */
00340 /*                           GDALRasterBlock                            */
00341 /* ******************************************************************** */
00342 
00345 class CPL_DLL GDALRasterBlock
00346 {
00347     GDALDataType        eType;
00348     
00349     int                 nAge;
00350     int                 bDirty;
00351     int                 nLockCount;
00352 
00353     int                 nXOff;
00354     int                 nYOff;
00355        
00356     int                 nXSize;
00357     int                 nYSize;
00358     
00359     void                *pData;
00360 
00361     GDALRasterBand      *poBand;
00362     
00363     GDALRasterBlock     *poNext;
00364     GDALRasterBlock     *poPrevious;
00365 
00366   public:
00367                 GDALRasterBlock( GDALRasterBand *, int, int );
00368     virtual     ~GDALRasterBlock();
00369 
00370     CPLErr      Internalize( void );    /* make copy of data */
00371     void        Touch( void );          /* update age */
00372     void        MarkDirty( void );      /* data has been modified since read */
00373     void        MarkClean( void );
00374     void        AddLock( void ) { nLockCount++; }
00375     void        DropLock( void ) { nLockCount--; }
00376 
00377     CPLErr      Write();
00378 
00379     GDALDataType GetDataType() { return eType; }
00380     int         GetXOff() { return nXOff; }
00381     int         GetYOff() { return nYOff; }
00382     int         GetXSize() { return nXSize; }
00383     int         GetYSize() { return nYSize; }
00384     int         GetAge() { return nAge; }
00385     int         GetDirty() { return bDirty; }
00386     int         GetLockCount() { return nLockCount; }
00387 
00388     void        *GetDataRef( void ) { return pData; }
00389 
00390     GDALRasterBand *GetBand() { return poBand; }
00391 
00392     static int  FlushCacheBlock();
00393     static void Verify();
00394     static int  IsCached( int nXOff, int nYOff );
00395 };
00396 
00397 
00398 /* ******************************************************************** */
00399 /*                             GDALColorTable                           */
00400 /* ******************************************************************** */
00401 
00402 class CPL_DLL GDALColorTable
00403 {
00404     GDALPaletteInterp eInterp;
00405 
00406     int         nEntryCount;
00407     GDALColorEntry *paoEntries;
00408 
00409 public:
00410                 GDALColorTable( GDALPaletteInterp = GPI_RGB );
00411                 ~GDALColorTable();
00412 
00413     GDALColorTable *Clone() const;
00414 
00415     GDALPaletteInterp GetPaletteInterpretation() const;
00416 
00417     int           GetColorEntryCount() const;
00418     const GDALColorEntry *GetColorEntry( int ) const;
00419     int           GetColorEntryAsRGB( int, GDALColorEntry * ) const;
00420     void          SetColorEntry( int, const GDALColorEntry * );
00421 };
00422 
00423 /* ******************************************************************** */
00424 /*                            GDALRasterBand                            */
00425 /* ******************************************************************** */
00426 
00428 
00429 class CPL_DLL GDALRasterBand : public GDALMajorObject
00430 {
00431   protected:
00432     GDALDataset *poDS;
00433     int         nBand; /* 1 based */
00434 
00435     int         nRasterXSize;
00436     int         nRasterYSize;
00437     
00438     GDALDataType eDataType;
00439     GDALAccess  eAccess;
00440 
00441     /* stuff related to blocking, and raster cache */
00442     int         nBlockXSize;
00443     int         nBlockYSize;
00444     int         nBlocksPerRow;
00445     int         nBlocksPerColumn;
00446 
00447     GDALRasterBlock **papoBlocks;
00448 
00449     int         nBlockReads;
00450 
00451     friend class GDALDataset;
00452     friend class GDALRasterBlock;
00453 
00454   protected:
00455     virtual CPLErr IReadBlock( int, int, void * ) = 0;
00456     virtual CPLErr IWriteBlock( int, int, void * );
00457     virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
00458                               void *, int, int, GDALDataType,
00459                               int, int );
00460     CPLErr         OverviewRasterIO( GDALRWFlag, int, int, int, int,
00461                                      void *, int, int, GDALDataType,
00462                                      int, int );
00463 
00464     CPLErr         AdoptBlock( int, int, GDALRasterBlock * );
00465     void           InitBlockInfo();
00466 
00467   public:
00468                 GDALRasterBand();
00469                 
00470     virtual     ~GDALRasterBand();
00471 
00472     int         GetXSize();
00473     int         GetYSize();
00474     int         GetBand();
00475     GDALDataset*GetDataset();
00476 
00477     GDALDataType GetRasterDataType( void );
00478     void        GetBlockSize( int *, int * );
00479     GDALAccess  GetAccess();
00480     
00481     CPLErr      RasterIO( GDALRWFlag, int, int, int, int,
00482                           void *, int, int, GDALDataType,
00483                           int, int );
00484     CPLErr      ReadBlock( int, int, void * );
00485 
00486     CPLErr      WriteBlock( int, int, void * );
00487 
00488     GDALRasterBlock *GetBlockRef( int nXBlockOff, int nYBlockOff, 
00489                                   int bJustInitialize = FALSE );
00490     CPLErr      FlushBlock( int = -1, int = -1 );
00491 
00492     // New OpengIS CV_SampleDimension stuff.
00493 
00494     virtual CPLErr FlushCache();
00495     virtual char **GetCategoryNames();
00496     virtual double GetNoDataValue( int *pbSuccess = NULL );
00497     virtual double GetMinimum( int *pbSuccess = NULL );
00498     virtual double GetMaximum(int *pbSuccess = NULL );
00499     virtual double GetOffset( int *pbSuccess = NULL );
00500     virtual double GetScale( int *pbSuccess = NULL );
00501     virtual const char *GetUnitType();
00502     virtual GDALColorInterp GetColorInterpretation();
00503     virtual GDALColorTable *GetColorTable();
00504     virtual CPLErr Fill(double dfRealValue, double dfImaginaryValue = 0);
00505 
00506     virtual CPLErr SetCategoryNames( char ** );
00507     virtual CPLErr SetNoDataValue( double );
00508     virtual CPLErr SetColorTable( GDALColorTable * ); 
00509     virtual CPLErr SetColorInterpretation( GDALColorInterp );
00510 
00511     virtual int HasArbitraryOverviews();
00512     virtual int GetOverviewCount();
00513     virtual GDALRasterBand *GetOverview(int);
00514     virtual CPLErr BuildOverviews( const char *, int, int *,
00515                                    GDALProgressFunc, void * );
00516 
00517     CPLErr  GetHistogram( double dfMin, double dfMax,
00518                           int nBuckets, int * panHistogram,
00519                           int bIncludeOutOfRange, int bApproxOK,
00520                           GDALProgressFunc, void *pProgressData );
00521 };
00522 
00523 /* ******************************************************************** */
00524 /*                             GDALOpenInfo                             */
00525 /*                                                                      */
00526 /*      Structure of data about dataset for open functions.             */
00527 /* ******************************************************************** */
00528 
00529 class CPL_DLL GDALOpenInfo
00530 {
00531   public:
00532 
00533                 GDALOpenInfo( const char * pszFile, GDALAccess eAccessIn );
00534                 ~GDALOpenInfo( void );
00535     
00536     char        *pszFilename;
00537 
00538     GDALAccess  eAccess;
00539 
00540     int         bStatOK;
00541     int         bIsDirectory;
00542 
00543     FILE        *fp;
00544 
00545     int         nHeaderBytes;
00546     GByte       *pabyHeader;
00547 
00548 };
00549 
00550 /* ******************************************************************** */
00551 /*                              GDALDriver                              */
00552 /* ******************************************************************** */
00553 
00563 class CPL_DLL GDALDriver : public GDALMajorObject
00564 {
00565   public:
00566                         GDALDriver();
00567                         ~GDALDriver();
00568 
00569 /* -------------------------------------------------------------------- */
00570 /*      Public C++ methods.                                             */
00571 /* -------------------------------------------------------------------- */
00572     GDALDataset         *Create( const char * pszName,
00573                                  int nXSize, int nYSize, int nBands,
00574                                  GDALDataType eType, char ** papszOptions );
00575 
00576     CPLErr              Delete( const char * pszName );
00577 
00578     GDALDataset         *CreateCopy( const char *, GDALDataset *, 
00579                                      int, char **,
00580                                      GDALProgressFunc pfnProgress, 
00581                                      void * pProgressData );
00582     
00583 /* -------------------------------------------------------------------- */
00584 /*      The following are semiprivate, not intended to be accessed      */
00585 /*      by anyone but the formats instantiating and populating the      */
00586 /*      drivers.                                                        */
00587 /* -------------------------------------------------------------------- */
00588     GDALDataset         *(*pfnOpen)( GDALOpenInfo * );
00589 
00590     GDALDataset         *(*pfnCreate)( const char * pszName,
00591                                        int nXSize, int nYSize, int nBands,
00592                                        GDALDataType eType,
00593                                        char ** papszOptions );
00594 
00595     CPLErr              (*pfnDelete)( const char * pszName );
00596 
00597     GDALDataset         *(*pfnCreateCopy)( const char *, GDALDataset *, 
00598                                            int, char **,
00599                                            GDALProgressFunc pfnProgress, 
00600                                            void * pProgressData );
00601 
00602     void                *pDriverData;
00603 
00604     void                (*pfnUnloadDriver)(GDALDriver *);
00605 };
00606 
00607 /* ******************************************************************** */
00608 /*                          GDALDriverManager                           */
00609 /* ******************************************************************** */
00610 
00618 class CPL_DLL GDALDriverManager : public GDALMajorObject
00619 {
00620     int         nDrivers;
00621     GDALDriver  **papoDrivers;
00622 
00623     char        *pszHome;
00624     
00625  public:
00626                 GDALDriverManager();
00627                 ~GDALDriverManager();
00628                 
00629     int         GetDriverCount( void );
00630     GDALDriver  *GetDriver( int );
00631     GDALDriver  *GetDriverByName( const char * );
00632 
00633     int         RegisterDriver( GDALDriver * );
00634     void        MoveDriver( GDALDriver *, int );
00635     void        DeregisterDriver( GDALDriver * );
00636 
00637     void        AutoLoadDrivers();
00638     void        AutoSkipDrivers();
00639 
00640     const char *GetHome();
00641     void        SetHome( const char * );
00642 };
00643 
00644 CPL_C_START
00645 GDALDriverManager CPL_DLL * GetGDALDriverManager( void );
00646 CPL_C_END
00647 
00648 /* ==================================================================== */
00649 /*      An assortment of overview related stuff.                        */
00650 /* ==================================================================== */
00651 
00652 CPL_C_START
00653 
00654 CPLErr 
00655 GTIFFBuildOverviews( const char * pszFilename,
00656                      int nBands, GDALRasterBand **papoBandList, 
00657                      int nOverviews, int * panOverviewList,
00658                      const char * pszResampling, 
00659                      GDALProgressFunc pfnProgress, void * pProgressData );
00660 
00661 CPLErr
00662 GDALDefaultBuildOverviews( GDALDataset *hSrcDS, const char * pszBasename,
00663                            const char * pszResampling, 
00664                            int nOverviews, int * panOverviewList,
00665                            int nBands, int * panBandList,
00666                            GDALProgressFunc pfnProgress, void * pProgressData);
00667                            
00668 
00669 CPLErr
00670 GDALRegenerateOverviews( GDALRasterBand *, int, GDALRasterBand **,
00671                          const char *, GDALProgressFunc, void * );
00672 
00673 CPL_C_END
00674 
00675 #endif /* ndef GDAL_PRIV_H_INCLUDED */

Generated on Thu Nov 13 00:08:23 2003 for GDAL by doxygen 1.3.4