@omnimedia/omnitool 1.1.0-71 → 1.1.0-73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omnimedia/omnitool",
3
- "version": "1.1.0-71",
3
+ "version": "1.1.0-73",
4
4
  "description": "open source video processing tools",
5
5
  "license": "MIT",
6
6
  "author": "Przemysław Gałęzki",
@@ -28,7 +28,7 @@ export class Compositor {
28
28
 
29
29
  #transitions: Map<string, ReturnType<typeof makeTransition>> = new Map()
30
30
  // objects rendered for current Composition
31
- #activeObjects = new Map<number, Container>()
31
+ #activeObjects = new Map<number, {sprite: Container, dispose: () => void}>()
32
32
 
33
33
  async composite(
34
34
  composition: Composition,
@@ -55,7 +55,7 @@ export class Compositor {
55
55
  * get object for current Composition
56
56
  * */
57
57
  getActiveObject(id: Id) {
58
- return this.#activeObjects.get(id)
58
+ return this.#activeObjects.get(id)?.sprite
59
59
  }
60
60
 
61
61
  async #renderLayer(
@@ -93,11 +93,11 @@ export class Compositor {
93
93
  layer: Extract<Layer, {kind: 'text'}>,
94
94
  parent: Container,
95
95
  ) {
96
- const {sprite, dispose} = this.#findOrCreate<Text>(layer)!
96
+ const sprite = this.#findOrCreate<Text>(layer)!
97
97
  this.#applyTransform(sprite, layer.matrix)
98
98
  parent.addChild(sprite)
99
99
  return {
100
- dispose: () => dispose()
100
+ dispose: () => {}
101
101
  }
102
102
  }
103
103
 
@@ -105,16 +105,20 @@ export class Compositor {
105
105
  layer: Extract<Layer, {kind: 'image'}>,
106
106
  parent: Container,
107
107
  ) {
108
+ const sprite = this.#findOrCreate<Sprite>(layer)!
109
+
110
+ if (sprite.texture && sprite.texture !== Texture.EMPTY) {
111
+ sprite.texture.destroy(true)
112
+ }
113
+
108
114
  const texture = Texture.from(layer.frame)
109
- const {sprite, dispose} = this.#findOrCreate<Sprite>(layer)!
110
115
  sprite.texture = texture
111
116
  this.#applyTransform(sprite, layer.matrix)
112
117
  parent.addChild(sprite)
118
+
113
119
  return {
114
120
  dispose: () => {
115
- texture.destroy(true)
116
121
  layer.frame.close()
117
- dispose()
118
122
  }
119
123
  }
120
124
  }
@@ -154,44 +158,41 @@ export class Compositor {
154
158
  text.eventMode = "static"
155
159
  const down = () => this.onPointerDown.publish({id: layer.id, object: text})
156
160
  const up = () => this.onPointerUp.publish({id: layer.id, object: text})
161
+
157
162
  text.on("pointerdown", down)
158
163
  text.on("pointerup", up)
159
164
 
160
- return {
161
- sprite: this.#activeObjects
162
- .set(layer.id, text)
163
- .get(layer.id) as T,
164
- dispose: () => {
165
- text.off("pointerdown", down)
166
- text.off("pointerup", up)
167
- }
168
- }
165
+ return this.#activeObjects
166
+ .set(layer.id, {
167
+ sprite: text,
168
+ dispose() {
169
+ text.off("pointerdown", down)
170
+ text.off("pointerup", up)
171
+ }
172
+ })
173
+ .get(layer.id)?.sprite as T
169
174
  }
170
175
  case 'image': {
171
176
  const sprite = new Sprite()
172
177
  sprite.eventMode = "static"
173
178
  const down = () => this.onPointerDown.publish({id: layer.id, object: sprite})
174
179
  const up = () => this.onPointerUp.publish({id: layer.id, object: sprite})
180
+
175
181
  sprite.on("pointerdown", down)
176
182
  sprite.on("pointerup", up)
177
183
 
178
- return {
179
- sprite: this.#activeObjects
180
- .set(layer.id, sprite)
181
- .get(layer.id) as T,
182
- dispose: () => {
183
- sprite.off("pointerdown", down)
184
- sprite.off("pointerup", up)
185
- }
186
- }
184
+ return this.#activeObjects
185
+ .set(layer.id, {
186
+ sprite,
187
+ dispose() {
188
+ sprite.off("pointerdown", down)
189
+ sprite.off("pointerup", up)
190
+ }
191
+ })
192
+ .get(layer.id)?.sprite as T
187
193
  }
188
194
  }
189
- } else return {
190
- sprite: object,
191
- dispose: () => {}} as {
192
- sprite: T
193
- dispose: () => void
194
- }
195
+ } else return object.sprite as T
195
196
  }
196
197
 
197
198
  #collectIds(layers: Layer | Composition): Set<number> {
@@ -210,10 +211,12 @@ export class Compositor {
210
211
  #cleanup(activeIds: Set<number>) {
211
212
  for (const id of this.#activeObjects.keys()) {
212
213
  if (!activeIds.has(id)) {
213
- const obj = this.#activeObjects.get(id)!
214
- obj.destroy(true)
214
+ const {sprite, dispose} = this.#activeObjects.get(id)!
215
+ dispose()
216
+ sprite.destroy(true)
215
217
  this.#activeObjects.delete(id)
216
218
  }
217
219
  }
218
220
  }
219
221
  }
222
+