diff -r 037ff36ba217 -r ebb8b58fc2b8 integration/v2/js/slideshow.js --- 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($("
").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();