PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ gserialized2_read_gbox_p()

int gserialized2_read_gbox_p ( const GSERIALIZED g,
GBOX gbox 
)
static

Definition at line 314 of file gserialized2.c.

315 {
316  uint8_t gflags = g->gflags;
317  /* Null input! */
318  if (!(g && gbox)) return LW_FAILURE;
319 
320  /* Initialize the flags on the box */
321  gbox->flags = gserialized2_get_lwflags(g);
322 
323  /* Has pre-calculated box */
324  if (G2FLAGS_GET_BBOX(gflags))
325  {
326  int i = 0;
327  const float *fbox = gserialized2_get_float_box_p(g, NULL);
328  gbox->xmin = fbox[i++];
329  gbox->xmax = fbox[i++];
330  gbox->ymin = fbox[i++];
331  gbox->ymax = fbox[i++];
332 
333  /* Geodetic? Read next dimension (geocentric Z) and return */
334  if (G2FLAGS_GET_GEODETIC(gflags))
335  {
336  gbox->zmin = fbox[i++];
337  gbox->zmax = fbox[i++];
338  return LW_SUCCESS;
339  }
340  /* Cartesian? Read extra dimensions (if there) and return */
341  if (G2FLAGS_GET_Z(gflags))
342  {
343  gbox->zmin = fbox[i++];
344  gbox->zmax = fbox[i++];
345  }
346  if (G2FLAGS_GET_M(gflags))
347  {
348  gbox->mmin = fbox[i++];
349  gbox->mmax = fbox[i++];
350  }
351  return LW_SUCCESS;
352  }
353  return LW_FAILURE;
354 }
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:295
lwflags_t gserialized2_get_lwflags(const GSERIALIZED *g)
Read the flags from a GSERIALIZED and return a standard lwflag integer.
Definition: gserialized2.c:59
#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:96
#define LW_SUCCESS
Definition: liblwgeom.h:97
double ymax
Definition: liblwgeom.h:357
double zmax
Definition: liblwgeom.h:359
double xmax
Definition: liblwgeom.h:355
double zmin
Definition: liblwgeom.h:358
double mmax
Definition: liblwgeom.h:361
double ymin
Definition: liblwgeom.h:356
double xmin
Definition: liblwgeom.h:354
double mmin
Definition: liblwgeom.h:360
lwflags_t flags
Definition: liblwgeom.h:353
uint8_t gflags
Definition: liblwgeom.h:446

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: