Skip to content

Commit 2e82526

Browse files
authored
Add files via upload
1 parent 4453260 commit 2e82526

File tree

3 files changed

+195
-3
lines changed

3 files changed

+195
-3
lines changed

index.html

Lines changed: 85 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
66

7-
<title>reveal.js</title>
7+
<title>TQC2021</title>
88

99
<link rel="stylesheet" href="dist/reset.css">
1010
<link rel="stylesheet" href="dist/reveal.css">
@@ -16,11 +16,12 @@
1616
<body>
1717
<div class="reveal">
1818
<div class="slides">
19-
<section>Slide 1</section>
20-
<section>Slide 2</section>
19+
<script src="js/add_video_slide.js" slide_scene="Title"></script>
20+
<script src="js/add_video_slide.js" slide_scene="ExampleSlide"></script>
2121
</div>
2222
</div>
2323

24+
2425
<script src="dist/reveal.js"></script>
2526
<script src="plugin/notes/notes.js"></script>
2627
<script src="plugin/markdown/markdown.js"></script>
@@ -32,9 +33,90 @@
3233
Reveal.initialize({
3334
hash: true,
3435

36+
transition: 'none',
37+
progress: false,
38+
3539
// Learn about plugins: https://revealjs.com/plugins/
3640
plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]
3741
});
3842
</script>
43+
<script src="js/video_slide.js"></script>
3944
</body>
4045
</html>
46+
47+
48+
49+
50+
<!--
51+
52+
53+
54+
55+
56+
<!doctype html>
57+
<html>
58+
<head>
59+
<meta charset="utf-8">
60+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
61+
62+
<title>Manim Video Slide</title>
63+
64+
<link rel="stylesheet" href="css/reset.css">
65+
<link rel="stylesheet" href="css/reveal.css">
66+
<link rel="stylesheet" href="css/theme/black.css">
67+
68+
<link rel="stylesheet" href="lib/css/monokai.css">
69+
70+
<script>
71+
var link = document.createElement( 'link' );
72+
link.rel = 'stylesheet';
73+
link.type = 'text/css';
74+
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
75+
document.getElementsByTagName( 'head' )[0].appendChild( link );
76+
</script>
77+
</head>
78+
<body>
79+
<div class="reveal">
80+
81+
<div class="slides">
82+
83+
<section>
84+
<h1>Animated Slide</h1>
85+
<h3>Demo presentation</h3>
86+
<p>
87+
<small>Created by Anjan Dwaraknath</small>
88+
</p>
89+
</section>
90+
91+
<script src="js/add_video_slide.js" slide_scene="SimpleVideoSlide"></script>
92+
93+
<script src="js/add_video_slide.js" slide_scene="MathTest"></script>
94+
95+
<section>Slide 1</section>
96+
<section>Slide 2</section>
97+
</div>
98+
</div>
99+
100+
<script src="js/reveal.js"></script>
101+
102+
<script>
103+
// More info about config & dependencies:
104+
// - https://github.com/hakimel/reveal.js#configuration
105+
// - https://github.com/hakimel/reveal.js#dependencies
106+
Reveal.initialize({
107+
dependencies: [
108+
{ src: 'plugin/markdown/marked.js' },
109+
{ src: 'plugin/markdown/markdown.js' },
110+
{ src: 'plugin/notes/notes.js', async: true },
111+
{ src: 'plugin/highlight/highlight.js', async: true }
112+
]
113+
});
114+
115+
</script>
116+
117+
<script src="js/video_slide.js"></script>
118+
</body>
119+
</html>
120+
121+
122+
-->

manim_slide.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
from manim import *
2+
3+
import os
4+
import shutil
5+
6+
config.video_dir= "./video_slides"
7+
config.flush_cache = True
8+
config.disable_caching = True
9+
class SlideScene(Scene):
10+
breaks=[0]
11+
video_slides_dir="./video_slides"
12+
def setup(self):
13+
super(SlideScene, self).setup()
14+
self.breaks=[0]
15+
16+
def slide_break(self,t=0.5):
17+
self.breaks+=[self.renderer.time+t/2]
18+
self.wait(t)
19+
20+
def save_times(self):
21+
self.breaks+=[self.renderer.time]
22+
out=""
23+
dirname=os.path.dirname(self.renderer.file_writer.movie_file_path)
24+
for i in range(len(self.breaks)-1):
25+
out+=f"<p class=\"fragment\" type='video' time_start={self.breaks[i]} time_end={self.breaks[i+1]}></p>\n"
26+
with open("%s/%s.txt"%(dirname,type(self).__name__),'w') as f:
27+
f.write(out)
28+
29+
def copy_files(self):
30+
if self.video_slides_dir !=None:
31+
dirname=os.path.dirname(self.renderer.file_writer.movie_file_path)
32+
slide_name = type(self).__name__
33+
if not os.path.exists(self.video_slides_dir):
34+
os.makedirs(self.video_slides_dir)
35+
shutil.copy2(os.path.join(dirname,"%s.mp4"%slide_name), self.video_slides_dir)
36+
shutil.copy2(os.path.join(dirname,"%s.txt"%slide_name), self.video_slides_dir)
37+
38+
def tear_down(self):
39+
super(SlideScene, self).tear_down()
40+
self.save_times()
41+
42+
def print_end_message(self):
43+
super(SlideScene, self).print_end_message()
44+
self.copy_files()
45+
46+
47+
class Title(SlideScene):
48+
def construct(self):
49+
title = Tex(r"\bfseries\textsc{Title}").scale(1.25).shift(2.5*UP)
50+
arxiv = Tex(r"\bfseries\texttt{arXiv:????.?????}").scale(.75).shift(1.5*UP)
51+
name = Tex("Christopher T.\ Chubb")
52+
ethz=SVGMobject("ethz_logo_white.svg").scale(1/3).next_to(1.5*DOWN,LEFT,buff=2.5)
53+
udes=SVGMobject("Université_de_Sherbrooke_(logo).svg").scale(1/3).next_to(1.5*DOWN,RIGHT,buff=2.5)
54+
55+
self.add(title,arxiv,name,ethz,udes)
56+
57+
self.play(*[FadeOut(x) for x in [title,arxiv,name,ethz,udes]],run_time=0.5)
58+
self.wait(0.5)
59+
60+
class ExampleSlide(SlideScene):
61+
def construct(self):
62+
circle = Circle(radius=1, color=BLUE)
63+
dot = Dot()
64+
dot2 = dot.copy().shift(RIGHT)
65+
self.add(dot)
66+
67+
line = Line([3, 0, 0], [5, 0, 0])
68+
self.add(line)
69+
70+
self.play(GrowFromCenter(circle))
71+
self.slide_break()
72+
self.play(Transform(dot, dot2))
73+
self.slide_break()
74+
self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear)
75+
self.slide_break()
76+
self.play(Rotating(dot, about_point=[2, 0, 0]), run_time=1.5)
77+
self.wait()
78+

talk.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from manim_slide import *
2+
3+
class Title(SlideScene):
4+
def construct(self):
5+
title = Tex(r"\bfseries\textsc{Manim\_slides example}").scale(1.25).shift(2.5*UP)
6+
arxiv = Tex(r"\bfseries\texttt{arXiv:????.?????}").scale(.75).shift(1.5*UP)
7+
name = Tex("Christopher T.\ Chubb")
8+
9+
self.add(title,arxiv,name)
10+
11+
self.play(*[FadeOut(x) for x in [title,arxiv,name]],run_time=0.5)
12+
self.wait(0.5)
13+
14+
class ExampleSlide(SlideScene):
15+
def construct(self):
16+
circle = Circle(radius=1, color=BLUE)
17+
dot = Dot()
18+
dot2 = dot.copy().shift(RIGHT)
19+
self.add(dot)
20+
21+
line = Line([3, 0, 0], [5, 0, 0])
22+
self.add(line)
23+
24+
self.play(GrowFromCenter(circle))
25+
self.slide_break()
26+
self.play(Transform(dot, dot2))
27+
self.slide_break()
28+
self.play(MoveAlongPath(dot, circle), run_time=2, rate_func=linear)
29+
self.slide_break()
30+
self.play(Rotating(dot, about_point=[2, 0, 0]), run_time=1.5)
31+
self.wait()
32+

0 commit comments

Comments
 (0)