32 #ifndef GDAL_PRIV_H_INCLUDED 33 #define GDAL_PRIV_H_INCLUDED 55 #include "gdal_frmts.h" 62 #define GMO_VALID 0x0001 63 #define GMO_IGNORE_UNIMPLEMENTED 0x0002 64 #define GMO_SUPPORT_MD 0x0004 65 #define GMO_SUPPORT_MDMD 0x0008 66 #define GMO_MD_DIRTY 0x0010 67 #define GMO_PAM_CLASS 0x0020 76 char **papszDomainList;
83 int XMLInit(
CPLXMLNode *psMetadata,
int bMerge );
86 char **GetDomainList() {
return papszDomainList; }
88 char **GetMetadata(
const char * pszDomain =
"" );
89 CPLErr SetMetadata(
char ** papszMetadata,
90 const char * pszDomain =
"" );
91 const char *GetMetadataItem(
const char * pszName,
92 const char * pszDomain =
"" );
93 CPLErr SetMetadataItem(
const char * pszName,
94 const char * pszValue,
95 const char * pszDomain =
"" );
116 char **BuildMetadataDomainList(
char** papszList,
int bCheckNonEmpty, ...) CPL_NULL_TERMINATED;
123 void SetMOFlags(
int nFlags);
125 virtual const char *GetDescription()
const;
126 virtual void SetDescription(
const char * );
128 virtual char **GetMetadataDomainList();
130 virtual char **GetMetadata(
const char * pszDomain =
"" );
131 virtual CPLErr SetMetadata(
char ** papszMetadata,
132 const char * pszDomain =
"" );
133 virtual const char *GetMetadataItem(
const char * pszName,
134 const char * pszDomain =
"" );
135 virtual CPLErr SetMetadataItem(
const char * pszName,
136 const char * pszValue,
137 const char * pszDomain =
"" );
163 bool bCheckedForOverviews;
167 char **papszInitSiblingFiles;
173 void Initialize(
GDALDataset *poDS,
const char *pszName = NULL,
174 char **papszSiblingFiles = NULL,
175 int bNameIsOVR = FALSE );
183 int GetOverviewCount(
int);
187 const char * pszResampling,
188 int nOverviews,
int * panOverviewList,
189 int nBands,
int * panBandList,
190 GDALProgressFunc pfnProgress,
191 void *pProgressData );
193 CPLErr BuildOverviewsSubDataset(
const char * pszPhysicalFile,
194 const char * pszResampling,
195 int nOverviews,
int * panOverviewList,
196 int nBands,
int * panBandList,
197 GDALProgressFunc pfnProgress,
198 void *pProgressData );
200 CPLErr CleanOverviews();
206 int GetMaskFlags(
int nBand );
208 int HaveMaskFile(
char **papszSiblings = NULL,
209 const char *pszBasename = NULL );
211 char** GetSiblingFiles() {
return papszInitSiblingFiles; }
224 char **papszSiblingFiles = NULL );
228 char **papszSiblingFiles;
248 const char*
const * papszAllowedDrivers);
250 const char*
const * papszAllowedDrivers);
262 const char*
const * papszAllowedDrivers);
285 void RasterInitialize(
int,
int );
290 virtual CPLErr IBuildOverviews(
const char *,
int,
int *,
291 int,
int *, GDALProgressFunc,
void * );
293 virtual CPLErr IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
295 int,
int *,
int,
int,
int );
297 CPLErr BlockBasedRasterIO(
GDALRWFlag,
int,
int,
int,
int,
299 int,
int *,
int,
int,
int );
300 void BlockBasedFlushCache();
302 CPLErr ValidateRasterIOOrAdviseReadParameters(
303 const char* pszCallingFunc,
304 int* pbStopProcessingOnCENone,
305 int nXOff,
int nYOff,
int nXSize,
int nYSize,
306 int nBufXSize,
int nBufYSize,
307 int nBandCount,
int *panBandMap);
309 virtual int CloseDependentDatasets();
316 int GetRasterXSize(
void );
317 int GetRasterYSize(
void );
318 int GetRasterCount(
void );
323 virtual const char *GetProjectionRef(
void);
324 virtual CPLErr SetProjection(
const char * );
326 virtual CPLErr GetGeoTransform(
double * );
327 virtual CPLErr SetGeoTransform(
double * );
330 char **papszOptions=NULL );
332 virtual void *GetInternalHandle(
const char * );
334 virtual char **GetFileList(
void);
336 virtual int GetGCPCount();
337 virtual const char *GetGCPProjection();
339 virtual CPLErr SetGCPs(
int nGCPCount,
const GDAL_GCP *pasGCPList,
340 const char *pszGCPProjection );
342 virtual CPLErr
AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
343 int nBufXSize,
int nBufYSize,
345 int nBandCount,
int *panBandList,
346 char **papszOptions );
351 BeginAsyncReader(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
352 void *pBuf,
int nBufXSize,
int nBufYSize,
354 int nBandCount,
int* panBandMap,
355 int nPixelSpace,
int nLineSpace,
int nBandSpace,
356 char **papszOptions);
361 int,
int *,
int,
int,
int );
370 static GDALDataset **GetOpenDatasets(
int *pnDatasetCount );
373 int,
int *, GDALProgressFunc,
void * );
375 void ReportError(CPLErr eErrClass,
int err_no,
const char *fmt, ...) CPL_PRINT_FUNC_FORMAT (4, 5);
408 CPLErr Internalize(
void );
410 void MarkDirty(
void );
411 void MarkClean(
void );
412 void AddLock(
void ) { nLockCount++; }
413 void DropLock(
void ) { nLockCount--; }
419 int GetXOff() {
return nXOff; }
420 int GetYOff() {
return nYOff; }
421 int GetXSize() {
return nXSize; }
422 int GetYSize() {
return nYSize; }
423 int GetDirty() {
return bDirty; }
424 int GetLockCount() {
return nLockCount; }
426 void *GetDataRef(
void ) {
return pData; }
432 static int FlushCacheBlock();
433 static void Verify();
438 static void DestroyRBMutex();
451 std::vector<GDALColorEntry> aoEntries;
461 int GetColorEntryCount()
const;
478 CPLErr eFlushBlockErr;
480 void SetFlushBlockErr( CPLErr eErr );
498 int nBlocksPerColumn;
500 int bSubBlockingActive;
501 int nSubBlocksPerRow;
502 int nSubBlocksPerColumn;
512 void InvalidateMaskBand();
519 virtual CPLErr IReadBlock(
int,
int,
void * ) = 0;
520 virtual CPLErr IWriteBlock(
int,
int,
void * );
521 virtual CPLErr IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
524 CPLErr OverviewRasterIO(
GDALRWFlag,
int,
int,
int,
int,
531 GDALRasterBlock *TryGetLockedBlockRef(
int nXBlockOff,
int nYBlockYOff );
544 void GetBlockSize(
int *,
int * );
547 CPLErr RasterIO(
GDALRWFlag,
int,
int,
int,
int,
550 CPLErr ReadBlock(
int,
int,
void * );
552 CPLErr WriteBlock(
int,
int,
void * );
555 int bJustInitialize = FALSE );
556 CPLErr FlushBlock(
int = -1,
int = -1,
int bWriteDirtyBlock = TRUE );
558 unsigned char* GetIndexColorTranslationTo(
GDALRasterBand* poReferenceBand,
559 unsigned char* pTranslationTable = NULL,
560 int* pApproximateMatching = NULL);
564 virtual CPLErr FlushCache();
565 virtual char **GetCategoryNames();
566 virtual double GetNoDataValue(
int *pbSuccess = NULL );
567 virtual double GetMinimum(
int *pbSuccess = NULL );
568 virtual double GetMaximum(
int *pbSuccess = NULL );
569 virtual double GetOffset(
int *pbSuccess = NULL );
570 virtual double GetScale(
int *pbSuccess = NULL );
571 virtual const char *GetUnitType();
574 virtual CPLErr Fill(
double dfRealValue,
double dfImaginaryValue = 0);
576 virtual CPLErr SetCategoryNames(
char ** );
577 virtual CPLErr SetNoDataValue(
double );
580 virtual CPLErr SetOffset(
double );
581 virtual CPLErr SetScale(
double );
582 virtual CPLErr SetUnitType(
const char * );
584 virtual CPLErr GetStatistics(
int bApproxOK,
int bForce,
585 double *pdfMin,
double *pdfMax,
586 double *pdfMean,
double *padfStdDev );
587 virtual CPLErr ComputeStatistics(
int bApproxOK,
588 double *pdfMin,
double *pdfMax,
589 double *pdfMean,
double *pdfStdDev,
590 GDALProgressFunc,
void *pProgressData );
591 virtual CPLErr SetStatistics(
double dfMin,
double dfMax,
592 double dfMean,
double dfStdDev );
593 virtual CPLErr ComputeRasterMinMax(
int,
double* );
595 virtual int HasArbitraryOverviews();
596 virtual int GetOverviewCount();
599 virtual CPLErr BuildOverviews(
const char *,
int,
int *,
600 GDALProgressFunc,
void * );
602 virtual CPLErr AdviseRead(
int nXOff,
int nYOff,
int nXSize,
int nYSize,
603 int nBufXSize,
int nBufYSize,
606 virtual CPLErr GetHistogram(
double dfMin,
double dfMax,
607 int nBuckets,
int * panHistogram,
608 int bIncludeOutOfRange,
int bApproxOK,
609 GDALProgressFunc,
void *pProgressData );
611 virtual CPLErr GetDefaultHistogram(
double *pdfMin,
double *pdfMax,
612 int *pnBuckets,
int ** ppanHistogram,
614 GDALProgressFunc,
void *pProgressData);
615 virtual CPLErr SetDefaultHistogram(
double dfMin,
double dfMax,
616 int nBuckets,
int *panHistogram );
622 virtual int GetMaskFlags();
623 virtual CPLErr CreateMaskBand(
int nFlags );
627 GIntBig *pnLineSpace,
628 char **papszOptions );
630 void ReportError(CPLErr eErrClass,
int err_no,
const char *fmt, ...) CPL_PRINT_FUNC_FORMAT (4, 5);
640 virtual CPLErr IReadBlock(
int,
int,
void * );
656 double dfNoDataValue;
660 virtual CPLErr IReadBlock(
int,
int,
void * );
661 virtual CPLErr IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
676 double *padfNodataValues;
679 virtual CPLErr IReadBlock(
int,
int,
void * );
696 virtual CPLErr IReadBlock(
int,
int,
void * );
697 virtual CPLErr IRasterIO(
GDALRWFlag,
int,
int,
int,
int,
732 int nXSize,
int nYSize,
int nBands,
733 GDALDataType eType,
char ** papszOptions ) CPL_WARN_UNUSED_RESULT;
735 CPLErr Delete(
const char * pszName );
736 CPLErr Rename(
const char * pszNewName,
737 const char * pszOldName );
738 CPLErr CopyFiles(
const char * pszNewName,
739 const char * pszOldName );
743 GDALProgressFunc pfnProgress,
744 void * pProgressData ) CPL_WARN_UNUSED_RESULT;
754 int nXSize,
int nYSize,
int nBands,
756 char ** papszOptions );
758 CPLErr (*pfnDelete)(
const char * pszName );
762 GDALProgressFunc pfnProgress,
763 void * pProgressData );
771 CPLErr (*pfnRename)(
const char * pszNewName,
772 const char * pszOldName );
773 CPLErr (*pfnCopyFiles)(
const char * pszNewName,
774 const char * pszOldName );
779 GDALDataset *DefaultCreateCopy(
const char *, GDALDataset *,
781 GDALProgressFunc pfnProgress,
782 void * pProgressData ) CPL_WARN_UNUSED_RESULT;
783 static CPLErr DefaultCopyMasks( GDALDataset *poSrcDS,
784 GDALDataset *poDstDS,
786 static CPLErr QuietDelete(
const char * pszName );
788 CPLErr DefaultRename(
const char * pszNewName,
789 const char * pszOldName );
790 CPLErr DefaultCopyFiles(
const char * pszNewName,
791 const char * pszOldName );
816 int GetDriverCount(
void );
824 void AutoLoadDrivers();
825 void AutoSkipDrivers();
827 const char *GetHome();
828 void SetHome(
const char * );
867 int GetXOffset() {
return nXOff;}
868 int GetYOffset() {
return nYOff;}
869 int GetXSize() {
return nXSize;}
870 int GetYSize() {
return nYSize;}
871 void * GetBuffer() {
return pBuf;}
872 int GetBufferXSize() {
return nBufXSize;}
873 int GetBufferYSize() {
return nBufYSize;}
875 int GetBandCount() {
return nBandCount;}
876 int* GetBandMap() {
return panBandMap;}
877 int GetPixelSpace() {
return nPixelSpace;}
878 int GetLineSpace() {
return nLineSpace;}
879 int GetBandSpace() {
return nBandSpace;}
882 GetNextUpdatedRegion(
double dfTimeout,
883 int* pnBufXOff,
int* pnBufYOff,
884 int* pnBufXSize,
int* pnBufYSize) = 0;
885 virtual int LockBuffer(
double dfTimeout = -1.0 );
886 virtual void UnlockBuffer();
895 GDALRegenerateOverviewsMultiBand(
int nBands,
GDALRasterBand** papoSrcBands,
898 const char * pszResampling,
899 GDALProgressFunc pfnProgress,
void * pProgressData );
906 HFAAuxBuildOverviews(
const char *pszOvrFilename,
GDALDataset *poParentDS,
908 int nBands,
int *panBandList,
909 int nNewOverviews,
int *panNewOverviewList,
910 const char *pszResampling,
911 GDALProgressFunc pfnProgress,
912 void *pProgressData );
917 GTIFFBuildOverviews(
const char * pszFilename,
919 int nOverviews,
int * panOverviewList,
920 const char * pszResampling,
921 GDALProgressFunc pfnProgress,
void * pProgressData );
924 GDALDefaultBuildOverviews(
GDALDataset *hSrcDS,
const char * pszBasename,
925 const char * pszResampling,
926 int nOverviews,
int * panOverviewList,
927 int nBands,
int * panBandList,
928 GDALProgressFunc pfnProgress,
void * pProgressData);
931 int &nXOff,
int &nYOff,
932 int &nXSize,
int &nYSize,
933 int nBufXSize,
int nBufYSize);
935 int CPL_DLL GDALOvLevelAdjust(
int nOvLevel,
int nXSize );
938 GDALFindAssociatedAuxFile(
const char *pszBasefile,
GDALAccess eAccess,
945 CPLErr CPL_DLL GDALParseGMLCoverage(
CPLXMLNode *psTree,
946 int *pnXSize,
int *pnYSize,
947 double *padfGeoTransform,
948 char **ppszProjection );
954 int CPL_DLL GDALCheckDatasetDimensions(
int nXSize,
int nYSize );
955 int CPL_DLL GDALCheckBandCount(
int nBands,
int bIsZeroAllowed );
960 #define ARE_REAL_EQUAL(dfVal1, dfVal2) \ 961 (dfVal1 == dfVal2 || fabs(dfVal1 - dfVal2) < 1e-10 || (dfVal2 != 0 && fabs(1 - dfVal1 / dfVal2) < 1e-10 )) 966 int CPL_DLL GDALReadWorldFile2(
const char *pszBaseFilename,
const char *pszExtension,
967 double *padfGeoTransform,
char** papszSiblingFiles,
968 char** ppszWorldFileNameOut);
969 int GDALReadTabFile2(
const char * pszBaseFilename,
970 double *padfGeoTransform,
char **ppszWKT,
971 int *pnGCPCount,
GDAL_GCP **ppasGCPs,
972 char** papszSiblingFiles,
char** ppszTabFileNameOut );
976 void GDALNullifyOpenDatasetsList();
977 void** GDALGetphDMMutex();
978 void** GDALGetphDLMutex();
979 void GDALNullifyProxyPoolSingleton();
981 void GDALSetResponsiblePIDForCurrentThread(GIntBig responsiblePID);
982 GIntBig GDALGetResponsiblePIDForCurrentThread();
984 CPLString GDALFindAssociatedFile(
const char *pszBasename,
const char *pszExt,
985 char **papszSiblingFiles,
int nFlags );
987 CPLErr EXIFExtractMetadata(
char**& papszMetadata,
988 void *fpL,
int nOffset,
989 int bSwabflag,
int nTIFFHEADER,
990 int& nExifOffset,
int& nInterOffset,
int& nGPSOffset);
992 #define DIV_ROUND_UP(a, b) ( ((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1) ) 996 #define GDALSTAT_APPROX_NUMSAMPLES 2500 1001 void GDALSerializeGCPListToXML(
CPLXMLNode* psParentNode,
1004 const char* pszGCPProjection );
1005 void GDALDeserializeGCPListFromXML(
CPLXMLNode* psGCPList,
1008 char** ppszGCPProjection );
The GDALRasterAttributeTable (or RAT) class is used to encapsulate a table used to provide attribute ...
Definition: gdal_rat.h:46
virtual CPLErr AdviseRead(int nXOff, int nYOff, int nXSize, int nYSize, int nBufXSize, int nBufYSize, GDALDataType eDT, char **papszOptions)
Advise driver of upcoming read requests.
Definition: gdalrasterband.cpp:3280
GDALDataType
Definition: gdal.h:55
Definition: gdal_priv.h:674
Document node structure.
Definition: cpl_minixml.h:65
virtual GDALRasterBand * GetMaskBand()
Return the mask band associated with the band.
Definition: gdalrasterband.cpp:4450
Definitions for CPL mini XML Parser/Serializer.
Definition: gdal_proxy.h:99
GDALDatasetH GDALOpenShared(const char *, GDALAccess) CPL_WARN_UNUSED_RESULT
Open a raster file as a GDALDataset.
Definition: gdaldataset.cpp:2408
GDALRWFlag
Definition: gdal.h:99
void * GDALDatasetH
Opaque type used for the C bindings of the C++ GDALDataset class.
Definition: gdal.h:162
Definition: gdal_priv.h:654
Color tuple.
Definition: gdal.h:640
A single raster block in the block cache.
Definition: gdal_priv.h:384
virtual int GetMaskFlags()
Return the status flags of the mask band associated with the band.
Definition: gdalrasterband.cpp:4650
Convenient string class based on std::string.
Definition: cpl_string.h:226
virtual CPLErr BuildOverviews(const char *, int, int *, GDALProgressFunc, void *)
Build raster overview(s)
Definition: gdalrasterband.cpp:2194
struct CPLVirtualMem CPLVirtualMem
Opaque type that represents a virtual memory mapping.
Definition: cpl_virtualmem.h:60
CPLErr BuildOverviews(const char *, int, int *, int, int *, GDALProgressFunc, void *)
Build raster overview(s)
Definition: gdaldataset.cpp:1359
Various convenience functions for working with strings and string lists.
Definition: gdal_priv.h:143
virtual CPLErr FlushCache()
Flush raster data cache.
Definition: gdalrasterband.cpp:850
virtual CPLErr CreateMaskBand(int nFlags)
Adds a mask band to the current band.
Definition: gdalrasterband.cpp:4723
virtual CPLErr CreateMaskBand(int nFlags)
Adds a mask band to the dataset.
Definition: gdaldataset.cpp:2161
Public (C callable) GDAL entry points.
GDALAsyncStatusType
status of the asynchronous stream
Definition: gdal.h:80
Definition: gdal_proxy.h:44
GDALRasterBand * GetBand()
Accessor to source GDALRasterBand object.
Definition: gdal_priv.h:430
Definition: gdal_priv.h:220
Definition: gdal_priv.h:637
String list class designed around our use of C "char**" string lists.
Definition: cpl_string.h:300
GDALDatasetH GDALOpen(const char *pszFilename, GDALAccess eAccess) CPL_WARN_UNUSED_RESULT
Open a raster file as a GDALDataset.
Definition: gdaldataset.cpp:2251
GDALPaletteInterp
Definition: gdal.h:131
virtual int CloseDependentDatasets()
Drop references to any other datasets referenced by this dataset.
Definition: gdaldataset.cpp:2789
Various convenience functions for CPL.
void ReportError(CPLErr eErrClass, int err_no, const char *fmt,...) CPL_PRINT_FUNC_FORMAT(4
Emits an error related to a raster band.
Definition: gdalrasterband.cpp:4940
Object with metadata.
Definition: gdal_priv.h:109
CPLErr RasterIO(GDALRWFlag, int, int, int, int, void *, int, int, GDALDataType, int, int)
Read/write a region of image data for this band.
Definition: gdalrasterband.cpp:170
A single raster band (or channel).
Definition: gdal_priv.h:475
GDALAccess
Definition: gdal.h:93
Definition: gdal_priv.h:73
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:254
GDALAccess GetAccess()
Find out if we have update permission for this band.
Definition: gdalrasterband.cpp:1395
Class for managing the registration of file format drivers.
Definition: gdal_priv.h:805
Definition: gdal_priv.h:690
GDALColorInterp
Definition: gdal.h:105
Format specific driver.
Definition: gdal_priv.h:722
Definition: gdal_priv.h:447
Ground Control Point.
Definition: gdal.h:255
Class used as a session object for asynchronous requests.
Definition: gdal_priv.h:844