static void cvSubdiv2DDeleteEdge( CvSubdiv2D * subdiv, CvSubdiv2DEdge edge ) { CvQuadEdge2D *quadedge = (CvQuadEdge2D *) (edge & ~3); CV_FUNCNAME( "cvSubdiv2DDeleteEdge" ); __BEGIN__; if( !subdiv || !quadedge ) CV_ERROR( CV_StsNullPtr, "" ); cvSubdiv2DSplice( edge, cvSubdiv2DGetEdge( edge, CV_PREV_AROUND_ORG )); { CvSubdiv2DEdge sym_edge = cvSubdiv2DSymEdge( edge ); cvSubdiv2DSplice( sym_edge, cvSubdiv2DGetEdge( sym_edge, CV_PREV_AROUND_ORG )); } cvSetRemoveByPtr( (CvSet*)(subdiv->edges), quadedge ); subdiv->quad_edges--; __END__; }
CV_IMPL void cvClearSubdivVoronoi2D( CvSubdiv2D * subdiv ) { int elem_size; int i, total; CvSeqReader reader; CV_FUNCNAME( "cvClearVoronoi2D" ); __BEGIN__; if( !subdiv ) CV_ERROR( CV_StsNullPtr, "" ); /* clear pointers to voronoi points */ total = subdiv->edges->total; elem_size = subdiv->edges->elem_size; cvStartReadSeq( (CvSeq *) (subdiv->edges), &reader, 0 ); for( i = 0; i < total; i++ ) { CvQuadEdge2D *quadedge = (CvQuadEdge2D *) reader.ptr; quadedge->pt[1] = quadedge->pt[3] = 0; CV_NEXT_SEQ_ELEM( elem_size, reader ); } /* remove voronoi points */ total = subdiv->total; elem_size = subdiv->elem_size; cvStartReadSeq( (CvSeq *) subdiv, &reader, 0 ); for( i = 0; i < total; i++ ) { CvSubdiv2DPoint *pt = (CvSubdiv2DPoint *) reader.ptr; /* check for virtual point. it is also check that the point exists */ if( pt->flags & CV_SUBDIV2D_VIRTUAL_POINT_FLAG ) { cvSetRemoveByPtr( (CvSet*)subdiv, pt ); } CV_NEXT_SEQ_ELEM( elem_size, reader ); } subdiv->is_geometry_valid = 0; __END__; }
static void cvSubdiv2DDeleteEdge( CvSubdiv2D * subdiv, CvSubdiv2DEdge edge ) { CvQuadEdge2D *quadedge = (CvQuadEdge2D *) (edge & ~3); if( !subdiv || !quadedge ) CV_Error( CV_StsNullPtr, "" ); cvSubdiv2DSplice( edge, cvSubdiv2DGetEdge( edge, CV_PREV_AROUND_ORG )); CvSubdiv2DEdge sym_edge = cvSubdiv2DSymEdge( edge ); cvSubdiv2DSplice( sym_edge, cvSubdiv2DGetEdge( sym_edge, CV_PREV_AROUND_ORG )); cvSetRemoveByPtr( (CvSet*)(subdiv->edges), quadedge ); subdiv->quad_edges--; }
void cvSetRemoveByPtr_wrap(CvSet * set_header , void * elem ){ cvSetRemoveByPtr(/*CvSet*//***/set_header , /*void*//***/elem); }