src/classify/mfoutline.cpp
void MarkDirectionChanges(MFOUTLINE Outline) {
  MFOUTLINE Current;
  MFOUTLINE Last;
  MFOUTLINE First;

  if (DegenerateOutline(Outline)) {
    return;
  }

  First = NextDirectionChange(Outline);
  Last = First;
  do {
    Current = NextDirectionChange(Last);
    PointAt(Current)->MarkPoint();
    Last = Current;
  } while (Last != First);

}
/*---------------------------------------------------------------------------*/
/**
 * This routine searches through the specified outline and finds
 * the points at which the outline changes direction.  These
 * points are then marked as "extremities".  This routine is
 * used as an alternative to FindExtremities().  It forces the
 * endpoints of the microfeatures to be at the direction
 * changes rather than at the midpoint between direction
 * changes.
 * @param Outline   micro-feature outline to analyze
 */
This routine searches through the specified outline and finds
the points at which the outline changes direction.  These
points are then marked as "extremities".  This routine is
used as an alternative to FindExtremities().  It forces the
endpoints of the microfeatures to be at the direction
changes rather than at the midpoint between direction
changes.
@param Outline   micro-feature outline to analyze
This routine searches through the specified outline and finds the points at which the outline changes direction . These points are then marked as " extremities " . This routine is used as an alternative to FindExtremities () . It forces the endpoints of the microfeatures to be at the direction changes rather than at the midpoint between direction changes . @param Outline micro - feature outline to analyze
void MarkDirectionChanges(MFOUTLINE Outline) {
  MFOUTLINE Current;
  MFOUTLINE Last;
  MFOUTLINE First;
  if (DegenerateOutline(Outline)) {
    return;
  }
  First = NextDirectionChange(Outline);
  Last = First;
  do {
    Current = NextDirectionChange(Last);
    PointAt(Current)->MarkPoint();
    Last = Current;
  } while (Last != First);
}
void MarkDirectionChanges ( MFOUTLINE Outline ) { MFOUTLINE Current ; MFOUTLINE Last ; MFOUTLINE First ; if ( DegenerateOutline ( Outline ) ) { return ; } First = NextDirectionChange ( Outline ) ; Last = First ; do { Current = NextDirectionChange ( Last ) ; PointAt ( Current ) -> MarkPoint ( ) ; Last = Current ; } while ( Last != First ) ; }
This routine searches through the specified outline and finds
 the points at which the outline changes direction.
This routine searches through the specified outline and finds the points at which the outline changes direction .