PostGIS  2.4.9dev-r@@SVN_REVISION@@
g_box.c File Reference
#include "liblwgeom_internal.h"
#include "lwgeom_log.h"
#include <stdlib.h>
#include <math.h>
Include dependency graph for g_box.c:

Go to the source code of this file.

Functions

GBOXgbox_new (uint8_t flags)
 Create a new gbox with the dimensionality indicated by the flags. More...
 
void gbox_init (GBOX *gbox)
 Zero out all the entries in the GBOX. More...
 
GBOXgbox_clone (const GBOX *gbox)
 
BOX3Dbox3d_from_gbox (const GBOX *gbox)
 
GBOXbox3d_to_gbox (const BOX3D *b3d)
 
void gbox_expand (GBOX *g, double d)
 Move the box minimums down and the maximums up by the distance provided. More...
 
void gbox_expand_xyzm (GBOX *g, double dx, double dy, double dz, double dm)
 Move the box minimums down and the maximums up by the distances provided. More...
 
int gbox_union (const GBOX *g1, const GBOX *g2, GBOX *gout)
 Update the output GBOX to be large enough to include both inputs. More...
 
int gbox_same (const GBOX *g1, const GBOX *g2)
 Check if 2 given Gbox are the same. More...
 
int gbox_same_2d (const GBOX *g1, const GBOX *g2)
 Check if 2 given GBOX are the same in x and y. More...
 
int gbox_same_2d_float (const GBOX *g1, const GBOX *g2)
 Check if two given GBOX are the same in x and y, or would round to the same GBOX in x and if serialized in GSERIALIZED. More...
 
int gbox_is_valid (const GBOX *gbox)
 Return false if any of the dimensions is NaN or infinite. More...
 
int gbox_merge_point3d (const POINT3D *p, GBOX *gbox)
 Update the GBOX to be large enough to include itself and the new point. More...
 
int gbox_init_point3d (const POINT3D *p, GBOX *gbox)
 Initialize a GBOX using the values of the point. More...
 
int gbox_contains_point3d (const GBOX *gbox, const POINT3D *pt)
 Return true if the point is inside the gbox. More...
 
int gbox_merge (const GBOX *new_box, GBOX *merge_box)
 Update the merged GBOX to be large enough to include itself and the new box. More...
 
int gbox_overlaps (const GBOX *g1, const GBOX *g2)
 Return LW_TRUE if the GBOX overlaps, LW_FALSE otherwise. More...
 
int gbox_overlaps_2d (const GBOX *g1, const GBOX *g2)
 Return LW_TRUE if the GBOX overlaps on the 2d plane, LW_FALSE otherwise. More...
 
int gbox_contains_2d (const GBOX *g1, const GBOX *g2)
 Return LW_TRUE if the first GBOX contains the second on the 2d plane, LW_FALSE otherwise. More...
 
int gbox_contains_point2d (const GBOX *g, const POINT2D *p)
 
GBOXgbox_from_string (const char *str)
 Warning, this function is only good for x/y/z boxes, used in unit testing of geodetic box generation. More...
 
char * gbox_to_string (const GBOX *gbox)
 Allocate a string representation of the GBOX, based on dimensionality of flags. More...
 
GBOXgbox_copy (const GBOX *box)
 Return a copy of the GBOX, based on dimensionality of flags. More...
 
void gbox_duplicate (const GBOX *original, GBOX *duplicate)
 Copy the values of original GBOX into duplicate. More...
 
size_t gbox_serialized_size (uint8_t flags)
 Return the number of bytes necessary to hold a GBOX of this dimension in serialized form. More...
 
int lw_arc_calculate_gbox_cartesian_2d (const POINT2D *A1, const POINT2D *A2, const POINT2D *A3, GBOX *gbox)
 
static int lw_arc_calculate_gbox_cartesian (const POINT4D *p1, const POINT4D *p2, const POINT4D *p3, GBOX *gbox)
 
int ptarray_calculate_gbox_cartesian (const POINTARRAY *pa, GBOX *gbox)
 Calculate box (x/y) and add values to gbox. More...
 
static int lwcircstring_calculate_gbox_cartesian (LWCIRCSTRING *curve, GBOX *gbox)
 
static int lwpoint_calculate_gbox_cartesian (LWPOINT *point, GBOX *gbox)
 
static int lwline_calculate_gbox_cartesian (LWLINE *line, GBOX *gbox)
 
static int lwtriangle_calculate_gbox_cartesian (LWTRIANGLE *triangle, GBOX *gbox)
 
static int lwpoly_calculate_gbox_cartesian (LWPOLY *poly, GBOX *gbox)
 
static int lwcollection_calculate_gbox_cartesian (LWCOLLECTION *coll, GBOX *gbox)
 
int lwgeom_calculate_gbox_cartesian (const LWGEOM *lwgeom, GBOX *gbox)
 Calculate the 2-4D bounding box of a geometry. More...
 
void gbox_float_round (GBOX *gbox)
 Round given GBOX to float boundaries. More...