classify/protos.h

Go to the documentation of this file.
00001 
00019 #ifndef PROTOS_H
00020 #define PROTOS_H
00021 
00022 /*----------------------------------------------------------------------
00023               I n c l u d e s
00024 ----------------------------------------------------------------------*/
00025 #include "bitvec.h"
00026 #include "cutil.h"
00027 
00028 /*----------------------------------------------------------------------
00029               T y p e s
00030 ----------------------------------------------------------------------*/
00031 
00036 typedef BIT_VECTOR *CONFIGS;
00037 
00044 typedef struct
00045 {
00046   FLOAT32 A;
00047   FLOAT32 B;
00048   FLOAT32 C;
00049   FLOAT32 X;
00050   FLOAT32 Y;
00051   FLOAT32 Angle;
00052   FLOAT32 Length;
00053 } PROTO_STRUCT;
00054 
00059 typedef PROTO_STRUCT *PROTO;
00060 
00065 typedef struct
00066 {
00067   INT16 NumProtos;
00068   INT16 MaxNumProtos;
00069   PROTO Prototypes;
00070   INT16 NumConfigs;
00071   INT16 MaxNumConfigs;
00072   CONFIGS Configurations;
00073 } CLASS_STRUCT;
00074 
00079 typedef CLASS_STRUCT *CLASS_TYPE;
00084 typedef CLASS_STRUCT *CLASSES;
00085 
00086 /*----------------------------------------------------------------------
00087               C o n s t a n t s
00088 ----------------------------------------------------------------------*/
00089 #define NUMBER_OF_CLASSES  256
00090 #define Y_OFFSET           -40.0
00091 #define FEATURE_SCALE      100.0
00092 
00093 /*----------------------------------------------------------------------
00094               V a r i a b l e s
00095 ----------------------------------------------------------------------*/
00096 extern CLASS_STRUCT TrainingData[];
00097 
00098 /*----------------------------------------------------------------------
00099               M a c r o s
00100 ----------------------------------------------------------------------*/
00104 #define AddProtoToConfig(Pid,Config)   \
00105 (SET_BIT (Config, Pid))
00106 
00110 #define RemoveProtoFromConfig(Pid,Config) \
00111 (reset_bit (Config, Pid))
00112 
00116 #define ClassOfChar(Char)            \
00117 ((TrainingData [Char].NumProtos) ? \
00118    (& TrainingData [Char])         : \
00119    NO_CLASS)
00120 
00126 #define ProtoIn(Class,Pid)  \
00127 (& (Class)->Prototypes [Pid])
00128 
00134 #define ConfigIn(Class,Cid)  \
00135 ((Class)->Configurations [Cid])
00136 
00142 #define NumProtosIn(Class)  \
00143 ((Class)->NumProtos)
00144 
00150 #define NumConfigsIn(Class)  \
00151 ((Class)->NumConfigs)
00152 
00160 #define CoefficientA(Proto)  \
00161 ((Proto)->A)
00162 
00170 #define CoefficientB(Proto)  \
00171 ((Proto)->B)
00172 
00180 #define CoefficientC(Proto)  \
00181 ((Proto)->C)
00182 
00188 #define ProtoAngle(Proto)  \
00189 ((Proto)->Angle)
00190 
00196 #define ProtoX(Proto)  \
00197 ((Proto)->X)
00198 
00204 #define ProtoY(Proto)  \
00205 ((Proto)->Y)
00206 
00212 #define  ProtoLength(Proto)  \
00213 ((Proto)->Length)
00214 
00220 #define PrintProto(Proto)                      \
00221 (cprintf ("X=%4.2f, Y=%4.2f, Angle=%4.2f",    \
00222          ProtoX      (Proto),                \
00223          ProtoY      (Proto),                \
00224          ProtoLength (Proto),                \
00225          ProtoAngle  (Proto)))                \
00226 
00227 
00233 #define PrintProtoLine(Proto)             \
00234 (cprintf ("A=%4.2f, B=%4.2f, C=%4.2f",   \
00235          CoefficientA (Proto),           \
00236          CoefficientB (Proto),           \
00237          CoefficientC (Proto)))           \
00238 
00239 /*----------------------------------------------------------------------
00240               F u n c t i o n s
00241 ----------------------------------------------------------------------*/
00242 int AddConfigToClass(CLASS_TYPE Class); 
00243 
00244 int AddProtoToClass(CLASS_TYPE Class); 
00245 
00246 FLOAT32 ClassConfigLength(CLASS_TYPE Class, BIT_VECTOR Config); 
00247 
00248 FLOAT32 ClassProtoLength(CLASS_TYPE Class); 
00249 
00250 void CopyProto(PROTO Src, PROTO Dest); 
00251 
00252 void FillABC(PROTO Proto); 
00253 
00254 void FreeClass(CLASS_TYPE Class); 
00255 
00256 void FreeClassFields(CLASS_TYPE Class); 
00257 
00258 void InitPrototypes(); 
00259 
00260 CLASS_TYPE NewClass(int NumProtos, int NumConfigs); 
00261 
00262 void PrintProtos(CLASS_TYPE Class); 
00263 
00264 void ReadClassFile(); 
00265 
00266 void ReadClassFromFile(FILE *File, char ClassChar); 
00267 
00268 void ReadConfigs(register FILE *File, CLASS_TYPE Class); 
00269 
00270 void ReadProtos(register FILE *File, CLASS_TYPE Class); 
00271 
00272 int SplitProto(CLASS_TYPE Class, int OldPid); 
00273 
00274 void WriteOldConfigFile(FILE *File, CLASS_TYPE Class); 
00275 
00276 void WriteOldProtoFile(FILE *File, CLASS_TYPE Class); 
00277 
00278 /*
00279 #if defined(__STDC__) || defined(__cplusplus)
00280 # define _ARGS(s) s
00281 #else
00282 # define _ARGS(s) ()
00283 #endif*/
00284 
00285 /* protos.c *
00286 int AddConfigToClass
00287   _ARGS((CLASS_TYPE Class));
00288 
00289 int AddProtoToClass
00290   _ARGS((CLASS_TYPE Class));
00291 
00292 FLOAT32 ClassConfigLength
00293   _ARGS((CLASS_TYPE Class,
00294   BIT_VECTOR Config));
00295 
00296 FLOAT32 ClassProtoLength
00297   _ARGS((CLASS_TYPE Class));
00298 
00299 void CopyProto
00300   _ARGS((PROTO Src,
00301   PROTO Dest));
00302 
00303 void FillABC
00304   _ARGS((PROTO Proto));
00305 
00306 void FreeClass
00307   _ARGS((CLASS_TYPE Class));
00308 
00309 void FreeClassFields
00310   _ARGS((CLASS_TYPE Class));
00311 
00312 void InitPrototypes
00313   _ARGS((void));
00314 
00315 CLASS_TYPE NewClass
00316   _ARGS((int NumProtos,
00317   int NumConfigs));
00318 
00319 void PrintProtos
00320   _ARGS((CLASS_TYPE Class));
00321 
00322 void ReadClassFile
00323   _ARGS((void));
00324 
00325 void ReadClassFromFile
00326   _ARGS((FILE *File,
00327   int ClassChar));
00328 
00329 void ReadConfigs
00330   _ARGS((FILE *File,
00331   CLASS_TYPE Class));
00332 
00333 void ReadProtos
00334   _ARGS((FILE *File,
00335   CLASS_TYPE Class));
00336 
00337 int SplitProto
00338   _ARGS((CLASS_TYPE Class,
00339   int OldPid));
00340 
00341 void WriteOldConfigFile
00342   _ARGS((FILE *File,
00343   CLASS_TYPE Class));
00344 
00345 void WriteOldProtoFile
00346   _ARGS((FILE *File,
00347   CLASS_TYPE Class));
00348 
00349 #undef _ARGS
00350 */
00351 #endif

Generated on Wed Feb 28 19:49:10 2007 for Tesseract by  doxygen 1.5.1