integration/v2/js/slideshow.js
changeset 190 ebb8b58fc2b8
parent 134 9caa840b2d92
child 203 df9a887eae92
--- a/integration/v2/js/slideshow.js	Thu Jun 27 17:42:07 2013 +0200
+++ b/integration/v2/js/slideshow.js	Thu Jun 27 18:47:14 2013 +0200
@@ -1,7 +1,11 @@
 $(function() {
     
     var currentSlide = 0, jqwin = $(window), jqcaption = $(".caption"),
-        margin = 50, jqmainimg = $(".main-image"), jqbackdrop = $(".backdrop"),
+        margin = 50,
+        jqimgcontainer = $(".image-container"),
+        jqmainimg = $(".main-image"),
+        jqbackdrop = $(".backdrop"),
+        jqpath = $(".clip-path"),
         lastSlide = null;
     
     function showSlide() {
@@ -10,34 +14,53 @@
         if (slide !== lastSlide) {
             jqcaption.find("h2").text(slide.title);
             jqcaption.find("h3").text(slide.author);
-            jqcaption.find("p").text(slide.description);
-            jqmainimg.attr("src", slide.image.src);
+            var captiondiv = jqcaption.find(".caption-description");
+            captiondiv.empty();
+            slide.description.split(/\s*[\r\n]\s*/gm).forEach(function(p) {
+                captiondiv.append($("<p>").text(p));
+            });
+            jqmainimg.attr("xlink:href", slide.image.src);
             jqbackdrop.attr("src", slide.image.src);
+            jqpath.attr("d", slide.path);
         }
         
         lastSlide = slide;
         
         if (slide.image && slide.image.width) {
-            var ww = jqwin.width(),
+            var pathcoords = slide.path.match(/[\d\.]+/g),
+                pathx = pathcoords.filter(function(p,i) {
+                    return !(i%2);
+                }),
+                pathy = pathcoords.filter(function(p,i) {
+                    return (i%2);
+                }),
+                minpx = Math.min.apply(Math,pathx),
+                maxpx = Math.max.apply(Math,pathx),
+                minpy = Math.min.apply(Math,pathy),
+                maxpy = Math.max.apply(Math,pathy),
+                ww = jqwin.width(),
                 wh = jqwin.height(),
                 cw = jqcaption.outerWidth(),
                 ch = jqcaption.outerHeight(),
                 wi = slide.image.width,
-                hi = slide.image.height,    
+                hi = slide.image.height,
+                wp = wi * (maxpx - minpx),
+                hp = hi * (maxpy - minpy),
                 w1 = ww - 2 * margin, w2 = w1 - cw
                 h1 = wh - 2 * margin, h2 = h1 - ch,
                 ra = Math.max(
-                    Math.min((h1 / hi), (w2 / wi)),
-                    Math.min((h2 / hi), (w1 / wi))
+                    Math.min((h1 / hp), (w2 / wp)),
+                    Math.min((h2 / hp), (w1 / wp))
                 ),
-                wa = wi * ra, ha = hi * ra,
+                wa = wp * ra, ha = hp * ra,
                 rb = Math.max(ww / wi, wh / hi),
                 wb = wi * rb, hb = hi * rb,
                 xb = (ww - wb) / 2, yb = (wh - hb) / 2;
-            jqmainimg.css({
+            jqimgcontainer.css({
                 width: wa,
                 height: ha
             });
+            jqimgcontainer[0].setAttribute("viewBox", [minpx,minpy,(maxpx-minpx),(maxpy-minpy)].join(" "));
             jqbackdrop.css({
                 width: wb,
                 height: hb,
@@ -86,13 +109,16 @@
     $(".right-arrow").click(nextSlide);
     
     slides.forEach(function(slide, k) {
+        if (!slide.path) {
+            slide.path = "M0 0L1 0L1 1L0 1Z"
+        }
         slide.image = new Image();
         slide.image.onload = function() {
             if (k === currentSlide) {
                 showSlide();
             }
         };
-        slide.image.src = imgurlbase + slide.url;
+        slide.image.src = imgurlbase + slide.src;
     });
     
     showSlide();