SlideShow Engine main demo
Submitted by GROL on 2 February, 2011 - 03:30

This demo shows how to make and display slide show with using TSlideShowMaker and TFlashViewer
Source archive: sse-main.zip (1.8Mb)
Some sample source:
procedure Tform_TEST.BMakeTestClick(Sender: TObject); var SSE: TSlideShowEngine; Slide, Slide2, TextSlide: TSSObject; Snd: TSSSound; BgSndA: TSSSoundAction; A: TSSConditionActions; AP: Array [0..3] of TPoint; I, W, H: integer; EndTime, Duration: longint; Font: TFont; procedure MakeTextLabel; begin TextSlide := SSE.AddText(Copy(CBParams.Items[i], 4, 255), Font, false); A := TextSlide.AddAction(ptLayer, 10, EndTime, Duration div 2, 0); A.Glow(4, $FFFFFF, 100, 4, $FFFFFF, 100); A.Center(50, 0); A.Place(W div 2, 10); A.Alpha(0, 100); if CBAnchor.Checked then SSE.AddAnchor(EndTime); end; procedure HideTextLabel; begin A := TextSlide.AddAction(ptLayer, 100, EndTime - 2*Duration, Duration div 2, 0); A.Alpha(100, 0); end; begin W := StrToIntDef(EWidth.Text, 400); H := StrToIntDef(EHeight.Text, 300); SlideShowMaker.Width := W; SlideShowMaker.Height := H; SlideShowMaker.FPS := 31; Font := TFont.Create; Font.Name := 'Verdana'; Font.Size := 25; Font.Style := [fsBold]; Font.Color := clMaroon; SSE := SlideShowMaker.Engine; SSE.Transparent := not CBg.Checked; if CBg.Checked then SSE.BGColor := CBackground.Brush.Color; SSE.IsLoop := CBLoop.Checked; SSE.FullScreen := CBFullScreen.Checked; if RBControl2.Checked then SSE.ControllerMode := cmStatic else if RBControl3.Checked then SSE.ControllerMode := cmPopUp else SSE.ControllerMode := cmNone; SSE.ControllerAlpha := StrToIntDef(EAlpha.Text, 100); SSE.ControllerColor1 := CControl1.Brush.Color; SSE.ControllerColor2 := CControl2.Brush.Color; SSE.ControllerLabelColor := CFace.Brush.Color; SSE.ControllerShowVolume := CBVolume.Checked; SSE.ControllerShowMute := CBVMute.Checked; SSE.ControllerScreenModeSwitcher := CBScreenSwitcher.Checked; SSE.IncludePreloader := CBPreloader.Checked; SSE.PreloaderColor := PrColor.Brush.Color; SSE.EndDuration := 2000; if CBTime.Checked then SSE.ControllerTimerShowMode := tmSec else SSE.ControllerTimerShowMode := tmNone; if ControllerExt.Checked and FileExists(ControllerName.Text) then SSE.ControllerFileName := ControllerName.Text; if PreloaderExt.Checked and FileExists(PreloaderName.Text) then SSE.PreloaderFileName := PreloaderName.Text; SSE.SyncToTime := CBParams.Checked[0]; EndTime := 1000; Duration := 1000; Slide := nil; BgSndA := nil; for I := 1 to CBParams.Items.Count - 1 do if CBParams.Checked[I] then case I of 1: // place image as background SSE.AddImage('bg-tile2.bmp', W, H, imTile).AddAction(ptLayer, 1, 0, 10000).Place(0, 0); 2: // play music as basckground BgSndA := SSE.AddBgSound('bg.mp3'); 3: begin MakeTextLabel; Slide := SSE.AddFromFile('sl1.jpg'); // move from left A := Slide.AddAction(ptLayer, 2, EndTime, Duration, -100); A.Move(W, 0, 0, 0); // move to up A := Slide.AddAction(ptLayer, 2, EndTime + 2*Duration, Duration, 0); A.Move(0, 0, 0, -H); // move to curve 1 A := Slide.AddAction(ptLayer, 2, EndTime + 3*Duration, 2*Duration, 0); A.Scale(50, 50, 50, 50); A.Center(50, 50); AP[0] := Point(W div 3, -H div 2); AP[1] := Point(W div 3, H div 2); AP[2] := Point(W div 2, H div 2); AP[3] := Point(W - W div 4, H div 2); A.MoveToPath(100, true, false, AP); // move to curve 2 A := Slide.AddAction(ptLayer, 2, EndTime + 5*Duration, 2*Duration, 0); A.Scale(50, 50, 50, 50); A.Center(50, 50); AP[0] := Point(W - W div 4, H div 2); AP[1] := Point(W div 2, H - H div 4); AP[2] := Point(W div 4, H div 2); AP[3] := Point(W div 2, H div 4); A.MoveToPath(100, false, true, AP); // move to right A := Slide.AddAction(ptLayer, 2, EndTime + 7*Duration, Duration, 0); A.Scale(50, 50, 50, 50); A.Center(50, 50); A.Move(W - W div 4, H div 2, W + W div 2, H div 2); A := Slide.AddAction(ptLayer, 2, EndTime + 8*Duration, Duration, -10, dmRestore); A.Move(2 * W, 0, 0, 0); A.Skew(100, 0, 0, 0); EndTime := EndTime + 10*Duration; HideTextLabel; end; 4: begin if Slide = nil then Slide := SSE.AddFromFile('sl1.jpg'); MakeTextLabel; // strech from left A := Slide.AddAction(ptLayer, 2, EndTime, Duration, -5, dmRestore); A.Center(0, 0); A.Place(0, 0); A.Scale(0, 100, 100, 100); // scale to upper-right curner A := Slide.AddAction(ptLayer, 2, EndTime + 2*Duration, Duration, 0); A.Scale(100, 100, 0, 0); A.Move(0, 0, W, 0); // strech from center EndTime := EndTime + 4*Duration; A := Slide.AddAction(ptLayer, 2, EndTime, Duration, -5); A.Center(50, 50); A.Place(W div 2, H div 2); A.Scale(0, 0, 100, 100); A.Rotate(0, 360); // TV-close effect A := Slide.AddAction(ptLayer, 2, EndTime + 2 * Duration, Duration div 2, 0); A.Scale(100, 100, 100, 2); A := Slide.AddAction(ptLayer, 2, EndTime + 2 * Duration + Duration div 2, Duration div 2, 0); A.Scale(100, 2, 2, 2); A := Slide.AddAction(ptLayer, 2, EndTime + 3 * Duration, Duration div 4, 0); A.Alpha(100, 0); EndTime := EndTime + 5 * Duration; HideTextLabel; end; 5: begin // Coloring if Slide = nil then Slide := SSE.AddFromFile('sl1.jpg'); MakeTextLabel; A := Slide.AddAction(ptLayer, 2, EndTime, Duration, 0, dmRestore); A.Alpha(0, 100); A := Slide.AddAction(ptLayer, 2, EndTime + 2*Duration, Duration, 0); A.Saturation(100, 0); A := Slide.AddAction(ptLayer, 2, EndTime + 4*Duration, Duration, 0); A.RGB(0, 0, 0, 255, 255, 0); A := Slide.AddAction(ptLayer, 2, EndTime + 6*Duration, Duration, 0); A.RGB(255, 255, 0, -255, -255, 0); A := Slide.AddAction(ptLayer, 2, EndTime + 8*Duration, Duration, 0); A.RGB(-255, -255, 0, 0, 0, 0); A := Slide.AddAction(ptLayer, 2, EndTime + 10*Duration, Duration, 0); A.Saturation(0, 100); A.Alpha(100, 0); EndTime := EndTime + 12 * Duration; HideTextLabel; end; 6: begin if Slide = nil then Slide := SSE.AddFromFile('sl1.jpg'); MakeTextLabel; A := Slide.AddAction(ptLayer, 2, EndTime, Duration, 0, dmRestore); A.Mosaic(10, 10, mmRandom, false); A := Slide.AddAction(ptLayer, 2, EndTime + 2*Duration, Duration, 0); A.Shutter(10, 45, true); A := Slide.AddAction(ptLayer, 2, EndTime + 4*Duration, Duration, 0, dmRestore); A.Zoom(skStar, false, false); A := Slide.AddAction(ptLayer, 2, EndTime + 6*Duration, 2*Duration, 0); A.Liquid(10, true); A := Slide.AddAction(ptLayer, 2, EndTime + 8*Duration, 2*Duration, 0, dmRestore); A.Mosaic(7, 7, mmRowByRow, false); A := Slide.AddAction(ptLayer, 2, EndTime + 10*Duration, Duration, 0); A.Clock(true, true); EndTime := EndTime + 13 * Duration; HideTextLabel; end; 7: begin if Slide = nil then Slide := SSE.AddFromFile('sl1.jpg'); MakeTextLabel; A := Slide.AddAction(ptLayer, 3, EndTime + Duration div 2, Duration div 2, 0, dmRestore); A.Center(50, 50); A.Place(W div 2, H div 2); A.Scale(50, 50, 50, 50); A := Slide.AddAction(ptLayer, 3, EndTime + Duration, Duration, 0); A.Blur(0, 0, 100, 100); A := Slide.AddAction(ptLayer, 3, EndTime + 3*Duration, Duration, -5); A.Move(W div 2, H div 2, 100, H * 2 div 3); A.Blur(100, 100, 0, 0); A := Slide.AddAction(ptLayer, 3, EndTime + 4*Duration, Duration div 2, 0); A.Alpha(100, 0); Slide2 := SSE.AddDuplicate(Slide); A := Slide2.AddAction(ptLayer, 2, EndTime + 2*Duration, duration, 0, dmRestore); A.Center(50, 50); A.Place(W div 2, H div 2); A.Scale(-50, 50, -50, 50); A.Blur(100, 100, 100, 100); A.Alpha(0, 100); A := Slide2.AddAction(ptLayer, 2, EndTime + 3*Duration, Duration, -5); A.Blur(100, 100, 0, 0); A.Move(W div 2, H div 2, W - 100, H * 2 div 3); A := Slide2.AddAction(ptLayer, 2, EndTime + 4*Duration, Duration div 2, 0); A.Alpha(100, 0); EndTime := EndTime + 6*Duration; HideTextLabel; end; 8: begin if Slide = nil then Slide := SSE.AddFromFile('sl1.jpg'); if CBAnchor.Checked then SSE.AddAnchor(EndTime); TextSlide := SSE.AddText(Copy(CBParams.Items[i], 4, 255), Font, false); A := TextSlide.AddAction(ptLayer, 10, EndTime, Duration, 0); A.Center(50, 50); A.Place(W div 2, H div 2); A := TextSlide.AddAction(ptLayer, 10, EndTime + Duration, 5*Duration , 0); A.Shadow(10, 15, 45, 0, 90,{|} 10, 15, 135, 0, 90); Slide2 := SSE.AddSWF('sun.swf'); A := Slide2.AddAction(ptLayer, 2, EndTime + Duration - Duration div 2, 0, 0); A.Place(0, 10); A.Glow(20, $FFFFFF, 100, 20, $FFFFFF, 100); A := Slide2.AddAction(ptLayer, 2, EndTime + Duration, 5*Duration, 0); A.Move(0, 10, W - Slide2.Width, 10); A := Slide2.AddAction(ptLayer, 2, EndTime + 6 * Duration, Duration, 0); A.Alpha(100, 0); EndTime := EndTime + 8*Duration; HideTextLabel; end; 9: begin Slide2 := SSE.AddSWF('sun.swf'); MakeTextLabel; A := Slide2.AddAction(ptLayer, 2, EndTime, Duration, 0); A.Center(50, 50); A.Place(W div 2, H - Slide2.Height); AP[0] := Point(W div 2, H - Slide2.Height); AP[1] := Point(W - 100, H div 2); AP[2] := Point(W div 2, Slide2.Height); AP[3] := Point(100, H div 2); A := Slide2.AddAction(ptLayer, 2, EndTime + Duration, 8 * Duration, 0); A.MoveToPath(100, false, true, AP); A := Slide2.AddAction(ptLayer, 2, EndTime + Duration, 4 * Duration, 0); A.Scale(100, 100, 10, 10); A := Slide2.AddAction(ptLayer, 2, EndTime + 5*Duration, 4 * Duration, 0); A.Scale(10, 10, 100, 100); A := Slide2.AddAction(ptLayer, 2, EndTime + 10*Duration, Duration, 0); A.Move(W div 2, H - Slide2.Height, Slide2.Width div 2, H - Slide2.Height); A := Slide2.AddAction(ptLayer, 2, EndTime + 11*Duration, Duration, 0); A.Move(Slide2.Width div 2, H - Slide2.Height, W + Slide2.Width, H - Slide2.Height); Snd := SSE.AddSound('sun.mp3'); With Snd.Play(EndTime, 12*Duration) do // With Snd.Play(EndTime, 100) do begin Volume(EndTime + Duration, 4 * Duration, 100, 20); Volume(EndTime + 5*Duration, 4 * Duration, 20, 100); Pan(EndTime + 10*Duration, Duration, 0, -100); Pan(EndTime + 11*Duration, Duration, -100, 100); end; if BgSndA <> nil then begin BgSndA.Volume(EndTime - 2 * Duration, 2 * Duration, 100, 30); BgSndA.Volume(EndTime + 10 * Duration, 2 * Duration, 30, 100); end; EndTime := EndTime + 13*Duration; HideTextLabel; end; end; if CBStopPoint.Checked then SSE.AddStopPoint(SSE.Duration * StrToIntDef(EStopPoint.Text, 50) div 100); SlideShowMaker.Make; Font.Free; end;