27 #include "edge/BgDefaults.h"
29 #include "edge/BgImage.h"
31 #include "edge/BgEdge.h"
33 #include "edge/BgEdgeList.h"
37 BgEdgeList::BgEdgeList()
51 BgEdgeList::~BgEdgeList()
61 for (
int i=0; i<nEdges_; i++)
65 edge = edgelist_->next_;
79 void BgEdgeList::AddEdge(
float* edge,
int nPoints)
87 tedge->SetPoints(edge, nPoints);
107 crtedge_->next_ = tedge;
117 void BgEdgeList::AddEdge(
int* edge,
int nPoints)
123 tedge =
new BgEdge();
125 tedge->SetPoints(edge, nPoints);
145 crtedge_->next_ = tedge;
155 void BgEdgeList::SetGradient(
float* grx,
float* gry,
float* mark,
int ncol)
167 for (i=0; i<nEdges_; i++)
171 it->SetGradient(grx, gry, mark, ncol);
181 void BgEdgeList::RemoveShortEdges(
int minp)
203 for (
int i=1; i<nEdges_; i++)
207 if (it2->nPoints_ < minp)
211 it1->next_ = it2->next_;
235 if (edgelist_->nPoints_ < minp)
241 edgelist_ = edgelist_->next_;
255 void BgEdgeList::SetBinImage(BgImage* image)
271 unsigned char* im=image->im_;
297 for (i=0; i<nEdges_; i++)
301 ite = crtedge_->edge_;
303 for (j=0; j<crtedge_->nPoints_; j++)
315 crtedge_=crtedge_->next_;
323 bool BgEdgeList::SaveEdgeList(
char* edgeFile)
337 fp=fopen(edgeFile,
"wb");
341 for (i=0; i<nEdges_; i++)
345 length = crtedge->nPoints_;
347 for (j=0; j<length; j++)
351 fprintf(fp,
"%d %d %d\n", *((crtedge->edge_)+2*j), *((crtedge->edge_)+2*j+1), i);
355 crtedge = crtedge->next_;
367 void BgEdgeList::GetAllEdgePoints(
int* x,
int* y,
int* n)
385 for (i=0; i<nEdges_; i++)
389 length = crtedge->nPoints_;
391 edgep = crtedge->edge_;
393 for (j=0; j<length; j++)
399 y[*n] = edgep[2*j+1];
405 crtedge = crtedge->next_;
413 void BgEdgeList::SetNoMark(
void)
427 for (i=0; i<nEdges_; i++)
431 length = crtedge->nPoints_;
433 mark = crtedge->mark_ =
new unsigned char[length];
435 crtedge->isMarkSet_ =
true;
437 for (j=0; j<length; j++)
445 crtedge = crtedge->next_;