diff --git a/animation/projects/package-lock.json b/animation/projects/package-lock.json index 7a61f91..7b0bb53 100644 --- a/animation/projects/package-lock.json +++ b/animation/projects/package-lock.json @@ -1,11 +1,11 @@ { - "name": "parallelism", + "name": "projects", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "parallelism", + "name": "projects", "version": "0.0.0", "dependencies": { "@lezer/cpp": "^1.1.2", diff --git a/animation/projects/src/std_function/project.meta b/animation/projects/src/std_function/project.meta new file mode 100644 index 0000000..7579bae --- /dev/null +++ b/animation/projects/src/std_function/project.meta @@ -0,0 +1,31 @@ +{ + "version": 0, + "shared": { + "background": "rgb(10,20,30)", + "range": [ + 0, + null + ], + "size": { + "x": 1920, + "y": 1080 + }, + "audioOffset": 0 + }, + "preview": { + "fps": 30, + "resolutionScale": 1 + }, + "rendering": { + "fps": 30, + "resolutionScale": 2, + "colorSpace": "srgb", + "exporter": { + "name": "@motion-canvas/ffmpeg", + "options": { + "fastStart": true, + "includeAudio": true + } + } + } +} \ No newline at end of file diff --git a/animation/projects/src/std_function/project.ts b/animation/projects/src/std_function/project.ts new file mode 100644 index 0000000..487161e --- /dev/null +++ b/animation/projects/src/std_function/project.ts @@ -0,0 +1,9 @@ +import { makeProject } from '@motion-canvas/core'; + +import '../../global.css'; + +import std_function from './scenes/std_function?scene'; + +export default makeProject({ + scenes: [std_function], +}); diff --git a/animation/projects/src/std_function/scenes/std_function.meta b/animation/projects/src/std_function/scenes/std_function.meta new file mode 100644 index 0000000..25c7da9 --- /dev/null +++ b/animation/projects/src/std_function/scenes/std_function.meta @@ -0,0 +1,5 @@ +{ + "version": 0, + "timeEvents": [], + "seed": 3221513550 +} \ No newline at end of file diff --git a/animation/projects/src/std_function/scenes/std_function.tsx b/animation/projects/src/std_function/scenes/std_function.tsx new file mode 100644 index 0000000..6d24fc9 --- /dev/null +++ b/animation/projects/src/std_function/scenes/std_function.tsx @@ -0,0 +1,180 @@ +import { makeScene2D, Code, LezerHighlighter, lines, Node, Rect, Txt, Line } from '@motion-canvas/2d'; +import { all, createRef, waitFor } from '@motion-canvas/core'; +import { MyStyle } from '../../styles'; +import { parser as parser_cpp } from '@lezer/cpp'; +import { DEFAULT } from '@motion-canvas/core/lib/signals'; +import { centerOn } from '../../utils'; + +import templateCode from '@lectures/std_function.md?snippet=std_function/template_button.cpp'; +import stdFunctionCode from '@lectures/std_function.md?snippet=std_function/std_function_button.cpp'; +import multiButtonCode from '@lectures/std_function.md?snippet=std_function/multi_button.cpp'; +import typeErasureCode from '@lectures/std_function.md?snippet=std_function/type_erasure.cpp'; + +const CppHighlighter = new LezerHighlighter(parser_cpp, MyStyle); + +export default makeScene2D(function* (view) { + const codeRef = createRef(); + + view.add( + + ); + + // Initial delay + yield* waitFor(1); + + // 1. Template Button + yield* centerOn(codeRef(), lines(3, 4), 1, 40); // template + yield* waitFor(3); + + yield* centerOn(codeRef(), [lines(16, 16), lines(6, 7)], 1, 40); // Callback on_click_; + yield* waitFor(3); + + yield* centerOn(codeRef(), [lines(16, 16), lines(6, 7), lines(9, 12)], 1, 40); // Callback on_click_; + yield* waitFor(3); + + yield* centerOn(codeRef(), [lines(24, 25)], 1, 40); // std::vector