Commit Graph
5 Commits
Author SHA1 Message Date
SBaksa 9bd5c479e3 OLE2FRAME: SCALE carries a frame with a uniform positive factor (review on #2587)
ole_frame_accepts took only a translation, so SCALE on a selection with a frame failed as a whole. A uniform positive scale keeps the frame axis-aligned and upper-left, so the corner rewrite handles it; rotation and mirroring are still refused. Tests: scale_carries_an_ole_frame_with_the_rest_of_the_selection, mocoro_scales_an_ole_frame, ole_frame_accepts_translations_and_uniform_positive_scales_only.
2026-11-03 15:45:05 +11:00
SBaksa b54adc5976 OLE2FRAME: MOCORO checks before it changes anything; a locked frame doesn't block in-place edits (review on #2587)
MOCORO refuses a rotate or scale step on an OLE frame up front, before an earlier move or copy
is applied. refuse_ole_frames ignores a frame on a locked layer for in-place edits, as
edit_entities does. Tests: mocoro_refuses_before_it_changes_anything,
a_locked_ole_frame_does_not_block_an_in_place_rotation.
2026-11-01 23:32:59 +11:00
SBaksa 7fdda542d3 OLE2FRAME: MOVE rewrites the corners in the OLE data only when they are the frame's corners (review on #2587)
The data layout is only known when its corners match the frame's groups; any other
header is left byte-identical while the tags still move. Test: move_leaves_ole_data_that_is_not_the_frames_corners_alone.
2026-11-01 23:32:58 +11:00
SBaksa afb24ee6e5 OLE2FRAME: MOVE also moves the corners inside the OLE data (review on #2587)
The OLE data (310 groups) starts with the frame's four corners. MOVE shifted groups 10/20/11/21 only, so
a DXF save wrote new corner groups beside a data header with the old position. The transform now
rewrites those doubles (x, y; z kept) in the decoded hex, keeping each chunk's length; malformed or
short data is left untouched.
2026-11-01 21:08:47 +11:00
SBaksa 87f3c087b2 OLE2FRAME: corners skip application groups; MOVE/COPY carry the frame, rotate/scale/mirror refuse it (review on #2587)
ole_frame read 10/20 and 11/21 from inside 102 groups; it now skips them as the DXF reader does.
A window-selected OLE2FRAME was left in place by MOVE/COPY. A DWG save writes the position from
the corner groups (checked by write + read-back), so MOVE/COPY now shift them; transforms that
would not keep it axis aligned return an error before anything changes.
2026-11-01 18:12:57 +11:00