Tesseract 3.02

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Typedefs | Functions | Variables
featdefs.h File Reference
`#include "ocrfeatures.h"`

Go to the source code of this file.

## Classes

struct | CHAR_DESC_STRUCT
struct | FEATURE_DEFS_STRUCT

## Macros

#define | NUM_FEATURE_TYPES 4
#define | ILLEGAL_SHORT_NAME 2000

## Typedefs

typedef CHAR_DESC_STRUCT * | CHAR_DESC
typedef FEATURE_DEFS_STRUCT * | FEATURE_DEFS

## Functions

void | InitFeatureDefs (FEATURE_DEFS_STRUCT *featuredefs)
void | FreeCharDescription (CHAR_DESC CharDesc)
CHAR_DESC | NewCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs)
bool | ValidCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs, CHAR_DESC CharDesc)
void | WriteCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs, FILE *File, CHAR_DESC CharDesc)
CHAR_DESC | ReadCharDescription (const FEATURE_DEFS_STRUCT &FeatureDefs, FILE *File)
int | ShortNameToFeatureType (const FEATURE_DEFS_STRUCT &FeatureDefs, const char *ShortName)

## Variables

const char * | kMicroFeatureType
const char * | kCNFeatureType
const char * | kIntFeatureType
const char * | kGeoFeatureType
const FEATURE_DESC_STRUCT | MicroFeatureDesc
const FEATURE_DESC_STRUCT | PicoFeatDesc
const FEATURE_DESC_STRUCT | CharNormDesc
const FEATURE_DESC_STRUCT | OutlineFeatDesc
const FEATURE_DESC_STRUCT | IntFeatDesc
const FEATURE_DESC_STRUCT | GeoFeatDesc

## Macro Definition Documentation

#define ILLEGAL_SHORT_NAME 2000

Definition at line 34 of file featdefs.h.

#define NUM_FEATURE_TYPES 4

Include Files and Type Defines —————————————————————————-

Definition at line 27 of file featdefs.h.

## Typedef Documentation

typedef CHAR_DESC_STRUCT* CHAR_DESC

Definition at line 46 of file featdefs.h.

typedef FEATURE_DEFS_STRUCT* FEATURE_DEFS

Definition at line 54 of file featdefs.h.

## Function Documentation

void FreeCharDescription | ( | CHAR_DESC | CharDesc | ) |

Release the memory consumed by the specified character description and all of the features in that description.

Parameters:

  CharDesc | character description to be deallocated

Globals:

- none

Note:
  Exceptions: none
  History: Wed May 23 13:52:19 1990, DSJ, Created.

Definition at line 141 of file featdefs.cpp.

{
int i;
if (CharDesc) {
for (i = 0; i < CharDesc->NumFeatureSets; i++)
FreeFeatureSet (CharDesc->FeatureSets[i]);
Efree(CharDesc);
}
} /* FreeCharDescription */

void InitFeatureDefs | ( | FEATURE_DEFS_STRUCT * | featuredefs | ) |

Definition at line 121 of file featdefs.cpp.

{
featuredefs->NumFeatureTypes = NUM_FEATURE_TYPES;
for (int i = 0; i < NUM_FEATURE_TYPES; ++i) {
featuredefs->FeatureDesc[i] = DescDefs[i];
}
}

CHAR_DESC NewCharDescription | ( | const FEATURE_DEFS_STRUCT & | FeatureDefs | ) |

Allocate a new character description, initialize its feature sets to be empty, and return it.

Globals:

- none

Returns:
  New character description structure.

Note:
  Exceptions: none
  History: Wed May 23 15:27:10 1990, DSJ, Created.

Definition at line 164 of file featdefs.cpp.

{
CHAR_DESC CharDesc;
int i;
CharDesc = (CHAR_DESC) Emalloc (sizeof (CHAR_DESC_STRUCT));
CharDesc->NumFeatureSets = FeatureDefs.NumFeatureTypes;
for (i = 0; i < CharDesc->NumFeatureSets; i++)
CharDesc->FeatureSets[i] = NULL;
return (CharDesc);
} /* NewCharDescription */

CHAR_DESC ReadCharDescription | ( | const FEATURE_DEFS_STRUCT & | FeatureDefs,
|  | FILE * | File
| ) |  |

Read a character description from File, and return a data structure containing this information. The data is formatted as follows:

         NumberOfSets
                 ShortNameForSet1 Set1
                 ShortNameForSet2 Set2
                 ...

Globals:

- none

Parameters:

  FeatureDefs | definitions of feature types/extractors
  File | open text file to read character description from

Returns:
  Character description read from File.

Note:
  Exceptions:
  - ILLEGAL_NUM_SETS
  History: Wed May 23 17:32:48 1990, DSJ, Created.

Definition at line 261 of file featdefs.cpp.

{
int NumSetsToRead;
char ShortName[FEAT_NAME_SIZE];
CHAR_DESC CharDesc;
int Type;
if (fscanf (File, "%d", &NumSetsToRead) != 1 ||
NumSetsToRead < 0 || NumSetsToRead > FeatureDefs.NumFeatureTypes)
DoError (ILLEGAL_NUM_SETS, "Illegal number of feature sets");
CharDesc = NewCharDescription(FeatureDefs);
for (; NumSetsToRead > 0; NumSetsToRead--) {
fscanf (File, "%s", ShortName);
Type = ShortNameToFeatureType(FeatureDefs, ShortName);
CharDesc->FeatureSets[Type] =
ReadFeatureSet (File, FeatureDefs.FeatureDesc[Type]);
}
return (CharDesc);
} // ReadCharDescription

int ShortNameToFeatureType | ( | const FEATURE_DEFS_STRUCT & | FeatureDefs,
|  | const char * | ShortName
| ) |  |

Search thru all features currently defined and return the feature type for the feature with the specified short name. Trap an error if the specified name is not found.

Globals:

- none

Parameters:

  FeatureDefs | definitions of feature types/extractors
  ShortName | short name of a feature type

Returns:
  Feature type which corresponds to ShortName.

Note:
  Exceptions:
  - ILLEGAL_SHORT_NAME
  History: Wed May 23 15:36:05 1990, DSJ, Created.

Definition at line 300 of file featdefs.cpp.

{
int i;
for (i = 0; i < FeatureDefs.NumFeatureTypes; i++)
if (!strcmp ((FeatureDefs.FeatureDesc[i]->ShortName), ShortName))
return (i);
DoError (ILLEGAL_SHORT_NAME, "Illegal short name for a feature");
return 0;
} // ShortNameToFeatureType

bool ValidCharDescription | ( | const FEATURE_DEFS_STRUCT & | FeatureDefs,
|  | CHAR_DESC | CharDesc
| ) |  |

Definition at line 219 of file featdefs.cpp.

{
bool anything_written = false;
bool well_formed = true;
for (int Type = 0; Type < CharDesc->NumFeatureSets; Type++) {
if (CharDesc->FeatureSets[Type]) {
for (int i = 0; i < CharDesc->FeatureSets[Type]->NumFeatures; i++) {
FEATURE feat = CharDesc->FeatureSets[Type]->Features[i];
for (int p = 0; p < feat->Type->NumParams; p++) {
if (isnan(feat->Params[p]) || isinf(feat->Params[p]))
well_formed = false;
else
anything_written = true;
}
}
}
}
return anything_written && well_formed;
} /* ValidCharDescription */

void WriteCharDescription | ( | const FEATURE_DEFS_STRUCT & | FeatureDefs,
|  | FILE * | File,
|  | CHAR_DESC | CharDesc
| ) |  |

Write a textual representation of CharDesc to File. The format used is to write out the number of feature sets which will be written followed by a representation of each feature set.

Each set starts with the short name for that feature followed by a description of the feature set. Feature sets which are not present are not written.

Globals:

- none

Parameters:

  FeatureDefs | definitions of feature types/extractors
  File | open text file to write CharDesc to
  CharDesc | character description to write to File

Note:
  Exceptions: none
  History: Wed May 23 17:21:18 1990, DSJ, Created.

Definition at line 200 of file featdefs.cpp.

{
int Type;
int NumSetsToWrite = 0;
for (Type = 0; Type < CharDesc->NumFeatureSets; Type++)
if (CharDesc->FeatureSets[Type])
NumSetsToWrite++;
fprintf (File, " %d\n", NumSetsToWrite);
for (Type = 0; Type < CharDesc->NumFeatureSets; Type++)
if (CharDesc->FeatureSets[Type]) {
fprintf (File, "%s ", (FeatureDefs.FeatureDesc[Type])->ShortName);
WriteFeatureSet (File, CharDesc->FeatureSets[Type]);
}
} /* WriteCharDescription */

## Variable Documentation

const FEATURE_DESC_STRUCT CharNormDesc

const FEATURE_DESC_STRUCT GeoFeatDesc

const FEATURE_DESC_STRUCT IntFeatDesc

const char* kCNFeatureType

Definition at line 42 of file featdefs.cpp.

const char* kGeoFeatureType

Definition at line 44 of file featdefs.cpp.

const char* kIntFeatureType

Definition at line 43 of file featdefs.cpp.

const char* kMicroFeatureType

Definition at line 41 of file featdefs.cpp.

const FEATURE_DESC_STRUCT MicroFeatureDesc

Global Data Definitions and Declarations —————————————————————————-

const FEATURE_DESC_STRUCT OutlineFeatDesc

const FEATURE_DESC_STRUCT PicoFeatDesc