* Precise Seam: new full-coverage policy for Seam Blocked
A Seam Blocked modifier that covers a whole perimeter now blocks it, like a
perimeter painted red all round, instead of being skipped. It overrides
painting and lower-priority modifiers, like Enforced and Neutral. A new
warning names the modifier: "Seam Blocked modifier "<name>" of "<object>"
covers an entire perimeter". It is shown only when a perimeter stays
entirely Blocked after all weak modifiers. The full-containment warning now
covers only Center, Left and Right.
* Precise Seam: fix seams on perimeters blocked all round
- SeamComparator::is_first_not_much_worse() compares the types first, so two
Blocked candidates fall through like Neutral ones. On a perimeter blocked
all round, by a whole Seam Blocked modifier or by red painting, Random put
the seam on the closing vertex of every layer and Aligned stopped aligning.
- The whole-perimeter Blocked warning flags only the highest whole zone, the
one in effect. A lower whole zone it overwrites is no longer reported, and
the candidate scan runs only when that zone is Blocked.
- The warning msgids take the type name from the menu's "Seam Blocked" msgid.
- PreciseSeamWarnings::set() shares the load-before-store idiom, and every
weak segment records its modifier.
- Tests: a whole Blocked perimeter gets the seams of an unmarked one under
every seam position; overwritten whole Blocked zones are not reported.
---------
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>