00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef GDAL_PRIV_H_INCLUDED
00032 #define GDAL_PRIV_H_INCLUDED
00033
00034
00035
00036
00037
00038 class GDALMajorObject;
00039 class GDALDataset;
00040 class GDALRasterBand;
00041 class GDALDriver;
00042 class GDALRasterAttributeTable;
00043 class GDALProxyDataset;
00044 class GDALProxyRasterBand;
00045 class GDALAsyncReader;
00046
00047
00048
00049
00050
00051
00052
00053 #include "gdal.h"
00054 #include "gdal_frmts.h"
00055 #include "cpl_vsi.h"
00056 #include "cpl_conv.h"
00057 #include "cpl_string.h"
00058 #include "cpl_minixml.h"
00059 #include <vector>
00060
00061 #define GMO_VALID 0x0001
00062 #define GMO_IGNORE_UNIMPLEMENTED 0x0002
00063 #define GMO_SUPPORT_MD 0x0004
00064 #define GMO_SUPPORT_MDMD 0x0008
00065 #define GMO_MD_DIRTY 0x0010
00066 #define GMO_PAM_CLASS 0x0020
00067
00068
00069
00070
00071
00072 class CPL_DLL GDALMultiDomainMetadata
00073 {
00074 private:
00075 char **papszDomainList;
00076 CPLStringList **papoMetadataLists;
00077
00078 public:
00079 GDALMultiDomainMetadata();
00080 ~GDALMultiDomainMetadata();
00081
00082 int XMLInit( CPLXMLNode *psMetadata, int bMerge );
00083 CPLXMLNode *Serialize();
00084
00085 char **GetDomainList() { return papszDomainList; }
00086
00087 char **GetMetadata( const char * pszDomain = "" );
00088 CPLErr SetMetadata( char ** papszMetadata,
00089 const char * pszDomain = "" );
00090 const char *GetMetadataItem( const char * pszName,
00091 const char * pszDomain = "" );
00092 CPLErr SetMetadataItem( const char * pszName,
00093 const char * pszValue,
00094 const char * pszDomain = "" );
00095
00096 void Clear();
00097 };
00098
00099
00100
00101
00102
00103
00104
00105
00107
00108 class CPL_DLL GDALMajorObject
00109 {
00110 protected:
00111 int nFlags;
00112 CPLString sDescription;
00113 GDALMultiDomainMetadata oMDMD;
00114
00115 public:
00116 GDALMajorObject();
00117 virtual ~GDALMajorObject();
00118
00119 int GetMOFlags();
00120 void SetMOFlags(int nFlags);
00121
00122 virtual const char *GetDescription() const;
00123 virtual void SetDescription( const char * );
00124
00125 virtual char **GetMetadata( const char * pszDomain = "" );
00126 virtual CPLErr SetMetadata( char ** papszMetadata,
00127 const char * pszDomain = "" );
00128 virtual const char *GetMetadataItem( const char * pszName,
00129 const char * pszDomain = "" );
00130 virtual CPLErr SetMetadataItem( const char * pszName,
00131 const char * pszValue,
00132 const char * pszDomain = "" );
00133 };
00134
00135
00136
00137
00138 class CPL_DLL GDALDefaultOverviews
00139 {
00140 friend class GDALDataset;
00141
00142 GDALDataset *poDS;
00143 GDALDataset *poODS;
00144
00145 CPLString osOvrFilename;
00146
00147 int bOvrIsAux;
00148
00149 int bCheckedForMask;
00150 int bOwnMaskDS;
00151 GDALDataset *poMaskDS;
00152
00153
00154
00155 GDALDataset *poBaseDS;
00156
00157
00158 bool bCheckedForOverviews;
00159 void OverviewScan();
00160 char *pszInitName;
00161 int bInitNameIsOVR;
00162 char **papszInitSiblingFiles;
00163
00164 public:
00165 GDALDefaultOverviews();
00166 ~GDALDefaultOverviews();
00167
00168 void Initialize( GDALDataset *poDS, const char *pszName = NULL,
00169 char **papszSiblingFiles = NULL,
00170 int bNameIsOVR = FALSE );
00171
00172 int IsInitialized();
00173
00174 int CloseDependentDatasets();
00175
00176
00177
00178 int GetOverviewCount(int);
00179 GDALRasterBand *GetOverview(int,int);
00180
00181 CPLErr BuildOverviews( const char * pszBasename,
00182 const char * pszResampling,
00183 int nOverviews, int * panOverviewList,
00184 int nBands, int * panBandList,
00185 GDALProgressFunc pfnProgress,
00186 void *pProgressData );
00187
00188 CPLErr BuildOverviewsSubDataset( const char * pszPhysicalFile,
00189 const char * pszResampling,
00190 int nOverviews, int * panOverviewList,
00191 int nBands, int * panBandList,
00192 GDALProgressFunc pfnProgress,
00193 void *pProgressData );
00194
00195 CPLErr CleanOverviews();
00196
00197
00198
00199 CPLErr CreateMaskBand( int nFlags, int nBand = -1 );
00200 GDALRasterBand *GetMaskBand( int nBand );
00201 int GetMaskFlags( int nBand );
00202
00203 int HaveMaskFile( char **papszSiblings = NULL,
00204 const char *pszBasename = NULL );
00205
00206 char** GetSiblingFiles() { return papszInitSiblingFiles; }
00207 };
00208
00209
00210
00211
00212
00213
00214
00215 class CPL_DLL GDALOpenInfo
00216 {
00217 public:
00218 GDALOpenInfo( const char * pszFile, GDALAccess eAccessIn,
00219 char **papszSiblingFiles = NULL );
00220 ~GDALOpenInfo( void );
00221
00222 char *pszFilename;
00223 char **papszSiblingFiles;
00224
00225 GDALAccess eAccess;
00226
00227 int bStatOK;
00228 int bIsDirectory;
00229
00230 FILE *fp;
00231
00232 int nHeaderBytes;
00233 GByte *pabyHeader;
00234
00235 };
00236
00237
00238
00239
00240
00241
00242 GDALDatasetH GDALOpenInternal( const char * pszFilename, GDALAccess eAccess,
00243 const char* const * papszAllowedDrivers);
00244 GDALDatasetH GDALOpenInternal( GDALOpenInfo& oOpenInfo,
00245 const char* const * papszAllowedDrivers);
00246
00248
00249 class CPL_DLL GDALDataset : public GDALMajorObject
00250 {
00251 friend GDALDatasetH CPL_STDCALL GDALOpen( const char *, GDALAccess);
00252 friend GDALDatasetH CPL_STDCALL GDALOpenShared( const char *, GDALAccess);
00253
00254
00255 friend GDALDatasetH GDALOpenInternal( const char *, GDALAccess, const char* const * papszAllowedDrivers);
00256 friend GDALDatasetH GDALOpenInternal( GDALOpenInfo& oOpenInfo,
00257 const char* const * papszAllowedDrivers);
00258
00259 friend class GDALDriver;
00260 friend class GDALDefaultOverviews;
00261 friend class GDALProxyDataset;
00262 friend class GDALDriverManager;
00263
00264 protected:
00265 GDALDriver *poDriver;
00266 GDALAccess eAccess;
00267
00268
00269 int nRasterXSize;
00270 int nRasterYSize;
00271 int nBands;
00272 GDALRasterBand **papoBands;
00273
00274 int bForceCachedIO;
00275
00276 int nRefCount;
00277 int bShared;
00278
00279 GDALDataset(void);
00280 void RasterInitialize( int, int );
00281 void SetBand( int, GDALRasterBand * );
00282
00283 GDALDefaultOverviews oOvManager;
00284
00285 virtual CPLErr IBuildOverviews( const char *, int, int *,
00286 int, int *, GDALProgressFunc, void * );
00287
00288 virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
00289 void *, int, int, GDALDataType,
00290 int, int *, int, int, int );
00291
00292 CPLErr BlockBasedRasterIO( GDALRWFlag, int, int, int, int,
00293 void *, int, int, GDALDataType,
00294 int, int *, int, int, int );
00295 void BlockBasedFlushCache();
00296
00297 virtual int CloseDependentDatasets();
00298
00299 friend class GDALRasterBand;
00300
00301 public:
00302 virtual ~GDALDataset();
00303
00304 int GetRasterXSize( void );
00305 int GetRasterYSize( void );
00306 int GetRasterCount( void );
00307 GDALRasterBand *GetRasterBand( int );
00308
00309 virtual void FlushCache(void);
00310
00311 virtual const char *GetProjectionRef(void);
00312 virtual CPLErr SetProjection( const char * );
00313
00314 virtual CPLErr GetGeoTransform( double * );
00315 virtual CPLErr SetGeoTransform( double * );
00316
00317 virtual CPLErr AddBand( GDALDataType eType,
00318 char **papszOptions=NULL );
00319
00320 virtual void *GetInternalHandle( const char * );
00321 virtual GDALDriver *GetDriver(void);
00322 virtual char **GetFileList(void);
00323
00324 virtual int GetGCPCount();
00325 virtual const char *GetGCPProjection();
00326 virtual const GDAL_GCP *GetGCPs();
00327 virtual CPLErr SetGCPs( int nGCPCount, const GDAL_GCP *pasGCPList,
00328 const char *pszGCPProjection );
00329
00330 virtual CPLErr AdviseRead( int nXOff, int nYOff, int nXSize, int nYSize,
00331 int nBufXSize, int nBufYSize,
00332 GDALDataType eDT,
00333 int nBandCount, int *panBandList,
00334 char **papszOptions );
00335
00336 virtual CPLErr CreateMaskBand( int nFlags );
00337
00338 virtual GDALAsyncReader*
00339 BeginAsyncReader(int nXOff, int nYOff, int nXSize, int nYSize,
00340 void *pBuf, int nBufXSize, int nBufYSize,
00341 GDALDataType eBufType,
00342 int nBandCount, int* panBandMap,
00343 int nPixelSpace, int nLineSpace, int nBandSpace,
00344 char **papszOptions);
00345 virtual void EndAsyncReader(GDALAsyncReader *);
00346
00347 CPLErr RasterIO( GDALRWFlag, int, int, int, int,
00348 void *, int, int, GDALDataType,
00349 int, int *, int, int, int );
00350
00351 int Reference();
00352 int Dereference();
00353 GDALAccess GetAccess() { return eAccess; }
00354
00355 int GetShared();
00356 void MarkAsShared();
00357
00358 static GDALDataset **GetOpenDatasets( int *pnDatasetCount );
00359
00360 CPLErr BuildOverviews( const char *, int, int *,
00361 int, int *, GDALProgressFunc, void * );
00362
00363 void ReportError(CPLErr eErrClass, int err_no, const char *fmt, ...) CPL_PRINT_FUNC_FORMAT (4, 5);
00364 };
00365
00366
00367
00368
00369
00371
00372 class CPL_DLL GDALRasterBlock
00373 {
00374 GDALDataType eType;
00375
00376 int bDirty;
00377 int nLockCount;
00378
00379 int nXOff;
00380 int nYOff;
00381
00382 int nXSize;
00383 int nYSize;
00384
00385 void *pData;
00386
00387 GDALRasterBand *poBand;
00388
00389 GDALRasterBlock *poNext;
00390 GDALRasterBlock *poPrevious;
00391
00392 public:
00393 GDALRasterBlock( GDALRasterBand *, int, int );
00394 virtual ~GDALRasterBlock();
00395
00396 CPLErr Internalize( void );
00397 void Touch( void );
00398 void MarkDirty( void );
00399 void MarkClean( void );
00400 void AddLock( void ) { nLockCount++; }
00401 void DropLock( void ) { nLockCount--; }
00402 void Detach();
00403
00404 CPLErr Write();
00405
00406 GDALDataType GetDataType() { return eType; }
00407 int GetXOff() { return nXOff; }
00408 int GetYOff() { return nYOff; }
00409 int GetXSize() { return nXSize; }
00410 int GetYSize() { return nYSize; }
00411 int GetDirty() { return bDirty; }
00412 int GetLockCount() { return nLockCount; }
00413
00414 void *GetDataRef( void ) { return pData; }
00415
00418 GDALRasterBand *GetBand() { return poBand; }
00419
00420 static int FlushCacheBlock();
00421 static void Verify();
00422
00423 static int SafeLockBlock( GDALRasterBlock ** );
00424 };
00425
00426
00427
00428
00429
00432 class CPL_DLL GDALColorTable
00433 {
00434 GDALPaletteInterp eInterp;
00435
00436 std::vector<GDALColorEntry> aoEntries;
00437
00438 public:
00439 GDALColorTable( GDALPaletteInterp = GPI_RGB );
00440 ~GDALColorTable();
00441
00442 GDALColorTable *Clone() const;
00443
00444 GDALPaletteInterp GetPaletteInterpretation() const;
00445
00446 int GetColorEntryCount() const;
00447 const GDALColorEntry *GetColorEntry( int ) const;
00448 int GetColorEntryAsRGB( int, GDALColorEntry * ) const;
00449 void SetColorEntry( int, const GDALColorEntry * );
00450 int CreateColorRamp( int, const GDALColorEntry * ,
00451 int, const GDALColorEntry * );
00452 };
00453
00454
00455
00456
00457
00459
00460 class CPL_DLL GDALRasterBand : public GDALMajorObject
00461 {
00462 private:
00463 CPLErr eFlushBlockErr;
00464
00465 void SetFlushBlockErr( CPLErr eErr );
00466
00467 friend class GDALRasterBlock;
00468
00469 protected:
00470 GDALDataset *poDS;
00471 int nBand;
00472
00473 int nRasterXSize;
00474 int nRasterYSize;
00475
00476 GDALDataType eDataType;
00477 GDALAccess eAccess;
00478
00479
00480 int nBlockXSize;
00481 int nBlockYSize;
00482 int nBlocksPerRow;
00483 int nBlocksPerColumn;
00484
00485 int bSubBlockingActive;
00486 int nSubBlocksPerRow;
00487 int nSubBlocksPerColumn;
00488 GDALRasterBlock **papoBlocks;
00489
00490 int nBlockReads;
00491 int bForceCachedIO;
00492
00493 GDALRasterBand *poMask;
00494 bool bOwnMask;
00495 int nMaskFlags;
00496
00497 friend class GDALDataset;
00498 friend class GDALProxyRasterBand;
00499
00500 protected:
00501 virtual CPLErr IReadBlock( int, int, void * ) = 0;
00502 virtual CPLErr IWriteBlock( int, int, void * );
00503 virtual CPLErr IRasterIO( GDALRWFlag, int, int, int, int,
00504 void *, int, int, GDALDataType,
00505 int, int );
00506 CPLErr OverviewRasterIO( GDALRWFlag, int, int, int, int,
00507 void *, int, int, GDALDataType,
00508 int, int );
00509
00510 int InitBlockInfo();
00511
00512 CPLErr AdoptBlock( int, int, GDALRasterBlock * );
00513 GDALRasterBlock *TryGetLockedBlockRef( int nXBlockOff, int nYBlockYOff );
00514
00515 public:
00516 GDALRasterBand();
00517
00518 virtual ~GDALRasterBand();
00519
00520 int GetXSize();
00521 int GetYSize();
00522 int GetBand();
00523 GDALDataset*GetDataset();
00524
00525 GDALDataType GetRasterDataType( void );
00526 void GetBlockSize( int *, int * );
00527 GDALAccess GetAccess();
00528
00529 CPLErr RasterIO( GDALRWFlag, int, int, int, int,
00530 void *, int, int, GDALDataType,
00531 int, int );
00532 CPLErr ReadBlock( int, int, void * );
00533
00534 CPLErr WriteBlock( int, int, void * );
00535
00536 GDALRasterBlock *GetLockedBlockRef( int nXBlockOff, int nYBlockOff,
00537 int bJustInitialize = FALSE );
00538 CPLErr FlushBlock( int = -1, int = -1, int bWriteDirtyBlock = TRUE );
00539
00540 unsigned char* GetIndexColorTranslationTo( GDALRasterBand* poReferenceBand,
00541 unsigned char* pTranslationTable = NULL,
00542 int* pApproximateMatching = NULL);
00543
00544
00545
00546 virtual CPLErr FlushCache();
00547 virtual char **GetCategoryNames();
00548 virtual double GetNoDataValue( int *pbSuccess = NULL );
00549 virtual double GetMinimum( int *pbSuccess = NULL );
00550 virtual double GetMaximum(int *pbSuccess = NULL );
00551 virtual double GetOffset( int *pbSuccess = NULL );
00552 virtual double GetScale( int *pbSuccess = NULL );
00553 virtual const char *GetUnitType();
00554 virtual GDALColorInterp GetColorInterpretation();
00555 virtual GDALColorTable *GetColorTable();
00556 virtual CPLErr Fill(double dfRealValue, double dfImaginaryValue = 0);
00557
00558 virtual CPLErr SetCategoryNames( char ** );
00559 virtual CPLErr SetNoDataValue( double );
00560 virtual CPLErr SetColorTable( GDALColorTable * );
00561 virtual CPLErr SetColorInterpretation( GDALColorInterp );
00562 virtual CPLErr SetOffset( double );
00563 virtual CPLErr SetScale( double );
00564 virtual CPLErr SetUnitType( const char * );
00565
00566 virtual CPLErr GetStatistics( int bApproxOK, int bForce,
00567 double *pdfMin, double *pdfMax,
00568 double *pdfMean, double *padfStdDev );
00569 virtual CPLErr ComputeStatistics( int bApproxOK,
00570 double *pdfMin, double *pdfMax,
00571 double *pdfMean, double *pdfStdDev,
00572 GDALProgressFunc, void *pProgressData );
00573 virtual CPLErr SetStatistics( double dfMin, double dfMax,
00574 double dfMean, double dfStdDev );
00575 virtual CPLErr ComputeRasterMinMax( int, double* );
00576
00577 virtual int HasArbitraryOverviews();
00578 virtual int GetOverviewCount();
00579 virtual GDALRasterBand *GetOverview(int);
00580 virtual GDALRasterBand *GetRasterSampleOverview( int );
00581 virtual CPLErr BuildOverviews( const char *, int, int *,
00582 GDALProgressFunc, void * );
00583
00584 virtual CPLErr AdviseRead( int nXOff, int nYOff, int nXSize, int nYSize,
00585 int nBufXSize, int nBufYSize,
00586 GDALDataType eDT, char **papszOptions );
00587
00588 virtual CPLErr GetHistogram( double dfMin, double dfMax,
00589 int nBuckets, int * panHistogram,
00590 int bIncludeOutOfRange, int bApproxOK,
00591 GDALProgressFunc, void *pProgressData );
00592
00593 virtual CPLErr GetDefaultHistogram( double *pdfMin, double *pdfMax,
00594 int *pnBuckets, int ** ppanHistogram,
00595 int bForce,
00596 GDALProgressFunc, void *pProgressData);
00597 virtual CPLErr SetDefaultHistogram( double dfMin, double dfMax,
00598 int nBuckets, int *panHistogram );
00599
00600 virtual const GDALRasterAttributeTable *GetDefaultRAT();
00601 virtual CPLErr SetDefaultRAT( const GDALRasterAttributeTable * );
00602
00603 virtual GDALRasterBand *GetMaskBand();
00604 virtual int GetMaskFlags();
00605 virtual CPLErr CreateMaskBand( int nFlags );
00606
00607 void ReportError(CPLErr eErrClass, int err_no, const char *fmt, ...) CPL_PRINT_FUNC_FORMAT (4, 5);
00608 };
00609
00610
00611
00612
00613
00614 class CPL_DLL GDALAllValidMaskBand : public GDALRasterBand
00615 {
00616 protected:
00617 virtual CPLErr IReadBlock( int, int, void * );
00618
00619 public:
00620 GDALAllValidMaskBand( GDALRasterBand * );
00621 virtual ~GDALAllValidMaskBand();
00622
00623 virtual GDALRasterBand *GetMaskBand();
00624 virtual int GetMaskFlags();
00625 };
00626
00627
00628
00629
00630
00631 class CPL_DLL GDALNoDataMaskBand : public GDALRasterBand
00632 {
00633 double dfNoDataValue;
00634 GDALRasterBand *poParent;
00635
00636 protected:
00637 virtual CPLErr IReadBlock( int, int, void * );
00638
00639 public:
00640 GDALNoDataMaskBand( GDALRasterBand * );
00641 virtual ~GDALNoDataMaskBand();
00642 };
00643
00644
00645
00646
00647
00648 class CPL_DLL GDALNoDataValuesMaskBand : public GDALRasterBand
00649 {
00650 double *padfNodataValues;
00651
00652 protected:
00653 virtual CPLErr IReadBlock( int, int, void * );
00654
00655 public:
00656 GDALNoDataValuesMaskBand( GDALDataset * );
00657 virtual ~GDALNoDataValuesMaskBand();
00658 };
00659
00660
00661
00662
00663
00664
00676 class CPL_DLL GDALDriver : public GDALMajorObject
00677 {
00678 public:
00679 GDALDriver();
00680 ~GDALDriver();
00681
00682
00683
00684
00685 GDALDataset *Create( const char * pszName,
00686 int nXSize, int nYSize, int nBands,
00687 GDALDataType eType, char ** papszOptions ) CPL_WARN_UNUSED_RESULT;
00688
00689 CPLErr Delete( const char * pszName );
00690 CPLErr Rename( const char * pszNewName,
00691 const char * pszOldName );
00692 CPLErr CopyFiles( const char * pszNewName,
00693 const char * pszOldName );
00694
00695 GDALDataset *CreateCopy( const char *, GDALDataset *,
00696 int, char **,
00697 GDALProgressFunc pfnProgress,
00698 void * pProgressData ) CPL_WARN_UNUSED_RESULT;
00699
00700
00701
00702
00703
00704
00705 GDALDataset *(*pfnOpen)( GDALOpenInfo * );
00706
00707 GDALDataset *(*pfnCreate)( const char * pszName,
00708 int nXSize, int nYSize, int nBands,
00709 GDALDataType eType,
00710 char ** papszOptions );
00711
00712 CPLErr (*pfnDelete)( const char * pszName );
00713
00714 GDALDataset *(*pfnCreateCopy)( const char *, GDALDataset *,
00715 int, char **,
00716 GDALProgressFunc pfnProgress,
00717 void * pProgressData );
00718
00719 void *pDriverData;
00720
00721 void (*pfnUnloadDriver)(GDALDriver *);
00722
00723 int (*pfnIdentify)( GDALOpenInfo * );
00724
00725 CPLErr (*pfnRename)( const char * pszNewName,
00726 const char * pszOldName );
00727 CPLErr (*pfnCopyFiles)( const char * pszNewName,
00728 const char * pszOldName );
00729
00730
00731
00732
00733 GDALDataset *DefaultCreateCopy( const char *, GDALDataset *,
00734 int, char **,
00735 GDALProgressFunc pfnProgress,
00736 void * pProgressData ) CPL_WARN_UNUSED_RESULT;
00737 static CPLErr DefaultCopyMasks( GDALDataset *poSrcDS,
00738 GDALDataset *poDstDS,
00739 int bStrict );
00740 static CPLErr QuietDelete( const char * pszName );
00741
00742 CPLErr DefaultRename( const char * pszNewName,
00743 const char * pszOldName );
00744 CPLErr DefaultCopyFiles( const char * pszNewName,
00745 const char * pszOldName );
00746 };
00747
00748
00749
00750
00751
00759 class CPL_DLL GDALDriverManager : public GDALMajorObject
00760 {
00761 int nDrivers;
00762 GDALDriver **papoDrivers;
00763
00764 char *pszHome;
00765
00766 public:
00767 GDALDriverManager();
00768 ~GDALDriverManager();
00769
00770 int GetDriverCount( void );
00771 GDALDriver *GetDriver( int );
00772 GDALDriver *GetDriverByName( const char * );
00773
00774 int RegisterDriver( GDALDriver * );
00775 void MoveDriver( GDALDriver *, int );
00776 void DeregisterDriver( GDALDriver * );
00777
00778 void AutoLoadDrivers();
00779 void AutoSkipDrivers();
00780
00781 const char *GetHome();
00782 void SetHome( const char * );
00783 };
00784
00785 CPL_C_START
00786 GDALDriverManager CPL_DLL * GetGDALDriverManager( void );
00787 CPL_C_END
00788
00789
00790
00791
00792
00798 class CPL_DLL GDALAsyncReader
00799 {
00800 protected:
00801 GDALDataset* poDS;
00802 int nXOff;
00803 int nYOff;
00804 int nXSize;
00805 int nYSize;
00806 void * pBuf;
00807 int nBufXSize;
00808 int nBufYSize;
00809 GDALDataType eBufType;
00810 int nBandCount;
00811 int* panBandMap;
00812 int nPixelSpace;
00813 int nLineSpace;
00814 int nBandSpace;
00815
00816 public:
00817 GDALAsyncReader();
00818 virtual ~GDALAsyncReader();
00819
00820 GDALDataset* GetGDALDataset() {return poDS;}
00821 int GetXOffset() {return nXOff;}
00822 int GetYOffset() {return nYOff;}
00823 int GetXSize() {return nXSize;}
00824 int GetYSize() {return nYSize;}
00825 void * GetBuffer() {return pBuf;}
00826 int GetBufferXSize() {return nBufXSize;}
00827 int GetBufferYSize() {return nBufYSize;}
00828 GDALDataType GetBufferType() {return eBufType;}
00829 int GetBandCount() {return nBandCount;}
00830 int* GetBandMap() {return panBandMap;}
00831 int GetPixelSpace() {return nPixelSpace;}
00832 int GetLineSpace() {return nLineSpace;}
00833 int GetBandSpace() {return nBandSpace;}
00834
00835 virtual GDALAsyncStatusType
00836 GetNextUpdatedRegion(double dfTimeout,
00837 int* pnBufXOff, int* pnBufYOff,
00838 int* pnBufXSize, int* pnBufYSize) = 0;
00839 virtual int LockBuffer( double dfTimeout = -1.0 );
00840 virtual void UnlockBuffer();
00841 };
00842
00843
00844
00845
00846
00847
00848 CPLErr
00849 GDALRegenerateOverviewsMultiBand(int nBands, GDALRasterBand** papoSrcBands,
00850 int nOverviews,
00851 GDALRasterBand*** papapoOverviewBands,
00852 const char * pszResampling,
00853 GDALProgressFunc pfnProgress, void * pProgressData );
00854
00855 CPL_C_START
00856
00857 #ifndef WIN32CE
00858
00859 CPLErr CPL_DLL
00860 HFAAuxBuildOverviews( const char *pszOvrFilename, GDALDataset *poParentDS,
00861 GDALDataset **ppoDS,
00862 int nBands, int *panBandList,
00863 int nNewOverviews, int *panNewOverviewList,
00864 const char *pszResampling,
00865 GDALProgressFunc pfnProgress,
00866 void *pProgressData );
00867
00868 #endif
00869
00870 CPLErr CPL_DLL
00871 GTIFFBuildOverviews( const char * pszFilename,
00872 int nBands, GDALRasterBand **papoBandList,
00873 int nOverviews, int * panOverviewList,
00874 const char * pszResampling,
00875 GDALProgressFunc pfnProgress, void * pProgressData );
00876
00877 CPLErr CPL_DLL
00878 GDALDefaultBuildOverviews( GDALDataset *hSrcDS, const char * pszBasename,
00879 const char * pszResampling,
00880 int nOverviews, int * panOverviewList,
00881 int nBands, int * panBandList,
00882 GDALProgressFunc pfnProgress, void * pProgressData);
00883
00884 int CPL_DLL GDALBandGetBestOverviewLevel(GDALRasterBand* poBand,
00885 int &nXOff, int &nYOff,
00886 int &nXSize, int &nYSize,
00887 int nBufXSize, int nBufYSize);
00888
00889 int CPL_DLL GDALOvLevelAdjust( int nOvLevel, int nXSize );
00890
00891 GDALDataset CPL_DLL *
00892 GDALFindAssociatedAuxFile( const char *pszBasefile, GDALAccess eAccess,
00893 GDALDataset *poDependentDS );
00894
00895
00896
00897
00898
00899 CPLErr CPL_DLL GDALParseGMLCoverage( CPLXMLNode *psTree,
00900 int *pnXSize, int *pnYSize,
00901 double *padfGeoTransform,
00902 char **ppszProjection );
00903
00904
00905
00906
00907
00908 int CPL_DLL GDALCheckDatasetDimensions( int nXSize, int nYSize );
00909 int CPL_DLL GDALCheckBandCount( int nBands, int bIsZeroAllowed );
00910
00911
00912
00913
00914 #define ARE_REAL_EQUAL(dfVal1, dfVal2) \
00915 (fabs(dfVal1 - dfVal2) < 1e-10 || (dfVal2 != 0 && fabs(1 - dfVal1 / dfVal2) < 1e-10 ))
00916
00917
00918 int GDALReadWorldFile2( const char *pszBaseFilename, const char *pszExtension,
00919 double *padfGeoTransform, char** papszSiblingFiles,
00920 char** ppszWorldFileNameOut);
00921 int GDALReadTabFile2( const char * pszBaseFilename,
00922 double *padfGeoTransform, char **ppszWKT,
00923 int *pnGCPCount, GDAL_GCP **ppasGCPs,
00924 char** papszSiblingFiles, char** ppszTabFileNameOut );
00925
00926 CPL_C_END
00927
00928 CPLString GDALFindAssociatedFile( const char *pszBasename, const char *pszExt,
00929 char **papszSiblingFiles, int nFlags );
00930
00931 #endif