@@ -18,19 +18,25 @@ export class ScaleHandler implements DraggingHandler {
18
18
let hside = gizmo . hside ;
19
19
let vside = gizmo . vside ;
20
20
console . log ( hside , object ?. name )
21
+
21
22
if ( hside === undefined || vside === undefined ) {
22
23
this . _object = null ;
23
24
return ;
24
25
}
25
- this . _object = object ;
26
26
27
+ this . _object = object ;
27
28
28
29
// inverting axis
29
30
if ( object . scale . x < 0 ) {
30
31
if ( hside == HSide . Left ) hside = HSide . Right ;
31
32
else if ( hside == HSide . Right ) hside = HSide . Left ;
32
33
}
33
34
35
+ if ( object . scale . y < 0 ) {
36
+ if ( vside == VSide . Top ) vside = VSide . Bottom ;
37
+ else if ( vside == VSide . Bottom ) vside = VSide . Top ;
38
+ }
39
+
34
40
this . _vside = vside ;
35
41
this . _hside = hside ;
36
42
@@ -44,15 +50,18 @@ export class ScaleHandler implements DraggingHandler {
44
50
if ( hside === HSide . Right ) {
45
51
pivotx = 0 ;
46
52
x = object . x - object . pivot . x * object . scale . x ;
47
- y = object . y - object . pivot . y ;
48
-
49
-
50
53
} else if ( hside === HSide . Left ) {
51
- const originalWidth = object . width / object . scale . x ;
52
- pivotx = Math . abs ( originalWidth ) ;
53
-
54
+ pivotx = Math . abs ( object . width / object . scale . x ) ;
54
55
x = object . x + object . width - object . pivot . x * object . scale . x ;
55
- y = object . y - object . pivot . y ;
56
+ }
57
+
58
+ if ( vside === VSide . Bottom ) {
59
+ pivoty = 0 ;
60
+ y = object . y - object . pivot . y * object . scale . y ;
61
+
62
+ } else if ( vside === VSide . Top ) {
63
+ pivoty = Math . abs ( object . height / object . scale . y ) ;
64
+ y = object . y + object . height - object . pivot . y * object . scale . y ;
56
65
}
57
66
58
67
object . pivot . set ( pivotx , pivoty ) ;
@@ -79,11 +88,15 @@ export class ScaleHandler implements DraggingHandler {
79
88
let dx = 0 ;
80
89
if ( this . _hside === HSide . Left ) dx = lastPoint . x - newPoint . x ;
81
90
else if ( this . _hside === HSide . Right ) dx = newPoint . x - lastPoint . x ;
91
+
92
+ let dy = 0 ;
93
+ if ( this . _vside === VSide . Top ) dy = lastPoint . y - newPoint . y ;
94
+ else if ( this . _vside === VSide . Bottom ) dy = newPoint . y - lastPoint . y ;
82
95
// if (this._corner == Corner.BottomRight) dx = newPoint.x - lastPoint.x;
83
96
// else if (this._corner === Corner.BottomLeft) dx = lastPoint.x - newPoint.x;
84
97
// const dx = newPoint.x - lastPoint.x; // bottom right
85
98
// const dx = lastPoint.x - newPoint.x; // bottom left
86
- const dy = newPoint . y - lastPoint . y ;
99
+ // const dy = newPoint.y - lastPoint.y;
87
100
this . _point = newPoint ;
88
101
89
102
this . _object . updateTransform ( ) ;
0 commit comments