Artifact [865afceebb]

Artifact 865afceebb5fb715d696bf272727848c16eb41f0:




#include "line.h"
#include "boundary.h"

void
line_init(linetype *z)
{
  z->num_lines=0;
  z->line=NULL;
}

void 
line_addline(linetype *z, marklistptr list)
{
  int n=z->num_lines;
  marklistptr step,end;

  z->line=(marklistptr*)realloc(z->line,sizeof(marklistptr)*(n+1));
  z->line[n]=NULL;

  for(step=list;step; step=step->next){
    if(z->line[n]==NULL){
      end=marklist_addcopy(&z->line[n],step->data);
    } else {
      end=marklist_addcopy(&end,step->data);
    }
  }
  z->num_lines++;
}

void 
line_addmark(linetype *z, int n, marktype m)
{
  marklist_addcopy(&z->line[n],m);
}

void
line_dump(linetype *z)
{
  int i;
  fprintf(stderr,"z->num_lines: %d\n",z->num_lines);
  for(i=0;i<z->num_lines;i++){
    fprintf(stderr,"line %d: %d\n",i,marklist_length(z->line[i]));
  }
}


void
line_free(linetype *z)
{
  int i;
  for(i=0;i<z->num_lines;i++){
    marklist_free(&z->line[i]);
  }
  free(z->line);
  z->line=NULL;
  z->num_lines=0;
}


void
line_test()
{
  marktype im;
  marklistptr list=NULL;
  linetype z;

  marktype_readnamed("b.pbm",&im);
  list=extract_all_marks(list,im,1,8);

  line_init(&z);
  line_addline(&z,list);
  line_dump(&z);
  marklist_prune_under_area(&list,5,200);
  line_addline(&z,list);
  
  line_dump(&z);
  line_free(&z);

  fprintf(stderr,"line_test() finished\n");
}