MCPcopy
hub / github.com/midrender/revideo / zoomInTransition

Function zoomInTransition

packages/core/src/transitions/zoomInTransition.ts:16–48  ·  view source on GitHub ↗
(area: BBox, duration = 0.6)

Source from the content-addressed store, hash-verified

14 * @param duration - The duration of the transition.
15 */
16export function* zoomInTransition(area: BBox, duration = 0.6): ThreadGenerator {
17 const scale = useScene().getSize().div(area.size);
18
19 const currentPosition = Vector2.createSignal(area.position);
20 const currentScale = Vector2.createSignal(Vector2.one.div(scale));
21 const previousPosition = Vector2.createSignal(0);
22 const previousScale = Vector2.createSignal(1);
23 const alpha = createSignal(0);
24
25 const endTransition = useTransition(
26 ctx => {
27 ctx.globalAlpha = clampRemap(0.1, 0.5, 0, 1, alpha());
28 ctx.translate(currentPosition.x(), currentPosition.y());
29 ctx.scale(currentScale.x(), currentScale.y());
30 },
31 ctx => {
32 ctx.globalAlpha = clampRemap(0.5, 0.9, 1, 0, alpha());
33 ctx.translate(previousPosition.x(), previousPosition.y());
34 ctx.scale(previousScale.x(), previousScale.y());
35 },
36 );
37
38 const timing = (v: number) => easeInOutCubic(v * v);
39 yield* all(
40 currentPosition(Vector2.zero, duration, timing),
41 previousPosition(area.position.flipped.mul(scale), duration, timing),
42 currentScale(1, duration, timing),
43 previousScale(scale, duration, timing),
44 alpha(1, duration, linear),
45 );
46
47 endTransition();
48}

Callers

nothing calls this directly

Calls 13

useSceneFunction · 0.90
createSignalFunction · 0.90
useTransitionFunction · 0.90
clampRemapFunction · 0.90
allFunction · 0.90
divMethod · 0.80
translateMethod · 0.80
getSizeMethod · 0.65
createSignalMethod · 0.65
xMethod · 0.45
yMethod · 0.45
scaleMethod · 0.45

Tested by

no test coverage detected