reference/ocr-new/Zone.cc
author viric@llimona
Thu, 18 May 2006 23:12:51 +0200
changeset 0 6b8091ca909a
permissions -rw-r--r--
Init from working directory of svn repository.

#include "Zone.h"
#include "system.h"


Zone::Zone(Point ulp, Point lrp, ZonedPage * parentPage)
     :fparent(parentPage) , ful(ulp), flr(lrp)
     { 
       fpage = new Page;
       convertMap(fparent->bmap(),fpage->rmap(), ful, flr);
       convertMap(fpage->rmap(), fpage->bmap(), NOPNT, NOPNT); 
     }

void Zone::buildPage(ZonedPage * parentPage)
     // ful and flr must already be set
{
  if (fpage != NULL) 
    delete fpage;
  fparent = parentPage;
  fpage = new Page;
  convertMap(fparent->bmap(),fpage->rmap(), ful, flr);
  convertMap(fpage->rmap(), fpage->bmap(), NOPNT, NOPNT); 
  
}

Zone::~Zone()
{
  delete fpage;
}

Zones::Zones()
  :List()
{}

Zone * Zones::findZone(int x, int y)
{
  for (ListElement *ptr = first; ptr != NULL && ptr->item!=NULL; 
       ptr = ptr->next) 
    {
    
      Zone * item = (Zone *) ptr->item;
      if ( x >= item->ul().x() && x <= item->lr().x()  &&
	   y >= item->ul().y() && y <= item->lr().y())
	return item;
    }	
      return NULL;

}


Zones::~Zones()
{
  for (ListElement *ptr = first; ptr != NULL && ptr->item!=NULL; 
       ptr = ptr->next) {
    if (ptr->item != NULL)
      delete (Zone *) (ptr->item);
     }
  while(!IsEmpty())
    Remove();
}