Merge pull request #443 from Vocaluxe/AutomaticAspectRatioSwitch

Automatic switch of aspect ratio for background video & image on sing screen
This commit is contained in:
daggeg authored and GitHub committed 2020-01-14 21:46:42 +01:00
commit a8fcfd2c67
4 files changed
+22 -12

No files matched your search

+9 -6
View File
@@ -1,4 +1,4 @@
#region license
#region license
// This file is part of Vocaluxe.
//
// Vocaluxe is free software: you can redistribute it and/or modify
@@ -112,7 +112,7 @@ namespace Vocaluxe.Screens
private float _Length = -1f;
private CVideoStream _CurrentVideo;
private EAspect _VideoAspect = EAspect.Crop;
private EAspect _VideoAspect = EAspect.Automatic;
private CTextureRef _CurrentWebcamFrameTexture;
private CTextureRef _Background;
@@ -794,18 +794,21 @@ namespace Vocaluxe.Screens
if (_CurrentVideo != null && CConfig.Config.Video.VideosInSongs == EOffOn.TR_CONFIG_ON && !_Webcam)
{
background = _CurrentVideo.Texture;
aspect = _VideoAspect;
}
else if (_Webcam)
{
background = _CurrentWebcamFrameTexture;
aspect = _VideoAspect;
}
else
background = _Background;
if (background != null)
{
SRectF bounds = CSettings.RenderRect;
if (_VideoAspect == EAspect.Automatic)
_VideoAspect = (background.OrigAspect <= 1.5 ? EAspect.LetterBox : EAspect.Crop);
aspect = _VideoAspect;
SRectF rect = CHelper.FitInBounds(bounds, background.OrigAspect, aspect);
CDraw.DrawTexture(background, rect, background.Color, bounds);
}
@@ -1087,7 +1090,7 @@ namespace Vocaluxe.Screens
{
_CurrentVideo = CVideo.Load(Path.Combine(song.Folder, song.VideoFileName));
CVideo.Skip(_CurrentVideo, song.Start, song.VideoGap);
_VideoAspect = song.VideoAspect;
_VideoAspect = EAspect.Automatic;
}
CDraw.RemoveTexture(ref _Background);
@@ -1828,4 +1831,4 @@ namespace Vocaluxe.Screens
}
}
}
}
}
+9 -3
View File
@@ -1,4 +1,4 @@
#region license
#region license
// This file is part of Vocaluxe.
//
// Vocaluxe is free software: you can redistribute it and/or modify
@@ -101,6 +101,7 @@ namespace VocaluxeLib
switch (aspect)
{
case EAspect.Automatic:
case EAspect.Crop:
if (boundsAspectRatio >= aspectRatio)
{
@@ -138,7 +139,12 @@ namespace VocaluxeLib
}
break;
case EAspect.LetterBox:
if (boundsAspectRatio <= aspectRatio)
if (boundsAspectRatio == aspectRatio) // Pillarbox
{
scaledWidth = bounds.W * 0.77f;
scaledHeight = bounds.W / aspectRatio;
}
else if (boundsAspectRatio < aspectRatio)
{
scaledWidth = bounds.W;
scaledHeight = bounds.W / aspectRatio;
@@ -306,4 +312,4 @@ namespace VocaluxeLib
return bmp;
}
}
}
}
+2 -1
View File
@@ -64,6 +64,7 @@ namespace VocaluxeLib
#region Fonts
public enum EAspect
{
Automatic,
Crop,
LetterBox,
Stretch,
@@ -436,4 +437,4 @@ namespace VocaluxeLib
TR_USERROLE_PROFILEEDITOR = 32
// ReSharper restore InconsistentNaming
}
}
}
+2 -2
View File
@@ -101,7 +101,7 @@ namespace VocaluxeLib.Songs
public readonly List<string> BackgroundFileNames = new List<string>();
public string VideoFileName = String.Empty;
public EAspect VideoAspect = EAspect.Crop;
public EAspect VideoAspect = EAspect.Automatic;
public bool NotesLoaded { get; private set; }
@@ -518,4 +518,4 @@ namespace VocaluxeLib.Songs
ShortEnd.Source = EDataSource.Calculated;
}
}
}
}