30 #define NORMAL_X_HEIGHT (0.5)
31 #define NORMAL_BASELINE (0.0)
68 #define AverageOf(A,B) (((A) + (B)) / 2)
71 #define MF_SCALE_FACTOR (NORMAL_X_HEIGHT / BASELINE_SCALE)
74 #define DegenerateOutline(O) (((O) == NIL_LIST) || ((O) == list_rest(O)))
75 #define PointAt(O) ((MFEDGEPT *) first_node (O))
76 #define NextPointAfter(E) (list_rest (E))
77 #define MakeOutlineCircular(O) (set_rest (last (O), (O)))
80 #define ClearMark(P) ((P)->ExtremityMark = FALSE)
81 #define MarkPoint(P) ((P)->ExtremityMark = TRUE)
93 LIST ConvertedOutlines,
void NormalizeOutline(MFOUTLINE Outline, FLOAT32 XOrigin)
void ChangeDirection(MFOUTLINE Start, MFOUTLINE End, DIRECTION Direction)
MFOUTLINE NextDirectionChange(MFOUTLINE EdgePoint)
void UpdateOutlineStats(register OUTLINE_STATS *OutlineStats, register FLOAT32 x1, register FLOAT32 x2, register FLOAT32 y1, register FLOAT32 y2)
void FreeMFOutline(void *agr)
LIST ConvertOutlines(TESSLINE *Outline, LIST ConvertedOutlines, OUTLINETYPE OutlineType)
void FilterEdgeNoise(MFOUTLINE Outline, FLOAT32 NoiseSegmentLength)
void ComputeDirection(MFEDGEPT *Start, MFEDGEPT *Finish, FLOAT32 MinSlope, FLOAT32 MaxSlope)
void FindDirectionChanges(MFOUTLINE Outline, FLOAT32 MinSlope, FLOAT32 MaxSlope)
void CharNormalizeOutline(MFOUTLINE Outline, FLOAT32 XCenter, FLOAT32 YCenter, FLOAT32 XScale, FLOAT32 YScale)
MFEDGEPT * NewEdgePoint()
void ComputeOutlineStats(LIST Outlines, OUTLINE_STATS *OutlineStats)
void FreeOutlines(LIST Outlines)
MFOUTLINE NextExtremity(MFOUTLINE EdgePoint)
void FinishOutlineStats(register OUTLINE_STATS *OutlineStats)
LIST ConvertBlob(TBLOB *Blob)
void ComputeBlobCenter(TBLOB *Blob, TPOINT *BlobCenter)
MFOUTLINE ConvertOutline(TESSLINE *Outline)
void MarkDirectionChanges(MFOUTLINE Outline)
void InitOutlineStats(OUTLINE_STATS *OutlineStats)