/****************************************************************************** ** Filename: fxdefs.h ** Purpose: Generic interface definitions for feature extractors ** Author: Dan Johnson ** History: Fri Jan 19 09:04:14 1990, DSJ, Created. ** ** (c) Copyright Hewlett-Packard Company, 1988. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. ******************************************************************************/ #ifndef FXDEFS_H #define FXDEFS_H /*----------------------------------------------------------------------------- Include Files and Type Defines -----------------------------------------------------------------------------*/ #include "tessclas.h" #include "general.h" /* define different modes for feature extractor - learning vs. classifying */ #define LEARN_MODE 0 #define CLASSIFY_MODE 1 /** define a data structure to hold line statistics. These line statistics are used to normalize character outlines to a standard size and position relative to the baseline of the text. */ typedef struct { SPLINE_SPEC *Baseline; /**< collection of splines describing baseline */ SPLINE_SPEC *XHeightLine; /**< collection of splines describing x-height */ FLOAT32 xheight; /**< avg. distance from x-height to baseline */ FLOAT32 AscRise; /**< avg. distance from ascenders to x-height */ FLOAT32 DescDrop; /**< avg. distance from baseline to descenders */ /* always a negative number */ TEXTROW *TextRow; /**< kludge - only needed by fx for fast matcher */ /* should be removed later */ } LINE_STATS; /** define a generic character description as a char pointer. In reality, it will be a pointer to some data structure. Paired feature extractors/matchers need to agree on the data structure to be used, however, the high level classifier does not need to know the details of this data structure. */ typedef char *CHAR_FEATURES; /*----------------------------------------------------------------------------- Macros -----------------------------------------------------------------------------*/ /** macro to change and monitor the mode of the feature extractor. In general, learn mode smears features which would otherwise be discrete in nature; classify mode does not.*/ #define SetExtractMode(M) (ExtractMode = (M)) #define EnterLearnMode (SetExtractMode (LEARN_MODE)) #define EnterClassifyMode (SetExtractMode (CLASSIFY_MODE)) /*---------------------------------------------------------------------------- Public Function Prototypes -----------------------------------------------------------------------------*/ void SetupExtractors(); void GetLineStatsFromRow(TEXTROW *Row, LINE_STATS *LineStats); /* #if defined(__STDC__) || defined(__cplusplus) # define _ARGS(s) s #else # define _ARGS(s) () #endif*/ /* fxdefs.c void GetLineStatsFromRow _ARGS((TEXTROW *Row, LINE_STATS *LineStats)); #undef _ARGS */ /*----------------------------------------------------------------------------- Global Data Definitions and Declarations -----------------------------------------------------------------------------*/ /** flag to control learn mode vs. classify mode */ extern int ExtractMode; #endif