From 322b798413826681915eca1960f081cbc4dd302c Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Mon, 13 Oct 2008 14:14:32 +0000 Subject: Abstraction of the menus background 5 different bg types: none(fallback), colored, texture, video, and fade(for overlays) Some sideeffect is 5 mb less memory usage, don't know for which reasons :P git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1446 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/menu/UMenuBackgroundVideo.pas | 204 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 src/menu/UMenuBackgroundVideo.pas (limited to 'src/menu/UMenuBackgroundVideo.pas') diff --git a/src/menu/UMenuBackgroundVideo.pas b/src/menu/UMenuBackgroundVideo.pas new file mode 100644 index 00000000..a6d02828 --- /dev/null +++ b/src/menu/UMenuBackgroundVideo.pas @@ -0,0 +1,204 @@ +{* UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + *} + +unit UMenuBackgroundVideo; + +interface + +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + +{$I switches.inc} + +uses + UThemes, + UMenuBackground, + UVideo; + +//TMenuBackgroundColor - Background Color +//-------- + +type + //DefaultBGVideoPlayback = TVideoPlayback_FFmpeg; + +{type + TBGVideoPool = class; + + PBGVideoPoolItem = ^TBGVideoPoolItem; + TBGVideoPoolItem = record + Parent: TBGVideoPool; + VideoPlayback = IVideoPlayback; + ReferenceCounter: Cardinal; //Number of Creations + end; + + TBGVideo = class + private + myItem: PBGVideoPoolItem; + public + Constructor Create(Item: PBGVideoPoolItem); override; + + Function GetVideoPlayback: IVideoPlayback; + Procedure Draw; + + Destructor Destroy; + end; + + TBGVideoPool = class + private + Items: PBGVideoPoolItem; + public + Constructor Create; + + Function GetBGVideo(filename: String): TBGVideo; + Procedure RemoveItem( + Procedure FreeAllItems; + + Destructor Destroy; + end; + +type } + TMenuBackgroundVideo = class (TMenuBackground) + private + fFilename: String; + public + Constructor Create(const ThemedSettings: TThemeBackground); override; + Procedure OnShow; override; + Procedure Draw; override; + Procedure OnFinish; override; + Destructor Destroy; override; + end; + +{var + BGVideoPool: TBGVideoPool; } +const + SUPPORTED_EXTS_BACKGROUNDVIDEO: Array[0..6] of String = ('.avi', '.mov', '.divx', '.mpg', '.mp4', '.mpeg', '.m2v'); + +implementation + +uses + gl, + glext, + UMusic, + SysUtils, + UTime, + USkins, + UCommon; + +Constructor TMenuBackgroundVideo.Create(const ThemedSettings: TThemeBackground); +begin + inherited; + If (Length(ThemedSettings.Tex) = 0) then + raise EMenuBackgroundError.Create('TMenuBackgroundVideo: No video filename present'); + + fFileName := Skin.GetTextureFileName(ThemedSettings.Tex); + fFileName := AdaptFilePaths( fFileName ); + + if fileexists(fFilename) AND VideoPlayback.Open( fFileName ) then + begin + VideoBGTimer.SetTime(0); + VideoPlayback.Play; + end + else + raise EMenuBackgroundError.Create('TMenuBackgroundVideo: Can''t load background video: ' + fFilename); +end; + +Destructor TMenuBackgroundVideo.Destroy; +begin + +end; + + +Procedure TMenuBackgroundVideo.OnShow; +begin + if VideoPlayback.Open( fFileName ) then + begin + VideoBGTimer.SetTime(0); + VideoPlayback.Play; + end; +end; + +Procedure TMenuBackgroundVideo.OnFinish; +begin + +end; + + +Procedure TMenuBackgroundVideo.Draw; +begin + glClear(GL_DEPTH_BUFFER_BIT); + + VideoPlayback.GetFrame(VideoBGTimer.GetTime()); + // FIXME: why do we draw on screen 2? Seems to be wrong. + VideoPlayback.DrawGL(2); +end; + +// Implementation of TBGVideo +//-------- +{Constructor TBGVideo.Create(Item: PBGVideoPoolItem); +begin + myItem := PBGVideoPoolItem; + Inc(myItem.ReferenceCounter); +end; + +Destructor TBGVideo.Destroy; +begin + Dec(myItem.ReferenceCounter); +end; + +Function TBGVideo.GetVideoPlayback: IVideoPlayback; +begin + +end; + +Procedure TBGVideo.Draw; +begin + +end; + +// Implementation of TBGVideoPool +//-------- + +Constructor TBGVideoPool.Create; +begin + +end; + +Destructor TBGVideoPool.Destroy; +begin + +end; + +Function TBGVideoPool.GetBGVideo(filename: String): TBGVideo; +begin + +end; + +Procedure TBGVideoPool.FreeAllItems; +begin + +end; } + +end. -- cgit v1.2.3 From e60c0d3e29be2c77e7ab8deca6c37d0b07ebf085 Mon Sep 17 00:00:00 2001 From: k-m_schindler Date: Sat, 18 Oct 2008 21:13:16 +0000 Subject: style adjustments. no code change. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1456 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/menu/UMenuBackgroundVideo.pas | 68 +++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 35 deletions(-) (limited to 'src/menu/UMenuBackgroundVideo.pas') diff --git a/src/menu/UMenuBackgroundVideo.pas b/src/menu/UMenuBackgroundVideo.pas index a6d02828..377c2170 100644 --- a/src/menu/UMenuBackgroundVideo.pas +++ b/src/menu/UMenuBackgroundVideo.pas @@ -44,57 +44,57 @@ uses type //DefaultBGVideoPlayback = TVideoPlayback_FFmpeg; -{type +{type TBGVideoPool = class; PBGVideoPoolItem = ^TBGVideoPoolItem; TBGVideoPoolItem = record Parent: TBGVideoPool; VideoPlayback = IVideoPlayback; - ReferenceCounter: Cardinal; //Number of Creations + ReferenceCounter: cardinal; //Number of Creations end; TBGVideo = class private myItem: PBGVideoPoolItem; public - Constructor Create(Item: PBGVideoPoolItem); override; + constructor Create(Item: PBGVideoPoolItem); override; - Function GetVideoPlayback: IVideoPlayback; - Procedure Draw; + function GetVideoPlayback: IVideoPlayback; + procedure Draw; - Destructor Destroy; + destructor Destroy; end; TBGVideoPool = class private Items: PBGVideoPoolItem; public - Constructor Create; + constructor Create; - Function GetBGVideo(filename: String): TBGVideo; - Procedure RemoveItem( - Procedure FreeAllItems; + function GetBGVideo(filename: string): TBGVideo; + procedure RemoveItem( + procedure FreeAllItems; - Destructor Destroy; + destructor Destroy; end; - + type } TMenuBackgroundVideo = class (TMenuBackground) private - fFilename: String; + fFilename: string; public - Constructor Create(const ThemedSettings: TThemeBackground); override; - Procedure OnShow; override; - Procedure Draw; override; - Procedure OnFinish; override; - Destructor Destroy; override; + constructor Create(const ThemedSettings: TThemeBackground); override; + procedure OnShow; override; + procedure Draw; override; + procedure OnFinish; override; + destructor Destroy; override; end; {var BGVideoPool: TBGVideoPool; } const - SUPPORTED_EXTS_BACKGROUNDVIDEO: Array[0..6] of String = ('.avi', '.mov', '.divx', '.mpg', '.mp4', '.mpeg', '.m2v'); + SUPPORTED_EXTS_BACKGROUNDVIDEO: array[0..6] of string = ('.avi', '.mov', '.divx', '.mpg', '.mp4', '.mpeg', '.m2v'); implementation @@ -107,10 +107,10 @@ uses USkins, UCommon; -Constructor TMenuBackgroundVideo.Create(const ThemedSettings: TThemeBackground); +constructor TMenuBackgroundVideo.Create(const ThemedSettings: TThemeBackground); begin inherited; - If (Length(ThemedSettings.Tex) = 0) then + if (Length(ThemedSettings.Tex) = 0) then raise EMenuBackgroundError.Create('TMenuBackgroundVideo: No video filename present'); fFileName := Skin.GetTextureFileName(ThemedSettings.Tex); @@ -125,13 +125,12 @@ begin raise EMenuBackgroundError.Create('TMenuBackgroundVideo: Can''t load background video: ' + fFilename); end; -Destructor TMenuBackgroundVideo.Destroy; +destructor TMenuBackgroundVideo.Destroy; begin end; - -Procedure TMenuBackgroundVideo.OnShow; +procedure TMenuBackgroundVideo.OnShow; begin if VideoPlayback.Open( fFileName ) then begin @@ -140,13 +139,12 @@ begin end; end; -Procedure TMenuBackgroundVideo.OnFinish; +procedure TMenuBackgroundVideo.OnFinish; begin end; - -Procedure TMenuBackgroundVideo.Draw; +procedure TMenuBackgroundVideo.Draw; begin glClear(GL_DEPTH_BUFFER_BIT); @@ -157,23 +155,23 @@ end; // Implementation of TBGVideo //-------- -{Constructor TBGVideo.Create(Item: PBGVideoPoolItem); +{constructor TBGVideo.Create(Item: PBGVideoPoolItem); begin myItem := PBGVideoPoolItem; Inc(myItem.ReferenceCounter); end; -Destructor TBGVideo.Destroy; +destructor TBGVideo.Destroy; begin Dec(myItem.ReferenceCounter); end; -Function TBGVideo.GetVideoPlayback: IVideoPlayback; +function TBGVideo.GetVideoPlayback: IVideoPlayback; begin end; -Procedure TBGVideo.Draw; +procedure TBGVideo.Draw; begin end; @@ -181,22 +179,22 @@ end; // Implementation of TBGVideoPool //-------- -Constructor TBGVideoPool.Create; +constructor TBGVideoPool.Create; begin end; -Destructor TBGVideoPool.Destroy; +destructor TBGVideoPool.Destroy; begin end; -Function TBGVideoPool.GetBGVideo(filename: String): TBGVideo; +function TBGVideoPool.GetBGVideo(filename: string): TBGVideo; begin end; -Procedure TBGVideoPool.FreeAllItems; +procedure TBGVideoPool.FreeAllItems; begin end; } -- cgit v1.2.3 From f57b5a260d4d98a910f62316efe653a1a7e704b7 Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Sun, 1 Mar 2009 12:53:55 +0000 Subject: fixed first screen was cleared when second screen was drawn. #76 should be fixed now commented some weird stuff in TScreenSing.Draw git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1613 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/menu/UMenuBackgroundVideo.pas | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/menu/UMenuBackgroundVideo.pas') diff --git a/src/menu/UMenuBackgroundVideo.pas b/src/menu/UMenuBackgroundVideo.pas index 377c2170..d1ce0f09 100644 --- a/src/menu/UMenuBackgroundVideo.pas +++ b/src/menu/UMenuBackgroundVideo.pas @@ -105,7 +105,8 @@ uses SysUtils, UTime, USkins, - UCommon; + UCommon, + UGraphic; constructor TMenuBackgroundVideo.Create(const ThemedSettings: TThemeBackground); begin @@ -146,7 +147,8 @@ end; procedure TMenuBackgroundVideo.Draw; begin - glClear(GL_DEPTH_BUFFER_BIT); + If (ScreenAct = 1) then //Clear just once when in dual screen mode + glClear(GL_DEPTH_BUFFER_BIT); VideoPlayback.GetFrame(VideoBGTimer.GetTime()); // FIXME: why do we draw on screen 2? Seems to be wrong. -- cgit v1.2.3 From 917901e8e33438c425aef50a0a7417f32d77b760 Mon Sep 17 00:00:00 2001 From: s_alexander Date: Mon, 9 Nov 2009 00:27:55 +0000 Subject: merged unicode branch (r1931) into trunk git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1939 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/menu/UMenuBackgroundVideo.pas | 407 +++++++++++++++++++------------------- 1 file changed, 203 insertions(+), 204 deletions(-) (limited to 'src/menu/UMenuBackgroundVideo.pas') diff --git a/src/menu/UMenuBackgroundVideo.pas b/src/menu/UMenuBackgroundVideo.pas index d1ce0f09..9d265764 100644 --- a/src/menu/UMenuBackgroundVideo.pas +++ b/src/menu/UMenuBackgroundVideo.pas @@ -1,204 +1,203 @@ -{* UltraStar Deluxe - Karaoke Game - * - * UltraStar Deluxe is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - *} - -unit UMenuBackgroundVideo; - -interface - -{$IFDEF FPC} - {$MODE Delphi} -{$ENDIF} - -{$I switches.inc} - -uses - UThemes, - UMenuBackground, - UVideo; - -//TMenuBackgroundColor - Background Color -//-------- - -type - //DefaultBGVideoPlayback = TVideoPlayback_FFmpeg; - -{type - TBGVideoPool = class; - - PBGVideoPoolItem = ^TBGVideoPoolItem; - TBGVideoPoolItem = record - Parent: TBGVideoPool; - VideoPlayback = IVideoPlayback; - ReferenceCounter: cardinal; //Number of Creations - end; - - TBGVideo = class - private - myItem: PBGVideoPoolItem; - public - constructor Create(Item: PBGVideoPoolItem); override; - - function GetVideoPlayback: IVideoPlayback; - procedure Draw; - - destructor Destroy; - end; - - TBGVideoPool = class - private - Items: PBGVideoPoolItem; - public - constructor Create; - - function GetBGVideo(filename: string): TBGVideo; - procedure RemoveItem( - procedure FreeAllItems; - - destructor Destroy; - end; - -type } - TMenuBackgroundVideo = class (TMenuBackground) - private - fFilename: string; - public - constructor Create(const ThemedSettings: TThemeBackground); override; - procedure OnShow; override; - procedure Draw; override; - procedure OnFinish; override; - destructor Destroy; override; - end; - -{var - BGVideoPool: TBGVideoPool; } -const - SUPPORTED_EXTS_BACKGROUNDVIDEO: array[0..6] of string = ('.avi', '.mov', '.divx', '.mpg', '.mp4', '.mpeg', '.m2v'); - -implementation - -uses - gl, - glext, - UMusic, - SysUtils, - UTime, - USkins, - UCommon, - UGraphic; - -constructor TMenuBackgroundVideo.Create(const ThemedSettings: TThemeBackground); -begin - inherited; - if (Length(ThemedSettings.Tex) = 0) then - raise EMenuBackgroundError.Create('TMenuBackgroundVideo: No video filename present'); - - fFileName := Skin.GetTextureFileName(ThemedSettings.Tex); - fFileName := AdaptFilePaths( fFileName ); - - if fileexists(fFilename) AND VideoPlayback.Open( fFileName ) then - begin - VideoBGTimer.SetTime(0); - VideoPlayback.Play; - end - else - raise EMenuBackgroundError.Create('TMenuBackgroundVideo: Can''t load background video: ' + fFilename); -end; - -destructor TMenuBackgroundVideo.Destroy; -begin - -end; - -procedure TMenuBackgroundVideo.OnShow; -begin - if VideoPlayback.Open( fFileName ) then - begin - VideoBGTimer.SetTime(0); - VideoPlayback.Play; - end; -end; - -procedure TMenuBackgroundVideo.OnFinish; -begin - -end; - -procedure TMenuBackgroundVideo.Draw; -begin - If (ScreenAct = 1) then //Clear just once when in dual screen mode - glClear(GL_DEPTH_BUFFER_BIT); - - VideoPlayback.GetFrame(VideoBGTimer.GetTime()); - // FIXME: why do we draw on screen 2? Seems to be wrong. - VideoPlayback.DrawGL(2); -end; - -// Implementation of TBGVideo -//-------- -{constructor TBGVideo.Create(Item: PBGVideoPoolItem); -begin - myItem := PBGVideoPoolItem; - Inc(myItem.ReferenceCounter); -end; - -destructor TBGVideo.Destroy; -begin - Dec(myItem.ReferenceCounter); -end; - -function TBGVideo.GetVideoPlayback: IVideoPlayback; -begin - -end; - -procedure TBGVideo.Draw; -begin - -end; - -// Implementation of TBGVideoPool -//-------- - -constructor TBGVideoPool.Create; -begin - -end; - -destructor TBGVideoPool.Destroy; -begin - -end; - -function TBGVideoPool.GetBGVideo(filename: string): TBGVideo; -begin - -end; - -procedure TBGVideoPool.FreeAllItems; -begin - -end; } - -end. +{* UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + *} + +unit UMenuBackgroundVideo; + +interface + +{$IFDEF FPC} + {$MODE Delphi} +{$ENDIF} + +{$I switches.inc} + +uses + UThemes, + UMenuBackground, + UVideo, + UPath; + +//TMenuBackgroundColor - Background Color +//-------- + +type + //DefaultBGVideoPlayback = TVideoPlayback_FFmpeg; + +{type + TBGVideoPool = class; + + PBGVideoPoolItem = ^TBGVideoPoolItem; + TBGVideoPoolItem = record + Parent: TBGVideoPool; + VideoPlayback = IVideoPlayback; + ReferenceCounter: cardinal; //Number of Creations + end; + + TBGVideo = class + private + myItem: PBGVideoPoolItem; + public + constructor Create(Item: PBGVideoPoolItem); override; + + function GetVideoPlayback: IVideoPlayback; + procedure Draw; + + destructor Destroy; + end; + + TBGVideoPool = class + private + Items: PBGVideoPoolItem; + public + constructor Create; + + function GetBGVideo(filename: IPath): TBGVideo; + procedure RemoveItem( + procedure FreeAllItems; + + destructor Destroy; + end; + +type } + TMenuBackgroundVideo = class (TMenuBackground) + private + fFilename: IPath; + public + constructor Create(const ThemedSettings: TThemeBackground); override; + procedure OnShow; override; + procedure Draw; override; + procedure OnFinish; override; + destructor Destroy; override; + end; + +{var + BGVideoPool: TBGVideoPool; } +const + SUPPORTED_EXTS_BACKGROUNDVIDEO: array[0..6] of string = ('.avi', '.mov', '.divx', '.mpg', '.mp4', '.mpeg', '.m2v'); + +implementation + +uses + gl, + glext, + UMusic, + SysUtils, + UTime, + USkins, + UCommon, + UGraphic; + +constructor TMenuBackgroundVideo.Create(const ThemedSettings: TThemeBackground); +begin + inherited; + if (Length(ThemedSettings.Tex) = 0) then + raise EMenuBackgroundError.Create('TMenuBackgroundVideo: No video filename present'); + + fFileName := Skin.GetTextureFileName(ThemedSettings.Tex); + if fFilename.IsFile and VideoPlayback.Open(fFileName) then + begin + VideoBGTimer.SetTime(0); + VideoPlayback.Play; + end + else + raise EMenuBackgroundError.Create('TMenuBackgroundVideo: Can''t load background video: ' + fFilename.ToNative); +end; + +destructor TMenuBackgroundVideo.Destroy; +begin + +end; + +procedure TMenuBackgroundVideo.OnShow; +begin + if VideoPlayback.Open( fFileName ) then + begin + VideoBGTimer.SetTime(0); + VideoPlayback.Play; + end; +end; + +procedure TMenuBackgroundVideo.OnFinish; +begin + +end; + +procedure TMenuBackgroundVideo.Draw; +begin + If (ScreenAct = 1) then //Clear just once when in dual screen mode + glClear(GL_DEPTH_BUFFER_BIT); + + VideoPlayback.GetFrame(VideoBGTimer.GetTime()); + // FIXME: why do we draw on screen 2? Seems to be wrong. + VideoPlayback.DrawGL(2); +end; + +// Implementation of TBGVideo +//-------- +{constructor TBGVideo.Create(Item: PBGVideoPoolItem); +begin + myItem := PBGVideoPoolItem; + Inc(myItem.ReferenceCounter); +end; + +destructor TBGVideo.Destroy; +begin + Dec(myItem.ReferenceCounter); +end; + +function TBGVideo.GetVideoPlayback: IVideoPlayback; +begin + +end; + +procedure TBGVideo.Draw; +begin + +end; + +// Implementation of TBGVideoPool +//-------- + +constructor TBGVideoPool.Create; +begin + +end; + +destructor TBGVideoPool.Destroy; +begin + +end; + +function TBGVideoPool.GetBGVideo(filename: IPath): TBGVideo; +begin + +end; + +procedure TBGVideoPool.FreeAllItems; +begin + +end; } + +end. -- cgit v1.2.3 From 868ce765441473e7d1fec9b3ad22a707f121a637 Mon Sep 17 00:00:00 2001 From: tobigun Date: Wed, 21 Apr 2010 18:27:36 +0000 Subject: - add video loop option - allow multiple instances of a video git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2260 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/menu/UMenuBackgroundVideo.pas | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) (limited to 'src/menu/UMenuBackgroundVideo.pas') diff --git a/src/menu/UMenuBackgroundVideo.pas b/src/menu/UMenuBackgroundVideo.pas index 9d265764..006c45e0 100644 --- a/src/menu/UMenuBackgroundVideo.pas +++ b/src/menu/UMenuBackgroundVideo.pas @@ -36,6 +36,7 @@ interface uses UThemes, UMenuBackground, + UMusic, UVideo, UPath; @@ -84,6 +85,7 @@ type } TMenuBackgroundVideo = class (TMenuBackground) private fFilename: IPath; + fBgVideo: IVideo; public constructor Create(const ThemedSettings: TThemeBackground); override; procedure OnShow; override; @@ -102,7 +104,6 @@ implementation uses gl, glext, - UMusic, SysUtils, UTime, USkins, @@ -116,42 +117,48 @@ begin raise EMenuBackgroundError.Create('TMenuBackgroundVideo: No video filename present'); fFileName := Skin.GetTextureFileName(ThemedSettings.Tex); - if fFilename.IsFile and VideoPlayback.Open(fFileName) then - begin - VideoBGTimer.SetTime(0); - VideoPlayback.Play; - end - else + if (not fFilename.IsFile) then raise EMenuBackgroundError.Create('TMenuBackgroundVideo: Can''t load background video: ' + fFilename.ToNative); end; destructor TMenuBackgroundVideo.Destroy; begin - end; -procedure TMenuBackgroundVideo.OnShow; +procedure TMenuBackgroundVideo.OnShow; begin - if VideoPlayback.Open( fFileName ) then + fBgVideo := VideoPlayback.Open(fFileName); + if (fBgVideo <> nil) then begin VideoBGTimer.SetTime(0); - VideoPlayback.Play; + fBgVideo.Loop := true; + fBgVideo.Play; end; end; procedure TMenuBackgroundVideo.OnFinish; begin - + // unload video + fBgVideo := nil; end; -procedure TMenuBackgroundVideo.Draw; +procedure TMenuBackgroundVideo.Draw; begin - If (ScreenAct = 1) then //Clear just once when in dual screen mode + // clear just once when in dual screen mode + if (ScreenAct = 1) then + begin glClear(GL_DEPTH_BUFFER_BIT); + // video failure -> draw blank background + if (fBgVideo = nil) then + glClear(GL_COLOR_BUFFER_BIT); + end; - VideoPlayback.GetFrame(VideoBGTimer.GetTime()); + if (fBgVideo <> nil) then + begin + fBgVideo.GetFrame(VideoBGTimer.GetTime()); // FIXME: why do we draw on screen 2? Seems to be wrong. - VideoPlayback.DrawGL(2); + fBgVideo.DrawGL(2); + end; end; // Implementation of TBGVideo -- cgit v1.2.3 From edfc692c991e08af0163aa6812e5972478d7191b Mon Sep 17 00:00:00 2001 From: tobigun Date: Thu, 22 Apr 2010 01:04:24 +0000 Subject: - now it is possible to sync lyrics to audio - ini option SyncTo added - lyric to audio is default now (instead of sync audio to lyrics) - modified RelativeTimer (hopefully easier to use and more self-explanatory) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2273 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/menu/UMenuBackgroundVideo.pas | 1 + 1 file changed, 1 insertion(+) (limited to 'src/menu/UMenuBackgroundVideo.pas') diff --git a/src/menu/UMenuBackgroundVideo.pas b/src/menu/UMenuBackgroundVideo.pas index 006c45e0..bfaee702 100644 --- a/src/menu/UMenuBackgroundVideo.pas +++ b/src/menu/UMenuBackgroundVideo.pas @@ -131,6 +131,7 @@ begin if (fBgVideo <> nil) then begin VideoBGTimer.SetTime(0); + VideoBGTimer.Start(); fBgVideo.Loop := true; fBgVideo.Play; end; -- cgit v1.2.3 From f261cd24db299daee8a0d8e470ff7d173f1a1c75 Mon Sep 17 00:00:00 2001 From: brunzelchen Date: Thu, 10 Jun 2010 18:27:53 +0000 Subject: merge of VideoPreview branch into trunk git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2475 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/menu/UMenuBackgroundVideo.pas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/menu/UMenuBackgroundVideo.pas') diff --git a/src/menu/UMenuBackgroundVideo.pas b/src/menu/UMenuBackgroundVideo.pas index bfaee702..9a33e721 100644 --- a/src/menu/UMenuBackgroundVideo.pas +++ b/src/menu/UMenuBackgroundVideo.pas @@ -151,14 +151,14 @@ begin glClear(GL_DEPTH_BUFFER_BIT); // video failure -> draw blank background if (fBgVideo = nil) then - glClear(GL_COLOR_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT); end; if (fBgVideo <> nil) then begin fBgVideo.GetFrame(VideoBGTimer.GetTime()); - // FIXME: why do we draw on screen 2? Seems to be wrong. - fBgVideo.DrawGL(2); + fBgVideo.SetScreen(ScreenAct); + fBgVideo.Draw(); end; end; -- cgit v1.2.3