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 * );
712 int nXSize,
int nYSize,
int nBands,
713 GDALDataType eType,
char ** papszOptions ) CPL_WARN_UNUSED_RESULT;
715 CPLErr Delete(
const char * pszName );
716 CPLErr Rename(
const char * pszNewName,
717 const char * pszOldName );
718 CPLErr CopyFiles(
const char * pszNewName,
719 const char * pszOldName );
723 GDALProgressFunc pfnProgress,
724 void * pProgressData ) CPL_WARN_UNUSED_RESULT;
734 int nXSize,
int nYSize,
int nBands,
736 char ** papszOptions );
738 CPLErr (*pfnDelete)(
const char * pszName );
742 GDALProgressFunc pfnProgress,
743 void * pProgressData );
751 CPLErr (*pfnRename)(
const char * pszNewName,
752 const char * pszOldName );
753 CPLErr (*pfnCopyFiles)(
const char * pszNewName,
754 const char * pszOldName );
759 GDALDataset *DefaultCreateCopy(
const char *, GDALDataset *,
761 GDALProgressFunc pfnProgress,
762 void * pProgressData ) CPL_WARN_UNUSED_RESULT;
763 static CPLErr DefaultCopyMasks( GDALDataset *poSrcDS,
764 GDALDataset *poDstDS,
766 static CPLErr QuietDelete(
const char * pszName );
768 CPLErr DefaultRename(
const char * pszNewName,
769 const char * pszOldName );
770 CPLErr DefaultCopyFiles(
const char * pszNewName,
771 const char * pszOldName );
796 int GetDriverCount(
void );
804 void AutoLoadDrivers();
805 void AutoSkipDrivers();
807 const char *GetHome();
808 void SetHome(
const char * );
847 int GetXOffset() {
return nXOff;}
848 int GetYOffset() {
return nYOff;}
849 int GetXSize() {
return nXSize;}
850 int GetYSize() {
return nYSize;}
851 void * GetBuffer() {
return pBuf;}
852 int GetBufferXSize() {
return nBufXSize;}
853 int GetBufferYSize() {
return nBufYSize;}
855 int GetBandCount() {
return nBandCount;}
856 int* GetBandMap() {
return panBandMap;}
857 int GetPixelSpace() {
return nPixelSpace;}
858 int GetLineSpace() {
return nLineSpace;}
859 int GetBandSpace() {
return nBandSpace;}
862 GetNextUpdatedRegion(
double dfTimeout,
863 int* pnBufXOff,
int* pnBufYOff,
864 int* pnBufXSize,
int* pnBufYSize) = 0;
865 virtual int LockBuffer(
double dfTimeout = -1.0 );
866 virtual void UnlockBuffer();
875 GDALRegenerateOverviewsMultiBand(
int nBands,
GDALRasterBand** papoSrcBands,
878 const char * pszResampling,
879 GDALProgressFunc pfnProgress,
void * pProgressData );
886 HFAAuxBuildOverviews(
const char *pszOvrFilename,
GDALDataset *poParentDS,
888 int nBands,
int *panBandList,
889 int nNewOverviews,
int *panNewOverviewList,
890 const char *pszResampling,
891 GDALProgressFunc pfnProgress,
892 void *pProgressData );
897 GTIFFBuildOverviews(
const char * pszFilename,
899 int nOverviews,
int * panOverviewList,
900 const char * pszResampling,
901 GDALProgressFunc pfnProgress,
void * pProgressData );
904 GDALDefaultBuildOverviews(
GDALDataset *hSrcDS,
const char * pszBasename,
905 const char * pszResampling,
906 int nOverviews,
int * panOverviewList,
907 int nBands,
int * panBandList,
908 GDALProgressFunc pfnProgress,
void * pProgressData);
911 int &nXOff,
int &nYOff,
912 int &nXSize,
int &nYSize,
913 int nBufXSize,
int nBufYSize);
915 int CPL_DLL GDALOvLevelAdjust(
int nOvLevel,
int nXSize );
918 GDALFindAssociatedAuxFile(
const char *pszBasefile,
GDALAccess eAccess,
925 CPLErr CPL_DLL GDALParseGMLCoverage(
CPLXMLNode *psTree,
926 int *pnXSize,
int *pnYSize,
927 double *padfGeoTransform,
928 char **ppszProjection );
934 int CPL_DLL GDALCheckDatasetDimensions(
int nXSize,
int nYSize );
935 int CPL_DLL GDALCheckBandCount(
int nBands,
int bIsZeroAllowed );
940 #define ARE_REAL_EQUAL(dfVal1, dfVal2) \
941 (dfVal1 == dfVal2 || fabs(dfVal1 - dfVal2) < 1e-10 || (dfVal2 != 0 && fabs(1 - dfVal1 / dfVal2) < 1e-10 ))
946 int CPL_DLL GDALReadWorldFile2(
const char *pszBaseFilename,
const char *pszExtension,
947 double *padfGeoTransform,
char** papszSiblingFiles,
948 char** ppszWorldFileNameOut);
949 int GDALReadTabFile2(
const char * pszBaseFilename,
950 double *padfGeoTransform,
char **ppszWKT,
951 int *pnGCPCount,
GDAL_GCP **ppasGCPs,
952 char** papszSiblingFiles,
char** ppszTabFileNameOut );
956 void GDALNullifyOpenDatasetsList();
957 void** GDALGetphDMMutex();
958 void** GDALGetphDLMutex();
959 void GDALNullifyProxyPoolSingleton();
961 void GDALSetResponsiblePIDForCurrentThread(GIntBig responsiblePID);
962 GIntBig GDALGetResponsiblePIDForCurrentThread();
964 CPLString GDALFindAssociatedFile(
const char *pszBasename,
const char *pszExt,
965 char **papszSiblingFiles,
int nFlags );
967 CPLErr EXIFExtractMetadata(
char**& papszMetadata,
968 void *fpL,
int nOffset,
969 int bSwabflag,
int nTIFFHEADER,
970 int& nExifOffset,
int& nInterOffset,
int& nGPSOffset);
972 #define DIV_ROUND_UP(a, b) ( ((a) % (b)) == 0 ? ((a) / (b)) : (((a) / (b)) + 1) )
976 #define GDALSTAT_APPROX_NUMSAMPLES 2500
981 void GDALSerializeGCPListToXML(
CPLXMLNode* psParentNode,
984 const char* pszGCPProjection );
985 void GDALDeserializeGCPListFromXML(
CPLXMLNode* psGCPList,
988 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:4641
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:4714
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:4931
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:785
GDALColorInterp
Definition: gdal.h:105
Format specific driver.
Definition: gdal_priv.h:702
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:824