Lines Matching refs:edge
2979 CvGraphEdge *edge = vtx->first;
2980 if( !edge )
2982 cvGraphRemoveEdgeByPtr( graph, edge->vtx[0], edge->vtx[1] );
3014 CvGraphEdge *edge = vtx->first;
3017 if( !edge )
3019 cvGraphRemoveEdgeByPtr( graph, edge->vtx[0], edge->vtx[1] );
3030 /* Find a graph edge given pointers to the ending vertices: */
3036 CvGraphEdge *edge = 0;
3056 edge = start_vtx->first;
3057 for( ; edge; edge = edge->next[ofs] )
3059 ofs = start_vtx == edge->vtx[1];
3060 assert( ofs == 1 || start_vtx == edge->vtx[0] );
3061 if( edge->vtx[1] == end_vtx )
3067 return edge;
3071 /* Find an edge in the graph given indices of the ending vertices: */
3075 CvGraphEdge *edge = 0;
3089 edge = cvFindGraphEdgeByPtr( graph, start_vtx, end_vtx );
3093 return edge;
3097 /* Given two vertices, return the edge
3107 CvGraphEdge *edge = 0;
3126 CV_CALL( edge = cvFindGraphEdgeByPtr( graph, start_vtx, end_vtx ));
3127 if( edge )
3137 CV_CALL( edge = (CvGraphEdge*)cvSetNew( (CvSet*)(graph->edges) ));
3138 assert( edge->flags >= 0 );
3140 edge->vtx[0] = start_vtx;
3141 edge->vtx[1] = end_vtx;
3142 edge->next[0] = start_vtx->first;
3143 edge->next[1] = end_vtx->first;
3144 start_vtx->first = end_vtx->first = edge;
3146 delta = (graph->edges->elem_size - sizeof(*edge))/sizeof(int);
3150 CV_MEMCPY_INT( edge + 1, _edge + 1, delta );
3151 edge->weight = _edge->weight;
3156 CV_ZERO_INT( edge + 1, delta );
3157 edge->weight = 1.f;
3165 *_inserted_edge = edge;
3170 /* Given two vertices, return the edge
3202 /* Remove the graph edge connecting two given vertices: */
3211 CvGraphEdge *edge, *next_edge, *prev_edge;
3226 for( ofs = prev_ofs = 0, prev_edge = 0, edge = start_vtx->first; edge != 0;
3227 prev_ofs = ofs, prev_edge = edge, edge = edge->next[ofs] )
3229 ofs = start_vtx == edge->vtx[1];
3230 assert( ofs == 1 || start_vtx == edge->vtx[0] );
3231 if( edge->vtx[1] == end_vtx )
3235 if( !edge )
3238 next_edge = edge->next[ofs];
3244 for( ofs = prev_ofs = 0, prev_edge = 0, edge = end_vtx->first; edge != 0;
3245 prev_ofs = ofs, prev_edge = edge, edge = edge->next[ofs] )
3247 ofs = end_vtx == edge->vtx[1];
3248 assert( ofs == 1 || end_vtx == edge->vtx[0] );
3249 if( edge->vtx[0] == start_vtx )
3253 assert( edge != 0 );
3255 next_edge = edge->next[ofs];
3261 cvSetRemoveByPtr( graph->edges, edge );
3267 /* Remove the graph edge connecting two given vertices: */
3294 CvGraphEdge *edge;
3304 for( edge = vertex->first, count = 0; edge; )
3307 edge = CV_NEXT_GRAPH_EDGE( edge, vertex );
3321 CvGraphEdge *edge;
3335 for( edge = vertex->first, count = 0; edge; )
3338 edge = CV_NEXT_GRAPH_EDGE( edge, vertex );
3350 CvGraphEdge* edge;
3528 CvGraphEdge* edge;
3536 edge = scanner->edge;
3545 edge = vtx->first;
3551 scanner->edge = vtx->first;
3558 while( edge )
3560 dst = edge->vtx[vtx == edge->vtx[0]];
3562 if( !CV_IS_GRAPH_EDGE_VISITED(edge) )
3564 // Check that the edge is outgoing:
3565 if( !CV_IS_GRAPH_ORIENTED( scanner->graph ) || dst != edge->vtx[0] )
3567 edge->flags |= CV_GRAPH_ITEM_VISITED_FLAG;
3572 item.edge = edge;
3583 scanner->edge = edge;
3596 (edge->flags & CV_GRAPH_FORWARD_EDGE_FLAG) ?
3598 edge->flags &= ~CV_GRAPH_FORWARD_EDGE_FLAG;
3603 scanner->edge = edge;
3614 edge->flags |= CV_GRAPH_FORWARD_EDGE_FLAG;
3618 edge = CV_NEXT_GRAPH_EDGE( edge, vtx );
3621 if( !edge ) /* need to backtrack */
3634 edge = item.edge;
3640 scanner->edge = edge;
3641 scanner->dst = edge->vtx[vtx == edge->vtx[0]];
3665 scanner->edge = 0;
3734 CvGraphEdge* edge = (CvGraphEdge*)reader.ptr;
3736 CvGraphVtx* new_org = ptr_buffer[edge->vtx[0]->flags];
3737 CvGraphVtx* new_dst = ptr_buffer[edge->vtx[1]->flags];
3738 CV_CALL( cvGraphAddEdgeByPtr( result, new_org, new_dst, edge, &dstedge ));
3739 dstedge->flags = edge->flags;