FUNCTION "ST_box2d_contained(box2d, box2d)" PRIVATE DELETE
FUNCTION "box2d_overlap(box2d, box2d)" PRIVATE KEEP
FUNCTION "ST_box2d_overlap(box2d, box2d)" PRIVATE DELETE
-FUNCTION "box2d_same(box2d, box2d)" PRIVATE KEEP
-FUNCTION "ST_box2d_same(box2d, box2d)" PRIVATE DELETE
FUNCTION "box2d_intersects(box2d, box2d)" PRIVATE KEEP
FUNCTION "ST_box2d_intersects(box2d, box2d)" PRIVATE DELETE
FUNCTION "geometry_lt(geometry, geometry)" PRIVATE KEEP
}
-/*
- * This has been changed in PostGIS 1.1.2 to
- * check exact equality of values (rather then using
- * the FPeq macro taking into account coordinate drifts).
- */
-char
-box2d_same(BOX2DFLOAT4 *box1, BOX2DFLOAT4 *box2)
-{
- return( (box1->xmax==box2->xmax) &&
- (box1->xmin==box2->xmin) &&
- (box1->ymax==box2->ymax) &&
- (box1->ymin==box2->ymin));
-#if 0
- return(FPeq(box1->xmax, box2->xmax) &&
- FPeq(box1->xmin, box2->xmin) &&
- FPeq(box1->ymax, box2->ymax) &&
- FPeq(box1->ymin, box2->ymin));
-#endif
-}
BOX2DFLOAT4 *
box2d_clone(const BOX2DFLOAT4 *in)
extern BOX3D* box3d_from_gbox(const GBOX *gbox);
extern GBOX* box3d_to_gbox(const BOX3D *b3d);
-/*
- * Returns a pointer to the BBOX internal to the serialized form.
- * READ-ONLY!
- * Or NULL if serialized form does not have a BBOX
- * OBSOLETED to avoid memory alignment problems.
- */
-/*extern BOX2DFLOAT4 *getbox2d_internal(uint8_t *serialized_form);*/
-
-/*
- * this function writes to 'box' and returns 0 if serialized_form
- * does not have a bounding box (empty geom)
- */
-extern int getbox2d_p(uint8_t *serialized_form, BOX2DFLOAT4 *box);
-
/* Expand given box of 'd' units in all directions */
void expand_box2d(BOX2DFLOAT4 *box, double d);
void expand_box3d(BOX3D *box, double d);
-/* Check if to boxes are equal (considering FLOAT approximations) */
-char box2d_same(BOX2DFLOAT4 *box1, BOX2DFLOAT4 *box2);
-
-
/****************************************************************
* MEMORY MANAGEMENT
extern void interpolate_point4d(POINT4D *A, POINT4D *B, POINT4D *I, double F);
-/* return alloced memory */
-extern BOX2DFLOAT4 *box2d_union(BOX2DFLOAT4 *b1, BOX2DFLOAT4 *b2);
-
-/* args may overlap ! */
-extern int box2d_union_p(BOX2DFLOAT4 *b1, BOX2DFLOAT4 *b2, BOX2DFLOAT4 *ubox);
-
void lwgeom_longitude_shift(LWGEOM *lwgeom);
}
-/*
- * Same as getbox2d, but modifies box instead of returning result on the stack
- */
-int
-getbox2d_p(uint8_t *srl, BOX2DFLOAT4 *box)
-{
- uint8_t type = srl[0];
- uint8_t *loc;
- BOX3D box3d;
-
- LWDEBUGF(2, "getbox2d_p call on type %d -> %d", type, TYPE_GETTYPE(type));
-
- loc = srl+1;
-
- if (lwgeom_hasBBOX(type))
- {
- /*woot - this is easy */
- LWDEBUG(4, "getbox2d_p: has box");
- memcpy(box, loc, sizeof(BOX2DFLOAT4));
- return LW_TRUE;
- }
-
- LWDEBUG(4, "getbox2d_p: has no box - computing");
-
- /* We have to actually compute it! */
- if ( ! compute_serialized_box3d_p(srl, &box3d)) return LW_FALSE;
-
- LWDEBUGF(4, "getbox2d_p: compute_serialized_box3d returned %p", box3d);
-
- if ( ! box3d_to_box2df_p(&box3d, box) ) return LW_FALSE;
-
-
- LWDEBUG(4, "getbox2d_p: box3d converted to box2d");
-
- return LW_TRUE;
-}
/************************************************************************
* POINTARRAY support functions
else return 1;
}
-/**
- * Returns a BOX2DFLOAT4 that encloses b1 and b2
- *
- * box2d_union(NULL,A) --> A
- * box2d_union(A,NULL) --> A
- * box2d_union(A,B) --> A union B
- */
-BOX2DFLOAT4 *
-box2d_union(BOX2DFLOAT4 *b1, BOX2DFLOAT4 *b2)
-{
- BOX2DFLOAT4 *result;
-
- if ( (b1 == NULL) && (b2 == NULL) )
- {
- return NULL;
- }
-
- result = lwalloc(sizeof(BOX2DFLOAT4));
-
- if (b1 == NULL)
- {
- memcpy(result, b2, sizeof(BOX2DFLOAT4));
- return result;
- }
- if (b2 == NULL)
- {
- memcpy(result, b1, sizeof(BOX2DFLOAT4));
- return result;
- }
-
- if (b1->xmin < b2->xmin) result->xmin = b1->xmin;
- else result->xmin = b2->xmin;
-
- if (b1->ymin < b2->ymin) result->ymin = b1->ymin;
- else result->ymin = b2->ymin;
-
- if (b1->xmax > b2->xmax) result->xmax = b1->xmax;
- else result->xmax = b2->xmax;
-
- if (b1->ymax > b2->ymax) result->ymax = b1->ymax;
- else result->ymax = b2->ymax;
-
- return result;
-}
-
-/**
- * ubox may be one of the two args...
- * return 1 if done something to ubox, 0 otherwise.
- */
-int
-box2d_union_p(BOX2DFLOAT4 *b1, BOX2DFLOAT4 *b2, BOX2DFLOAT4 *ubox)
-{
- if ( (b1 == NULL) && (b2 == NULL) )
- {
- return 0;
- }
-
- if (b1 == NULL)
- {
- memcpy(ubox, b2, sizeof(BOX2DFLOAT4));
- return 1;
- }
- if (b2 == NULL)
- {
- memcpy(ubox, b1, sizeof(BOX2DFLOAT4));
- return 1;
- }
-
- if (b1->xmin < b2->xmin) ubox->xmin = b1->xmin;
- else ubox->xmin = b2->xmin;
-
- if (b1->ymin < b2->ymin) ubox->ymin = b1->ymin;
- else ubox->ymin = b2->ymin;
-
- if (b1->xmax > b2->xmax) ubox->xmax = b1->xmax;
- else ubox->xmax = b2->xmax;
-
- if (b1->ymax > b2->ymax) ubox->ymax = b1->ymax;
- else ubox->ymax = b2->ymax;
-
- return 1;
-}
const char *
lwgeom_typeflags(uint8_t flags)