PostGIS  3.7.0dev-r@@SVN_REVISION@@
lwgeom_topo_polygonizer.c File Reference
#include "../postgis_config.h"
#include "lwgeom_log.h"
#include "liblwgeom_internal.h"
#include "liblwgeom_topo_internal.h"
#include "lwgeom_geos.h"
Include dependency graph for lwgeom_topo_polygonizer.c:

Go to the source code of this file.

Data Structures

struct  LWT_ISO_EDGE_TABLE_T
 
struct  LWT_EDGERING_ELEM_T
 
struct  LWT_EDGERING_T
 
struct  LWT_EDGERING_ARRAY_T
 
struct  LWT_EDGERING_POINT_ITERATOR_T
 

Macros

#define LWT_EDGERING_INIT(a)
 
#define LWT_EDGERING_PUSH(a, r)
 
#define LWT_EDGERING_CLEAN(a)
 
#define LWT_EDGERING_ARRAY_INIT(a)
 
#define LWT_EDGERING_ARRAY_CLEAN(a)
 
#define LWT_EDGERING_ARRAY_PUSH(a, r)
 
#define LWT_HOLES_FACE_PLACEHOLDER   INT32_MIN
 

Typedefs

typedef struct LWT_ISO_EDGE_TABLE_T LWT_ISO_EDGE_TABLE
 
typedef struct LWT_EDGERING_ELEM_T LWT_EDGERING_ELEM
 
typedef struct LWT_EDGERING_T LWT_EDGERING
 
typedef struct LWT_EDGERING_ARRAY_T LWT_EDGERING_ARRAY
 
typedef struct LWT_EDGERING_POINT_ITERATOR_T LWT_EDGERING_POINT_ITERATOR
 

Functions

static int compare_iso_edges_by_id (const void *si1, const void *si2)
 
static LWT_ISO_EDGE_lwt_getIsoEdgeById (LWT_ISO_EDGE_TABLE *tab, LWT_ELEMID id)
 
static int _lwt_EdgeRingIterator_next (LWT_EDGERING_POINT_ITERATOR *it, POINT2D *pt)
 
static LWT_EDGERING_POINT_ITERATOR_lwt_EdgeRingIterator_begin (LWT_EDGERING *er)
 
static int _lwt_FetchNextUnvisitedEdge (__attribute__((__unused__)) LWT_TOPOLOGY *topo, LWT_ISO_EDGE_TABLE *etab, int from)
 
static LWT_ISO_EDGE_lwt_FetchAllEdges (LWT_TOPOLOGY *topo, int *numedges)
 
static int _lwt_UpdateEdgeRingSideFace (LWT_TOPOLOGY *topo, LWT_EDGERING *ring, LWT_ELEMID face)
 
static LWT_EDGERING_lwt_BuildEdgeRing (__attribute__((__unused__)) LWT_TOPOLOGY *topo, LWT_ISO_EDGE_TABLE *edges, LWT_ISO_EDGE *edge, int side)
 
static double _lwt_EdgeRingSignedArea (LWT_EDGERING_POINT_ITERATOR *it)
 
static int _lwt_EdgeRingIsCCW (LWT_EDGERING *ring)
 
static int _lwt_EdgeRingCrossingCount (const POINT2D *p, LWT_EDGERING_POINT_ITERATOR *it)
 
static int _lwt_EdgeRingContainsPoint (LWT_EDGERING *ring, POINT2D *p)
 
static GBOX_lwt_EdgeRingGetBbox (LWT_EDGERING *ring)
 
static LWT_ELEMID _lwt_EdgeRingGetFace (LWT_EDGERING *ring)
 
static int _lwt_RegisterFaceOnEdgeSide (LWT_TOPOLOGY *topo, LWT_ISO_EDGE *edge, int side, LWT_ISO_EDGE_TABLE *edges, LWT_EDGERING_ARRAY *holes, LWT_EDGERING_ARRAY *shells, LWT_ELEMID *registered)
 
static void _lwt_AccumulateCanditates (void *item, void *userdata)
 
static LWT_ELEMID _lwt_FindFaceContainingRing (LWT_TOPOLOGY *topo, LWT_EDGERING *ring, LWT_EDGERING_ARRAY *shells)
 
static int _lwt_CheckFacesExist (LWT_TOPOLOGY *topo)
 
int lwt_Polygonize (LWT_TOPOLOGY *topo)