| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- /********************************************
- * REVOLUTION 5.4.2 EXTENSION - KEN BURN
- * @version: 1.3.1 (15.05.2017)
- * @requires jquery.themepunch.revolution.js
- * @author ThemePunch
- *********************************************/
- (function($) {
- "use strict";
- var _R = jQuery.fn.revolution,
- extension = { alias:"KenBurns Min JS",
- name:"revolution.extensions.kenburn.min.js",
- min_core: "5.4",
- version:"1.3.1"
- };
- ///////////////////////////////////////////
- // EXTENDED FUNCTIONS AVAILABLE GLOBAL //
- ///////////////////////////////////////////
- jQuery.extend(true,_R, {
- stopKenBurn : function(l) {
- if (_R.compare_version(extension).check==="stop") return false;
- if (l.data('kbtl')!=undefined)
- l.data('kbtl').pause();
- },
- startKenBurn : function(l,opt,prgs) {
- if (_R.compare_version(extension).check==="stop") return false;
- var d = l.data(),
- i = l.find('.defaultimg'),
- s = i.data('lazyload') || i.data('src'),
- i_a = d.owidth / d.oheight,
- cw = opt.sliderType==="carousel" ? opt.carousel.slide_width : opt.ul.width(),
- ch = opt.ul.height(),
- c_a = cw / ch;
-
- if (l.data('kbtl'))
- l.data('kbtl').kill();
-
- prgs = prgs || 0;
-
- // NO KEN BURN IMAGE EXIST YET
- if (l.find('.tp-kbimg').length==0) {
- var mediafilter = i.data('mediafilter');
- mediafilter = mediafilter === undefined ? "" : mediafilter;
- l.append('<div class="tp-kbimg-wrap '+mediafilter+'" style="z-index:2;width:100%;height:100%;top:0px;left:0px;position:absolute;"><img class="tp-kbimg" src="'+s+'" style="position:absolute;" width="'+d.owidth+'" height="'+d.oheight+'"></div>');
- l.data('kenburn',l.find('.tp-kbimg'));
- }
- var getKBSides = function(w,h,f,cw,ch,ho,vo) {
- var tw = w * f,
- th = h * f,
- hd = Math.abs(cw-tw),
- vd = Math.abs(ch-th),
- s = new Object();
- s.l = (0-ho)*hd;
- s.r = s.l + tw;
- s.t = (0-vo)*vd;
- s.b = s.t + th;
- s.h = ho;
- s.v = vo;
- return s;
- },
- getKBCorners = function(d,cw,ch,ofs,o) {
- var p = d.bgposition.split(" ") || "center center",
- ho = p[0] == "center" ? "50%" : p[0] == "left" || p [1] == "left" ? "0%" : p[0]=="right" || p[1] =="right" ? "100%" : p[0],
- vo = p[1] == "center" ? "50%" : p[0] == "top" || p [1] == "top" ? "0%" : p[0]=="bottom" || p[1] =="bottom" ? "100%" : p[1];
-
- ho = parseInt(ho,0)/100 || 0;
- vo = parseInt(vo,0)/100 || 0;
- var sides = new Object();
- sides.start = getKBSides(o.start.width,o.start.height,o.start.scale,cw,ch,ho,vo);
- sides.end = getKBSides(o.start.width,o.start.height,o.end.scale,cw,ch,ho,vo);
-
- return sides;
- },
- kcalcL = function(cw,ch,d) {
- var f=d.scalestart/100,
- fe=d.scaleend/100,
- ofs = d.offsetstart != undefined ? d.offsetstart.split(" ") || [0,0] : [0,0],
- ofe = d.offsetend != undefined ? d.offsetend.split(" ") || [0,0] : [0,0];
- d.bgposition = d.bgposition == "center center" ? "50% 50%" : d.bgposition;
-
-
- var o = new Object(),
- sw = cw*f,
- sh = sw/d.owidth * d.oheight,
- ew = cw*fe,
- eh = ew/d.owidth * d.oheight;
-
- o.start = new Object();
- o.starto = new Object();
- o.end = new Object();
- o.endo = new Object();
-
- o.start.width = cw;
- o.start.height = o.start.width / d.owidth * d.oheight;
- if (o.start.height<ch) {
- var newf = ch / o.start.height;
- o.start.height = ch;
- o.start.width = o.start.width*newf;
- }
- o.start.transformOrigin = d.bgposition;
- o.start.scale = f;
- o.end.scale = fe;
- d.rotatestart = d.rotatestart===0 ? 0.01 : d.rotatestart;
- o.start.rotation = d.rotatestart+"deg";
- o.end.rotation = d.rotateend+"deg";
-
- // MAKE SURE THAT OFFSETS ARE NOT TOO HIGH
- var c = getKBCorners(d,cw,ch,ofs,o);
- ofs[0] = parseFloat(ofs[0]) + c.start.l;
- ofe[0] = parseFloat(ofe[0]) + c.end.l;
-
- ofs[1] = parseFloat(ofs[1]) + c.start.t;
- ofe[1] = parseFloat(ofe[1]) + c.end.t;
-
- var iws = c.start.r - c.start.l,
- ihs = c.start.b - c.start.t,
- iwe = c.end.r - c.end.l,
- ihe = c.end.b - c.end.t;
-
- ofs[0] = ofs[0]>0 ? 0 : iws + ofs[0] < cw ? cw-iws : ofs[0];
- ofe[0] = ofe[0]>0 ? 0 : iwe + ofe[0] < cw ? cw-iwe : ofe[0];
-
- ofs[1] = ofs[1]>0 ? 0 : ihs + ofs[1] < ch ? ch-ihs : ofs[1];
- ofe[1] = ofe[1]>0 ? 0 : ihe + ofe[1] < ch ? ch-ihe : ofe[1];
-
- o.starto.x = ofs[0]+"px";
- o.starto.y = ofs[1]+"px";
- o.endo.x = ofe[0]+"px";
- o.endo.y = ofe[1]+"px";
- o.end.ease = o.endo.ease = d.ease;
- o.end.force3D = o.endo.force3D = true;
- return o;
- };
-
- if (l.data('kbtl')!=undefined) {
- l.data('kbtl').kill();
- l.removeData('kbtl');
- }
- var k = l.data('kenburn'),
- kw = k.parent(),
- anim = kcalcL(cw,ch,d),
- kbtl = new punchgs.TimelineLite();
-
-
- kbtl.pause();
-
- anim.start.transformOrigin = "0% 0%";
- anim.starto.transformOrigin = "0% 0%";
- kbtl.add(punchgs.TweenLite.fromTo(k,d.duration/1000,anim.start,anim.end),0);
- kbtl.add(punchgs.TweenLite.fromTo(kw,d.duration/1000,anim.starto,anim.endo),0);
- // ADD BLUR EFFECT ON THE ELEMENTS
- if (d.blurstart!==undefined && d.blurend!==undefined && (d.blurstart!==0 || d.blurend!==0)) {
- var blurElement = {a:d.blurstart},
- blurElementEnd = {a:d.blurend, ease:anim.endo.ease},
- blurAnimation = new punchgs.TweenLite(blurElement, d.duration/1000, blurElementEnd);
- blurAnimation.eventCallback("onUpdate", function(kw) {
- punchgs.TweenLite.set(kw,{filter:'blur('+blurElement.a+'px)',webkitFilter:'blur('+blurElement.a+'px)'});
- },[kw]);
- kbtl.add(blurAnimation,0);
- }
-
- kbtl.progress(prgs);
- kbtl.play();
-
- l.data('kbtl',kbtl);
- }
- });
- })(jQuery);
|