mirror of
https://github.com/storytold/designcraft.git
synced 2026-10-25 10:46:50 -06:00
Combines contour-wrap (wrap side, contour type, multi-segment lines) with the placed-graphic and nested wraps already on next. - crates/compose/src/lib.rs: exclusion() and the new graphic_exclusion() share wrap_exclusion() (offsets, spine sides resolved per page, contour). wrap_obstacles() builds every obstacle through them: the item's own wrap, the graphic's wrap around its shown bounds, and children of groups and pasted-into frames with their own transform (depth <= 64). Contour type Bounding Box follows the shown part of the graphic, other types the frame path. wrap_slot() returns all free segments (free_slots) and steps 1 pt at a time beside a contour; Jump Object stays in wrap_slot only. The line loop keeps grid gyoudori, Jump Object leading steps and grid snapping for a line's first segment, and carries the other segments (with the line's grid end) to the next lines; estimate_slots() lists every segment through wrap_slot(). hit_line() breaks ties between segments by x, used by hit() next to the drop-cap lookup. - crates/compose/src/tests.rs: both sides' tests; the hostile-geometry test builds Exclusion with side and contour. - crates/engine/src/cmd/object.rs: object.textWrap is text_wrap() with mode/side/contour (unknown values are errors) and content?, applied to the frame's or the graphic's wrap. - crates/idml/src/import.rs, export.rs: ContourOption/@ContourType is read in the shared text_wrap() and written by text_wrap_pref() as a child of TextWrapPreference after Properties, so graphic wraps carry it too. - crates/idml/src/tests.rs: both sides' tests. tests/wrap.rs gains a test of a contour, right-side wrap on a placed graphic shown in part. - crates/ui-egui/src/panels/mod.rs: the Text Wrap panel's side and contour combos read the targeted wrap (tw), the graphic's when content is selected.