mirror of
https://github.com/penpot/penpot.git
synced 2025-05-29 12:16:10 +02:00
✨ Enhance resize from center, work when locked proportions
This commit is contained in:
parent
25d8d76524
commit
e20f557bd6
1 changed files with 22 additions and 14 deletions
|
@ -303,11 +303,6 @@
|
||||||
(gpt/transform (gmt/rotate-matrix (- rotation)))
|
(gpt/transform (gmt/rotate-matrix (- rotation)))
|
||||||
(gpt/multiply handler-mult))
|
(gpt/multiply handler-mult))
|
||||||
|
|
||||||
displacement (when center?
|
|
||||||
(-> (gpt/point (/ (:x deltav) (if (neg? (:x handler-mult)) 2 -2))
|
|
||||||
(/ (:y deltav) (if (neg? (:y handler-mult)) 2 -2)))
|
|
||||||
(gpt/transform (:transform shape))))
|
|
||||||
|
|
||||||
;; Resize vector
|
;; Resize vector
|
||||||
scalev (gpt/divide (gpt/add shapev deltav) shapev)
|
scalev (gpt/divide (gpt/add shapev deltav) shapev)
|
||||||
|
|
||||||
|
@ -320,22 +315,35 @@
|
||||||
|
|
||||||
scalev)
|
scalev)
|
||||||
|
|
||||||
|
;; Resize origin point given the selected handler
|
||||||
|
origin (handler-resize-origin (:selrect shape) handler)
|
||||||
|
|
||||||
|
shape-center (gsh/center-shape shape)
|
||||||
shape-transform (:transform shape (gmt/matrix))
|
shape-transform (:transform shape (gmt/matrix))
|
||||||
shape-transform-inverse (:transform-inverse shape (gmt/matrix))
|
shape-transform-inverse (:transform-inverse shape (gmt/matrix))
|
||||||
|
|
||||||
shape-center (gsh/center-shape shape)
|
;; If we want resize from center, displace the shape
|
||||||
|
;; so it is still centered after resize.
|
||||||
|
displacement (when center?
|
||||||
|
(-> shape-center
|
||||||
|
(gpt/subtract origin)
|
||||||
|
(gpt/multiply scalev)
|
||||||
|
(gpt/add origin)
|
||||||
|
(gpt/subtract shape-center)
|
||||||
|
(gpt/multiply (gpt/point -1 -1))
|
||||||
|
(gpt/transform shape-transform)))
|
||||||
|
|
||||||
;; Resize origin point given the selected handler
|
origin (cond-> (gsh/transform-point-center origin shape-center shape-transform)
|
||||||
origin (-> (handler-resize-origin (:selrect shape) handler)
|
(some? displacement)
|
||||||
(gsh/transform-point-center shape-center shape-transform))]
|
(gpt/add displacement))
|
||||||
|
|
||||||
|
displacement (when (some? displacement)
|
||||||
|
(gmt/translate-matrix displacement))]
|
||||||
|
|
||||||
(rx/of (set-modifiers ids
|
(rx/of (set-modifiers ids
|
||||||
{:displacement (when displacement
|
{:displacement displacement
|
||||||
(gmt/translate-matrix displacement))
|
|
||||||
:resize-vector scalev
|
:resize-vector scalev
|
||||||
:resize-origin (if displacement
|
:resize-origin origin
|
||||||
(gpt/add origin displacement)
|
|
||||||
origin)
|
|
||||||
:resize-transform shape-transform
|
:resize-transform shape-transform
|
||||||
:resize-scale-text scale-text
|
:resize-scale-text scale-text
|
||||||
:resize-transform-inverse shape-transform-inverse}))))
|
:resize-transform-inverse shape-transform-inverse}))))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue