Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a43bf5c

Browse files
committed
Improve layout of HTML animation
1 parent 22906c2 commit a43bf5c

File tree

2 files changed

+68
-32
lines changed

2 files changed

+68
-32
lines changed

lib/matplotlib/_animation_data.py

Lines changed: 65 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -146,39 +146,74 @@
146146
"""
147147

148148

149+
# Style definitions for the HTML template
150+
STYLE_INCLUDE = """
151+
<style>
152+
.animation {
153+
display: inline-block;
154+
text-align: center;
155+
}
156+
input[type=range].anim-slider {
157+
width: 374px;
158+
margin-left: auto;
159+
margin-right: auto;
160+
}
161+
.anim-buttons {
162+
margin: 8px 0px;
163+
}
164+
.anim-buttons button {
165+
padding: 0;
166+
width: 36px;
167+
}
168+
.anim-state label {
169+
margin-right: 8px;
170+
}
171+
.anim-state input {
172+
margin: 0;
173+
vertical-align: middle;
174+
}
175+
</style>
176+
"""
177+
178+
149179
# HTML template for HTMLWriter
150180
DISPLAY_TEMPLATE = """
151-
<div class="animation" align="center">
152-
<img id="_anim_img{id}">
153-
<br>
154-
<input id="_anim_slider{id}" type="range" style="width:350px"
181+
<div class="animation">
182+
<img id="_anim_img{id}">
183+
<div class="anim-controls">
184+
<input id="_anim_slider{id}" type="range" class="anim-slider"
155185
name="points" min="0" max="1" step="1" value="0"
156186
onchange="anim{id}.set_frame(parseInt(this.value));"></input>
157-
<br>
158-
<button onclick="anim{id}.slower()"><i class="fa fa-minus"></i></button>
159-
<button onclick="anim{id}.first_frame()"><i class="fa fa-fast-backward">
160-
</i></button>
161-
<button onclick="anim{id}.previous_frame()">
162-
<i class="fa fa-step-backward"></i></button>
163-
<button onclick="anim{id}.reverse_animation()">
164-
<i class="fa fa-play fa-flip-horizontal"></i></button>
165-
<button onclick="anim{id}.pause_animation()"><i class="fa fa-pause">
166-
</i></button>
167-
<button onclick="anim{id}.play_animation()"><i class="fa fa-play"></i>
168-
</button>
169-
<button onclick="anim{id}.next_frame()"><i class="fa fa-step-forward">
170-
</i></button>
171-
<button onclick="anim{id}.last_frame()"><i class="fa fa-fast-forward">
172-
</i></button>
173-
<button onclick="anim{id}.faster()"><i class="fa fa-plus"></i></button>
174-
<form action="#n" name="_anim_loop_select{id}" class="anim_control">
175-
<input type="radio" name="state"
176-
value="once" {once_checked}> Once </input>
177-
<input type="radio" name="state"
178-
value="loop" {loop_checked}> Loop </input>
179-
<input type="radio" name="state"
180-
value="reflect" {reflect_checked}> Reflect </input>
181-
</form>
187+
<div class="anim-buttons">
188+
<button onclick="anim{id}.slower()"><i class="fa fa-minus"></i></button>
189+
<button onclick="anim{id}.first_frame()"><i class="fa fa-fast-backward">
190+
</i></button>
191+
<button onclick="anim{id}.previous_frame()">
192+
<i class="fa fa-step-backward"></i></button>
193+
<button onclick="anim{id}.reverse_animation()">
194+
<i class="fa fa-play fa-flip-horizontal"></i></button>
195+
<button onclick="anim{id}.pause_animation()"><i class="fa fa-pause">
196+
</i></button>
197+
<button onclick="anim{id}.play_animation()"><i class="fa fa-play"></i>
198+
</button>
199+
<button onclick="anim{id}.next_frame()"><i class="fa fa-step-forward">
200+
</i></button>
201+
<button onclick="anim{id}.last_frame()"><i class="fa fa-fast-forward">
202+
</i></button>
203+
<button onclick="anim{id}.faster()"><i class="fa fa-plus"></i></button>
204+
</div>
205+
<form action="#n" name="_anim_loop_select{id}" class="anim-state">
206+
<input type="radio" name="state" value="once" id="_anim_radio1_{id}"
207+
{once_checked}>
208+
<label for="_anim_radio1_{id}">Once</label>
209+
<input type="radio" name="state" value="loop" id="_anim_radio2_{id}"
210+
{loop_checked}>
211+
<label for="_anim_radio2_{id}">Loop</label>
212+
<input type="radio" name="state" value="reflect" id="_anim_radio3_{id}"
213+
{reflect_checked}>
214+
<label for="_anim_radio3_{id}">Reflect</label>
215+
</form>
216+
</div>
182217
</div>
183218
184219
@@ -202,6 +237,7 @@
202237
</script>
203238
"""
204239

240+
205241
INCLUDED_FRAMES = """
206242
for (var i=0; i<{Nframes}; i++){{
207243
frames[i] = "{frame_dir}/frame" + ("0000000" + i).slice(-7) +

lib/matplotlib/animation.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333

3434
import numpy as np
3535

36-
from matplotlib._animation_data import (DISPLAY_TEMPLATE, INCLUDED_FRAMES,
37-
JS_INCLUDE)
36+
from matplotlib._animation_data import (
37+
DISPLAY_TEMPLATE, INCLUDED_FRAMES, JS_INCLUDE, STYLE_INCLUDE)
3838
from matplotlib import cbook, rcParams, rcParamsDefault, rc_context
3939

4040

@@ -923,7 +923,7 @@ def communicate(self):
923923
interval = 1000 // self.fps
924924

925925
with open(self.outfile, 'w') as of:
926-
of.write(JS_INCLUDE)
926+
of.write(JS_INCLUDE + STYLE_INCLUDE)
927927
of.write(DISPLAY_TEMPLATE.format(id=uuid.uuid4().hex,
928928
Nframes=Nframes,
929929
fill_frames=fill_frames,

0 commit comments

Comments
 (0)