7955f1dbd40d1795fb94a92fd189a00ea59c3835
[hacks/simpleWebSlides.git] / doc / demo.xhtml
1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
4 >
5 <html xmlns="http://www.w3.org/1999/xhtml">
6   <head>
7     <title>SimpleWebSlides</title>
8
9     <meta http-equiv="Content-Type"
10           content="text/html; charset=utf-8" />
11     <meta name="copyright"
12           content="Copyright &#169; 2013 Kim Nguyễn" />
13
14     <!-- Load jQuery -->
15     <script src="../jquery-1.9.1.min.js" type="text/javascript" ></script>
16
17     <!-- Initialize the library -->
18     <link rel="stylesheet" href="../simpleWebSlides.css" type="text/css"
19           media="all" />
20     <script src="../simpleWebSlides.js" type="text/javascript" >
21     </script>
22
23     <!-- Load a custom Theme -->
24     <link rel="stylesheet"  title="Web 2.0"
25           href="../themes/webTwoPointO.css"
26           type="text/css" />
27     <!-- Customize some templates and initialize -->
28
29     <script type="text/x-mathjax-config">
30       MathJax.Hub.Config({
31       tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
32       });
33     </script>
34
35     <script type="text/javascript"
36             src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML-full">
37     </script>
38
39     <script type="text/javascript">
40 /*
41       SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeVerticalSlide;
42       SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeFadeOutIn;
43 */
44       SWS.Config['sws-slide-change'] = SWS.Effects.slideChangeHorizontalSlide;
45       SWS.Config['sws-object-deactivate'] =  SWS.Effects.objectDeactivateFadeOut;
46       SWS.Config['sws-object-activate'] = SWS.Effects.objectActivateFadeIn;
47
48       //Ensures that we load SWS at the very end, after MathJax has
49       //been initialized
50       MathJax.Hub.Queue(function () {
51              SWS.Presentation.init();
52       });
53
54 // Some utility functions:
55 function set_color(o,c) {
56 var style = o.attr("style");
57 var a = style.split(";");
58 for(var i = 0; i &lt; a.length; i++){
59 if (a[i].indexOf("fill:") &gt;= 0){
60 a[i] = "fill: " + c;
61 break;
62 };
63 };
64 o.attr("style",a.join(";"));
65
66 };
67
68     </script>
69
70     <style type="text/css">
71       #css {
72       display:inline-block;
73       font-size: larger;
74       font-weight: bolder;
75       -webkit-transform: rotate(-20deg);
76       -moz-transform: rotate(-20deg);
77       }
78     </style>
79   </head>
80   <body>
81
82     <div class="sws-slide sws-cover sws-option-nofooter">
83       <div class="centerbox">
84         <h1>SimpleWebSlides</h1>
85         <h1>An <em>HTML</em><img style="height:28pt"
86              src="http://www.w3.org/html/logo/downloads/HTML5_Badge.svg" alt="5"/>
87           Presentation framework</h1>
88         <a href="mailto:kim@nguyen.vg">kim@nguyen.vg</a>
89       </div>
90     </div>
91
92     <!-- H1 below is hidden, used for table of content (TODO) -->
93     <h1>Introduction</h1>
94
95     <div class="sws-slide" >
96       <h1>What is it?</h1>
97       <em>SimpleWebSlides</em> is simple tool that allows
98       you to build funky presentations:
99       <ul>
100         <li class="sws-pause" >Write your presentations in (X)HTML5!</li>
101         <li class="sws-pause" >Theme to
102         your <span style='font-size:larger'>❤</span>'s content
103         with <em id="css">C S S</em>!</li>
104         <li class="sws-pause" >Create animations using Javascript &amp; jQuery!</li>
105       </ul>
106         <script type="text/javascript">
107           var zoom_title = function (canvas) {
108           var h1 = canvas.find("h1");
109           var old_size = h1.css('font-size');
110           h1.animate({"font-size":"80pt" }, 300)
111           .animate({"font-size":old_size }, 300);
112           };
113
114           SWS.Presentation.registerCallback(3, zoom_title);
115         </script>
116     </div>
117
118     <div class="sws-slide">
119       <h1>What's wrong with Beamer/LateX/Tikz?</h1>
120       <ul>
121         <li class="sws-pause">Does not easily support smooth
122         animations</li>
123         <li class="sws-pause">Hard to program/script </li>
124         <li class="sws-pause">Using modern fonts and UTF-8 is a nightmare</li>
125         <li class="sws-pause">Slow compilation times</li>
126         <li class="sws-pause">Difficult to integrate several media
127           (videos, vector graphics, sounds,…)
128         </li>
129       </ul>
130       <p  class="sws-pause">But wait! I'm loosing all those nicely
131       rendered mathematical formulæ!</p>
132       <p class="sws-pause"> You mean like this one<sup>*</sup> ?
133         $$
134         F_n = \frac{1}{\sqrt{5}}\cdot\left(\frac{1+\sqrt{5}}{2}\right)^n-\frac{1}{\sqrt{5}}\cdot\left(\frac{1-\sqrt{5}}{2}\right)^n
135         $$
136       </p>
137       <p class="sws-pause">or that one<sup>*</sup> ?
138
139         $$
140         \frac{\Gamma\cup\{x\mapsto t\}\vdash e : s}{\Gamma\vdash \lambda x^{t}.e : t \rightarrow s}
141         $$
142       </p>
143       <p class="sws-pause">*: All this is done
144         using <a href="http://www.mathjax.org">MathJax!</a> and
145         written like this:<br/>
146 <pre><code>
147     \frac{
148           \Gamma\cup\{x\mapsto t\}\vdash e : s
149     }{
150           \Gamma\vdash \lambda x^{t}.e : t \rightarrow s
151     }
152 </code></pre>
153 </p>
154     </div>
155     <div class="sws-slide">
156       <h1>A simple example</h1>
157       <p class="sws-onframe-1_3">
158       A minimal slide, with no animation looks like this:
159 <pre><code>
160      &lt;div <em>class="sws-slide"</em>&gt;
161           &lt;h1&gt;Slide title&lt;/h1&gt;
162              Hello world!
163      &lt;/div&gt;
164 </code></pre>
165 </p>
166 <p class="sws-pause">
167   You can also reveal things progressively like this:
168   <pre><code>
169       &lt;p&gt; Text 1&lt;/p&gt;
170       &lt;p <em>class="sws-pause"</em>&gt;
171       Text 2 (appears afterwards)
172       &lt;/p&gt;
173   </code></pre>
174 </p>
175 <p class="sws-pause">
176   You can also set an element to appear on specific frames:
177   <pre><code>
178       &lt;p&gt; Text 1&lt;/p&gt;
179       &lt;p <em>class="sws-onframe-1-5_9"</em>&gt;
180       Appears on frame 2, 3, 4, 5, 6 and 10 of the current slide
181       (frame numbering starts at 0).
182       &lt;/p&gt;
183   </code></pre>
184 </p>
185     </div>
186 <div class="sws-slide">
187   <h1>Scripting your presentation</h1>
188   <p>
189     Of course, you can script your presentation with Javascript!<br/>
190     You just need to add the <code>script</code> element somewhere in
191     the current <code>div</code>
192     <pre><code>
193 &lt;script type="text/javascript"&gt;
194     function zoom_title (canvas) {
195         var h1 = canvas.find("h1");
196         var old_size = h1.css('font-size');
197             h1.animate({"font-size":"80pt" }, 300)
198                .animate({"font-size":old_size }, 300);
199     };
200     //Call the zoom_title function on the 4th and 7th frame
201     <em>SWS.Presentation.registerCallback("3_6", zoom_title);</em>
202 &lt;script&gt;
203 </code></pre>
204
205   </p>
206
207 <script type="text/javascript">
208   SWS.Presentation.registerCallback("4_7", zoom_title);
209 </script>
210
211 </div>
212 <div class="sws-slide">
213   <h1>SWS API</h1>
214   You can manipulate the presentation through
215   the <em><code>SWS.Presentation</code></em> object. For instance:
216   <code><pre>
217       &lt;a onclick="SWS.Presentation.previous();"&gt;◀◀◀◀◀&lt;/a&gt;
218       &lt;a onclick="SWS.Presentation.next();"&gt;▶▶▶▶▶&lt;/a&gt;
219       &lt;a onclick="SWS.Presentation.goToSlide(1,2);"&gt;Go back in time!&lt;/a&gt;
220 </pre></code>
221   Let's try it:
222   <a onclick="SWS.Presentation.previous();SWS.Presentation.refresh();">◀◀◀◀◀</a>
223   <a onclick="SWS.Presentation.next();SWS.Presentation.refresh();">▶▶▶▶▶</a>
224   <a onclick="SWS.Presentation.goToSlide(1,2);">Go
225     back in time!</a> (to the second frame of the first slide)
226 </div>
227 <div class="sws-slide">
228   <h1>Some more fancy stuff</h1>
229 Let's put some <em>inline</em> SVG:
230 <div style="text-align:center;">
231 <svg
232    xmlns:dc="http://purl.org/dc/elements/1.1/"
233    xmlns:cc="http://creativecommons.org/ns#"
234    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
235    xmlns:svg="http://www.w3.org/2000/svg"
236    xmlns="http://www.w3.org/2000/svg"
237    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
238    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
239    width="68.160713"
240    height="170.35268"
241    id="svg2"
242    version="1.1"
243    inkscape:version="0.48.3.1 r9886"
244    sodipodi:docname="lights.svg">
245   <defs
246      id="defs4" />
247   <sodipodi:namedview
248      id="base"
249      pagecolor="#ffffff"
250      bordercolor="#666666"
251      borderopacity="1.0"
252      inkscape:pageopacity="0.0"
253      inkscape:pageshadow="2"
254      inkscape:zoom="5.6"
255      inkscape:cx="38.9935"
256      inkscape:cy="56.441072"
257      inkscape:document-units="px"
258      inkscape:current-layer="layer1"
259      showgrid="true"
260      fit-margin-top="0"
261      fit-margin-left="0"
262      fit-margin-right="0"
263      fit-margin-bottom="0"
264      inkscape:window-width="1627"
265      inkscape:window-height="1026"
266      inkscape:window-x="1077"
267      inkscape:window-y="24"
268      inkscape:window-maximized="1">
269     <inkscape:grid
270        type="xygrid"
271        id="grid2985"
272        empspacing="5"
273        visible="true"
274        enabled="true"
275        snapvisiblegridlinesonly="true"
276        originx="-82.348214px"
277        originy="-877.32807px" />
278   </sodipodi:namedview>
279   <metadata
280      id="metadata7">
281     <rdf:RDF>
282       <cc:Work
283          rdf:about="">
284         <dc:format>image/svg+xml</dc:format>
285         <dc:type
286            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
287         <dc:title />
288       </cc:Work>
289     </rdf:RDF>
290   </metadata>
291   <g
292      inkscape:label="Layer 1"
293      inkscape:groupmode="layer"
294      id="layer1"
295      transform="translate(-82.348214,-4.6814313)">
296     <g
297        id="g3014"
298        transform="matrix(1.5714286,0,0,1.5714286,-48.571431,-4.2069617)">
299       <rect
300          ry="10"
301          y="7.3621826"
302          x="85"
303          height="105"
304          width="40"
305          id="rect2989"
306          style="fill:#000a1a;fill-opacity:1;stroke:#1b373d;stroke-width:3.3829999;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
307       <path
308          transform="translate(132.5,-20)"
309          d="m -15,44.862183 c 0,6.903559 -5.596441,12.5 -12.5,12.5 -6.903559,0 -12.5,-5.596441 -12.5,-12.5 0,-6.90356 5.596441,-12.5 12.5,-12.5 6.903559,0 12.5,5.59644 12.5,12.5 z"
310          sodipodi:ry="12.5"
311          sodipodi:rx="12.5"
312          sodipodi:cy="44.862183"
313          sodipodi:cx="-27.5"
314          id="topdisk"
315          style="fill:#000a1a;fill-opacity:1;stroke:#1b373d;stroke-width:3.3829999;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
316          sodipodi:type="arc" />
317       <path
318          d="m -15,44.862183 c 0,6.903559 -5.596441,12.5 -12.5,12.5 -6.903559,0 -12.5,-5.596441 -12.5,-12.5 0,-6.90356 5.596441,-12.5 12.5,-12.5 6.903559,0 12.5,5.59644 12.5,12.5 z"
319          sodipodi:ry="12.5"
320          sodipodi:rx="12.5"
321          sodipodi:cy="44.862183"
322          sodipodi:cx="-27.5"
323          id="middledisk"
324          style="fill:#000a1a;fill-opacity:1;stroke:#1b373d;stroke-width:3.3829999;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
325          sodipodi:type="arc"
326          transform="translate(132.5,15)" />
327       <path
328          d="m -15,44.862183 c 0,6.903559 -5.596441,12.5 -12.5,12.5 -6.903559,0 -12.5,-5.596441 -12.5,-12.5 0,-6.90356 5.596441,-12.5 12.5,-12.5 6.903559,0 12.5,5.59644 12.5,12.5 z"
329          sodipodi:ry="12.5"
330          sodipodi:rx="12.5"
331          sodipodi:cy="44.862183"
332          sodipodi:cx="-27.5"
333          id="bottomdisk"
334          style="fill:#000a1a;fill-opacity:1;stroke:#1b373d;stroke-width:3.3829999;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
335          sodipodi:type="arc"
336          transform="translate(132.5,50)" />
337     </g>
338   </g>
339 </svg>
340 </div>
341 Of course we can animate it with some javascript!
342 <script type="text/javascript">
343   SWS.Presentation.registerCallback(0, function(o){
344   set_color(o.find("#topdisk"), "#000a1a");
345   });
346   SWS.Presentation.registerCallback(1, function(o){
347   set_color(o.find("#topdisk"), "#ff0000");
348   set_color(o.find("#middledisk"), "#000a1a");
349   });
350   SWS.Presentation.registerCallback(2, function(o){
351   set_color(o.find("#middledisk"), "#ffa500");
352   set_color(o.find("#bottomdisk"), "#000a1a");
353   });
354   SWS.Presentation.registerCallback(3, function(o){
355   set_color(o.find("#bottomdisk"), "#00ff00");
356   });
357 </script>
358 </div>
359
360   </body>
361 </html>