32 #ifndef GDAL_ALG_PRIV_H_INCLUDED
33 #define GDAL_ALG_PRIV_H_INCLUDED
45 typedef enum { GBV_UserBurnValue = 0, GBV_Z = 1, GBV_M = 2
57 unsigned char * pabyChunkBuf;
68 const std::int64_t* int64_values;
69 const double *double_values;
71 GDALBurnValueSrc eBurnValueSource;
72 GDALRasterMergeAlg eMergeAlg;
86 typedef void (*llScanlineFunc)(
void *, int, int, int, double );
87 typedef void (*llPointFunc)(
void *, int, int, double );
89 void GDALdllImagePoint(
int nRasterXSize,
int nRasterYSize,
90 int nPartCount,
const int *panPartSize,
91 const double *padfX,
const double *padfY,
92 const double *padfVariant,
93 llPointFunc pfnPointFunc,
void *pCBData );
95 void GDALdllImageLine(
int nRasterXSize,
int nRasterYSize,
96 int nPartCount,
const int *panPartSize,
97 const double *padfX,
const double *padfY,
98 const double *padfVariant,
99 llPointFunc pfnPointFunc,
void *pCBData );
101 void GDALdllImageLineAllTouched(
int nRasterXSize,
int nRasterYSize,
102 int nPartCount,
const int *panPartSize,
103 const double *padfX,
const double *padfY,
104 const double *padfVariant,
105 llPointFunc pfnPointFunc,
void *pCBData,
106 int bAvoidBurningSamePoints );
108 void GDALdllImageFilledPolygon(
int nRasterXSize,
int nRasterYSize,
109 int nPartCount,
const int *panPartSize,
110 const double *padfX,
const double *padfY,
111 const double *padfVariant,
112 llScanlineFunc pfnScanlineFunc,
void *pCBData );
120 #define GP_NODATA_MARKER -51502112
122 template<
class DataType,
class EqualityTest>
class GDALRasterPolygonEnumeratorT
126 void MergePolygon(
int nSrcId,
int nDstId );
127 int NewPolygon( DataType nValue );
133 GInt32 *panPolyIdMap =
nullptr;
134 DataType *panPolyValue =
nullptr;
136 int nNextPolygonId = 0;
139 int nConnectedness = 0;
142 explicit GDALRasterPolygonEnumeratorT(
int nConnectedness=4 );
143 ~GDALRasterPolygonEnumeratorT();
145 void ProcessLine( DataType *panLastLineVal, DataType *panThisLineVal,
149 void CompleteMerges();
154 struct IntEqualityTest
156 bool operator()(std::int64_t a, std::int64_t b)
const {
return a == b; }
159 typedef GDALRasterPolygonEnumeratorT<std::int64_t, IntEqualityTest> GDALRasterPolygonEnumerator;
161 typedef void* (*GDALTransformDeserializeFunc)(
CPLXMLNode *psTree );
163 void CPL_DLL *GDALRegisterTransformDeserializer(
const char* pszTransformName,
165 GDALTransformDeserializeFunc pfnDeserializeFunc);
166 void CPL_DLL GDALUnregisterTransformDeserializer(
void* pData);
168 void GDALCleanupTransformDeserializerMutex();
172 void* GDALCreateTPSTransformerInt(
int nGCPCount,
const GDAL_GCP *pasGCPList,
173 int bReversed,
char** papszOptions );
175 void CPL_DLL * GDALCloneTransformer(
void *pTransformerArg );
177 void GDALRefreshGenImgProjTransformer(
void* hTransformArg);
178 void GDALRefreshApproxTransformer(
void* hTransformArg);
180 int GDALTransformLonLatToDestGenImgProjTransformer(
void* hTransformArg,
183 int GDALTransformLonLatToDestApproxTransformer(
void* hTransformArg,
188 void *pTransformerArg);
193 GDALTransformerInfo sTI;
196 double dfOversampleFactor;
202 double adfBackMapGeoTransform[6];
230 double dfPIXEL_OFFSET;
232 double dfLINE_OFFSET;
235 bool bOriginIsTopLeftCorner;
236 bool bGeographicSRSWithMinus180Plus180LongRange;
239 char ** papszGeolocationInfo;
241 } GDALGeoLocTransformInfo;
249 template<
class T>
int
254 GByte* pabyGreenBand,
256 int (*pfnIncludePixel)(
int,
int,
void*),
261 GDALProgressFunc pfnProgress,
262 void * pProgressArg );
270 GInt16* pasDynamicColorMap,
272 GDALProgressFunc pfnProgress,
273 void * pProgressArg );
275 #define PRIME_FOR_65536 98317
280 #define MEDIAN_CUT_AND_DITHER_BUFFER_SIZE_65536 (6 * sizeof(int) * PRIME_FOR_65536)
294 GBool GDALFloatEquals(
float A,
float B);
296 struct FloatEqualityTest
298 bool operator()(
float a,
float b) {
return GDALFloatEquals(a,b) == TRUE; }
305 double& dfWestLongitudeDeg,
306 double& dfSouthLatitudeDeg,
307 double& dfEastLongitudeDeg,
308 double& dfNorthLatitudeDeg );
315 double& dfWestLongitudeDeg,
316 double& dfSouthLatitudeDeg,
317 double& dfEastLongitudeDeg,
318 double& dfNorthLatitudeDeg );
320 void *GDALCreateGeoLocTransformerEx(
GDALDatasetH hBaseDS,
321 char **papszGeolocationInfo,
323 const char* pszSourceDataset,