Skip to content

Commit 971112a

Browse files
fix(painter): derive group rotation origin from block geometry
When a shape group's transform lacks explicit dimensions, fall back to the block geometry minus effect extents instead of the fragment geometry, which includes the extents and skewed the transform origin.
1 parent 43f20be commit 971112a

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

‎packages/layout-engine/painters/dom/src/renderer.ts‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2973,8 +2973,12 @@ export class DomPainter {
29732973
innerWrapper.style.transformOrigin = 'center';
29742974
if (block.drawingKind === 'shapeGroup' && block.groupTransform) {
29752975
const effectExtent = block.effectExtent ?? { left: 0, top: 0, right: 0, bottom: 0 };
2976-
const originX = effectExtent.left + (block.groupTransform.width ?? fragment.geometry.width) / 2;
2977-
const originY = effectExtent.top + (block.groupTransform.height ?? fragment.geometry.height) / 2;
2976+
const groupWidth =
2977+
block.groupTransform.width ?? Math.max(0, block.geometry.width - effectExtent.left - effectExtent.right);
2978+
const groupHeight =
2979+
block.groupTransform.height ?? Math.max(0, block.geometry.height - effectExtent.top - effectExtent.bottom);
2980+
const originX = effectExtent.left + groupWidth / 2;
2981+
const originY = effectExtent.top + groupHeight / 2;
29782982
innerWrapper.style.transformOrigin = `${originX}px ${originY}px`;
29792983
}
29802984

0 commit comments

Comments
 (0)