BOOL8 C_OUTLINE::operator< ( //winding number const C_OUTLINE & other //other outline ) const { inT16 count = 0; //winding count ICOORD pos; //position of point inT32 stepindex; //index to cstep if (!box.overlap (other.box)) return FALSE; //can't be contained if (stepcount == 0) return other.box.contains(this->box); pos = start; for (stepindex = 0; stepindex < stepcount && (count = other.winding_number (pos)) == INTERSECTING; stepindex++) pos += step (stepindex); //try all points if (count == INTERSECTING) { //all intersected pos = other.start; for (stepindex = 0; stepindex < other.stepcount && (count = winding_number (pos)) == INTERSECTING; stepindex++) //try other way round pos += other.step (stepindex); return count == INTERSECTING || count == 0; } return count != 0; }