Nous avons à disposition un fichier PDF contenant les différentes images de l'animation qu'on souhaite produire. On le transforme en un ensemble d'image SVG avec la commande suivante (sous linux) :
pdf2svg delaunay.pdf svg/delaunay%d.svg all
On configure l'apparence de l'animation et des boutons avec un peu de CSS.
#anim1 {
position:relative;
margin: 10px auto;
width: 500px;
padding: 0;
}
.message {
background : #6e6e6e;
color : white;
font-size : 90%;
margin-top : 5px;
padding : 6px;
border-radius : 4px;
}
#anim1_boutons{
text-align:center;
}
.SVGbutton{
text-align:center;
margin-top:5px;
}
button.SVGplay {
color: #ffffff;
background: #6e6e6e;
padding: 5px 10px 5px 10px;
border: solid #575757 0.1px;
text-decoration: none;
float:none;
height: 50px;
}
button.SVGplay:hover {
background: #951515;
text-decoration: none;
transition:0.4s;
color:white;
}
img.boutonSVG{
vertical-align:middle;height:20px;padding:0px;background-color:transparent;
}
L'animation est construite par une instance d'Animation
et contrôlée par une instance de SVGPlayerButtons
. Ce player est configurable et propose une palette étendue d'actions.
Ici nous allons le personnaliser en choisissant les éléments à afficher et ce qu'on met dans les boutons tout en personnalisant l'affichage grâce au code CSS ci-dessus.
On ne va garder pour cette animation que les boutons d'avance et de recule, image par image.
$(window).load(function() {
a1 = new Animation("anim1","svg/delaunay",1,16);
a1.loopOnload();
a1.delai = 1500;
b1 = new SVGPlayerButtons(a1);
b1.stopBtn = false;
b1.playBtn = false;
b1.startBtn = true;
b1.endBtn = true;
b1.speedupBtn = false;
b1.slowdownBtr = false;
b1.previousBtn = true;
b1.nextBtn = true;
b1.nextBtnName = '<img src="player-3.svg" class="boutonSVG"/>';
b1.previousBtnName = '<img src="player-4.svg" class="boutonSVG"/>';
b1.startBtnName = '<img src="player-6.svg" class="boutonSVG"/>';
b1.endBtnName = '<img src="player-5.svg" class="boutonSVG"/>';
b1.connect();
});
Les images SVG que l'on place dans les boutons de contrôle sont produite grâce à MetaPost et son disponible en bas de page (code et images).
Le code HTML est le suivant :
<div id="anim1">
<img src="svg/delaunay0.svg" alt="animation1" style="top:0;left:0;width:500px"/>
<div class="message" id="anim1_message">Images en cours de chargement...</div>
<div id="anim1_boutons"></div>
</div>