extern int ptarray_is_closed_2d(const POINTARRAY *pa);
extern int ptarray_is_closed_3d(const POINTARRAY *pa);
extern int ptarray_is_closed_z(const POINTARRAY *pa);
-extern void ptarray_longitude_shift(POINTARRAY *pa);
-extern int ptarray_isccw(const POINTARRAY *pa);
-extern void ptarray_reverse(POINTARRAY *pa);
extern POINTARRAY* ptarray_flip_coordinates(POINTARRAY *pa);
/**
extern LWPOINT* lwcompound_get_endpoint(const LWCOMPOUND *lwcmp);
extern LWPOINT* lwcompound_get_lwpoint(const LWCOMPOUND *lwcmp, int where);
-
extern double ptarray_length_2d(const POINTARRAY *pts);
-extern double ptarray_length(const POINTARRAY *pts);
-extern double ptarray_arc_length_2d(const POINTARRAY *pts);
-
-
extern int pt_in_ring_2d(const POINT2D *p, const POINTARRAY *ring);
extern int azimuth_pt_pt(const POINT2D *p1, const POINT2D *p2, double *ret);
extern int lwpoint_inside_circle(const LWPOINT *p, double cx, double cy, double rad);
+
extern void lwgeom_reverse(LWGEOM *lwgeom);
-extern void lwline_reverse(LWLINE *line);
-extern void lwpoly_reverse(LWPOLY *poly);
-extern void lwtriangle_reverse(LWTRIANGLE *triangle);
extern char* lwgeom_summary(const LWGEOM *lwgeom, int offset);
extern char* lwpoint_to_latlon(const LWPOINT *p, const char *format);
extern int lwgeom_startpoint(const LWGEOM* lwgeom, POINT4D* pt);
* are counter-clockwise.
*/
extern void lwgeom_force_clockwise(LWGEOM *lwgeom);
-extern void lwpoly_force_clockwise(LWPOLY *poly);
-extern void lwtriangle_force_clockwise(LWTRIANGLE *triangle);
-
extern int lwgeom_is_clockwise(LWGEOM *lwgeom);
-extern int lwpoly_is_clockwise(LWPOLY *poly);
-extern int lwtriangle_is_clockwise(LWTRIANGLE *triangle);
extern void interpolate_point4d(POINT4D *A, POINT4D *B, POINT4D *I, double F);
-void lwgeom_longitude_shift(LWGEOM *lwgeom);
+extern void lwgeom_longitude_shift(LWGEOM *lwgeom);
/**
* @brief wrap geometry on given cut x value
extern int lwgeom_dimensionality(LWGEOM *geom);
/* Is lwgeom1 geometrically equal to lwgeom2 ? */
-char lwgeom_same(const LWGEOM *lwgeom1, const LWGEOM *lwgeom2);
-char ptarray_same(const POINTARRAY *pa1, const POINTARRAY *pa2);
-char lwpoint_same(const LWPOINT *p1, const LWPOINT *p2);
-char lwline_same(const LWLINE *p1, const LWLINE *p2);
-char lwpoly_same(const LWPOLY *p1, const LWPOLY *p2);
-char lwtriangle_same(const LWTRIANGLE *p1, const LWTRIANGLE *p2);
-char lwcollection_same(const LWCOLLECTION *p1, const LWCOLLECTION *p2);
-char lwcircstring_same(const LWCIRCSTRING *p1, const LWCIRCSTRING *p2);
+extern char lwgeom_same(const LWGEOM *lwgeom1, const LWGEOM *lwgeom2);
/**
* Deep clone an LWGEOM, everything is copied
*/
extern LWGEOM *lwgeom_clone_deep(const LWGEOM *lwgeom);
-
-/* TODO Move to Internal */
-LWPOINT *lwpoint_clone(const LWPOINT *lwgeom);
-POINTARRAY *ptarray_clone_deep(const POINTARRAY *ptarray);
+extern POINTARRAY *ptarray_clone_deep(const POINTARRAY *ptarray);
/*
* Pull a #GBOX from the header of a #GSERIALIZED, if one is available. If
* it is not, return LW_FAILURE.
*/
-extern int gserialized_read_gbox_p(const GSERIALIZED *g, GBOX *gbox);
+int gserialized_read_gbox_p(const GSERIALIZED *g, GBOX *gbox);
/*
* Length calculations
int ptarray_has_m(const POINTARRAY *pa);
double ptarray_signed_area(const POINTARRAY *pa);
+/*
+* Length
+*/
+double ptarray_length(const POINTARRAY *pts);
+double ptarray_arc_length_2d(const POINTARRAY *pts);
+
/*
* Clone support
*/
+LWPOINT *lwpoint_clone(const LWPOINT *lwgeom);
LWLINE *lwline_clone(const LWLINE *lwgeom);
LWPOLY *lwpoly_clone(const LWPOLY *lwgeom);
LWTRIANGLE *lwtriangle_clone(const LWTRIANGLE *lwgeom);
GBOX *gbox_clone(const GBOX *gbox);
/*
- * Reverse
- */
-extern void lwcircstring_reverse(LWCIRCSTRING *curve);
+* Clockwise
+*/
+void lwpoly_force_clockwise(LWPOLY *poly);
+void lwtriangle_force_clockwise(LWTRIANGLE *triangle);
+int lwpoly_is_clockwise(LWPOLY *poly);
+int lwtriangle_is_clockwise(LWTRIANGLE *triangle);
+int ptarray_isccw(const POINTARRAY *pa);
+
+/*
+* Same
+*/
+char ptarray_same(const POINTARRAY *pa1, const POINTARRAY *pa2);
+char lwpoint_same(const LWPOINT *p1, const LWPOINT *p2);
+char lwline_same(const LWLINE *p1, const LWLINE *p2);
+char lwpoly_same(const LWPOLY *p1, const LWPOLY *p2);
+char lwtriangle_same(const LWTRIANGLE *p1, const LWTRIANGLE *p2);
+char lwcollection_same(const LWCOLLECTION *p1, const LWCOLLECTION *p2);
+char lwcircstring_same(const LWCIRCSTRING *p1, const LWCIRCSTRING *p2);
+
+/*
+* Shift
+*/
+void ptarray_longitude_shift(POINTARRAY *pa);
+
+/*
+* Reverse
+*/
+void lwcircstring_reverse(LWCIRCSTRING *curve);
+void ptarray_reverse(POINTARRAY *pa);
+void lwline_reverse(LWLINE *line);
+void lwpoly_reverse(LWPOLY *poly);
+void lwtriangle_reverse(LWTRIANGLE *triangle);
/*
* Startpoint
void lwcollection_reserve(LWCOLLECTION *col, int ngeoms);
/** Check if subtype is allowed in collectiontype */
-extern int lwcollection_allows_subtype(int collectiontype, int subtype);
+int lwcollection_allows_subtype(int collectiontype, int subtype);
/** GBOX utility functions to figure out coverage/location on the globe */
double gbox_angular_height(const GBOX* gbox);
int gbox_centroid(const GBOX* gbox, POINT2D* out);
/* Utilities */
-extern void trim_trailing_zeros(char *num);
+void trim_trailing_zeros(char *num);
extern uint8_t MULTITYPE[NUMTYPES];
LWT_ELEMID *registered)
{
const LWT_BE_IFACE *iface = topo->be_iface;
- int sedge = edge->edge_id * side;
/* this is arbitrary, could be taken as parameter */
static const int placeholder_faceid = LWT_HOLES_FACE_PLACEHOLDER;
LWT_EDGERING *ring;
/* Create new face */
LWT_ISO_FACE newface;
- LWDEBUGF(1, "Ring of edge %d is a shell (shell %d)", sedge, shells->size);
+ LWDEBUGF(1, "Ring of edge %d is a shell (shell %d)", edge->edge_id * side, shells->size);
newface.mbr = _lwt_EdgeRingGetBbox(ring);
}
else /* cw, so is an hole */
{
- LWDEBUGF(1, "Ring of edge %d is a hole (hole %d)", sedge, holes->size);
+ LWDEBUGF(1, "Ring of edge %d is a hole (hole %d)", edge->edge_id * side, holes->size);
*registered = placeholder_faceid;
LWT_EDGERING_ARRAY_PUSH(holes, ring);
}
/* invoke appropriate function */
result = lwgeom_same(lwg1, lwg2);
- /* Relase memory */
+ /* Release memory */
lwgeom_free(lwg1);
lwgeom_free(lwg2);
PG_FREE_IF_COPY(g1, 0);
{
POSTGIS_DEBUG(3, " lwpoint... returning a clone of input");
- return (LWGEOM *)lwpoint_clone(lwpoint);
+ return lwgeom_clone((LWGEOM *)lwpoint);
}
else
{