PostGIS  3.0.6dev-r@@SVN_REVISION@@

◆ gserialized2_read_gbox_p()

int gserialized2_read_gbox_p ( const GSERIALIZED g,
GBOX gbox 
)
static

Definition at line 313 of file gserialized2.c.

314 {
315  uint8_t gflags = g->gflags;
316  /* Null input! */
317  if (!(g && gbox)) return LW_FAILURE;
318 
319  /* Initialize the flags on the box */
320  gbox->flags = gserialized2_get_lwflags(g);
321 
322  /* Has pre-calculated box */
323  if (G2FLAGS_GET_BBOX(gflags))
324  {
325  int i = 0;
326  const float *fbox = gserialized2_get_float_box_p(g, NULL);
327  gbox->xmin = fbox[i++];
328  gbox->xmax = fbox[i++];
329  gbox->ymin = fbox[i++];
330  gbox->ymax = fbox[i++];
331 
332  /* Geodetic? Read next dimension (geocentric Z) and return */
333  if (G2FLAGS_GET_GEODETIC(gflags))
334  {
335  gbox->zmin = fbox[i++];
336  gbox->zmax = fbox[i++];
337  return LW_SUCCESS;
338  }
339  /* Cartesian? Read extra dimensions (if there) and return */
340  if (G2FLAGS_GET_Z(gflags))
341  {
342  gbox->zmin = fbox[i++];
343  gbox->zmax = fbox[i++];
344  }
345  if (G2FLAGS_GET_M(gflags))
346  {
347  gbox->mmin = fbox[i++];
348  gbox->mmax = fbox[i++];
349  }
350  return LW_SUCCESS;
351  }
352  return LW_FAILURE;
353 }
const float * gserialized2_get_float_box_p(const GSERIALIZED *g, size_t *ndims)
Point into the float box area of the serialization.
Definition: gserialized2.c:294
lwflags_t gserialized2_get_lwflags(const GSERIALIZED *g)
Read the flags from a GSERIALIZED and return a standard lwflag integer.
Definition: gserialized2.c:57
#define G2FLAGS_GET_BBOX(gflags)
Definition: gserialized2.h:24
#define G2FLAGS_GET_GEODETIC(gflags)
Definition: gserialized2.h:25
#define G2FLAGS_GET_Z(gflags)
Definition: gserialized2.h:22
#define G2FLAGS_GET_M(gflags)
Definition: gserialized2.h:23
#define LW_FAILURE
Definition: liblwgeom.h:110
#define LW_SUCCESS
Definition: liblwgeom.h:111
double ymax
Definition: liblwgeom.h:343
double zmax
Definition: liblwgeom.h:345
double xmax
Definition: liblwgeom.h:341
double zmin
Definition: liblwgeom.h:344
double mmax
Definition: liblwgeom.h:347
double ymin
Definition: liblwgeom.h:342
double xmin
Definition: liblwgeom.h:340
double mmin
Definition: liblwgeom.h:346
lwflags_t flags
Definition: liblwgeom.h:339
uint8_t gflags
Definition: liblwgeom.h:432

References GBOX::flags, G2FLAGS_GET_BBOX, G2FLAGS_GET_GEODETIC, G2FLAGS_GET_M, G2FLAGS_GET_Z, GSERIALIZED::gflags, gserialized2_get_float_box_p(), gserialized2_get_lwflags(), LW_FAILURE, LW_SUCCESS, GBOX::mmax, GBOX::mmin, GBOX::xmax, GBOX::xmin, GBOX::ymax, GBOX::ymin, GBOX::zmax, and GBOX::zmin.

Referenced by gserialized2_fast_gbox_p(), gserialized2_get_gbox_p(), and lwgeom_from_gserialized2().

Here is the call graph for this function:
Here is the caller graph for this function: