reference/ocr-simple/Word.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.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     1
#include "list.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#include "system.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     3
#include "stdio.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     4
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     5
Word::Word(char * word, int length)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
/*--------------------------------------------------------------
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
Primary Purpose: Create a word without pointers to components
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     8
Arguments: word is the character string length is the length
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     9
Words created with this constructor have a null component pointer
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
Rev: 12/5/95
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
---------------------------------------------------------------*/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    14
      charCount = 1;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    15
      characters = new char[length];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
      strcpy(characters, word);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    17
      confid = 255;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    18
      ul = NOPNT;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
      lr = NOPNT;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
      character = NULL;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
      mispelled = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    24
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
Word::Word(ListElement * first, int length)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
/*--------------------------------------------------------------
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    27
Primary Purpose:
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
Arguments: first is a pointer to a ListElement that contains
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
the first Component in the word.  length is the number
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
of components in the word.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    31
Effects:  Sets all data members of the word class
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
Rev:  11/6/95
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
---------------------------------------------------------------*/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
      mispelled = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
      Component * firstComp = (Component *) first->item;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
      Component * item;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    38
      int i;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    39
      ListElement * ptr;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    41
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    42
      characters = new char[length+1];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
      character = new (Component *)[length];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
      charCount = length;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    45
      ul = firstComp->ul();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    46
      
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    47
      confid = 256;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    48
      
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    49
      for (i = 0, ptr = first; i < length; ptr = ptr->next, i++) 
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    50
	{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    51
	  item = (Component *)(ptr->item);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    52
	  characters[i] = item->asciiId();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    53
	  character[i] = item;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    54
	  if (item->confid() < confid)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    55
	    confid = item->confid();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    56
	  if(item->ul().y() < ul.y())
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    57
	    ul.y() = item->ul().y();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    58
	  if(i == length-1)      // this is the last character
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    59
	    lr = item->lr();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    60
	}  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    61
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    62
      
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    63
      characters[length] = '\0';
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    64
      if(0)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    65
	printf("Identified a word: %s\n", characters);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    66
    
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    67
};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    68
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    69
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    70
 Word::~Word()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    71
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    72
  if (characters != NULL)delete characters;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    73
  if (character != NULL) delete character;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    74
};
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    75
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    76
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    77
Words::~Words()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    78
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    79
  for (ListElement *ptr = first; ptr != NULL; ptr = ptr->next) {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    80
    if (ptr->item != NULL)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    81
      delete (Word *) (ptr->item);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    82
     }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    83
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    84
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    85
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    86
int Words::writeWordPos(char * filename)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    87
/*--------------------------------------------------------------
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    88
Primary Purpose: Write word position, confidence length and string to file
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    89
Arguments: output file name
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    90
Return Value: 1 for success 0 for file
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    91
Effects: create and write out to filename each word in the following format
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    92
All numeric fields are in fixed columns 7 characters wide
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    93
      upperleft x pos
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    94
      upperleft y pos
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    95
      word confidence
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    96
      character count
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    97
      string  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    98
      \N
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    99
Rev: KM 11/25
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   100
---------------------------------------------------------------*/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   101
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   102
  FILE * outfile;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   103
  outfile = fopen(filename, "w");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   104
  if (outfile == NULL)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   105
      {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   106
	printf("Error openning %s", filename);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   107
	return 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   108
      }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   109
  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   110
  for (ListElement * ptr = first; ptr !=NULL; ptr = ptr->next)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   111
      {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   112
	Word * word = (Word *) ptr->item;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   113
	if (word->ul.x() == -1) continue; // dont print new lines.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   114
	fprintf(outfile, " %6d %6d %6d %6d %s\n", word->ul.x(), word->ul.y(),
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   115
		          word->confid, word->charCount, word->characters );
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   116
      }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   117
  fclose(outfile);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   118
  return 1;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   119
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   120
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   121
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   122
int Words::writeAscii(char * filename)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   123
/*--------------------------------------------------------------
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   124
Primary Purpose: Write word list to ascii file
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   125
Arguments: filename to write to
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   126
Return Value:  1 if successful 0 if unsuccessful
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   127
Effects: Writes words to fill in text format
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   128
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   129
Rev: 11/25 KM
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   130
---------------------------------------------------------------*/
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   131
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   132
  FILE * outfile;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   133
  outfile = fopen(filename, "w");
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   134
  Word * prev = (Word *) first->item;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   135
  if (outfile == NULL)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   136
      {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   137
	printf("Error openning %s", filename);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   138
	return 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   139
      }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   140
  
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   141
  for (ListElement * ptr = first; ptr !=NULL; ptr = ptr->next)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   142
      {
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   143
	Word * word = (Word *) ptr->item;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   144
	fprintf(outfile, "%s ", word->characters );
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   145
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   146
      }
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   147
  fclose(outfile);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   148
  return 1;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   149
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
   150
}