Five cool slideshow makers

Published on by Yousfi Benameur


jQuery ( javascript ) is  actually the top soft for building responsive slideshows.it produces cool transitions.
i adapted an original free demo javascript code from http://www.jssor.com/demos/image-gallery.slider
the code can fetch for any jpg images folder and translate it into a slideshow with thumnails, all animated wonderfully.( can extend to other images formats also)
in code i linked directly to the web libraries to avoid to ship these files that why internet must be connected.of course can be downloaded with save As (css+js files).
for making this code quickly to work under hands, the gdiplusX can resize a great quantity of images to the destination sizes wanted (here some big photos as 960x550 and thumbnail 72x72 for each photo).
the final images working are gathered in img folders.i added 2 images encoded for arrows and the thumbnail encadrement.
-original images must be around 800x600 to preserve ratios at resizing.
-gdiplusX system.app must preferably in the source folder (exclude in project if compile an exe).
i added a music with looping (can be a disc media or a web one...this last make some time to load if internet is some slow.i put it on the form.init to benefite this loading if a web url).
i added 2 form properties : ysound (can set the audio media here) and yimages for building the div images string.
can adjust the audio volume (only by APIs here instead of coding WMP mediaplayer) and make the fullscreen on/off.
note: if want to preserve a built slideshow must export it out (with ytemp.html)of the source because at each time the img folder is erased.
-Can compile an exe ( add a config.fpw  screen=off|resource=off|safe=off).it works fine and generte the html file and folder img as well.
-javascript original code is from http://www.jssor.com/demos/image-gallery.slider
od course its for a personal use only, no kind of distribution can be used.the heart of the code is javascript (its author property).the overlap is with vfp.
i tried more 100 (code *1* ,*2* ,*3* and *5*) big photos and it works fine.

*warning* the library (js+css) can be changed by the author site each time it be updated.
if you dont link to these files correctly the codes below dont work as expected.
then each time go to the site and verify these 2 files (i verified them 26 of june 2017)
https://www.jssor.com/style/site/css/site-style-1.1.13.min.css
https://www.jssor.com/script/jssor.slider-25.0.6.min.js 
-better way is to download them and put them with the html created (and tweak the javascript code in these 2 lines.



Click on code to select [then copy] -click outside to deselect

*1*
publi yform
yform=newObject("yslideshow")
yform.show
read events
retu
*


DEFINE CLASS yslideshow AS form
BorderStyle = 0
Height = 607
Width = (sysmetric(1)+5)
ShowWindow = 2
AutoCenter = .T.
Caption = ""
KeyPreview = .T.
BackColor = RGB(0,0,0)
yimages = .F.
ysound = "https://archive.org/download/beethoven9/beethoven-9-01-concertgebouw-klemperer-1956-16048.mp3"
Name = "Form1"

ADD OBJECT olecontrol1 AS olecontrol WITH ;
Oleclass="shell.explorer.2", ;
Top = 0, ;
Left = 0, ;
Height = 564, ;
Width = 1032, ;
Anchor = 15, ;
Name = "Olecontrol1"

ADD OBJECT label1 AS label WITH ;
AutoSize = .T., ;
FontSize = 12, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Fullscreen on/off", ;
Height = 21, ;
Left = 552, ;
MousePointer = 15, ;
Top = 576, ;
Width = 115, ;
ForeColor = RGB(255,255,255), ;
Name = "Label1"

ADD OBJECT image1 AS image WITH ;
Anchor = 768, ;
Picture = home(1)+"graphics\icons\misc\volume01.ico", ;
BackStyle = 0, ;
Height = 32, ;
Left = 708, ;
MousePointer = 15, ;
Top = 566, ;
Width = 32, ;
Name = "Image1"

ADD OBJECT label2 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontName = "Segoe Script", ;
FontSize = 16, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Happy new year 2017", ;
Height = 36, ;
Left = 48, ;
Top = 570, ;
Width = 253, ;
ForeColor = RGB(0,255,0), ;
Name = "Label2"

ADD OBJECT label3 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontSize = 20, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "?", ;
Height = 35, ;
Left = 864, ;
MousePointer = 15, ;
Top = 569, ;
Width = 19, ;
ForeColor = RGB(0,255,0), ;
Name = "Label3"

ADD OBJECT label4 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontName = "Segoe Script", ;
FontSize = 16, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Yousfi Benameur", ;
Height = 36, ;
Left = 305, ;
Top = 569, ;
Width = 195, ;
ForeColor = RGB(255,255,0), ;
Name = "Label4"

ADD OBJECT label5 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontSize = 20, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "X", ;
Height = 35, ;
Left = 912, ;
MousePointer = 15, ;
Top = 571, ;
Visible = .T., ;
Width = 20, ;
ForeColor = RGB(255,255,255), ;
Name = "Label5"

ADD OBJECT ysh as shape with ;
anchor=768,;
width=15,;
height=15,;
left=912+30,;
top=571,;
curvature=99, ;
mousepointer=15,;
backcolor=255,;
name="ysh"

procedure ysh.click
if thisform.label1.visible=.t.
thisform.setall("visible",.f.,"label")
thisform.image1.visible=.f.
else
thisform.setall("visible",.t.,"label")
thisform.image1.visible=.t.
endi
endproc

PROCEDURE ybuild
*javascript code original from http://www.jssor.com/demos/image-gallery.slider
local m.myvar
text to m.myvar textmerge noshow
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
</head>
<body style="padding:0px; margin:0px; background-color:#000;background:url('https://s-media-cache-ak0.pinimg.com/originals/e1/a0/ef/e1a0ef685ab2c885a3b837db6f6ebd6d.gif') repeat;font-family:helvetica, arial, verdana, sans-serif; ">

<!-- #region Jssor Slider Begin -->
<!-- Generator: Jssor Slider Maker -->
<!-- Source: http://www.jssor.com -->
<!-- This code works without jquery library. -->


<link href="http://cdn.jssor.com/style/site/css/site-style-1.1.2.min.css" rel="stylesheet" />
<script src="http://cdn.jssor.com/script/jssor.slider-22.0.6.min.js" type="text/javascript"></script>
<script type="text/javascript">
jssor_1_slider_init = function() {

var jssor_1_SlideshowTransitions = [
  {$Duration:1200,x:0.3,$During:{$Left:[0.3,0.7]},$Easing:{$Left:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:-0.3,$SlideOut:true,$Easing:{$Left:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:-0.3,$During:{$Left:[0.3,0.7]},$Easing:{$Left:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:0.3,$SlideOut:true,$Easing:{$Left:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,y:0.3,$During:{$Top:[0.3,0.7]},$Easing:{$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,y:-0.3,$SlideOut:true,$Easing:{$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,y:-0.3,$During:{$Top:[0.3,0.7]},$Easing:{$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,y:0.3,$SlideOut:true,$Easing:{$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:0.3,$Cols:2,$During:{$Left:[0.3,0.7]},$ChessMode:{$Column:3},$Easing:{$Left:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:0.3,$Cols:2,$SlideOut:true,$ChessMode:{$Column:3},$Easing:{$Left:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,y:0.3,$Rows:2,$During:{$Top:[0.3,0.7]},$ChessMode:{$Row:12},$Easing:{$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,y:0.3,$Rows:2,$SlideOut:true,$ChessMode:{$Row:12},$Easing:{$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,y:0.3,$Cols:2,$During:{$Top:[0.3,0.7]},$ChessMode:{$Column:12},$Easing:{$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,y:-0.3,$Cols:2,$SlideOut:true,$ChessMode:{$Column:12},$Easing:{$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:0.3,$Rows:2,$During:{$Left:[0.3,0.7]},$ChessMode:{$Row:3},$Easing:{$Left:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:-0.3,$Rows:2,$SlideOut:true,$ChessMode:{$Row:3},$Easing:{$Left:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:0.3,y:0.3,$Cols:2,$Rows:2,$During:{$Left:[0.3,0.7],$Top:[0.3,0.7]},$ChessMode:{$Column:3,$Row:12},$Easing:{$Left:$Jease$.$InCubic,$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,x:0.3,y:0.3,$Cols:2,$Rows:2,$During:{$Left:[0.3,0.7],$Top:[0.3,0.7]},$SlideOut:true,$ChessMode:{$Column:3,$Row:12},$Easing:{$Left:$Jease$.$InCubic,$Top:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,$Delay:20,$Clip:3,$Assembly:260,$Easing:{$Clip:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,$Delay:20,$Clip:3,$SlideOut:true,$Assembly:260,$Easing:{$Clip:$Jease$.$OutCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,$Delay:20,$Clip:12,$Assembly:260,$Easing:{$Clip:$Jease$.$InCubic,$Opacity:$Jease$.$Linear},$Opacity:2},
  {$Duration:1200,$Delay:20,$Clip:12,$SlideOut:true,$Assembly:260,$Easing:{$Clip:$Jease$.$OutCubic,$Opacity:$Jease$.$Linear},$Opacity:2}
];

var jssor_1_options = {
  $AutoPlay: true,
  $SlideshowOptions: {
	$Class: $JssorSlideshowRunner$,
	$Transitions: jssor_1_SlideshowTransitions,
	$TransitionsOrder: 1
  },
  $ArrowNavigatorOptions: {
	$Class: $JssorArrowNavigator$
  },
  $ThumbnailNavigatorOptions: {
	$Class: $JssorThumbnailNavigator$,
	$Cols: 12,
	$SpacingX: 8,
	$SpacingY: 8,
	$Align: 360
  }
};

var jssor_1_slider = new $JssorSlider$("jssor_1", jssor_1_options);

/*responsive code begin*/
/*you can remove responsive code if you don't want the slider scales while window resizing*/
function ScaleSlider() {
	var refSize = jssor_1_slider.$Elmt.parentNode.clientWidth;
	if (refSize) {
		refSize = Math.min(refSize, 960);
		jssor_1_slider.$ScaleWidth(refSize);
	}
	else {
		window.setTimeout(ScaleSlider, 30);
	}
}
ScaleSlider();
$Jssor$.$AddEvent(window, "load", ScaleSlider);
$Jssor$.$AddEvent(window, "resize", ScaleSlider);
$Jssor$.$AddEvent(window, "orientationchange", ScaleSlider);
/*responsive code end*/
};
</script>
<style>
/* jssor slider arrow navigator skin 05 css */
/*
.jssora05l                  (normal)
.jssora05r                  (normal)
.jssora05l:hover            (normal mouseover)
.jssora05r:hover            (normal mouseover)
.jssora05l.jssora05ldn      (mousedown)
.jssora05r.jssora05rdn      (mousedown)
.jssora05l.jssora05lds      (disabled)
.jssora05r.jssora05rds      (disabled)
*/
.jssora05l, .jssora05r {
display: block;
position: absolute;
/* size of arrow element */
width: 40px;
height: 40px;
cursor: pointer;
background: url('img/a17.png') no-repeat;
overflow: hidden;
}
.jssora05l { background-position: -10px -40px; }
.jssora05r { background-position: -70px -40px; }
.jssora05l:hover { background-position: -130px -40px; }
.jssora05r:hover { background-position: -190px -40px; }
.jssora05l.jssora05ldn { background-position: -250px -40px; }
.jssora05r.jssora05rdn { background-position: -310px -40px; }
.jssora05l.jssora05lds { background-position: -10px -40px; opacity: .3; pointer-events: none; }
.jssora05r.jssora05rds { background-position: -70px -40px; opacity: .3; pointer-events: none; }
/* jssor slider thumbnail navigator skin 01 css *//*.jssort01 .p            (normal).jssort01 .p:hover      (normal mouseover).jssort01 .p.pav        (active).jssort01 .p.pdn        (mousedown)*/.jssort01 .p {    position: absolute;    top: 0;    left: 0;    width: 72px;    height: 72px;}.jssort01 .t {    position: absolute;    top: 0;    left: 0;    width: 100%;    height: 100%;    border: none;}.jssort01 .w {    position: absolute;    top: 0px;    left: 0px;    width: 100%;    height: 100%;}.jssort01 .c {    position: absolute;    top: 0px;    left: 0px;    width: 68px;    height: 68px;    border: #000 2px solid;    box-sizing: content-box;    background: url('img/t01.png') -960px -960px no-repeat;    _background: none;}.jssort01 .pav .c {    top: 2px;    _top: 0px;    left: 2px;    _left: 0px;    width: 68px;    height: 68px;    border: #000 0px solid;    _border: #fff 2px solid;    background-position: 50% 50%;}.jssort01 .p:hover .c {    top: 0px;    left: 0px;    width: 70px;    height: 70px;    border: #fff 1px solid;    background-position: 50% 50%;}.jssort01 .p.pdn .c {    background-position: 50% 50%;    width: 68px;    height: 68px;    border: #000 2px solid;}* html .jssort01 .c, * html .jssort01 .pdn .c, * html .jssort01 .pav .c {    /* ie quirks mode adjust */    width /**/: 72px;    height /**/: 72px;}
</style>


<div id="jssor_1" style="position: relative; margin: 0 auto; top: 20px; left: 0px; width: 960px; height: 650px; overflow: hidden; visibility: hidden; background-color: #24262e;">
<!-- Loading Screen -->
<div data-u="loading" style="position: absolute; top: 0px; left: 0px;">
<div style="filter: alpha(opacity=70); opacity: 0.7; position: absolute; display: block; top: 0px; left: 0px; width: 100%; height: 100%;"></div>
<div style="position:absolute;display:block;background:url('img/loading.gif') no-repeat center center;top:0px;left:0px;width:100%;height:100%;"></div>
</div>
<div data-u="slides" style="cursor: default; position: relative; top: 0px; left: 0px; width: 960px; height: 550px; overflow: hidden;">
<<thisform.yimages>>
</div>

<!-- Thumbnail Navigator -->
<div data-u="thumbnavigator" class="jssort01" style="position:absolute ;left:0px;bottom:0px;width:960px;height:100px;" data-autocenter="1">
<!-- Thumbnail Item Skin Begin -->
<div data-u="slides" style="cursor: default;">
	<div data-u="prototype" class="p">
		<div class="w">
			<div data-u="thumbnailtemplate" class="t"></div>
		</div>
		<div class="c"></div>
	</div>
</div>
<!-- Thumbnail Item Skin End -->
</div>

<!-- Arrow Navigator -->
<span data-u="arrowleft" class="jssora05l" style="top:228px;left:8px;width:40px;height:40px;"></span>
<span data-u="arrowright" class="jssora05r" style="top:228px;right:8px;width:40px;height:40px;"></span>
</div>
<script type="text/javascript">jssor_1_slider_init();</script>
<!-- #endregion Jssor Slider End -->
</body>
</html>
endtext
local m.lcdest
m.lcdest=m.yrep+"ytemp.html"
strtofile(m.myvar,m.lcdest)

thisform.olecontrol1.navigate(m.lcdest)
wmp.settings.mute=.f.
ENDPROC

PROCEDURE ybuild0
local m.yrep
m.yrep=addbs(justpath(sys(16,1)))
set defa to (yrep)
if !directory(m.yrep+"img")
md (m.yrep+"img")
else
dele file m.yrep+"img\*.*"
endi
local m.yrepi  &&images
*m.yrepi=getdir()  &¬ efficient
m.yrepi=GETDIR(m.yrep, "Open jpg images folder" ," Images ", 1+2)
if empty(m.yrepi)
return .f.
endi

gnbre=adir(gabase,m.yrepi+"*.jpg")
if gnbre=0
return .f.
endi
set defa to (yrep)
_screen.windowstate=1
Do Locfile("system.app","app")   &&put system.app in source folder (then no dialog appears)
local m.xx
m.xx=""
for i=1 to gnbre
if i<=9
j="0"+trans(i)
else
j=trans(i)
endi

for k=1 to 2
With _Screen.System.drawing
Local loBMP,loBMP1 As fxcBitmap
loBMP=.Image.fromfile(m.yrepi+gabase(i,1))
Local  m.lcdest,w,h
if k=1
m.lcdest=m.yrep+"img\"+  j+".jpg"
m.w=960
m.h=550
else
m.lcdest=m.yrep+"img\thumb-"+  j+".jpg"
m.w=72
m.h=72
endi
loBMP1=.Bitmap.new(m.w,m.h)
logfx= .Graphics.FromImage(loBMP1)
&&working with smoothless & high quality drawing
LOGFX.smoothingmode     = .drawing2d.smoothingmode.highquality
LOGFX.interpolationmode = .drawing2d.interpolationmode.highqualitybicubic
LOGFX.pixeloffsetmode   = .drawing2d.pixeloffsetmode.highquality
logfx.Clear(.Color.white)
logfx.drawImage(loBMP,0,0,m.w,m.h)
loBMP1.Save(m.lcdest,.imaging.imageformat.JPEG)
Endwith
endfor
m.xx=m.xx+[<div data-p="144.50"><img data-u="image" src="img/]+j+[.jpg"/><img data-u="thumb" src="img/thumb-]+j+[.jpg" /></div>]+chr(13)
endfor

text to m.myvar noshow
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
endtext
=strtofile(strconv(m.myvar,14),m.yrep+"img\t01.png")

text to m.myvar noshow
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
endtext
=strtofile(strconv(m.myvar,14),m.yrep+"img\a17.png")

set defa to (yrep)
*copy file loading.gif to (m.yrep+"img")
thisform.caption= "Slideshow with "+trans(gnbre)+ " images."
thisform.yimages=m.xx
thisform.ybuild()
ENDPROC

PROCEDURE Destroy
wmp=null
release wmp
m.yrep=null
release m.yrep
clea events
ENDPROC

PROCEDURE Init
Thisform.WindowState=2
Publi m.yrep
m.yrep=Addbs(Justpath(Sys(16,1)))
Set Defa To (yrep)

Publi  Wmp As WindowsMediaPlayer
Wmp = Createobject("WMPlayer.OCX.7")
With Wmp
.settings.autoStart = .T.
.settings.Volume=80
.settings.setMode('loop',.T.)    &&loop
.url=Thisform.ysound &&autostart=.t.  loading a web media can consume some time.
.settings.mute=.T.
Endwith
Thisform.ybuild0()
ENDPROC

PROCEDURE Load
set safe off
_screen.windowstate=1
ENDPROC

PROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
if nkeycode=27
thisform.release
endi
ENDPROC

PROCEDURE olecontrol1.Init
this.silent=.t.
ENDPROC

PROCEDURE label1.Click
thisform.lockscreen=.t.
thisform.titlebar=iif(thisform.titlebar=1,0,1)
if thisform.titlebar=0
thisform.height=thisform.height+31
else
thisform.height=thisform.height-31
endi
thisform.width=sysmetric(1)+5
thisform.lockscreen=.f.
ENDPROC

PROCEDURE image1.Click
#Define  APPCOMMAND_VOLUME_MUTE  0x80000
#Define  APPCOMMAND_VOLUME_UP  0xA0000
#Define  APPCOMMAND_VOLUME_DOWN  0x90000
#Define  WM_APPCOMMAND 0x319


Declare Integer SendMessage In user32;
INTEGER HWnd,;
INTEGER Msg,;
INTEGER wParam,;
INTEGER Lparam

SendMessage(_vfp.HWnd, WM_APPCOMMAND, _vfp.HWnd, APPCOMMAND_VOLUME_UP)
ENDPROC

PROCEDURE label3.Click
local m.myvar
text to m.myvar noshow
jQuery ( javascript ) is  actually the top soft for building responsive slideshows.it produces cool transitions.
i adapted an original free javascript code from http://www.jssor.com/demos/image-gallery.slider
the code can fetch for any jpg images folder and translate it into a slideshow with thumnails, all
animated wonderfully.( can extend to other images formats also)
in code i linked directly to the web libraries to avoid to ship these files that why internet must be connected.of course can be downloaded with save As (css+js files).
for making this code quickly to work under hands, the gdiplusX can resize a great quantity of images to the destination sizes wanted (here some big photos as 960x550 and thumbnail 72x72 for each photo).
the final images working are gathered in img folders.i added 2 images encoded for arrows and the thumbnail encadrement.
-original images must be around 800x600 to preserve ratios at resizing.
-gdiplusX system.app must preferably in the source folder (exclude in project if compile an exe).
i added a music with looping (can be a disc media or a web one...this last make some time to load if internet is some slow.i put it on the form.init to benefite this loading if a web url).
i added 2 form properties : ysound (can set the audio media here) and yimages for building the div images string.
can adjust the audio volume (only by APIs here instead of coding WMP mediaplayer) and make the fullscreen on/off.
note: if want to preserve a built slideshow must export it out (with ytemp.html)of the source because at each time the img folder is erased.
-Can compile an exe ( add a config.fpw  screen=off|resource=off|safe=off).it works fine and generte the html file and folder img as well.
-javascript original code is from http://www.jssor.com/demos/image-gallery.slider
endtext
*messagebox(m.myvar,0+32+4096,'')

#define MB_ICONINFORMATION 0x00000040
#define MB_OK 0x00000000
#define MB_APPLMODAL 0x00000000
#define  MB_DEFBUTTON1 0x00000000


DECLARE INTEGER MessageBox IN user32 As MessageBoxA;
INTEGER hwnd,;
STRING  lpText,;
STRING  lpCaption,;
INTEGER wType

*buttons
#define MB_ABORTRETRYIGNORE 0x00000002
#define MB_CANCELTRYCONTINUE 0x00000006
#define MB_HELP 0x00004000

#define MB_OKCANCEL 0x00000001
#define MB_RETRYCANCEL 0x00000005
#define MB_YESNO  0x00000004
#define MB_YESNOCANCEL 0x00000003

*Icons
#define  MB_ICONEXCLAMATION 0x00000030
#define MB_ICONWARNING 0x00000030

#define MB_ICONASTERISK 0x00000040
#define MB_ICONQUESTION 0x00000020
#define MB_ICONSTOP 0x00000010
#define MB_ICONERROR 0x00000010
#define MB_ICONHAND  0x00000010

*To indicate the default button, specify one of the following values.

#define MB_DEFBUTTON2 0x00000100
#define MB_DEFBUTTON3 0x00000200
#define MB_DEFBUTTON4 0x00000300

*To indicate the modality of the dialog box, specify one of the following values.

#define MB_SYSTEMMODAL 0x00001000
#define MB_TASKMODAL 0x00002000

*To specify other options, use one or more of the following values.
#define MB_DEFAULT_DESKTOP_ONLY 0x00020000
#define MB_RIGHT 0x00080000
#define MB_RTLREADING  0x00100000
#define MB_SETFOREGROUND  0x00010000
#define MB_TOPMOST  0x00040000
#define MB_SERVICE_NOTIFICATION 0x00200000

*Return code
#define IDABORT 3
#define IDCANCEL 2
#define IDCONTINUE 11
#define IDIGNORE 5
#define IDNO 7
#define IDOK 1
#define IDRETRY 4
#define IDTRYAGAIN 10
#define IDYES 6

MessageBoxA(_vfp.hwnd,m.myvar,"Summary help",MB_APPLMODAL+MB_OK +MB_ICONINFORMATION +MB_DEFBUTTON1 )
ENDPROC

PROCEDURE label5.MouseEnter
LPARAMETERS nButton, nShift, nXCoord, nYCoord
ENDPROC

PROCEDURE label5.MouseLeave
LPARAMETERS nButton, nShift, nXCoord, nYCoord
ENDPROC

PROCEDURE label5.Click
thisform.release
ENDPROC

ENDDEFINE
*
*-- EndDefine: yslideshow


Note:A developper code help is in this page:http://www.jssor.com/development/basic-usage-no-jquery.html
Note:A developper code help is in this page:http://www.jssor.com/development/basic-usage-no-jquery.html
Note:A developper code help is in this page:http://www.jssor.com/development/basic-usage-no-jquery.html

Note:A developper code help is in this page:http://www.jssor.com/development/basic-usage-no-jquery.html

Click on code to select [then copy] -click outside to deselect


*2* slideshow with rotating transitions
*this dont use gdiplusX because there is not images to resize.all images stay in their location (absolute location).might be around 800x600 to preserve ratios at viewing.see the help in code.
*urls can be coded also but must re write the code (for a small part). 

publi yform
yform=newObject("yslideshow_rotate")
yform.show
read events
retu
*

DEFINE CLASS yslideshow_rotate AS form
BorderStyle = 0
Height = 607
Width = (sysmetric(1)+5)
ShowWindow = 2
AutoCenter = .T.
Caption = ""
KeyPreview = .T.
BackColor = RGB(0,0,0)
yimages = .F.
ysound = "https://archive.org/download/beethoven9/beethoven-9-01-concertgebouw-klemperer-1956-16048.mp3"
Name = "Form1"

ADD OBJECT olecontrol1 AS olecontrol WITH ;
Oleclass="shell.explorer.2", ;
Top = 0, ;
Left = 0, ;
Height = 564, ;
Width = 1032, ;
Anchor = 15, ;
Name = "Olecontrol1"

ADD OBJECT label1 AS label WITH ;
AutoSize = .T., ;
FontSize = 12, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Fullscreen on/off", ;
Height = 21, ;
Left = 552, ;
MousePointer = 15, ;
Top = 576, ;
Width = 115, ;
ForeColor = RGB(255,255,255), ;
Name = "Label1"

ADD OBJECT image1 AS image WITH ;
Anchor = 768, ;
Picture = home(1)+"graphics\icons\misc\volume01.ico", ;
BackStyle = 0, ;
Height = 32, ;
Left = 708, ;
MousePointer = 15, ;
Top = 566, ;
Width = 32, ;
Name = "Image1"

ADD OBJECT label2 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontName = "Segoe Script", ;
FontSize = 16, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Happy new year 2017", ;
Height = 36, ;
Left = 48, ;
Top = 570, ;
Width = 253, ;
ForeColor = RGB(0,255,0), ;
Name = "Label2"

ADD OBJECT label3 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontSize = 20, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "?", ;
Height = 35, ;
Left = 864, ;
MousePointer = 15, ;
Top = 569, ;
Width = 19, ;
ForeColor = RGB(0,255,0), ;
Name = "Label3"

ADD OBJECT label4 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontName = "Segoe Script", ;
FontSize = 16, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Yousfi Benameur", ;
Height = 36, ;
Left = 305, ;
Top = 569, ;
Width = 195, ;
ForeColor = RGB(255,255,0), ;
Name = "Label4"

ADD OBJECT label5 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontSize = 20, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "X", ;
Height = 35, ;
Left = 912, ;
MousePointer = 15, ;
Top = 571, ;
Visible = .T., ;
Width = 20, ;
ForeColor = RGB(255,255,255), ;
Name = "Label5"

ADD OBJECT ysh as shape with ;
anchor=768,;
width=15,;
height=15,;
left=912+30,;
top=571,;
curvature=99, ;
mousepointer=15,;
backcolor=255,;
name="ysh"

procedure ysh.click
if thisform.label1.visible=.t.
thisform.setall("visible",.f.,"label")
thisform.image1.visible=.f.
else
thisform.setall("visible",.t.,"label")
thisform.image1.visible=.t.
endi
endproc



PROCEDURE ybuild
*javascript code original from http://www.jssor.com/slideshow/x-rotate.html
*that why its for personal use only.any kind of distribution is forbidden.
local m.myvar
text to m.myvar textmerge noshow
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Rotate Slideshow jquery javascript+html code example for website design, website development, web developer, web design, web development, web designer, website, web page</title>
<link href="http://cdn.jssor.com/style/site/css/site-style-1.1.2.min.css" rel="stylesheet" />
<style>
body{background-color:black;background:url('https://s-media-cache-ak0.pinimg.com/originals/e1/a0/ef/e1a0ef685ab2c885a3b837db6f6ebd6d.gif') repeat;}
</style>	
</head>
<body  oncontextmenu="return false ;" scroll="no">
<script type="text/javascript" src="http://cdn.jssor.com/script/jssor.slider-22.0.6.min.js"></script>
<script>
var _SlideshowTransitionC = {};
var _SlideshowTransitionCodes = {};
var _SlideshowTransitions = [];

//----------- Rotate Effects --------------
{
_SlideshowTransitionC["Rotate VDouble+ in"] = { $Duration: 1200, x: -1, y: 2, $Rows: 2, $Zoom: 11, $Rotate: 1, $Assembly: 2049, $ChessMode: { $Row: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate VDouble+ in"] = "{$Duration:1200,x:-1,y:2,$Rows:2,$Zoom:11,$Rotate:1,$Assembly:2049,$ChessMode:{$Row:15},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate HDouble+ in"] = { $Duration: 1200, x: 2, y: 1, $Cols: 2, $Zoom: 11, $Rotate: 1, $Assembly: 2049, $ChessMode: { $Column: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate HDouble+ in"] = "{$Duration:1200,x:2,y:1,$Cols:2,$Zoom:11,$Rotate:1,$Assembly:2049,$ChessMode:{$Column:15},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate VDouble- in"] = { $Duration: 1200, x: -0.5, y: 1, $Rows: 2, $Zoom: 1, $Rotate: 1, $Assembly: 2049, $ChessMode: { $Row: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate VDouble- in"] = "{$Duration:1200,x:-0.5,y:1,$Rows:2,$Zoom:1,$Rotate:1,$Assembly:2049,$ChessMode:{$Row:15},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate HDouble- in"] = { $Duration: 1200, x: 0.5, y: 0.3, $Cols: 2, $Zoom: 1, $Rotate: 1, $Assembly: 2049, $ChessMode: { $Column: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate HDouble- in"] = "{$Duration:1200,x:0.5,y:0.3,$Cols:2,$Zoom:1,$Rotate:1,$Assembly:2049,$ChessMode:{$Column:15},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate VDouble+ out"] = { $Duration: 1000, x: -1, y: 2, $Rows: 2, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Row: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.85 } };
_SlideshowTransitionCodes["Rotate VDouble+ out"] = "{$Duration:1000,x:-1,y:2,$Rows:2,$Zoom:11,$Rotate:1,$SlideOut:true,$Assembly:2049,$ChessMode:{$Row:15},$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.85}}";

_SlideshowTransitionC["Rotate HDouble+ out"] = { $Duration: 1000, x: 4, y: 2, $Cols: 2, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Column: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate HDouble+ out"] = "{$Duration:1000,x:4,y:2,$Cols:2,$Zoom:11,$Rotate:1,$SlideOut:true,$Assembly:2049,$ChessMode:{$Column:15},$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate VDouble- out"] = { $Duration: 1000, x: -0.5, y: 1, $Rows: 2, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Row: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate VDouble- out"] = "{$Duration:1000,x:-0.5,y:1,$Rows:2,$Zoom:1,$Rotate:1,$SlideOut:true,$Assembly:2049,$ChessMode:{$Row:15},$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate HDouble- out"] = { $Duration: 1000, x: 0.5, y: 0.3, $Cols: 2, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Column: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate HDouble- out"] = "{$Duration:1000,x:0.5,y:0.3,$Cols:2,$Zoom:1,$Rotate:1,$SlideOut:true,$Assembly:2049,$ChessMode:{$Column:15},$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate VFork+ in"] = { $Duration: 1200, x: -4, y: 2, $Rows: 2, $Zoom: 11, $Rotate: 1, $Assembly: 2049, $ChessMode: { $Row: 28 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate VFork+ in"] = "{$Duration:1200,x:-4,y:2,$Rows:2,$Zoom:11,$Rotate:1,$Assembly:2049,$ChessMode:{$Row:28},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate HFork+ in"] = { $Duration: 1200, x: 1, y: 2, $Cols: 2, $Zoom: 11, $Rotate: 1, $Assembly: 2049, $ChessMode: { $Column: 19 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate HFork+ in"] = "{$Duration:1200,x:1,y:2,$Cols:2,$Zoom:11,$Rotate:1,$Assembly:2049,$ChessMode:{$Column:19},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate VFork+ out"] = { $Duration: 1000, x: -3, y: 1, $Rows: 2, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Row: 28 }, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate VFork+ out"] = "{$Duration:1000,x:-3,y:1,$Rows:2,$Zoom:11,$Rotate:1,$SlideOut:true,$Assembly:2049,$ChessMode:{$Row:28},$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate HFork+ out"] = { $Duration: 1000, x: 1, y: 2, $Cols: 2, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Column: 19 }, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate HFork+ out"] = "{$Duration:1000,x:1,y:2,$Cols:2,$Zoom:11,$Rotate:1,$SlideOut:true,$Assembly:2049,$ChessMode:{$Column:19},$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ in"] = { $Duration: 1200, $Zoom: 11, $Rotate: 1, $Easing: { $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in"] = "{$Duration:1200,$Zoom:11,$Rotate:1,$Easing:{$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ in L"] = { $Duration: 1200, x: 4, $Zoom: 11, $Rotate: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in L"] = "{$Duration:1200,x:4,$Zoom:11,$Rotate:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ in R"] = { $Duration: 1200, x: -4, $Zoom: 11, $Rotate: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in R"] = "{$Duration:1200,x:-4,$Zoom:11,$Rotate:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ in T"] = { $Duration: 1200, y: 4, $Zoom: 11, $Rotate: 1, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in T"] = "{$Duration:1200,y:4,$Zoom:11,$Rotate:1,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ in B"] = { $Duration: 1200, y: -4, $Zoom: 11, $Rotate: 1, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in B"] = "{$Duration:1200,y:-4,$Zoom:11,$Rotate:1,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ in TL"] = { $Duration: 1200, x: 4, y: 4, $Zoom: 11, $Rotate: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in TL"] = "{$Duration:1200,x:4,y:4,$Zoom:11,$Rotate:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ in TR"] = { $Duration: 1200, x: -4, y: 4, $Zoom: 11, $Rotate: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in TR"] = "{$Duration:1200,x:-4,y:4,$Zoom:11,$Rotate:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ in BL"] = { $Duration: 1200, x: 4, y: -4, $Zoom: 11, $Rotate: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in BL"] = "{$Duration:1200,x:4,y:-4,$Zoom:11,$Rotate:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ in BR"] = { $Duration: 1200, x: -4, y: -4, $Zoom: 11, $Rotate: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.7 } };
_SlideshowTransitionCodes["Rotate Zoom+ in BR"] = "{$Duration:1200,x:-4,y:-4,$Zoom:11,$Rotate:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.7}}";

_SlideshowTransitionC["Rotate Zoom+ out"] = { $Duration: 1000, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out"] = "{$Duration:1000,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ out L"] = { $Duration: 1000, x: 4, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out L"] = "{$Duration:1000,x:4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ out R"] = { $Duration: 1000, x: -4, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out R"] = "{$Duration:1000,x:-4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ out T"] = { $Duration: 1000, y: 4, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out T"] = "{$Duration:1000,y:4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ out B"] = { $Duration: 1000, y: -4, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out B"] = "{$Duration:1000,y:-4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ out TL"] = { $Duration: 1000, x: 4, y: 4, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out TL"] = "{$Duration:1000,x:4,y:4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ out TR"] = { $Duration: 1000, x: -4, y: 4, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out TR"] = "{$Duration:1000,x:-4,y:4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ out BL"] = { $Duration: 1000, x: 4, y: -4, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out BL"] = "{$Duration:1000,x:4,y:-4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom+ out BR"] = { $Duration: 1000, x: -4, y: -4, $Zoom: 11, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInExpo }, $Opacity: 2, $Round: { $Rotate: 0.8 } };
_SlideshowTransitionCodes["Rotate Zoom+ out BR"] = "{$Duration:1000,x:-4,y:-4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInExpo},$Opacity:2,$Round:{$Rotate:0.8}}";

_SlideshowTransitionC["Rotate Zoom- in"] = { $Duration: 1200, $Zoom: 1, $Rotate: 1, $During: { $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in"] = "{$Duration:1200,$Zoom:1,$Rotate:1,$During:{$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- in L"] = { $Duration: 1200, x: 0.6, $Zoom: 1, $Rotate: 1, $During: { $Left: [0.2, 0.8], $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Left: $JssorEasing$.$EaseSwing, $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in L"] = "{$Duration:1200,x:0.6,$Zoom:1,$Rotate:1,$During:{$Left:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Left:$JssorEasing$.$EaseSwing,$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- in R"] = { $Duration: 1200, x: -0.6, $Zoom: 1, $Rotate: 1, $During: { $Left: [0.2, 0.8], $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Left: $JssorEasing$.$EaseSwing, $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in R"] = "{$Duration:1200,x:-0.6,$Zoom:1,$Rotate:1,$During:{$Left:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Left:$JssorEasing$.$EaseSwing,$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- in T"] = { $Duration: 1200, y: 0.6, $Zoom: 1, $Rotate: 1, $During: { $Top: [0.2, 0.8], $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in T"] = "{$Duration:1200,y:0.6,$Zoom:1,$Rotate:1,$During:{$Top:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- in B"] = { $Duration: 1200, y: -0.6, $Zoom: 1, $Rotate: 1, $During: { $Top: [0.2, 0.8], $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in B"] = "{$Duration:1200,y:-0.6,$Zoom:1,$Rotate:1,$During:{$Top:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- in TL"] = { $Duration: 1200, x: 0.6, y: 0.6, $Zoom: 1, $Rotate: 1, $During: { $Left: [0.2, 0.8], $Top: [0.2, 0.8], $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in TL"] = "{$Duration:1200,x:0.6,y:0.6,$Zoom:1,$Rotate:1,$During:{$Left:[0.2,0.8],$Top:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- in TR"] = { $Duration: 1200, x: -0.6, y: 0.6, $Zoom: 1, $Rotate: 1, $During: { $Left: [0.2, 0.8], $Top: [0.2, 0.8], $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in TR"] = "{$Duration:1200,x:-0.6,y:0.6,$Zoom:1,$Rotate:1,$During:{$Left:[0.2,0.8],$Top:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- in BL"] = { $Duration: 1200, x: 0.6, y: -0.6, $Zoom: 1, $Rotate: 1, $During: { $Left: [0.2, 0.8], $Top: [0.2, 0.8], $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in BL"] = "{$Duration:1200,x:0.6,y:-0.6,$Zoom:1,$Rotate:1,$During:{$Left:[0.2,0.8],$Top:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- in BR"] = { $Duration: 1200, x: -0.6, y: -0.6, $Zoom: 1, $Rotate: 1, $During: { $Left: [0.2, 0.8], $Top: [0.2, 0.8], $Zoom: [0.2, 0.8], $Rotate: [0.2, 0.8] }, $Easing: { $Zoom: $JssorEasing$.$EaseSwing, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseSwing }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- in BR"] = "{$Duration:1200,x:-0.6,y:-0.6,$Zoom:1,$Rotate:1,$During:{$Left:[0.2,0.8],$Top:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8]},$Easing:{$Zoom:$JssorEasing$.$EaseSwing,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseSwing},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out"] = { $Duration: 1000, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out"] = "{$Duration:1000,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out L"] = { $Duration: 1000, x: 0.5, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out L"] = "{$Duration:1000,x:0.5,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out R"] = { $Duration: 1000, x: -0.5, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out R"] = "{$Duration:1000,x:-0.5,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out T"] = { $Duration: 1000, y: 0.5, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out T"] = "{$Duration:1000,y:0.5,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out B"] = { $Duration: 1000, y: -0.5, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out B"] = "{$Duration:1000,y:-0.5,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out TL"] = { $Duration: 1000, x: 0.5, y: 0.5, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out TL"] = "{$Duration:1000,x:0.5,y:0.5,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out TR"] = { $Duration: 1000, x: -0.5, y: 0.5, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out TR"] = "{$Duration:1000,x:-0.5,y:0.5,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out BL"] = { $Duration: 1000, x: 0.5, y: -0.5, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out BL"] = "{$Duration:1000,x:0.5,y:-0.5,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.5}}";

_SlideshowTransitionC["Rotate Zoom- out BR"] = { $Duration: 1000, x: -0.5, y: -0.5, $Zoom: 1, $Rotate: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear, $Rotate: $JssorEasing$.$EaseInCubic }, $Opacity: 2, $Round: { $Rotate: 0.5 } };
_SlideshowTransitionCodes["Rotate Zoom- out BR"] = "{$Duration:1000,x:-0.5,y:-0.5,$Zoom:1,$Rotate:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear,$Rotate:$JssorEasing$.$EaseInCubic},$Opacity:2,$Round:{$Rotate:0.5}}";
}

$Jssor$.$Each(_SlideshowTransitionC, function (slideshowTransition, name) {
_SlideshowTransitions.push(slideshowTransition);
});
</script>
<script>
jssor_slider1_starter = function (containerId) {
var jssor_slider1 = new $JssorSlider$(containerId, {
	$AutoPlay: true,                                    //[Optional] Whether to auto play, to enable slideshow, this option must be set to true, default value is false
	$Idle: 3000,                            //[Optional] Interval (in milliseconds) to go for next slide since the previous stopped if the slider is auto playing, default value is 3000
	$DragOrientation: 3,                                //[Optional] Orientation to drag slide, 0 no drag, 1 horizental, 2 vertical, 3 either, default value is 1 (Note that the $DragOrientation should be the same as $PlayOrientation when $Cols is greater than 1, or parking position is not 0)
	$PauseOnHover: 1,                                   //[Optional] Whether to pause when mouse over if a slider is auto playing, 0 no pause, 1 pause for desktop, 2 pause for touch device, 3 pause for desktop and touch device, 4 freeze for desktop, 8 freeze for touch device, 12 freeze for desktop and touch device, default value is 1

	$SlideshowOptions: {                                //[Optional] Options to specify and enable slideshow or not
		$Class: $JssorSlideshowRunner$,                 //[Required] Class to create instance of slideshow
		$Transitions: _SlideshowTransitions,            //[Required] An array of slideshow transitions to play slideshow
		$TransitionsOrder: 1,                           //[Optional] The way to choose transition to play slide, 1 Sequence, 0 Random
		$ShowLink: true                                 //[Optional] Whether to bring slide link on top of the slider when slideshow is running, default value is false
	}
});

PlaySlideshowTransition = function (event) {
	$Jssor$.$StopEvent(event);
	$Jssor$.$CancelEvent(event);

	try {
		var eventSrcElement = $Jssor$.$EvtSrc(event);
		var transitionName = $Jssor$.$InnerText(eventSrcElement);
		jssor_slider1.$Next();

		jssor_slider1.$SetSlideshowTransitions([_SlideshowTransitionC[transitionName]]);

		var effectStr = _SlideshowTransitionCodes[transitionName];

		if (transitionNameTextBox) {
			transitionNameTextBox.value = transitionName;
		}
		if (transitionCodeTextBox) {
			transitionCodeTextBox.value = effectStr;
		}
	}
	catch (e) { }
}

TransitionTextBoxClickEventHandler = function (event) {
	transitionCodeTextBox.select();

	$Jssor$.$CancelEvent(event);
	$Jssor$.$StopEvent(event);
}

var transitionCodeTextBox = $Jssor$.$GetElement("stTransition");
var transitionNameTextBox = $Jssor$.$GetElement("stTransitionName");
$Jssor$.$AddEvent(transitionCodeTextBox, "click", TransitionTextBoxClickEventHandler);

//responsive code begin
//you can remove responsive code if you don't want the slider scales while window resizing
function ScaleSlider() {
	var bodyWidth = document.body.clientWidth;
	if (bodyWidth)
		jssor_slider1.$ScaleWidth(Math.min(bodyWidth, 950));
	else
		$Jssor$.$Delay(ScaleSlider, 30);
}

ScaleSlider();
$Jssor$.$AddEvent(window, "load", ScaleSlider);

$Jssor$.$AddEvent(window, "resize", ScaleSlider);
$Jssor$.$AddEvent(window, "orientationchange", ScaleSlider);
//responsive code end
};
</script>

<div class="headerspace"></div>
<div style="height: 20px;"></div>
<!-- Jssor Slider Begin -->
<!-- To move inline styles to css file/block, please specify a class name for each element. -->

<div id="slider1_container" style="position: relative; margin: 0 auto; width:950px; height:600px; left:0px; top:0px;">

<!-- Loading Screen -->
<div u="loading" style="position: absolute; top: 0px; left: 0px;">
<div style="filter: alpha(opacity=70); opacity:0.7; position: absolute; display: block;
	background-color: #000000; top: 0px; left: 0px;width: 100%;height:100%;">
</div>
<div style="position: absolute; display: block; background: url(../img/loading.gif) no-repeat center center;
	top: 0px; left: 0px;width: 100%;height:100%;">
</div>
</div>

<!-- Slides Container -->
<div u="slides" style="cursor: move; position: absolute; left: 0px; top: 0px; width: 950px; height:600px;
overflow: hidden;">
<<thisform.yimages>>
</div>
<a style="display: none" href="http://www.jssor.com">jQuery Slider</a>
<!-- Trigger -->
</div>
<!-- Jssor Slider End -->

<script>jssor_slider1_starter("slider1_container");</script>

<!--#endregion-->
<div style="height: 10px;"></div>
<div style="height: 15px;"></div>

</body>
</html>
endtext
local m.lcdest
m.lcdest=addbs(sys(2023))+"ytemp.html"
strtofile(m.myvar,m.lcdest)

thisform.olecontrol1.navigate(m.lcdest)
wmp.settings.mute=.f.
ENDPROC

PROCEDURE ybuild0
local m.yrep
m.yrep=addbs(justpath(sys(16,1)))
set defa to (yrep)

local m.yrepi  &&images
*m.yrepi=getdir()  &¬ efficient
m.yrepi=GETDIR(m.yrep, "Open jpg images folder" ," Images ", 1+2)
if empty(m.yrepi)
return .f.
endi

gnbre=adir(gabase,m.yrepi+"*.jpg")
if gnbre=0
return .f.
endi
set defa to (yrep)
_screen.windowstate=1
local m.xx
m.xx=""

for i=1 to gnbre
m.xx=m.xx+[<div><img u="image" src="file:///]+strtran(m.yrepi+allt(gabase(i,1)),"\","/")+[" /></div>]+chr(13)
endfor

set defa to (yrep)
*copy file loading.gif to (m.yrep+"img")
thisform.caption= "Slideshow with "+trans(gnbre)+ " images."
thisform.yimages=m.xx
thisform.ybuild()
ENDPROC

PROCEDURE Destroy
wmp=null
release wmp
m.yrep=null
release m.yrep
erase addbs(sys(2023))+"ytemp.html"
clea events
ENDPROC

PROCEDURE Init
Thisform.WindowState=2
Publi m.yrep
m.yrep=Addbs(Justpath(Sys(16,1)))
Set Defa To (yrep)

Publi  Wmp As WindowsMediaPlayer
Wmp = Createobject("WMPlayer.OCX.7")
With Wmp
.settings.autoStart = .T.
.settings.Volume=80
.settings.setMode('loop',.T.)    &&loop
.url=Thisform.ysound &&autostart=.t.  loading a web media can consume some time.
.settings.mute=.T.
Endwith
Thisform.ybuild0()
ENDPROC

PROCEDURE Load
set safe off
_screen.windowstate=1
ENDPROC

PROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
if nkeycode=27
thisform.release
endi
ENDPROC

PROCEDURE olecontrol1.Init
this.silent=.t.
ENDPROC

PROCEDURE label1.Click
thisform.lockscreen=.t.
thisform.titlebar=iif(thisform.titlebar=1,0,1)
if thisform.titlebar=0
thisform.height=thisform.height+31
else
thisform.height=thisform.height-31
endi
thisform.width=sysmetric(1)+5
thisform.lockscreen=.f.
ENDPROC

PROCEDURE image1.Click
#Define  APPCOMMAND_VOLUME_MUTE  0x80000
#Define  APPCOMMAND_VOLUME_UP  0xA0000
#Define  APPCOMMAND_VOLUME_DOWN  0x90000
#Define  WM_APPCOMMAND 0x319


Declare Integer SendMessage In user32;
INTEGER HWnd,;
INTEGER Msg,;
INTEGER wParam,;
INTEGER Lparam

SendMessage(_vfp.HWnd, WM_APPCOMMAND, _vfp.HWnd, APPCOMMAND_VOLUME_UP)
ENDPROC

PROCEDURE label3.Click
local m.myvar
text to m.myvar noshow
jQuery ( javascript ) is  actually the top soft for building responsive slideshows.it produces cool transitions.
i adapted an original free javascript code from http://www.jssor.com/slideshow/x-rotate.html
that why its for personal use only.any kind of distribution is forbidden.
the code can fetch for any jpg images folder and translate it into a slideshow with thumnails, all animated wonderfully.( can extend to other images formats also)
in code i linked directly to the web libraries to avoid to ship these files that why internet must be connected.of course can be downloaded with save As (css+js files).
-images stay in their disc locations and are linked absolutely.no resizing here (no thumbs used).
-original images must be around 800x600 to preserve ratios at viewing.
i added a music with looping (can be a disc media or a web one...this last make some time to load if internet is some slow.i put it on the form.init to benefite this loading if a web url).
i added 2 form properties : ysound (can set the audio media here) and yimages for building the div images string.
can adjust the audio volume (only by APIs here instead of coding WMP mediaplayer) and make the fullscreen on/off.
note: if want to preserve a built slideshow must export it out (with ytemp.html)of the source because its systemaically  erased.
-Can compile an exe ( add a config.fpw  screen=off|resource=off|safe=off).it works fine and generate the html file and folder img as well.
-javascript original code is from http://www.jssor.com/demos/image-gallery.slider
endtext
*messagebox(m.myvar,0+32+4096,'')

#define MB_ICONINFORMATION 0x00000040
#define MB_OK 0x00000000
#define MB_APPLMODAL 0x00000000
#define  MB_DEFBUTTON1 0x00000000


DECLARE INTEGER MessageBox IN user32 As MessageBoxA;
INTEGER hwnd,;
STRING  lpText,;
STRING  lpCaption,;
INTEGER wType

*buttons
#define MB_ABORTRETRYIGNORE 0x00000002
#define MB_CANCELTRYCONTINUE 0x00000006
#define MB_HELP 0x00004000

#define MB_OKCANCEL 0x00000001
#define MB_RETRYCANCEL 0x00000005
#define MB_YESNO  0x00000004
#define MB_YESNOCANCEL 0x00000003

*Icons
#define  MB_ICONEXCLAMATION 0x00000030
#define MB_ICONWARNING 0x00000030

#define MB_ICONASTERISK 0x00000040
#define MB_ICONQUESTION 0x00000020
#define MB_ICONSTOP 0x00000010
#define MB_ICONERROR 0x00000010
#define MB_ICONHAND  0x00000010

*To indicate the default button, specify one of the following values.

#define MB_DEFBUTTON2 0x00000100
#define MB_DEFBUTTON3 0x00000200
#define MB_DEFBUTTON4 0x00000300

*To indicate the modality of the dialog box, specify one of the following values.

#define MB_SYSTEMMODAL 0x00001000
#define MB_TASKMODAL 0x00002000

*To specify other options, use one or more of the following values.
#define MB_DEFAULT_DESKTOP_ONLY 0x00020000
#define MB_RIGHT 0x00080000
#define MB_RTLREADING  0x00100000
#define MB_SETFOREGROUND  0x00010000
#define MB_TOPMOST  0x00040000
#define MB_SERVICE_NOTIFICATION 0x00200000

*Return code
#define IDABORT 3
#define IDCANCEL 2
#define IDCONTINUE 11
#define IDIGNORE 5
#define IDNO 7
#define IDOK 1
#define IDRETRY 4
#define IDTRYAGAIN 10
#define IDYES 6

MessageBoxA(_vfp.hwnd,m.myvar,"Summary help",MB_APPLMODAL+MB_OK +MB_ICONINFORMATION +MB_DEFBUTTON1 )
ENDPROC

PROCEDURE label5.MouseEnter
LPARAMETERS nButton, nShift, nXCoord, nYCoord
ENDPROC

PROCEDURE label5.MouseLeave
LPARAMETERS nButton, nShift, nXCoord, nYCoord
ENDPROC

PROCEDURE label5.Click
thisform.release
ENDPROC

ENDDEFINE
*
*-- EndDefine: yslideshow_rotate


Five cool slideshow makers
Five cool slideshow makers

Click on code to select [then copy] -click outside to deselect


*3* slideshow with zoom transitions
*this dont use gdiplusX because there is not images to resize.all images stay in their location (absolute location).might be around 800x600 to preserve ratios at viewing.see the help in code.
*urls can be coded also but must re write the code (for a small part). 

publi yform
yform=newObject("yslideshow_zoom")
yform.show
read events
retu
*

DEFINE CLASS yslideshow_zoom AS form
BorderStyle = 0
Height = 607
Width = (sysmetric(1)+5)
ShowWindow = 2
AutoCenter = .T.
Caption = ""
KeyPreview = .T.
BackColor = RGB(0,0,0)
yimages = .F.
ysound = "https://archive.org/download/beethoven9/beethoven-9-01-concertgebouw-klemperer-1956-16048.mp3"
Name = "Form1"

ADD OBJECT olecontrol1 AS olecontrol WITH ;
Oleclass="shell.explorer.2", ;
Top = 0, ;
Left = 0, ;
Height = 564, ;
Width = 1032, ;
Anchor = 15, ;
Name = "Olecontrol1"

ADD OBJECT label1 AS label WITH ;
AutoSize = .T., ;
FontSize = 12, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Fullscreen on/off", ;
Height = 21, ;
Left = 552, ;
MousePointer = 15, ;
Top = 576, ;
Width = 115, ;
ForeColor = RGB(255,255,255), ;
Name = "Label1"

ADD OBJECT image1 AS image WITH ;
Anchor = 768, ;
Picture = home(1)+"graphics\icons\misc\volume01.ico", ;
BackStyle = 0, ;
Height = 32, ;
Left = 708, ;
MousePointer = 15, ;
Top = 566, ;
Width = 32, ;
Name = "Image1"

ADD OBJECT label2 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontName = "Segoe Script", ;
FontSize = 16, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Happy new year 2017", ;
Height = 36, ;
Left = 48, ;
Top = 570, ;
Width = 253, ;
ForeColor = RGB(0,255,0), ;
Name = "Label2"

ADD OBJECT label3 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontSize = 20, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "?", ;
Height = 35, ;
Left = 864, ;
MousePointer = 15, ;
Top = 569, ;
Width = 19, ;
ForeColor = RGB(0,255,0), ;
Name = "Label3"

ADD OBJECT label4 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontName = "Segoe Script", ;
FontSize = 16, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Yousfi Benameur", ;
Height = 36, ;
Left = 305, ;
Top = 569, ;
Width = 195, ;
ForeColor = RGB(255,255,0), ;
Name = "Label4"

ADD OBJECT label5 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontSize = 20, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "X", ;
Height = 35, ;
Left = 912, ;
MousePointer = 15, ;
Top = 571, ;
Visible = .T., ;
Width = 20, ;
ForeColor = RGB(255,255,255), ;
Name = "Label5"

ADD OBJECT ysh as shape with ;
anchor=768,;
width=15,;
height=15,;
left=912+30,;
top=571,;
curvature=99, ;
mousepointer=15,;
backcolor=255,;
name="ysh"

procedure ysh.click
if thisform.label1.visible=.t.
thisform.setall("visible",.f.,"label")
thisform.image1.visible=.f.
else
thisform.setall("visible",.t.,"label")
thisform.image1.visible=.t.
endi
endproc



PROCEDURE ybuild
*javascript code original from http://www.jssor.com/slideshow/x-rotate.html
*that why its for personal use only.any kind of distribution is forbidden.
local m.myvar
text to m.myvar textmerge noshow
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">

<title>Zoom Slideshow jquery javascript+html code example for website design, website development, web developer, web design, web development, web designer, website, web page</title>

<link href="http://cdn.jssor.com/style/site/css/site-style-1.1.2.min.css" rel="stylesheet" />
<script>jssor_slider1_starter("slider1_container");</script>

<style>
body{background-color:black;background:url('https://s-media-cache-ak0.pinimg.com/originals/e1/a0/ef/e1a0ef685ab2c885a3b837db6f6ebd6d.gif') repeat;}
</style>	
</head>

<body>
<script type="text/javascript" src="http://cdn.jssor.com/script/jssor.slider-22.0.6.min.js"></script>

<script>
var _SlideshowTransitionC = {};
var _SlideshowTransitionCodes = {};
var _SlideshowTransitions = [];


//----------- Zoom Effects --------------
{

_SlideshowTransitionC["Zoom VDouble+ in"] = { $Duration: 1200, y: 2, $Rows: 2, $Zoom: 11, $Assembly: 2049, $ChessMode: { $Row: 15 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom VDouble+ in"] = "{$Duration:1200,y:2,$Rows:2,$Zoom:11,$Assembly:2049,$ChessMode:{$Row:15},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom HDouble+ in"] = { $Duration: 1200, x: 4, $Cols: 2, $Zoom: 11, $Assembly: 2049, $ChessMode: { $Column: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom HDouble+ in"] = "{$Duration:1200,x:4,$Cols:2,$Zoom:11,$Assembly:2049,$ChessMode:{$Column:15},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom VDouble- in"] = { $Duration: 1200, y: 1, $Rows: 2, $Zoom: 1, $Assembly: 2049, $ChessMode: { $Row: 15 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom VDouble- in"] = "{$Duration:1200,y:1,$Rows:2,$Zoom:1,$Assembly:2049,$ChessMode:{$Row:15},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom HDouble- in"] = { $Duration: 1200, x: 0.5, $Cols: 2, $Zoom: 1, $Assembly: 2049, $ChessMode: { $Column: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom HDouble- in"] = "{$Duration:1200,x:0.5,$Cols:2,$Zoom:1,$Assembly:2049,$ChessMode:{$Column:15},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom VDouble+ out"] = { $Duration: 1200, y: 2, $Rows: 2, $Zoom: 11, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Row: 15 }, $Easing: { $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom VDouble+ out"] = "{$Duration:1200,y:2,$Rows:2,$Zoom:11,$SlideOut:true,$Assembly:2049,$ChessMode:{$Row:15},$Easing:{$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom HDouble+ out"] = { $Duration: 1200, x: 4, $Cols: 2, $Zoom: 11, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Column: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom HDouble+ out"] = "{$Duration:1200,x:4,$Cols:2,$Zoom:11,$SlideOut:true,$Assembly:2049,$ChessMode:{$Column:15},$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom VDouble- out"] = { $Duration: 1200, y: 1, $Rows: 2, $Zoom: 1, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Row: 15 }, $Easing: { $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom VDouble- out"] = "{$Duration:1200,y:1,$Rows:2,$Zoom:1,$SlideOut:true,$Assembly:2049,$ChessMode:{$Row:15},$Easing:{$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom HDouble- out"] = { $Duration: 1200, x: 0.5, $Cols: 2, $Zoom: 1, $SlideOut: true, $Assembly: 2049, $ChessMode: { $Column: 15 }, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom HDouble- out"] = "{$Duration:1200,x:0.5,$Cols:2,$Zoom:1,$SlideOut:true,$Assembly:2049,$ChessMode:{$Column:15},$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ in"] = { $Duration: 1000, $Zoom: 11, $Easing: { $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ in"] = "{$Duration:1000,$Zoom:11,$Easing:{$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom+ in L"] = { $Duration: 1000, x: 4, $Zoom: 11, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ in L"] = "{$Duration:1000,x:4,$Zoom:11,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom+ in R"] = { $Duration: 1000, x: -4, $Zoom: 11, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2, $Round: { $Top: 2.5 } };
_SlideshowTransitionCodes["Zoom+ in R"] = "{$Duration:1000,x:-4,$Zoom:11,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2,$Round:{$Top:2.5}}";

_SlideshowTransitionC["Zoom+ in T"] = { $Duration: 1000, y: 4, $Zoom: 11, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ in T"] = "{$Duration:1000,y:4,$Zoom:11,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom+ in B"] = { $Duration: 1000, y: -4, $Zoom: 11, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ in B"] = "{$Duration:1000,y:-4,$Zoom:11,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom+ in TL"] = { $Duration: 1000, x: 4, y: 4, $Zoom: 11, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ in TL"] = "{$Duration:1000,x:4,y:4,$Zoom:11,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom+ in TR"] = { $Duration: 1000, x: -4, y: 4, $Zoom: 11, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ in TR"] = "{$Duration:1000,x:-4,y:4,$Zoom:11,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom+ in BL"] = { $Duration: 1000, x: 4, y: -4, $Zoom: 11, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ in BL"] = "{$Duration:1000,x:4,y:-4,$Zoom:11,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom+ in BR"] = { $Duration: 1000, x: -4, y: -4, $Zoom: 11, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ in BR"] = "{$Duration:1000,x:-4,y:-4,$Zoom:11,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out"] = { $Duration: 1000, $Zoom: 11, $SlideOut: true, $Easing: { $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out"] = "{$Duration:1000,$Zoom:11,$SlideOut:true,$Easing:{$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out L"] = { $Duration: 1000, x: 4, $Zoom: 11, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out L"] = "{$Duration:1000,x:4,$Zoom:11,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out R"] = { $Duration: 1000, x: -4, $Zoom: 11, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out R"] = "{$Duration:1000,x:-4,$Zoom:11,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out T"] = { $Duration: 1000, y: 4, $Zoom: 11, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out T"] = "{$Duration:1000,y:4,$Zoom:11,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out B"] = { $Duration: 1000, y: -4, $Zoom: 11, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out B"] = "{$Duration:1000,y:-4,$Zoom:11,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out TL"] = { $Duration: 1000, x: 4, y: 4, $Zoom: 11, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out TL"] = "{$Duration:1000,x:4,y:4,$Zoom:11,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out TR"] = { $Duration: 1000, x: -4, y: 4, $Zoom: 11, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out TR"] = "{$Duration:1000,x:-4,y:4,$Zoom:11,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out BL"] = { $Duration: 1000, x: 4, y: -4, $Zoom: 11, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out BL"] = "{$Duration:1000,x:4,y:-4,$Zoom:11,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom+ out BR"] = { $Duration: 1000, x: -4, y: -4, $Zoom: 11, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom+ out BR"] = "{$Duration:1000,x:-4,y:-4,$Zoom:11,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- in"] = { $Duration: 1200, $Zoom: 1, $Easing: { $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in"] = "{$Duration:1200,$Zoom:1,$Easing:{$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- in L"] = { $Duration: 1200, x: 0.6, $Zoom: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in L"] = "{$Duration:1200,x:0.6,$Zoom:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- in R"] = { $Duration: 1200, x: -0.6, $Zoom: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in R"] = "{$Duration:1200,x:-0.6,$Zoom:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- in T"] = { $Duration: 1200, y: 0.6, $Zoom: 1, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in T"] = "{$Duration:1200,y:0.6,$Zoom:1,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- in B"] = { $Duration: 1200, y: -0.6, $Zoom: 1, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in B"] = "{$Duration:1200,y:-0.6,$Zoom:1,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- in TL"] = { $Duration: 1200, x: 0.6, y: 0.6, $Zoom: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in TL"] = "{$Duration:1200,x:0.6,y:0.6,$Zoom:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- in TR"] = { $Duration: 1200, x: -0.6, y: 0.6, $Zoom: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in TR"] = "{$Duration:1200,x:-0.6,y:0.6,$Zoom:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- in BL"] = { $Duration: 1200, x: 0.6, y: -0.6, $Zoom: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in BL"] = "{$Duration:1200,x:0.6,y:-0.6,$Zoom:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- in BR"] = { $Duration: 1200, x: -0.6, y: -0.6, $Zoom: 1, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Zoom: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseOutQuad }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- in BR"] = "{$Duration:1200,x:-0.6,y:-0.6,$Zoom:1,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Zoom:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseOutQuad},$Opacity:2}";

_SlideshowTransitionC["Zoom- out"] = { $Duration: 1000, $Zoom: 1, $SlideOut: true, $Easing: { $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out"] = "{$Duration:1000,$Zoom:1,$SlideOut:true,$Easing:{$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- out L"] = { $Duration: 1000, x: 1, $Zoom: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out L"] = "{$Duration:1000,x:1,$Zoom:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- out R"] = { $Duration: 1000, x: -1, $Zoom: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out R"] = "{$Duration:1000,x:-1,$Zoom:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- out T"] = { $Duration: 1000, y: 1, $Zoom: 1, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out T"] = "{$Duration:1000,y:1,$Zoom:1,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- out B"] = { $Duration: 1000, y: -1, $Zoom: 1, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out B"] = "{$Duration:1000,y:-1,$Zoom:1,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- out TL"] = { $Duration: 1000, x: 1, y: 1, $Zoom: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out TL"] = "{$Duration:1000,x:1,y:1,$Zoom:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- out TR"] = { $Duration: 1000, x: -1, y: 1, $Zoom: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out TR"] = "{$Duration:1000,x:-1,y:1,$Zoom:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- out BL"] = { $Duration: 1000, x: 1, y: -1, $Zoom: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out BL"] = "{$Duration:1000,x:1,y:-1,$Zoom:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Zoom- out BR"] = { $Duration: 1000, x: -1, y: -1, $Zoom: 1, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInExpo, $Top: $JssorEasing$.$EaseInExpo, $Zoom: $JssorEasing$.$EaseInExpo, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Zoom- out BR"] = "{$Duration:1000,x:-1,y:-1,$Zoom:1,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInExpo,$Top:$JssorEasing$.$EaseInExpo,$Zoom:$JssorEasing$.$EaseInExpo,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";
}

$Jssor$.$Each(_SlideshowTransitionC, function (slideshowTransition, name) {
_SlideshowTransitions.push(slideshowTransition);
});
</script>
<script>
jssor_slider1_starter = function (containerId) {
var jssor_slider1 = new $JssorSlider$(containerId, {
	$AutoPlay: true,                                    //[Optional] Whether to auto play, to enable slideshow, this option must be set to true, default value is false
	$Idle: 3000,                            //[Optional] Interval (in milliseconds) to go for next slide since the previous stopped if the slider is auto playing, default value is 3000
	$DragOrientation: 3,                                //[Optional] Orientation to drag slide, 0 no drag, 1 horizental, 2 vertical, 3 either, default value is 1 (Note that the $DragOrientation should be the same as $PlayOrientation when $Cols is greater than 1, or parking position is not 0)
	$PauseOnHover: 1,                                   //[Optional] Whether to pause when mouse over if a slider is auto playing, 0 no pause, 1 pause for desktop, 2 pause for touch device, 3 pause for desktop and touch device, 4 freeze for desktop, 8 freeze for touch device, 12 freeze for desktop and touch device, default value is 1

	$SlideshowOptions: {                                //[Optional] Options to specify and enable slideshow or not
		$Class: $JssorSlideshowRunner$,                 //[Required] Class to create instance of slideshow
		$Transitions: _SlideshowTransitions,            //[Required] An array of slideshow transitions to play slideshow
		$TransitionsOrder: 1,                           //[Optional] The way to choose transition to play slide, 1 Sequence, 0 Random
		$ShowLink: true                                 //[Optional] Whether to bring slide link on top of the slider when slideshow is running, default value is false
	}
});

PlaySlideshowTransition = function (event) {
	$Jssor$.$StopEvent(event);
	$Jssor$.$CancelEvent(event);

	try {
		var eventSrcElement = $Jssor$.$EvtSrc(event);
		var transitionName = $Jssor$.$InnerText(eventSrcElement);
		jssor_slider1.$Next();

		jssor_slider1.$SetSlideshowTransitions([_SlideshowTransitionC[transitionName]]);

		var effectStr = _SlideshowTransitionCodes[transitionName];

		if (transitionNameTextBox) {
			transitionNameTextBox.value = transitionName;
		}
		if (transitionCodeTextBox) {
			transitionCodeTextBox.value = effectStr;
		}
	}
	catch (e) { }
}

TransitionTextBoxClickEventHandler = function (event) {
	transitionCodeTextBox.select();

	$Jssor$.$CancelEvent(event);
	$Jssor$.$StopEvent(event);
}

var transitionCodeTextBox = $Jssor$.$GetElement("stTransition");
var transitionNameTextBox = $Jssor$.$GetElement("stTransitionName");
$Jssor$.$AddEvent(transitionCodeTextBox, "click", TransitionTextBoxClickEventHandler);

//responsive code begin
//you can remove responsive code if you don't want the slider scales while window resizing
function ScaleSlider() {
	var bodyWidth = document.body.clientWidth;
	if (bodyWidth)
		jssor_slider1.$ScaleWidth(Math.min(bodyWidth, 950));
	else
		$Jssor$.$Delay(ScaleSlider, 30);
}

ScaleSlider();
$Jssor$.$AddEvent(window, "load", ScaleSlider);

$Jssor$.$AddEvent(window, "resize", ScaleSlider);
$Jssor$.$AddEvent(window, "orientationchange", ScaleSlider);
//responsive code end
};
</script>

<div class="headerspace"></div>

<div style="height: 20px;"></div>

<!-- Jssor Slider Begin -->
<!-- To move inline styles to css file/block, please specify a class name for each element. -->

<div id="slider1_container" style="position: relative; margin: 0 auto; width:950px; height:600px; left:0px; top:0px;">

<!-- Loading Screen -->
<div u="loading" style="position: absolute; top: 0px; left: 0px;">
<div style="filter: alpha(opacity=70); opacity:0.7; position: absolute; display: block;
	background-color: #000000; top: 0px; left: 0px;width: 100%;height:100%;">
</div>
<div style="position: absolute; display: block; background: url(../img/loading.gif) no-repeat center center;
	top: 0px; left: 0px;width: 100%;height:100%;">
</div>
</div>

<!-- Slides Container -->
<div u="slides" style="cursor: move; position: absolute; left: 0px; top: 0px; width: 950px; height: 600px;
overflow: hidden;">
<<thisform.yimages>>
</div>

<a style="display: none" href="http://www.jssor.com">jQuery Slider</a>
<!-- Trigger -->
</div>

<div style="height: 10px;"></div>
<div style="height: 15px;"></div>

<script>jssor_slider1_starter("slider1_container");</script>


</body>
</html>
endtext
local m.lcdest
m.lcdest=addbs(sys(2023))+"ytemp.html"
strtofile(m.myvar,m.lcdest)

thisform.olecontrol1.navigate(m.lcdest)
wmp.settings.mute=.f.
ENDPROC

PROCEDURE ybuild0
local m.yrep
m.yrep=addbs(justpath(sys(16,1)))
set defa to (yrep)

local m.yrepi  &&images
*m.yrepi=getdir()  &¬ efficient
m.yrepi=GETDIR(m.yrep, "Open jpg images folder" ," Images ", 1+2)
if empty(m.yrepi)
return .f.
endi

gnbre=adir(gabase,m.yrepi+"*.jpg")
if gnbre=0
return .f.
endi
set defa to (yrep)
_screen.windowstate=1
local m.xx
m.xx=""

for i=1 to gnbre
m.xx=m.xx+[<div> <img u="image" src="file:///]+strtran(m.yrepi+allt(gabase(i,1)),"\","/")+[" /></div>]+chr(13)
endfor



set defa to (yrep)
*copy file loading.gif to (m.yrep+"img")
thisform.caption= "Slideshow with "+trans(gnbre)+ " images."
thisform.yimages=m.xx
thisform.ybuild()
ENDPROC

PROCEDURE Destroy
wmp=null
release wmp
m.yrep=null
release m.yrep
erase addbs(sys(2023)+"ytemp.html")
clea events
ENDPROC

PROCEDURE Init
Thisform.WindowState=2
Publi m.yrep
m.yrep=Addbs(Justpath(Sys(16,1)))
Set Defa To (yrep)

Publi  Wmp As WindowsMediaPlayer
Wmp = Createobject("WMPlayer.OCX.7")
With Wmp
.settings.autoStart = .T.
.settings.Volume=80
.settings.setMode('loop',.T.)    &&loop
.url=Thisform.ysound &&autostart=.t.  loading a web media can consume some time.
.settings.mute=.T.
Endwith
Thisform.ybuild0()
ENDPROC

PROCEDURE Load
set safe off
_screen.windowstate=1
ENDPROC

PROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
if nkeycode=27
thisform.release
endi
ENDPROC

PROCEDURE olecontrol1.Init
this.silent=.t.
ENDPROC

PROCEDURE label1.Click
thisform.lockscreen=.t.
thisform.titlebar=iif(thisform.titlebar=1,0,1)
if thisform.titlebar=0
thisform.height=thisform.height+31
else
thisform.height=thisform.height-31
endi
thisform.width=sysmetric(1)+5
thisform.lockscreen=.f.
ENDPROC

PROCEDURE image1.Click
#Define  APPCOMMAND_VOLUME_MUTE  0x80000
#Define  APPCOMMAND_VOLUME_UP  0xA0000
#Define  APPCOMMAND_VOLUME_DOWN  0x90000
#Define  WM_APPCOMMAND 0x319


Declare Integer SendMessage In user32;
INTEGER HWnd,;
INTEGER Msg,;
INTEGER wParam,;
INTEGER Lparam

SendMessage(_vfp.HWnd, WM_APPCOMMAND, _vfp.HWnd, APPCOMMAND_VOLUME_UP)
ENDPROC

PROCEDURE label3.Click
local m.myvar
text to m.myvar noshow
jQuery ( javascript ) is  actually the top soft for building responsive slideshows.it produces cool transitions.
i adapted an original free javascript code from http://www.jssor.com/slideshow/x-rotate.html
that why its for personal use only.any kind of distribution is forbidden.
the code can fetch for any jpg images folder and translate it into a slideshow with thumnails, all animated wonderfully.( can extend to other images formats also)
in code i linked directly to the web libraries to avoid to ship these files that why internet must be connected.of course can be downloaded with save As (css+js files).
-images stay in their disc locations and are linked absolutely.no resizing here (no thumbs used).
-original images must be around 800x600 to preserve ratios at viewing.
i added a music with looping (can be a disc media or a web one...this last make some time to load if internet is some slow.i put it on the form.init to benefite this loading if a web url).
i added 2 form properties : ysound (can set the audio media here) and yimages for building the div images string.
can adjust the audio volume (only by APIs here instead of coding WMP mediaplayer) and make the fullscreen on/off.
note: if want to preserve a built slideshow must export it out (with ytemp.html)of the source because its systemaically  erased.
-Can compile an exe ( add a config.fpw  screen=off|resource=off|safe=off).it works fine and generate the html file as well.
-javascript original code is from http://www.jssor.com/slideshow/x-zoom.html
endtext
*messagebox(m.myvar,0+32+4096,'')

#define MB_ICONINFORMATION 0x00000040
#define MB_OK 0x00000000
#define MB_APPLMODAL 0x00000000
#define  MB_DEFBUTTON1 0x00000000


DECLARE INTEGER MessageBox IN user32 As MessageBoxA;
INTEGER hwnd,;
STRING  lpText,;
STRING  lpCaption,;
INTEGER wType

*buttons
#define MB_ABORTRETRYIGNORE 0x00000002
#define MB_CANCELTRYCONTINUE 0x00000006
#define MB_HELP 0x00004000

#define MB_OKCANCEL 0x00000001
#define MB_RETRYCANCEL 0x00000005
#define MB_YESNO  0x00000004
#define MB_YESNOCANCEL 0x00000003

*Icons
#define  MB_ICONEXCLAMATION 0x00000030
#define MB_ICONWARNING 0x00000030

#define MB_ICONASTERISK 0x00000040
#define MB_ICONQUESTION 0x00000020
#define MB_ICONSTOP 0x00000010
#define MB_ICONERROR 0x00000010
#define MB_ICONHAND  0x00000010

*To indicate the default button, specify one of the following values.

#define MB_DEFBUTTON2 0x00000100
#define MB_DEFBUTTON3 0x00000200
#define MB_DEFBUTTON4 0x00000300

*To indicate the modality of the dialog box, specify one of the following values.

#define MB_SYSTEMMODAL 0x00001000
#define MB_TASKMODAL 0x00002000

*To specify other options, use one or more of the following values.
#define MB_DEFAULT_DESKTOP_ONLY 0x00020000
#define MB_RIGHT 0x00080000
#define MB_RTLREADING  0x00100000
#define MB_SETFOREGROUND  0x00010000
#define MB_TOPMOST  0x00040000
#define MB_SERVICE_NOTIFICATION 0x00200000

*Return code
#define IDABORT 3
#define IDCANCEL 2
#define IDCONTINUE 11
#define IDIGNORE 5
#define IDNO 7
#define IDOK 1
#define IDRETRY 4
#define IDTRYAGAIN 10
#define IDYES 6

MessageBoxA(_vfp.hwnd,m.myvar,"Summary help",MB_APPLMODAL+MB_OK +MB_ICONINFORMATION +MB_DEFBUTTON1 )
ENDPROC

PROCEDURE label5.MouseEnter
LPARAMETERS nButton, nShift, nXCoord, nYCoord
ENDPROC

PROCEDURE label5.MouseLeave
LPARAMETERS nButton, nShift, nXCoord, nYCoord
ENDPROC

PROCEDURE label5.Click
thisform.release
ENDPROC

ENDDEFINE
*
*-- EndDefine: yslideshow_zoom


Five cool slideshow makers

Click on code to select [then copy] -click outside to deselect

 

*4* All transitions viewer
*this code view any transition listed in the listbox.The code is extracted from vfp and copied to the clipboard for use.
*read the help on form.

if _vfp.startmode=0
on shutdown quit
endi

publi yform
yform=newObject("ytransitions_viewer")
yform.show
read events
retu
*
DEFINE CLASS ytransitions_viewer AS form
BorderStyle = 0
Height = 607
Width = (sysmetric(1)+5)
ShowWindow = 2
AutoCenter = .T.
Caption = "Transition viewer"
KeyPreview = .T.
BackColor = RGB(0,0,0)
yimages = .F.
ysound = "https://ia600500.us.archive.org/22/items/SymphonyNo.5/Ludwig_van_Beethoven_-_symphony_no._5_in_c_minor_op._67_-_i._allegro_con_brio.mp3"
Name = "Form1"

ADD OBJECT olecontrol1 AS olecontrol WITH ;
Oleclass="shell.explorer.2", ;
Top = 0, ;
Left = 0, ;
Height = 564, ;
Width = 1032, ;
Anchor = 15, ;
Name = "Olecontrol1"

ADD OBJECT label1 AS label WITH ;
AutoSize = .T., ;
FontSize = 12, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "Fullscreen on/off", ;
Height = 21, ;
Left = 552, ;
MousePointer = 15, ;
Top = 576, ;
Width = 115, ;
ForeColor = RGB(255,255,255), ;
Name = "Label1"

ADD OBJECT image1 AS image WITH ;
Anchor = 768, ;
Picture = home(1)+"graphics\icons\misc\volume01.ico", ;
BackStyle = 0, ;
Height = 32, ;
Left = 708, ;
MousePointer = 15, ;
Top = 566, ;
Width = 32, ;
Name = "Image1"

ADD OBJECT ycode as shape with ;
anchor=768,;
width=15,;
height=15,;
left=54,;
top=576,;
curvature=99, ;
mousepointer=15,;
backcolor=rgb(255,255,0), ;
name="ycode"

ADD OBJECT label3 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontSize = 20, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "?", ;
Height = 35, ;
Left = 864, ;
MousePointer = 15, ;
Top = 569, ;
Width = 19, ;
ForeColor = RGB(0,255,0), ;
Name = "Label3"

ADD OBJECT label5 AS label WITH ;
AutoSize = .T., ;
FontBold = .T., ;
FontSize = 20, ;
Anchor = 768, ;
BackStyle = 0, ;
Caption = "X", ;
Height = 35, ;
Left = 912, ;
MousePointer = 15, ;
Top = 571, ;
Visible = .T., ;
Width = 20, ;
ForeColor = RGB(255,255,255), ;
Name = "Label5"

ADD OBJECT ysh as shape with ;
anchor=768,;
width=15,;
height=15,;
left=912+30,;
top=571,;
curvature=99, ;
mousepointer=15,;
backcolor=255,;
name="ysh"


procedure ycode.click
local m.oo
oo=thisform.olecontrol1.document
local  m.xtransition,m.xcode,objListe,m.xindex,selValue
objListe=oo.getElementById("ssTransition")
xindex=objListe.selectedIndex
selValue=" ["+ObjListe.options[xindex].text+" ]"
m.xcode      =thisform.olecontrol1.document.getElementById("stTransition").value
_cliptext="Javascript code for "+m.selValue+chr(13)+chr(13)+m.xcode
messagebox("Javascript code for "+m.selValue+chr(13)+chr(13)+m.xcode,0+32+4096,'Transition code is in clipboard!')
endproc

procedure ysh.click
if thisform.label1.visible=.t.
thisform.setall("visible",.f.,"label")
thisform.image1.visible=.f.
else
thisform.setall("visible",.t.,"label")
thisform.image1.visible=.t.
endi
endproc

PROCEDURE ybuild
*javascript code original from http://www.jssor.com/slideshow/x-rotate.html
*that why its for personal use only.any kind of distribution is forbidden.
local m.myvar
text to m.myvar textmerge noshow
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tool - 360+ Sldieshow Transitions Viewer - Jssor Slider Development Kit for web developer, web development, website developer, website development, website design, web design, website, web page</title>

<link href="http://cdn.jssor.com/style/site/css/site-style-1.1.2.min.css" rel="stylesheet" />
<script type="text/javascript" src="http://www.jssor.com/development/slideshow-transition-builder-controller.min.js"></script>
</head>
<body style="margin: 0px; padding:0px; font-family:Helvetica,Arial,sans-serif;color:white;background-color:black;background:url('https://s-media-cache-ak0.pinimg.com/originals/e1/a0/ef/e1a0ef685ab2c885a3b837db6f6ebd6d.gif') repeat;" oncontextmenu="return false; scroll="no">
<!-- Slideshow Transition Controller Form Begine -->
<br><br><br>
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#EEEEEE" align="center" style="margin: 0 auto; width: 100%; max-width: 600px; color:#000;">
<tr>

<td width="160"><b>    Select Transition</b></td>
<td width="300" style="float:left;">
	<select name="ssTransition" id="ssTransition" style="width: 80%;">
		<option value="">
	</select>
	<input type="button" value="Play" id="sButtonPlay" style="display: none; width: 110px" name="sButtonPlay" disabled="disabled">
</td>
</tr>
<tr>
<td></td>
<td style="display:none;"><b>  Transition Code</b></td>
<td valign="middle" style="display:none;">
	<input id="stTransition" style="width: 100%; height: 25px;" type="text" name="stTransition">
</td>
</tr>
</table>
<!-- Slideshow Transition Controller Form End -->

<div style="height: 20px;"></div>

<!-- Jssor Slider Begin -->
<!-- To move inline styles to css file/block, please specify a class name for each element. -->
<div style="position: relative; margin: 0 auto; width: 800px; height: 550px;" id="slider1_container">

<!-- Loading Screen -->
<div u="loading" style="position: absolute; top: 0px; left: 0px;">
<div style="filter: alpha(opacity=70); opacity:.7; position: absolute; display: block;
	background-color: #000000; top: 0px; left: 0px;width: 100%;height:100%;">
</div>
<div style="position: absolute; display: block; background: url(../img/loading.gif) no-repeat center center;
	top: 0px; left: 0px;width: 100%;height:100%;">
</div>
</div>
<div u="slides" style="cursor: move; position: absolute; width: 800px; height: 550px;top:50px;left:0px;overflow:hidden;">
<!-- Slide -->
<div>
	<img u="image" src="http://cdn.jssor.com/demos/img/landscape/01.jpg"  width="800" height="550">
</div>
<!-- Slide -->
<div>
	<img u="image" src="http://cdn.jssor.com/demos/img/landscape/02.jpg">
</div>
<!-- Slide -->
<div>
	<img u="image" src="http://cdn.jssor.com/demos/img/landscape/04.jpg">
</div>
<!-- Slide -->
<div>
	<img u="image" src="http://cdn.jssor.com/demos/img/landscape/05.jpg">
</div>
</div>
</div>
<!-- Jssor Slider End -->
<script>
slideshow_transition_controller_starter("slider1_container");
</script>
<div style="height: 10px;"></div>
<div class="backGreen" style="position: relative; margin: 0 auto; padding: 20px; width: 940px;">
<center> <div id="basicusage" class="description" style="display: table; margin: 0 ;margin-top:100px; auto; font-size:26px; text-align:center;">
	Tool - Slideshow Transition Viewer
</div></center>
<div style="height:10px;"></div>
</div>
<div style="height: 20px;"></div>
</body>
</html>
endtext
local m.lcdest
m.lcdest=addbs(sys(2023))+"ytemp.html"
strtofile(m.myvar,m.lcdest)

thisform.olecontrol1.navigate(m.lcdest)
wmp.settings.mute=.f.
ENDPROC

PROCEDURE ybuild0
local m.yrep
m.yrep=addbs(justpath(sys(16,1)))
set defa to (yrep)
thisform.ybuild()
ENDPROC

PROCEDURE Destroy
wmp=null
release wmp
m.yrep=null
release m.yrep
erase addbs(sys(2023)+"ytemp.html")
clea events
ENDPROC

PROCEDURE Init
Thisform.WindowState=2
Publi m.yrep
m.yrep=Addbs(Justpath(Sys(16,1)))
Set Defa To (yrep)

Publi  Wmp As WindowsMediaPlayer
Wmp = Createobject("WMPlayer.OCX.7")
With Wmp
.settings.autoStart = .T.
.settings.Volume=80
.settings.setMode('loop',.T.)    &&loop
.url=Thisform.ysound &&autostart=.t.  loading a web media can consume some time.
.settings.mute=.T.
Endwith
Thisform.ybuild0()
ENDPROC

PROCEDURE Load
set safe off
_screen.windowstate=1
ENDPROC

PROCEDURE KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
if nkeycode=27
thisform.release
endi
ENDPROC

PROCEDURE olecontrol1.Init
this.silent=.t.
ENDPROC

PROCEDURE label1.Click
thisform.lockscreen=.t.
thisform.titlebar=iif(thisform.titlebar=1,0,1)
if thisform.titlebar=0
thisform.height=thisform.height+31
else
thisform.height=thisform.height-31
endi
thisform.width=sysmetric(1)+5
thisform.lockscreen=.f.
ENDPROC

PROCEDURE image1.Click
#Define  APPCOMMAND_VOLUME_MUTE  0x80000
#Define  APPCOMMAND_VOLUME_UP  0xA0000
#Define  APPCOMMAND_VOLUME_DOWN  0x90000
#Define  WM_APPCOMMAND 0x319

Declare Integer SendMessage In user32;
INTEGER HWnd,;
INTEGER Msg,;
INTEGER wParam,;
INTEGER Lparam

SendMessage(_vfp.HWnd, WM_APPCOMMAND, _vfp.HWnd, APPCOMMAND_VOLUME_UP)
ENDPROC

PROCEDURE label3.Click
local m.myvar
text to m.myvar noshow
This is a good refrence for all transitions can be applied on images in web.
The form above is to preview slideshow transition. You can select any slideshow transition from 360+ predefined slideshow transitions to play.<br>
A slideshow transition can be any or combination of 'Fly (Hor)', 'Fly (Ver)', 'Clip', 'Zoom' and 'Rotate'.<br>
Select transition to preview effect.
You can change value of '$Duration' to adjust speed of transition. e.g. '$Duration:1200' -> '$Duration: 2000'.
Also you can change '$Col' or '$Row' value to adjust columns or rows count.

Press on the yellow shape at bottom left of the form to view the transition code (its saved to the clipboard).
Note that vfp cannot in my knowledge play with transitions.It was the specialized domain of navigators and javascript!
-javascript original code is from http://www.jssor.com/development/tool-slideshow-transition-viewer.html
-librariries (css and js) are linked to the author site (internet connected).
endtext
messagebox(m.myvar,0+32+4096,'')
ENDPROC

PROCEDURE label5.MouseEnter
LPARAMETERS nButton, nShift, nXCoord, nYCoord
ENDPROC

PROCEDURE label5.MouseLeave
LPARAMETERS nButton, nShift, nXCoord, nYCoord
ENDPROC

PROCEDURE label5.Click
thisform.release
ENDPROC

ENDDEFINE
*
*-- EndDefine: ytransitions_viewer


click yellow shape button to see the transition and its javascript code (for any selected transition).

click yellow shape button to see the transition and its javascript code (for any selected transition).

Click on code to select [then copy] -click outside to deselect


*5* slideshow with fade transitions
*the code asks to point to any folder with jpg images.
*a preset web sound begins playing with object WMP embed in code
*photos must be around 800x600 to preserve ratios when viewing.
*the internetexplorer.application is used here (instead form for codes above).But must run vfp9 as administrator to avoid errors.
*internet must be connected.links are to the author librairies(CSS & JS)
*original javascript code is from http://cdn.jssor.com (adapted)

local m.yrep
m.yrep=addbs(justpath(sys(16,1)))
set defa to (yrep)

local m.yrepi  &&images
*m.yrepi=getdir()  &¬ efficient
m.yrepi=GETDIR(m.yrep, "Open jpg images folder" ," Images ", 1+2)
if empty(m.yrepi)
return .f.
endi

gnbre=adir(gabase,m.yrepi+"*.jpg")
if gnbre=0
return .f.
endi
set defa to (yrep)

local m.xx
m.xx=""
for i=1 to gnbre
m.xx=m.xx+[<div> <img u="image" src="file:///]+strtran(m.yrepi+allt(gabase(i,1)),"\","/")+[" /></div>]+chr(13)
endfor

local m.ysound  &&can set a disc audio media (or web one)
m.ysound = "https://archive.org/download/beethoven9/beethoven-9-01-concertgebouw-klemperer-1956-16048.mp3"

local m.myvar
text to m.myvar textmerge noshow
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Fade Slideshow jquery javascript+html code example for website design, website development, web developer, web design, web development, web designer, website, web page</title>
<link href="http://cdn.jssor.com/style/site/css/site-style-1.1.2.min.css" rel="stylesheet" />
<style>
body{background-color:black;background:url('https://s-media-cache-ak0.pinimg.com/originals/e1/a0/ef/e1a0ef685ab2c885a3b837db6f6ebd6d.gif') repeat;}
</style>	
</head>

<body bgcolor=black  oncontextmenu="return false;" scroll="no" >
<br>
<input type="button" value=" X " style="float:right;color:red;background-color:black;cursor:pointer;" onclick="javascript:window.close();"><br>
<script type="text/javascript" src="http://cdn.jssor.com/script/jssor.slider-22.0.7.min.js"></script>
<script>
var _SlideshowTransitionC = {};
var _SlideshowTransitionCodes = {};
var _SlideshowTransitions = [];

//----------- Fade Effects --------------
{
_SlideshowTransitionC["Fade"] = { $Duration: 1200, $Opacity: 2 };
_SlideshowTransitionCodes["Fade"] = "{$Duration:1200,$Opacity:2}";

_SlideshowTransitionC["Fade in L"] = { $Duration: 1200, x: 0.3, $During: { $Left: [0.3, 0.7] }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in L"] = "{$Duration:1200,x:0.3,$During:{$Left:[0.3,0.7]},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade in R"] = { $Duration: 1200, x: -0.3, $During: { $Left: [0.3, 0.7] }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in R"] = "{$Duration:1200,x:-0.3,$During:{$Left:[0.3,0.7]},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade in T"] = { $Duration: 1200, y: 0.3, $During: { $Top: [0.3, 0.7] }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in T"] = "{$Duration:1200,y:0.3,$During:{$Top:[0.3,0.7]},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade in B"] = { $Duration: 1200, y: -0.3, $During: { $Top: [0.3, 0.7] }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in B"] = "{$Duration:1200,y:-0.3,$During:{$Top:[0.3,0.7]},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade in LR"] = { $Duration: 1200, x: 0.3, $Cols: 2, $During: { $Left: [0.3, 0.7] }, $ChessMode: { $Column: 3 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in LR"] = "{$Duration:1200,x:0.3,$Cols:2,$During:{$Left:[0.3,0.7]},$ChessMode:{$Column:3},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade in LR Chess"] = { $Duration: 1200, y: 0.3, $Cols: 2, $During: { $Top: [0.3, 0.7] }, $ChessMode: { $Column: 12 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in LR Chess"] = "{$Duration:1200,y:0.3,$Cols:2,$During:{$Top:[0.3,0.7]},$ChessMode:{$Column:12},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade in TB"] = { $Duration: 1200, y: 0.3, $Rows: 2, $During: { $Top: [0.3, 0.7] }, $ChessMode: { $Row: 12 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in TB"] = "{$Duration:1200,y:0.3,$Rows:2,$During:{$Top:[0.3,0.7]},$ChessMode:{$Row:12},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade in TB Chess"] = { $Duration: 1200, x: 0.3, $Rows: 2, $During: { $Left: [0.3, 0.7] }, $ChessMode: { $Row: 3 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in TB Chess"] = "{$Duration:1200,x:0.3,$Rows:2,$During:{$Left:[0.3,0.7]},$ChessMode:{$Row:3},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade in Corners"] = { $Duration: 1200, x: 0.3, y: 0.3, $Cols: 2, $Rows: 2, $During: { $Left: [0.3, 0.7], $Top: [0.3, 0.7] }, $ChessMode: { $Column: 3, $Row: 12 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade in Corners"] = "{$Duration:1200,x:0.3,y:0.3,$Cols:2,$Rows:2,$During:{$Left:[0.3,0.7],$Top:[0.3,0.7]},$ChessMode:{$Column:3,$Row:12},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out L"] = { $Duration: 1200, x: 0.3, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out L"] = "{$Duration:1200,x:0.3,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out R"] = { $Duration: 1200, x: -0.3, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out R"] = "{$Duration:1200,x:-0.3,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out T"] = { $Duration: 1200, y: 0.3, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out T"] = "{$Duration:1200,y:0.3,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out B"] = { $Duration: 1200, y: -0.3, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out B"] = "{$Duration:1200,y:-0.3,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out LR"] = { $Duration: 1200, x: 0.3, $Cols: 2, $SlideOut: true, $ChessMode: { $Column: 3 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out LR"] = "{$Duration:1200,x:0.3,$Cols:2,$SlideOut:true,$ChessMode:{$Column:3},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out LR Chess"] = { $Duration: 1200, y: -0.3, $Cols: 2, $SlideOut: true, $ChessMode: { $Column: 12 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out LR Chess"] = "{$Duration:1200,y:-0.3,$Cols:2,$SlideOut:true,$ChessMode:{$Column:12},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out TB"] = { $Duration: 1200, y: 0.3, $Rows: 2, $SlideOut: true, $ChessMode: { $Row: 12 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out TB"] = "{$Duration:1200,y:0.3,$Rows:2,$SlideOut:true,$ChessMode:{$Row:12},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out TB Chess"] = { $Duration: 1200, x: -0.3, $Rows: 2, $SlideOut: true, $ChessMode: { $Row: 3 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out TB Chess"] = "{$Duration:1200,x:-0.3,$Rows:2,$SlideOut:true,$ChessMode:{$Row:3},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade out Corners"] = { $Duration: 1200, x: 0.3, y: 0.3, $Cols: 2, $Rows: 2, $During: { $Left: [0.3, 0.7], $Top: [0.3, 0.7] }, $SlideOut: true, $ChessMode: { $Column: 3, $Row: 12 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade out Corners"] = "{$Duration:1200,x:0.3,y:0.3,$Cols:2,$Rows:2,$During:{$Left:[0.3,0.7],$Top:[0.3,0.7]},$SlideOut:true,$ChessMode:{$Column:3,$Row:12},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade Fly in L"] = { $Duration: 1200, x: 0.3, $During: { $Left: [0.3, 0.7] }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in L"] = "{$Duration:1200,x:0.3,$During:{$Left:[0.3,0.7]},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly in R"] = { $Duration: 1200, x: -0.3, $During: { $Left: [0.3, 0.7] }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in R"] = "{$Duration:1200,x:-0.3,$During:{$Left:[0.3,0.7]},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly in T"] = { $Duration: 1200, y: 0.3, $During: { $Top: [0.3, 0.7] }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in T"] = "{$Duration:1200,y:0.3,$During:{$Top:[0.3,0.7]},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly in B"] = { $Duration: 1200, y: -0.3, $During: { $Top: [0.3, 0.7] }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in B"] = "{$Duration:1200,y:-0.3,$During:{$Top:[0.3,0.7]},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly in LR"] = { $Duration: 1200, x: 0.3, $Cols: 2, $During: { $Left: [0.3, 0.7] }, $ChessMode: { $Column: 3 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in LR"] = "{$Duration:1200,x:0.3,$Cols:2,$During:{$Left:[0.3,0.7]},$ChessMode:{$Column:3},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly in LR Chess"] = { $Duration: 1200, y: 0.3, $Cols: 2, $During: { $Top: [0.3, 0.7] }, $ChessMode: { $Column: 12 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in LR Chess"] = "{$Duration:1200,y:0.3,$Cols:2,$During:{$Top:[0.3,0.7]},$ChessMode:{$Column:12},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly in TB"] = { $Duration: 1200, y: 0.3, $Rows: 2, $During: { $Top: [0.3, 0.7] }, $ChessMode: { $Row: 12 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in TB"] = "{$Duration:1200,y:0.3,$Rows:2,$During:{$Top:[0.3,0.7]},$ChessMode:{$Row:12},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly in TB Chess"] = { $Duration: 1200, x: 0.3, $Rows: 2, $During: { $Left: [0.3, 0.7] }, $ChessMode: { $Row: 3 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in TB Chess"] = "{$Duration:1200,x:0.3,$Rows:2,$During:{$Left:[0.3,0.7]},$ChessMode:{$Row:3},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly in Corners"] = { $Duration: 1200, x: 0.3, y: 0.3, $Cols: 2, $Rows: 2, $During: { $Left: [0.3, 0.7], $Top: [0.3, 0.7] }, $ChessMode: { $Column: 3, $Row: 12 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly in Corners"] = "{$Duration:1200,x:0.3,y:0.3,$Cols:2,$Rows:2,$During:{$Left:[0.3,0.7],$Top:[0.3,0.7]},$ChessMode:{$Column:3,$Row:12},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out L"] = { $Duration: 1200, x: 0.3, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out L"] = "{$Duration:1200,x:0.3,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out R"] = { $Duration: 1200, x: -0.3, $SlideOut: true, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out R"] = "{$Duration:1200,x:-0.3,$SlideOut:true,$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out T"] = { $Duration: 1200, y: 0.3, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out T"] = "{$Duration:1200,y:0.3,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out B"] = { $Duration: 1200, y: -0.3, $SlideOut: true, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out B"] = "{$Duration:1200,y:-0.3,$SlideOut:true,$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out LR"] = { $Duration: 1200, x: 0.3, $Cols: 2, $SlideOut: true, $ChessMode: { $Column: 3 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out LR"] = "{$Duration:1200,x:0.3,$Cols:2,$SlideOut:true,$ChessMode:{$Column:3},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out LR Chess"] = { $Duration: 1200, y: 0.3, $Cols: 2, $SlideOut: true, $ChessMode: { $Column: 12 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out LR Chess"] = "{$Duration:1200,y:0.3,$Cols:2,$SlideOut:true,$ChessMode:{$Column:12},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out TB"] = { $Duration: 1200, y: 0.3, $Rows: 2, $SlideOut: true, $ChessMode: { $Row: 12 }, $Easing: { $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out TB"] = "{$Duration:1200,y:0.3,$Rows:2,$SlideOut:true,$ChessMode:{$Row:12},$Easing:{$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out TB Chess"] = { $Duration: 1200, x: 0.3, $Rows: 2, $SlideOut: true, $ChessMode: { $Row: 3 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out TB Chess"] = "{$Duration:1200,x:0.3,$Rows:2,$SlideOut:true,$ChessMode:{$Row:3},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Fly out Corners"] = { $Duration: 1200, x: 0.3, y: 0.3, $Cols: 2, $Rows: 2, $During: { $Left: [0.3, 0.7], $Top: [0.3, 0.7] }, $SlideOut: true, $ChessMode: { $Column: 3, $Row: 12 }, $Easing: { $Left: $JssorEasing$.$EaseInCubic, $Top: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2, $Outside: true };
_SlideshowTransitionCodes["Fade Fly out Corners"] = "{$Duration:1200,x:0.3,y:0.3,$Cols:2,$Rows:2,$During:{$Left:[0.3,0.7],$Top:[0.3,0.7]},$SlideOut:true,$ChessMode:{$Column:3,$Row:12},$Easing:{$Left:$JssorEasing$.$EaseInCubic,$Top:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2,$Outside:true}";

_SlideshowTransitionC["Fade Clip in H"] = { $Duration: 1200, $Delay: 20, $Clip: 3, $Assembly: 260, $Easing: { $Clip: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade Clip in H"] = "{$Duration:1200,$Delay:20,$Clip:3,$Assembly:260,$Easing:{$Clip:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade Clip in V"] = { $Duration: 1200, $Delay: 20, $Clip: 12, $Assembly: 260, $Easing: { $Clip: $JssorEasing$.$EaseInCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade Clip in V"] = "{$Duration:1200,$Delay:20,$Clip:12,$Assembly:260,$Easing:{$Clip:$JssorEasing$.$EaseInCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade Clip out H"] = { $Duration: 1200, $Delay: 20, $Clip: 3, $SlideOut: true, $Assembly: 260, $Easing: { $Clip: $JssorEasing$.$EaseOutCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade Clip out H"] = "{$Duration:1200,$Delay:20,$Clip:3,$SlideOut:true,$Assembly:260,$Easing:{$Clip:$JssorEasing$.$EaseOutCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade Clip out V"] = { $Duration: 1200, $Delay: 20, $Clip: 12, $SlideOut: true, $Assembly: 260, $Easing: { $Clip: $JssorEasing$.$EaseOutCubic, $Opacity: $JssorEasing$.$EaseLinear }, $Opacity: 2 };
_SlideshowTransitionCodes["Fade Clip out V"] = "{$Duration:1200,$Delay:20,$Clip:12,$SlideOut:true,$Assembly:260,$Easing:{$Clip:$JssorEasing$.$EaseOutCubic,$Opacity:$JssorEasing$.$EaseLinear},$Opacity:2}";

_SlideshowTransitionC["Fade Stairs"] = { $Duration: 800, $Delay: 30, $Cols: 8, $Rows: 4, $Formation: $JssorSlideshowFormations$.$FormationStraightStairs, $Assembly: 2050, $Opacity: 2 };
_SlideshowTransitionCodes["Fade Stairs"] = "{$Duration:800,$Delay:30,$Cols:8,$Rows:4,$Formation:$JssorSlideshowFormations$.$FormationStraightStairs,$Assembly:2050,$Opacity:2}";

_SlideshowTransitionC["Fade Random"] = { $Duration: 1000, $Delay: 80, $Cols: 8, $Rows: 4, $Opacity: 2 };
_SlideshowTransitionCodes["Fade Random"] = "{$Duration:1000,$Delay:80,$Cols:8,$Rows:4,$Opacity:2}";

_SlideshowTransitionC["Fade Swirl"] = { $Duration: 800, $Delay: 30, $Cols: 8, $Rows: 4, $Formation: $JssorSlideshowFormations$.$FormationSwirl, $Opacity: 2 };
_SlideshowTransitionCodes["Fade Swirl"] = "{$Duration:800,$Delay:30,$Cols:8,$Rows:4,$Formation:$JssorSlideshowFormations$.$FormationSwirl,$Opacity:2}";

_SlideshowTransitionC["Fade ZigZag"] = { $Duration: 800, $Delay: 30, $Cols: 8, $Rows: 4, $Formation: $JssorSlideshowFormations$.$FormationZigZag, $Assembly: 260, $Opacity: 2 };
_SlideshowTransitionCodes["Fade ZigZag"] = "{$Duration:800,$Delay:30,$Cols:8,$Rows:4,$Formation:$JssorSlideshowFormations$.$FormationZigZag,$Assembly:260,$Opacity:2}";
}

$Jssor$.$Each(_SlideshowTransitionC, function (slideshowTransition, name) {
_SlideshowTransitions.push(slideshowTransition);
});
</script>
<script>
jssor_slider1_starter = function (containerId) {
var jssor_slider1 = new $JssorSlider$(containerId, {
$AutoPlay: true,                                    //[Optional] Whether to auto play, to enable slideshow, this option must be set to true, default value is false
$Idle: 3000,                            //[Optional] Interval (in milliseconds) to go for next slide since the previous stopped if the slider is auto playing, default value is 3000
$DragOrientation: 3,                                //[Optional] Orientation to drag slide, 0 no drag, 1 horizental, 2 vertical, 3 either, default value is 1 (Note that the $DragOrientation should be the same as $PlayOrientation when $Cols is greater than 1, or parking position is not 0)
$PauseOnHover: 1,                                   //[Optional] Whether to pause when mouse over if a slider is auto playing, 0 no pause, 1 pause for desktop, 2 pause for touch device, 3 pause for desktop and touch device, 4 freeze for desktop, 8 freeze for touch device, 12 freeze for desktop and touch device, default value is 1

$SlideshowOptions: {                                //[Optional] Options to specify and enable slideshow or not
	$Class: $JssorSlideshowRunner$,                 //[Required] Class to create instance of slideshow
	$Transitions: _SlideshowTransitions,            //[Required] An array of slideshow transitions to play slideshow
	$TransitionsOrder: 1,                           //[Optional] The way to choose transition to play slide, 1 Sequence, 0 Random
	$ShowLink: true                                 //[Optional] Whether to bring slide link on top of the slider when slideshow is running, default value is false
}
});

PlaySlideshowTransition = function (event) {
$Jssor$.$StopEvent(event);
$Jssor$.$CancelEvent(event);

try {
	var eventSrcElement = $Jssor$.$EvtSrc(event);
	var transitionName = $Jssor$.$InnerText(eventSrcElement);
	jssor_slider1.$Next();

	jssor_slider1.$SetSlideshowTransitions([_SlideshowTransitionC[transitionName]]);

	var effectStr = _SlideshowTransitionCodes[transitionName];

	if (transitionNameTextBox) {
		transitionNameTextBox.value = transitionName;
	}
	if (transitionCodeTextBox) {
		transitionCodeTextBox.value = effectStr;
	}
}
catch (e) { }
}
TransitionTextBoxClickEventHandler = function (event) {
transitionCodeTextBox.select();

$Jssor$.$CancelEvent(event);
$Jssor$.$StopEvent(event);
}

var transitionCodeTextBox = $Jssor$.$GetElement("stTransition");
var transitionNameTextBox = $Jssor$.$GetElement("stTransitionName");
$Jssor$.$AddEvent(transitionCodeTextBox, "click", TransitionTextBoxClickEventHandler);

//responsive code begin
//you can remove responsive code if you don't want the slider scales while window resizing
function ScaleSlider() {
var bodyWidth = document.body.clientWidth;
if (bodyWidth)
	jssor_slider1.$ScaleWidth(Math.min(bodyWidth, 950));
else
	$Jssor$.$Delay(ScaleSlider, 30);
}
ScaleSlider();
$Jssor$.$AddEvent(window, "load", ScaleSlider);

$Jssor$.$AddEvent(window, "resize", ScaleSlider);
$Jssor$.$AddEvent(window, "orientationchange", ScaleSlider);
//responsive code end
};
</script>
<div style="height:50px;"></div>
<!-- Jssor Slider Begin -->
<!-- To move inline styles to css file/block, please specify a class name for each element. -->

<div id="slider1_container" style="position: relative; margin: 0 auto; width:950px; height:600px; left:0px; top:0px;">

<!-- Loading Screen -->
<div u="loading" style="position: absolute; top: 0px; left: 0px;">
<div style="filter: alpha(opacity=70); opacity:0.7; position: absolute; display: block;
background-color: #000000; top: 0px; left: 0px;width: 100%;height:100%;">
</div>
<div style="position: absolute; display: block; background: url(../img/loading.gif) no-repeat center center;
top: 0px; left: 0px;width: 100%;height:100%;">
</div>
</div>

<!-- Slides Container -->
<div u="slides" style="cursor: move; position: absolute; left: 0px; top: 0px; width: 950px; height: 600px;
overflow: hidden;">
<<m.xx>>
</div>
<a style="display: none" href="http://www.jssor.com"></a>
<!-- Trigger -->
</div>
<!-- Jssor Slider End -->
<!--#region slideshow codes-->
<div style="height: 20px;"></div>
<div class="slideshow-block">
</div>
<script>jssor_slider1_starter("slider1_container");</script>

<div style="height: 10px;"></div>
<div style="height: 15px;"></div>
<object id="mediaplayer" classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#version=5,1,52,701" standby="loading microsoft windows media player components..." type="application/x-oleobject" width="1" height="1">
<param name="filename" value="<<m.ysound>>">
<param name="animationatstart" value="true">
<param name="transparentatstart" value="true">
<param name="autostart" value="true">
<param name="showcontrols" value="true">
<param name="ShowStatusBar" value="true">
<param name="windowlessvideo" value="true">
<param name='loop' value='true'>
<embed src="<<m.ysound>>" autostart="true" showcontrols="true" showstatusbar="1" bgcolor="white" width="1" height="1">
</object>
</body >
</html>
endtext
declare integer BringWindowToTop in user32 integer
set safe off
local m.lcdest
m.lcdest=addbs(sys(2023))+"ytemp.html"
strtofile(m.myvar,m.lcdest)
local apie
apie=newObject("internetexplorer.application")
with apie
.navigate(m.lcdest)
.fullscreen=1
bringWindowtotop(.hwnd)
.visible=.t.
endwith



run this prg above with vfp9 priveleges administrator to avoid IE11 errors(new behavior).

run this prg above with vfp9 priveleges administrator to avoid IE11 errors(new behavior).

Click on code to select [then copy] -click outside to deselect


&&shellexecute run vfp as administrator code

DECLARE INTEGER ShellExecute IN SHELL32.DLL INTEGER nWinHandle,;
STRING cOperation,;
STRING cFileName,;
STRING cParameters,;
STRING cDirectory,;
INTEGER nShowWindow
result=shellexecute(0,"runAs",home(1)+"vfp9.exe","","",1)


Click on code to select [then copy] -click outside to deselect

 *6*
*A vfp web slideshow
*this is a pure vfp slideshow.Images are from web and loaded in memory with xmlHTTP in image control pictureVal property.
*the slideshow is moved automatically by a timer (10 sec) or by the arrows next/preview.
*An audio media can be set on the form property ysound.the volume is adjustable.
*A fullscreen can be set dynamically (can swicth to initial window).
*the form is resizable by user and its movable by mousedown
*images urls  can be set in code (text to m.myvar.........endtext)
*Note :- of course, images and sound can located on disc 
*-some controls are made only with fonts (no image)..as webdings...see charmap.exe
*for more fonts(wingdings,segoe ui symbol,marlett,symbol...)
*-Infortunatly vfp cannot produce transitons.

Publi oform
oform=Newobject("yslideshow_vfp")
oform.Show
Read Events
Retu
*
Define Class yslideshow_vfp As Form
	BorderStyle = 3
	Height = 591
	Width = 938
	ShowWindow = 2
	AutoCenter = .T.
	Caption = "Form1"
	BackColor = Rgb(0,0,0)
	fs = .F.
	xleft = .F.
	xtop = .F.
	xwidth = .F.
	xheight = .F.
	ysound = "https://archive.org/download/beethoven9/beethoven-9-01-concertgebouw-klemperer-1956-16048.mp3"  &&any valis media even on disc

	Add Object image1 As Image With ;
		Anchor = 15, ;
		Stretch = 2, ;
		Height = 504, ;
		Left = 0, ;
		Top = 25, ;
		Width = 937, ;
		Name = "Image1"

	Add Object timer1 As Timer With ;
		Top = 12, ;
		Left = 444, ;
		Height = 23, ;
		Width = 23, ;
		Interval = 10000, ;
		Name = "Timer1"

	Add Object optiongroup1 As OptionGroup With ;
		AutoSize = .T., ;
		ButtonCount = 14, ;
		Anchor = 768, ;
		BackStyle = 0, ;
		BorderStyle = 0, ;
		Value = 1, ;
		Enabled = .F., ;
		Height = 27, ;
		Left = 294, ;
		Top = 545, ;
		Width = 275, ;
		Name = "Optiongroup1", ;
		Option1.Caption = "", ;
		Option1.Value = 1, ;
		Option1.Height = 17, ;
		Option1.Left = 5, ;
		Option1.Style = 0, ;
		Option1.Top = 5, ;
		Option1.Width = 18, ;
		Option1.AutoSize = .F., ;
		Option1.Name = "Option1", ;
		Option2.Caption = "", ;
		Option2.Height = 17, ;
		Option2.Left = 24, ;
		Option2.Style = 0, ;
		Option2.Top = 5, ;
		Option2.Width = 18, ;
		Option2.AutoSize = .F., ;
		Option2.Name = "Option2", ;
		Option3.Caption = "", ;
		Option3.Height = 17, ;
		Option3.Left = 43, ;
		Option3.Style = 0, ;
		Option3.Top = 5, ;
		Option3.Width = 18, ;
		Option3.AutoSize = .F., ;
		Option3.Name = "Option3", ;
		Option4.Caption = "", ;
		Option4.Height = 17, ;
		Option4.Left = 62, ;
		Option4.Style = 0, ;
		Option4.Top = 5, ;
		Option4.Width = 18, ;
		Option4.AutoSize = .F., ;
		Option4.Name = "Option4", ;
		Option5.Caption = "", ;
		Option5.Height = 17, ;
		Option5.Left = 81, ;
		Option5.Style = 0, ;
		Option5.Top = 5, ;
		Option5.Width = 18, ;
		Option5.AutoSize = .F., ;
		Option5.Name = "Option5", ;
		Option6.Caption = "", ;
		Option6.Height = 17, ;
		Option6.Left = 100, ;
		Option6.Style = 0, ;
		Option6.Top = 5, ;
		Option6.Width = 18, ;
		Option6.AutoSize = .F., ;
		Option6.Name = "Option6", ;
		Option7.Caption = "", ;
		Option7.Height = 17, ;
		Option7.Left = 119, ;
		Option7.Style = 0, ;
		Option7.Top = 5, ;
		Option7.Width = 18, ;
		Option7.AutoSize = .F., ;
		Option7.Name = "Option7", ;
		Option8.Caption = "", ;
		Option8.Height = 17, ;
		Option8.Left = 138, ;
		Option8.Style = 0, ;
		Option8.Top = 5, ;
		Option8.Width = 18, ;
		Option8.AutoSize = .F., ;
		Option8.Name = "Option8", ;
		Option9.Caption = "", ;
		Option9.Height = 17, ;
		Option9.Left = 157, ;
		Option9.Style = 0, ;
		Option9.Top = 5, ;
		Option9.Width = 18, ;
		Option9.AutoSize = .F., ;
		Option9.Name = "Option9", ;
		Option10.Caption = "", ;
		Option10.Height = 17, ;
		Option10.Left = 176, ;
		Option10.Style = 0, ;
		Option10.Top = 5, ;
		Option10.Width = 18, ;
		Option10.AutoSize = .F., ;
		Option10.Name = "Option10", ;
		Option11.Caption = "", ;
		Option11.Height = 17, ;
		Option11.Left = 195, ;
		Option11.Style = 0, ;
		Option11.Top = 5, ;
		Option11.Width = 18, ;
		Option11.AutoSize = .F., ;
		Option11.Name = "Option11", ;
		Option12.Caption = "", ;
		Option12.Height = 17, ;
		Option12.Left = 214, ;
		Option12.Style = 0, ;
		Option12.Top = 5, ;
		Option12.Width = 18, ;
		Option12.AutoSize = .F., ;
		Option12.Name = "Option12", ;
		Option13.Caption = "", ;
		Option13.Height = 17, ;
		Option13.Left = 233, ;
		Option13.Style = 0, ;
		Option13.Top = 5, ;
		Option13.Width = 18, ;
		Option13.AutoSize = .F., ;
		Option13.Name = "Option13", ;
		Option14.Caption = "", ;
		Option14.Height = 17, ;
		Option14.Left = 252, ;
		Option14.Style = 0, ;
		Option14.Top = 5, ;
		Option14.Width = 18, ;
		Option14.AutoSize = .F., ;
		Option14.Name = "Option14"

	Add Object label1 As Label With ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontName = "Webdings", ;
		FontSize = 28, ;
		Anchor = 768, ;
		BackStyle = 0, ;
		Caption = "3", ;
		Height = 41, ;
		Left = 857, ;
		MousePointer = 15, ;
		Top = 538, ;
		Width = 40, ;
		ForeColor = Rgb(0,255,0), ;
		BackColor = Rgb(0,255,0), ;
		Name = "Label1"

	Add Object label2 As Label With ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontName = "Webdings", ;
		FontSize = 28, ;
		Anchor = 768, ;
		BackStyle = 0, ;
		Caption = "4", ;
		Height = 41, ;
		Left = 893, ;
		MousePointer = 15, ;
		Top = 538, ;
		Width = 40, ;
		ForeColor = Rgb(0,255,0), ;
		BackColor = Rgb(0,255,0), ;
		Name = "Label2"

	Add Object label3 As Label With ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontName = "Webdings", ;
		FontSize = 20, ;
		Anchor = 768, ;
		BackStyle = 0, ;
		Caption = (Chr(0x72)), ;
		Height = 32, ;
		Left = 902, ;
		MousePointer = 15, ;
		Top = -5, ;
		Width = 30, ;
		ForeColor = Rgb(255,0,0), ;
		Name = "Label3"

	Add Object label4 As Label With ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontName = "Wingdings", ;
		FontSize = 24, ;
		Anchor = 768, ;
		BackStyle = 0, ;
		Caption = (Chr(0xCB)), ;
		Height = 38, ;
		Left = 20, ;
		MousePointer = 15, ;
		Top = 542, ;
		Width = 35, ;
		ForeColor = Rgb(0,255,0), ;
		Name = "Label4"

	Add Object image2 As Image With ;
		Anchor = 768, ;
		Picture = Home(1)+"graphics\icons\misc\volume01.ico", ;
		BackStyle = 0, ;
		Height = 32, ;
		Left = 120, ;
		MousePointer = 15, ;
		Top = 541, ;
		Width = 32, ;
		Name = "Image2"

	Add Object label5 As Label With ;
		AutoSize = .T., ;
		FontBold = .T., ;
		FontName = "Segoe Script", ;
		FontSize = 12, ;
		Anchor = 768, ;
		BackStyle = 0, ;
		Caption = "Yousfi .over-blog.com", ;
		Height = 29, ;
		Left = 720, ;
		Top = 492, ;
		Width = 180, ;
		ForeColor = Rgb(0,255,0), ;
		Name = "Label5"

	Add Object YHELP As Label  With;
		FontBold = .T.,;
		FontSize = 24,;
		Anchor = 768,;
		BackStyle = 0,;
		Caption = "?",;
		Height = 37,;
		Left = 720,;
		MousePointer = 15,;
		Top = 540,;
		Width = 25,;
		ForeColor = Rgb(255,0,0),;
		Name = "YHELP"

	Procedure YHELP.Click
		Local m.myvar
		TEXT to m.myvar noshow
this is a pure vfp slideshow.Images are from web and loaded in memory with xmlHTTP in image control pictureVal property.
the slideshow is moved automatically by a timer (10 sec) or by the arrows next/preview.
An audio media can be set on the form property ysound.the volume is adjustable.
A fullscreen can be set dynamicall (can swicth to initial window).
the form is resizable by user and its movable by mousedown
		ENDTEXT
		Messagebox(m.myvar,0+32+406,"summary help")
	Endproc

	Procedure yload
		Lparameters lcURl
		If Empty(lcURl)
			Return .F.
		Endi
		Local loRequest
		Try
			m.loRequest = Createobject('MsXml2.XmlHttp')
			m.loRequest.Open("GET",lcURl,.F.)
			m.loRequest.Send()
			Thisform.image1.PictureVal=m.loRequest.ResponseBody
			m.loRequest=Null
		Catch
		Endtry
	Endproc

	Procedure yop
		Sele ycurs
		With Thisform.optiongroup1
			If Recno()<=Reccount()-1
				.Value=.Value+1
			Else
				.Value=1
			Endi
		Endwith
	Endproc

	Procedure MouseDown  &&to move the form with mousedown
		Lparameters nButton, nShift, nXCoord, nYCoord
		lnHandle = Thisform.HWnd    &&getFocus() if vfp version<=6
		param1 = 274
		param2 = 0xF012
		Declare Integer ReleaseCapture In WIN32API
		Declare Integer SendMessage In WIN32API Integer, Integer, Integer, Integer
		bb=ReleaseCapture()
		bb=SendMessage(lnHandle, param1, param2,0)
	Endproc

	Procedure KeyPress
		Lparameters nKeyCode, nShiftAltCtrl
		If nKeyCode=27
			Thisform.Release
		Endi
	Endproc

	Procedure Init
		Thisform.TitleBar=0
		Thisform.fs=0
		Publi  Wmp As WindowsMediaPlayer
		Wmp = Createobject("WMPlayer.OCX.7")
		With Wmp
			.settings.autoStart = .T.
			.settings.Volume=80
			.settings.setMode('loop',.T.)    &&loop
			.url=Thisform.ysound &&autostart=.t.  loading a web media can consume some time.
			*.settings.mute=.T.
		Endwith

		Sele ycurs
		Thisform.yload(url)
	Endproc

	Procedure Load
		_Screen.WindowState=1
		Create Cursor ycurs (url c(254))
		Set Memowidth To 8192
		Local m.myvar
		TEXT to m.myvar noshow  &&set web media (or dsc ones) here.
		http://quartz.themegasm.net/wp-content/uploads/2016/04/photo-1434064511983-18c6dae20ed5.jpg
		http://quartz.themegasm.net/wp-content/uploads/revslider/notgeneric/iceberg.jpg
		https://pbs.twimg.com/media/B1eMOuRIYAALIcU.jpg
		http://www.tsvoyages.com/images/2015/02/6995933-desert-oasis-libya-1250x703.jpg
		http://blauekamel.com/images/com_fwgallery/files/43/taghit-01.JPG
		http://intymag.com/wp-content/uploads/2016/03/mon-weekend-%C3%A0-taghit-e1458230519606.jpg
		http://www.vitaminedz.org/photos/118/118859-photos-taghit-palmeraie-et-dunes-dorees-novembre-2006.jpg
		http://www.vitaminedz.com/photos/19/19939-taghit-l-enchanteresse-ou-carrement-l-nvoutante.jpg
		https://s-media-cache-ak0.pinimg.com/originals/31/7f/e8/317fe8b6f51e0f58ebda83f70fb77a8f.jpg
		https://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Vue_de_Taghit.jpg/280px-Vue_de_Taghit.jpg
		http://www.algerie-focus.com/wp-content/uploads/2014/12/B%C3%A9char-Taghit_20-d%C3%A9cembre-2014.jpg
		http://www.alger-culture.com/images/news/Kseur%20taghit.jpg
		http://p2.storage.canalblog.com/20/24/763987/55549657.jpg
		https://s-media-cache-ak0.pinimg.com/564x/1b/91/b4/1b91b48c267ff3cba9e548b227b5c5d2.jpg
		ENDTEXT
		For i=1 To Memlines(m.myvar)
			Insert Into ycurs Values (Allt(Mline(m.myvar,i)))
		Endfor
		Sele ycurs
		*brow
		Locate
	Endproc

	Procedure Destroy
		Wmp=Null
		Release Wmp
		Clea Events
	Endproc

	Procedure timer1.Timer
		Sele ycurs
		If !Eof()
			Skip
			Thisform.yload(url)
		Else
			Locate
			Thisform.yload(url)
		Endi
		Thisform.yop()
	Endproc

	Procedure optiongroup1.Init
		Sele ycurs
		This.ButtonCount=Reccount()
	Endproc

	Procedure label1.Click
		Sele ycurs
		If !Bof()
			Skip-1
			Thisform.yload(url)
		Else
			Go Botto
			Thisform.yload(url)
		Endi
		Thisform.yop()
	Endproc

	Procedure label2.Click
		Sele ycurs
		If !Eof()
			Skip
			Thisform.yload(url)
		Else
			Locate
			Thisform.yload(url)
		Endi
		Thisform.yop()
	Endproc

	Procedure label3.Click
		Thisform.Release
	Endproc

	Procedure label4.Click
		Do Case
			Case Thisform.fs=0
				Thisform.fs=1
				With Thisform
					.xleft=.Left
					.xtop=.Top
					.xwidth=.Width
					.xheight=.Height
					.Left=-4
					.Top=-4
					.Width=Sysmetric(1)-8
					.Height=Sysmetric(2)-10
				Endwith

			Case Thisform.fs=1
				Thisform.fs=0
				With Thisform
					.Left=.xleft
					.Top=.xtop
					.Width=.xwidth
					.Height=.xheight
				Endwith
		Endcase
	Endproc

	Procedure image2.Click
		#Define  APPCOMMAND_VOLUME_MUTE  0x80000
		#Define  APPCOMMAND_VOLUME_UP  0xA0000
		#Define  APPCOMMAND_VOLUME_DOWN  0x90000
		#Define  WM_APPCOMMAND 0x319

		Declare Integer SendMessage In user32;
			INTEGER HWnd,;
			INTEGER Msg,;
			INTEGER wParam,;
			INTEGER Lparam
		SendMessage(_vfp.HWnd, WM_APPCOMMAND, _vfp.HWnd, APPCOMMAND_VOLUME_UP)
	Endproc
Enddefine
*
*-- EndDefine: yslideshow_vfp


A pure vfp web  slideshow with form pictureVal  property.

A pure vfp web slideshow with form pictureVal property.

Five cool slideshow makers
 
Important:All Codes above are tested on VFP9SP2  & windows 10 pro & IE11 emulation.

To be informed of the latest articles, subscribe:
Comment on this post