Browse Source

use deltas in transforms

main
Steve Ruiz 4 years ago
parent
commit
b45cef260a
2 changed files with 17 additions and 30 deletions
  1. 17
    25
      state/sessions/transform-session.ts
  2. 0
    5
      styles/globals.css

+ 17
- 25
state/sessions/transform-session.ts View File

@@ -43,16 +43,12 @@ export default class TransformSession extends BaseSession {
43 43
   }
44 44
 
45 45
   update(data: Data, point: number[]) {
46
-    const {
47
-      shapeBounds,
48
-      initialBounds,
49
-      currentPageId,
50
-      selectedIds,
51
-    } = this.snapshot
46
+    const { shapeBounds, initialBounds, currentPageId, selectedIds } =
47
+      this.snapshot
52 48
 
53 49
     const { shapes } = data.document.pages[currentPageId]
54 50
 
55
-    let [x, y] = point
51
+    const delta = vec.vec(this.origin, point)
56 52
 
57 53
     const {
58 54
       corners: { a, b },
@@ -63,39 +59,39 @@ export default class TransformSession extends BaseSession {
63 59
 
64 60
     switch (transformType) {
65 61
       case TransformEdge.Top: {
66
-        a[1] = y
62
+        a[1] = initialBounds.minY + delta[1]
67 63
         break
68 64
       }
69 65
       case TransformEdge.Right: {
70
-        b[0] = x
66
+        b[0] = initialBounds.maxX + delta[0]
71 67
         break
72 68
       }
73 69
       case TransformEdge.Bottom: {
74
-        b[1] = y
70
+        b[1] = initialBounds.maxY + delta[1]
75 71
         break
76 72
       }
77 73
       case TransformEdge.Left: {
78
-        a[0] = x
74
+        a[0] = initialBounds.minX + delta[0]
79 75
         break
80 76
       }
81 77
       case TransformCorner.TopLeft: {
82
-        a[1] = y
83
-        a[0] = x
78
+        a[0] = initialBounds.minX + delta[0]
79
+        a[1] = initialBounds.minY + delta[1]
84 80
         break
85 81
       }
86 82
       case TransformCorner.TopRight: {
87
-        b[0] = x
88
-        a[1] = y
83
+        a[1] = initialBounds.minY + delta[1]
84
+        b[0] = initialBounds.maxX + delta[0]
89 85
         break
90 86
       }
91 87
       case TransformCorner.BottomRight: {
92
-        b[1] = y
93
-        b[0] = x
88
+        b[0] = initialBounds.maxX + delta[0]
89
+        b[1] = initialBounds.maxY + delta[1]
94 90
         break
95 91
       }
96 92
       case TransformCorner.BottomLeft: {
97
-        a[0] = x
98
-        b[1] = y
93
+        a[0] = initialBounds.minX + delta[0]
94
+        b[1] = initialBounds.maxY + delta[1]
99 95
         break
100 96
       }
101 97
     }
@@ -160,12 +156,8 @@ export default class TransformSession extends BaseSession {
160 156
   }
161 157
 
162 158
   cancel(data: Data) {
163
-    const {
164
-      shapeBounds,
165
-      initialBounds,
166
-      currentPageId,
167
-      selectedIds,
168
-    } = this.snapshot
159
+    const { shapeBounds, initialBounds, currentPageId, selectedIds } =
160
+      this.snapshot
169 161
 
170 162
     const { shapes } = data.document.pages[currentPageId]
171 163
 

+ 0
- 5
styles/globals.css View File

@@ -1,6 +1 @@
1 1
 @import url("https://fonts.googleapis.com/css2?family=Recursive:wght@500;700&display=swap");
2
-
3
-:root {
4
-  --camera-zoom: 1;
5
-  --scale: calc(1 / var(--camera-zoom));
6
-}

Loading…
Cancel
Save