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,
bool bIntersectOnly );
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);
191 void *pTransformerArg);
196 GDALTransformerInfo sTI;
199 double dfOversampleFactor;
205 double adfBackMapGeoTransform[6];
233 double dfPIXEL_OFFSET;
235 double dfLINE_OFFSET;
238 bool bOriginIsTopLeftCorner;
239 bool bGeographicSRSWithMinus180Plus180LongRange;
242 char ** papszGeolocationInfo;
244 } GDALGeoLocTransformInfo;
252 template<
class T>
int
257 GByte* pabyGreenBand,
259 int (*pfnIncludePixel)(
int,
int,
void*),
264 GDALProgressFunc pfnProgress,
265 void * pProgressArg );
273 GInt16* pasDynamicColorMap,
275 GDALProgressFunc pfnProgress,
276 void * pProgressArg );
278 #define PRIME_FOR_65536 98317
283 #define MEDIAN_CUT_AND_DITHER_BUFFER_SIZE_65536 (6 * sizeof(int) * PRIME_FOR_65536)
297 GBool GDALFloatEquals(
float A,
float B);
299 struct FloatEqualityTest
301 bool operator()(
float a,
float b) {
return GDALFloatEquals(a,b) == TRUE; }
308 double& dfWestLongitudeDeg,
309 double& dfSouthLatitudeDeg,
310 double& dfEastLongitudeDeg,
311 double& dfNorthLatitudeDeg );
318 double& dfWestLongitudeDeg,
319 double& dfSouthLatitudeDeg,
320 double& dfEastLongitudeDeg,
321 double& dfNorthLatitudeDeg );
324 const char* pszGeolocationDataset,
327 void *GDALCreateGeoLocTransformerEx(
GDALDatasetH hBaseDS,
330 const char* pszSourceDataset,