Merge branch 'Better_Graphics_Handling' into develop
Conflicts: Vocaluxe/Base/CBackgroundMusic.cs Vocaluxe/Base/CCover.cs Vocaluxe/Base/CDataBase.cs Vocaluxe/Base/CDraw.cs Vocaluxe/Base/CMain.cs Vocaluxe/Base/CProfiles.cs Vocaluxe/Base/CTheme.cs Vocaluxe/Base/CVideo.cs Vocaluxe/Base/CWebcam.cs Vocaluxe/Base/Fonts/CFont.cs Vocaluxe/Base/Fonts/CGlyph.cs Vocaluxe/Lib/Draw/CDirect3D.cs Vocaluxe/Lib/Draw/CDrawWinForm.cs Vocaluxe/Lib/Draw/COpenGL.cs Vocaluxe/Lib/Draw/IDraw.cs Vocaluxe/Lib/Video/CVideoDecoder.cs Vocaluxe/Lib/Video/CVideoDecoderFFmpeg.cs Vocaluxe/Lib/Video/CVideoDecoderGstreamer.cs Vocaluxe/Lib/Video/IVideoDecoder.cs Vocaluxe/Lib/Webcam/CAForgeNet.cs Vocaluxe/Lib/Webcam/IWebcam.cs Vocaluxe/Screens/CScreenCredits.cs Vocaluxe/Screens/CScreenNames.cs Vocaluxe/Screens/CScreenOptionsVideo.cs Vocaluxe/Screens/CScreenProfiles.cs Vocaluxe/Screens/CScreenSing.cs VocaluxeLib/Menu/IMenu.cs VocaluxeLib/Songs/CCategory.cs VocaluxeLib/Songs/CSong.cs VocaluxeLib/Structs.cs VocaluxeLib/VocaluxeLib.csproj
This commit is contained in:
commit
9d13c32b93
56 files changed
+1579
-1772
No files matched your search
@@ -146,7 +146,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
|
|||||||
_Rand = rand;
|
_Rand = rand;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CCombination GetNextCombination(List<int> playerNrDemand)
|
public CCombination GetNextCombination(IEnumerable<int> playerNrDemand)
|
||||||
{
|
{
|
||||||
if (_Combs.Count == 0)
|
if (_Combs.Count == 0)
|
||||||
_Create();
|
_Create();
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Songs;
|
using VocaluxeLib.Songs;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
using VocaluxeLib.Menu.SongMenu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
{
|
{
|
||||||
@@ -39,7 +42,7 @@ namespace Vocaluxe.Base
|
|||||||
private static readonly List<CPlaylistElement> _PreviousFileNames = new List<CPlaylistElement>();
|
private static readonly List<CPlaylistElement> _PreviousFileNames = new List<CPlaylistElement>();
|
||||||
|
|
||||||
private static int _Video = -1;
|
private static int _Video = -1;
|
||||||
private static STexture _CurrentVideoTexture = new STexture(-1);
|
private static CTexture _CurrentVideoTexture;
|
||||||
private static readonly Stopwatch _FadeTimer = new Stopwatch();
|
private static readonly Stopwatch _FadeTimer = new Stopwatch();
|
||||||
private static bool _VideoEnabled;
|
private static bool _VideoEnabled;
|
||||||
|
|
||||||
@@ -118,7 +121,7 @@ namespace Vocaluxe.Base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture Cover
|
public static CTexture Cover
|
||||||
{
|
{
|
||||||
get { return _CurrentPlaylistElement.Cover; }
|
get { return _CurrentPlaylistElement.Cover; }
|
||||||
}
|
}
|
||||||
@@ -155,7 +158,7 @@ namespace Vocaluxe.Base
|
|||||||
CSound.Fade(_CurrentMusicStream, 100f, CSettings.BackgroundMusicFadeTime);
|
CSound.Fade(_CurrentMusicStream, 100f, CSettings.BackgroundMusicFadeTime);
|
||||||
CSound.Play(_CurrentMusicStream);
|
CSound.Play(_CurrentMusicStream);
|
||||||
if (_VideoEnabled && _Video != -1)
|
if (_VideoEnabled && _Video != -1)
|
||||||
CVideo.VdResume(_Video);
|
CVideo.Resume(_Video);
|
||||||
IsPlaying = true;
|
IsPlaying = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -173,7 +176,7 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
if (_VideoEnabled && _Video != -1)
|
if (_VideoEnabled && _Video != -1)
|
||||||
{
|
{
|
||||||
CVideo.VdClose(_Video);
|
CVideo.Close(_Video);
|
||||||
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
||||||
_Video = -1;
|
_Video = -1;
|
||||||
}
|
}
|
||||||
@@ -191,8 +194,8 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
if (_VideoEnabled && _Video != -1)
|
if (_VideoEnabled && _Video != -1)
|
||||||
{
|
{
|
||||||
CVideo.VdPause(_Video);
|
CVideo.Pause(_Video);
|
||||||
CVideo.VdSkip(_Video, CSound.GetPosition(_CurrentMusicStream) + CSettings.BackgroundMusicFadeTime, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, CSound.GetPosition(_CurrentMusicStream) + CSettings.BackgroundMusicFadeTime, _CurrentPlaylistElement.VideoGap);
|
||||||
}
|
}
|
||||||
CSound.FadeAndPause(_CurrentMusicStream, 0f, CSettings.BackgroundMusicFadeTime);
|
CSound.FadeAndPause(_CurrentMusicStream, 0f, CSettings.BackgroundMusicFadeTime);
|
||||||
IsPlaying = false;
|
IsPlaying = false;
|
||||||
@@ -221,9 +224,9 @@ namespace Vocaluxe.Base
|
|||||||
if (_VideoEnabled && _Video != -1)
|
if (_VideoEnabled && _Video != -1)
|
||||||
{
|
{
|
||||||
if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
|
if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
|
||||||
CVideo.VdSkip(_Video, _CurrentPlaylistElement.Start, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, _CurrentPlaylistElement.Start, _CurrentPlaylistElement.VideoGap);
|
||||||
else
|
else
|
||||||
CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -287,9 +290,9 @@ namespace Vocaluxe.Base
|
|||||||
if (_VideoEnabled && _Video != -1)
|
if (_VideoEnabled && _Video != -1)
|
||||||
{
|
{
|
||||||
if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
|
if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
|
||||||
CVideo.VdSkip(_Video, _CurrentPlaylistElement.Start, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, _CurrentPlaylistElement.Start, _CurrentPlaylistElement.VideoGap);
|
||||||
else
|
else
|
||||||
CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -319,9 +322,9 @@ namespace Vocaluxe.Base
|
|||||||
if (_VideoEnabled && _Video != -1)
|
if (_VideoEnabled && _Video != -1)
|
||||||
{
|
{
|
||||||
if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
|
if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
|
||||||
CVideo.VdSkip(_Video, _CurrentPlaylistElement.Start, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, _CurrentPlaylistElement.Start, _CurrentPlaylistElement.VideoGap);
|
||||||
else
|
else
|
||||||
CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -441,14 +444,14 @@ namespace Vocaluxe.Base
|
|||||||
if (_VideoEnabled)
|
if (_VideoEnabled)
|
||||||
{
|
{
|
||||||
_VideoEnabled = false;
|
_VideoEnabled = false;
|
||||||
CVideo.VdClose(_Video);
|
CVideo.Close(_Video);
|
||||||
_Video = -1;
|
_Video = -1;
|
||||||
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (CVideo.VdFinished(_Video))
|
if (CVideo.Finished(_Video))
|
||||||
{
|
{
|
||||||
CVideo.VdClose(_Video);
|
CVideo.Close(_Video);
|
||||||
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
||||||
_Video = -1;
|
_Video = -1;
|
||||||
}
|
}
|
||||||
@@ -457,22 +460,24 @@ namespace Vocaluxe.Base
|
|||||||
_LoadVideo();
|
_LoadVideo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture GetVideoTexture()
|
public static CTexture GetVideoTexture()
|
||||||
{
|
{
|
||||||
if (_Video != -1)
|
if (_Video != -1)
|
||||||
{
|
{
|
||||||
float vtime;
|
float vtime;
|
||||||
CVideo.VdGetFrame(_Video, ref _CurrentVideoTexture, CSound.GetPosition(_CurrentMusicStream), out vtime);
|
if (CVideo.GetFrame(_Video, ref _CurrentVideoTexture, CSound.GetPosition(_CurrentMusicStream), out vtime))
|
||||||
if (_FadeTimer.ElapsedMilliseconds <= 3000L)
|
|
||||||
_CurrentVideoTexture.Color.A = _FadeTimer.ElapsedMilliseconds / 3000f;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
_CurrentVideoTexture.Color.A = 1f;
|
if (_FadeTimer.ElapsedMilliseconds <= 3000L)
|
||||||
_FadeTimer.Stop();
|
_CurrentVideoTexture.Color.A = _FadeTimer.ElapsedMilliseconds / 3000f;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_CurrentVideoTexture.Color.A = 1f;
|
||||||
|
_FadeTimer.Stop();
|
||||||
|
}
|
||||||
|
return _CurrentVideoTexture;
|
||||||
}
|
}
|
||||||
return _CurrentVideoTexture;
|
|
||||||
}
|
}
|
||||||
return new STexture(-1);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool _IsBackgroundFile(CPlaylistElement element)
|
private static bool _IsBackgroundFile(CPlaylistElement element)
|
||||||
@@ -484,11 +489,11 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
if (_Video == -1)
|
if (_Video == -1)
|
||||||
{
|
{
|
||||||
_Video = CVideo.VdLoad(_CurrentPlaylistElement.VideoFilePath);
|
_Video = CVideo.Load(_CurrentPlaylistElement.VideoFilePath);
|
||||||
if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
|
if (_CurrentPlaylistElement.Start > 0.001 && CConfig.BackgroundMusicUseStart == EOffOn.TR_CONFIG_ON)
|
||||||
CVideo.VdSkip(_Video, _CurrentPlaylistElement.Start, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, _CurrentPlaylistElement.Start, _CurrentPlaylistElement.VideoGap);
|
||||||
else
|
else
|
||||||
CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
|
CVideo.Skip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
|
||||||
_VideoEnabled = true;
|
_VideoEnabled = true;
|
||||||
_FadeTimer.Reset();
|
_FadeTimer.Reset();
|
||||||
_FadeTimer.Start();
|
_FadeTimer.Start();
|
||||||
@@ -576,7 +581,7 @@ namespace Vocaluxe.Base
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture Cover
|
public CTexture Cover
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|||||||
+23
-39
@@ -23,7 +23,7 @@ using System.IO;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
@@ -31,8 +31,7 @@ namespace Vocaluxe.Base
|
|||||||
struct SCover
|
struct SCover
|
||||||
{
|
{
|
||||||
public string Name;
|
public string Name;
|
||||||
public string Value;
|
public CTexture Texture;
|
||||||
public STexture Texture;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SCoverTheme
|
struct SCoverTheme
|
||||||
@@ -47,14 +46,10 @@ namespace Vocaluxe.Base
|
|||||||
private static readonly XmlWriterSettings _Settings = new XmlWriterSettings();
|
private static readonly XmlWriterSettings _Settings = new XmlWriterSettings();
|
||||||
private static readonly List<SCover> _Cover = new List<SCover>();
|
private static readonly List<SCover> _Cover = new List<SCover>();
|
||||||
private static readonly List<SCoverTheme> _CoverThemes = new List<SCoverTheme>();
|
private static readonly List<SCoverTheme> _CoverThemes = new List<SCoverTheme>();
|
||||||
private static STexture _NoCover = new STexture(-1);
|
|
||||||
|
|
||||||
private static readonly Object _MutexCover = new Object();
|
private static readonly Object _MutexCover = new Object();
|
||||||
|
|
||||||
public static STexture NoCover
|
public static CTexture NoCover { get; private set; }
|
||||||
{
|
|
||||||
get { return _NoCover; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
@@ -98,21 +93,17 @@ namespace Vocaluxe.Base
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a STexture for a given cover name. Returns "NoCover" if the cover does not exist.
|
/// Returns a STexture for a given cover name. Returns "NoCover" if the cover does not exist.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static STexture Cover(string name)
|
public static CTexture Cover(string name)
|
||||||
{
|
{
|
||||||
STexture cov = _NoCover;
|
|
||||||
lock (_MutexCover)
|
lock (_MutexCover)
|
||||||
{
|
{
|
||||||
foreach (SCover cover in _Cover)
|
foreach (SCover cover in _Cover)
|
||||||
{
|
{
|
||||||
if (cover.Name == name)
|
if (cover.Name == name)
|
||||||
{
|
return cover.Texture;
|
||||||
cov = cover.Texture;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return cov;
|
return NoCover;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -133,7 +124,7 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
foreach (SCover cover in _Cover)
|
foreach (SCover cover in _Cover)
|
||||||
{
|
{
|
||||||
STexture texture = cover.Texture;
|
CTexture texture = cover.Texture;
|
||||||
CDraw.RemoveTexture(ref texture);
|
CDraw.RemoveTexture(ref texture);
|
||||||
}
|
}
|
||||||
_Cover.Clear();
|
_Cover.Clear();
|
||||||
@@ -145,16 +136,12 @@ namespace Vocaluxe.Base
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private static SCoverTheme _CoverTheme(string coverThemeName)
|
private static SCoverTheme _CoverTheme(string coverThemeName)
|
||||||
{
|
{
|
||||||
SCoverTheme coverTheme = new SCoverTheme();
|
|
||||||
for (int i = 0; i < _CoverThemes.Count; i++)
|
for (int i = 0; i < _CoverThemes.Count; i++)
|
||||||
{
|
{
|
||||||
if (_CoverThemes[i].Name == coverThemeName)
|
if (_CoverThemes[i].Name == coverThemeName)
|
||||||
{
|
return _CoverThemes[i];
|
||||||
coverTheme = _CoverThemes[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return coverTheme;
|
return new SCoverTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -195,7 +182,7 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
SCoverTheme coverTheme = _CoverTheme(coverThemeName);
|
SCoverTheme coverTheme = _CoverTheme(coverThemeName);
|
||||||
|
|
||||||
if (coverTheme.Name == "")
|
if (String.IsNullOrEmpty(coverTheme.Name))
|
||||||
return;
|
return;
|
||||||
CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(CSettings.FolderCover, coverTheme.File));
|
CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(CSettings.FolderCover, coverTheme.File));
|
||||||
|
|
||||||
@@ -207,31 +194,30 @@ namespace Vocaluxe.Base
|
|||||||
List<string> cover = xmlReader.GetValues("Cover");
|
List<string> cover = xmlReader.GetValues("Cover");
|
||||||
foreach (string coverName in cover)
|
foreach (string coverName in cover)
|
||||||
{
|
{
|
||||||
SCover sk = new SCover();
|
|
||||||
string name;
|
string name;
|
||||||
string value;
|
string filePath;
|
||||||
xmlReader.GetValue("//root/Cover/" + coverName + "/Name", out name, String.Empty);
|
xmlReader.GetValue("//root/Cover/" + coverName + "/Name", out name, String.Empty);
|
||||||
xmlReader.GetValue("//root/Cover/" + coverName + "/Path", out value, String.Empty);
|
xmlReader.GetValue("//root/Cover/" + coverName + "/Path", out filePath, String.Empty);
|
||||||
sk.Name = name;
|
string coverFilePath = Path.Combine(CSettings.FolderCover, Path.Combine(coverTheme.Folder, filePath));
|
||||||
sk.Value = Path.Combine(coverTheme.Folder, value);
|
if (!File.Exists(coverFilePath))
|
||||||
sk.Texture = File.Exists(Path.Combine(CSettings.FolderCover, sk.Value))
|
continue;
|
||||||
? CDraw.AddTexture(Path.Combine(CSettings.FolderCover, Path.Combine(coverTheme.Folder, value))) : _NoCover;
|
SCover sk = new SCover {Name = name, Texture = CDraw.AddTexture(coverFilePath)};
|
||||||
|
|
||||||
_Cover.Add(sk);
|
_Cover.Add(sk);
|
||||||
|
|
||||||
if (sk.Name == "NoCover")
|
if (sk.Name == "NoCover")
|
||||||
_NoCover = sk.Texture;
|
NoCover = sk.Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<string> files = new List<string>();
|
List<string> files = new List<string>();
|
||||||
|
|
||||||
string path = Path.Combine(CSettings.FolderCover, coverTheme.Folder);
|
string coverPath = Path.Combine(CSettings.FolderCover, coverTheme.Folder);
|
||||||
files.AddRange(CHelper.ListFiles(path, "*.png", true, true));
|
files.AddRange(CHelper.ListFiles(coverPath, "*.png", true, true));
|
||||||
files.AddRange(CHelper.ListFiles(path, "*.jpg", true, true));
|
files.AddRange(CHelper.ListFiles(coverPath, "*.jpg", true, true));
|
||||||
files.AddRange(CHelper.ListFiles(path, "*.jpeg", true, true));
|
files.AddRange(CHelper.ListFiles(coverPath, "*.jpeg", true, true));
|
||||||
files.AddRange(CHelper.ListFiles(path, "*.bmp", true, true));
|
files.AddRange(CHelper.ListFiles(coverPath, "*.bmp", true, true));
|
||||||
|
|
||||||
|
|
||||||
foreach (string file in files)
|
foreach (string file in files)
|
||||||
@@ -241,11 +227,9 @@ namespace Vocaluxe.Base
|
|||||||
if (_CoverExists(name))
|
if (_CoverExists(name))
|
||||||
continue;
|
continue;
|
||||||
// ReSharper disable AssignNullToNotNullAttribute
|
// ReSharper disable AssignNullToNotNullAttribute
|
||||||
SCover sk = new SCover {Name = name, Value = Path.Combine(coverTheme.Folder, Path.GetFileName(file))};
|
SCover sk = new SCover {Name = name, Texture = CDraw.AddTexture(file)};
|
||||||
// ReSharper restore AssignNullToNotNullAttribute
|
// ReSharper restore AssignNullToNotNullAttribute
|
||||||
|
|
||||||
sk.Texture = CDraw.AddTexture(Path.Combine(CSettings.FolderCover, sk.Value));
|
|
||||||
|
|
||||||
_Cover.Add(sk);
|
_Cover.Add(sk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,138 @@
|
|||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
|
namespace Vocaluxe.Base
|
||||||
|
{
|
||||||
|
class CCursor
|
||||||
|
{
|
||||||
|
private readonly Stopwatch _CursorFadingTimer = new Stopwatch();
|
||||||
|
private float _CursorTargetAlpha = 1f;
|
||||||
|
private float _CursorStartAlpha;
|
||||||
|
private float _CursorFadingTime = 0.5f;
|
||||||
|
private CTexture _Cursor;
|
||||||
|
|
||||||
|
private readonly Stopwatch _Movetimer = new Stopwatch();
|
||||||
|
|
||||||
|
public bool ShowCursor = true;
|
||||||
|
public bool Visible = true;
|
||||||
|
|
||||||
|
public int X
|
||||||
|
{
|
||||||
|
get { return (int)_Cursor.Rect.X; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Y
|
||||||
|
{
|
||||||
|
get { return (int)_Cursor.Rect.Y; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsActive
|
||||||
|
{
|
||||||
|
get { return _Movetimer.IsRunning; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Draw()
|
||||||
|
{
|
||||||
|
if (_Movetimer.IsRunning && _Movetimer.ElapsedMilliseconds / 1000f > CSettings.MouseMoveOffTime)
|
||||||
|
{
|
||||||
|
_Movetimer.Stop();
|
||||||
|
_Fade(0f, 0.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (_CursorFadingTimer.IsRunning)
|
||||||
|
{
|
||||||
|
float t = _CursorFadingTimer.ElapsedMilliseconds / 1000f;
|
||||||
|
if (t < _CursorFadingTime)
|
||||||
|
{
|
||||||
|
if (_CursorTargetAlpha >= _CursorStartAlpha)
|
||||||
|
_Cursor.Color.A = _CursorStartAlpha + (_CursorTargetAlpha - _CursorStartAlpha) * t / _CursorFadingTime;
|
||||||
|
else
|
||||||
|
_Cursor.Color.A = (_CursorStartAlpha - _CursorTargetAlpha) * (1f - t / _CursorFadingTime);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_CursorFadingTimer.Stop();
|
||||||
|
_Cursor.Color.A = _CursorTargetAlpha;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Visible && (CSettings.GameState == EGameState.EditTheme || ShowCursor))
|
||||||
|
CDraw.DrawTexture(_Cursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdatePosition(int x, int y)
|
||||||
|
{
|
||||||
|
if (Math.Abs(_Cursor.Rect.X - x) > CSettings.MouseMoveDiffMin ||
|
||||||
|
Math.Abs(_Cursor.Rect.Y - y) > CSettings.MouseMoveDiffMin)
|
||||||
|
{
|
||||||
|
if (_CursorTargetAlpha < 0.01)
|
||||||
|
_Fade(1f, 0.2f);
|
||||||
|
|
||||||
|
_Movetimer.Reset();
|
||||||
|
_Movetimer.Start();
|
||||||
|
CSettings.MouseActive();
|
||||||
|
}
|
||||||
|
|
||||||
|
_Cursor.Rect.X = x;
|
||||||
|
_Cursor.Rect.Y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadTextures()
|
||||||
|
{
|
||||||
|
_Cursor = CDraw.AddTexture(CTheme.GetSkinFilePath(CTheme.Cursor.SkinName, -1));
|
||||||
|
|
||||||
|
_Cursor.Color = !String.IsNullOrEmpty(CTheme.Cursor.Color)
|
||||||
|
? CTheme.GetColor(CTheme.Cursor.Color, -1) : new SColorF(CTheme.Cursor.R, CTheme.Cursor.G, CTheme.Cursor.B, CTheme.Cursor.A);
|
||||||
|
_Cursor.Rect.W = CTheme.Cursor.W;
|
||||||
|
_Cursor.Rect.H = CTheme.Cursor.H;
|
||||||
|
_Cursor.Rect.Z = CSettings.ZNear;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UnloadTextures()
|
||||||
|
{
|
||||||
|
CDraw.RemoveTexture(ref _Cursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ReloadTextures()
|
||||||
|
{
|
||||||
|
int x = X;
|
||||||
|
int y = Y;
|
||||||
|
UnloadTextures();
|
||||||
|
LoadTextures();
|
||||||
|
UpdatePosition(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void FadeOut()
|
||||||
|
{
|
||||||
|
_Movetimer.Stop();
|
||||||
|
_Fade(0f, 0.5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void FadeIn()
|
||||||
|
{
|
||||||
|
_Movetimer.Reset();
|
||||||
|
_Movetimer.Start();
|
||||||
|
_Fade(1f, 0.2f);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void _Fade(float targetAlpha, float time)
|
||||||
|
{
|
||||||
|
_CursorFadingTimer.Stop();
|
||||||
|
_CursorFadingTimer.Reset();
|
||||||
|
|
||||||
|
if (targetAlpha >= 0f && targetAlpha <= 1f)
|
||||||
|
_CursorTargetAlpha = targetAlpha;
|
||||||
|
else
|
||||||
|
_CursorTargetAlpha = 1f;
|
||||||
|
|
||||||
|
if (time >= 0f)
|
||||||
|
_CursorFadingTime = time;
|
||||||
|
|
||||||
|
_CursorStartAlpha = _Cursor.Color.A;
|
||||||
|
_CursorFadingTimer.Start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -37,6 +37,9 @@ using SQLiteDataReader = Mono.Data.Sqlite.SqliteDataReader;
|
|||||||
using Community.CsharpSqlite;
|
using Community.CsharpSqlite;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Songs;
|
using VocaluxeLib.Songs;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
using VocaluxeLib.Menu.SongMenu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
{
|
{
|
||||||
@@ -912,7 +915,7 @@ namespace Vocaluxe.Base
|
|||||||
#endregion Highscores
|
#endregion Highscores
|
||||||
|
|
||||||
#region Cover
|
#region Cover
|
||||||
public static bool GetCover(string coverPath, ref STexture tex, int maxSize)
|
public static bool GetCover(string coverPath, ref CTexture tex, int maxSize)
|
||||||
{
|
{
|
||||||
if (!File.Exists(coverPath))
|
if (!File.Exists(coverPath))
|
||||||
{
|
{
|
||||||
@@ -1141,7 +1144,7 @@ namespace Vocaluxe.Base
|
|||||||
#endregion Cover
|
#endregion Cover
|
||||||
|
|
||||||
#region CreditsRessources
|
#region CreditsRessources
|
||||||
public static bool GetCreditsRessource(string fileName, ref STexture tex)
|
public static bool GetCreditsRessource(string fileName, ref CTexture tex)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
|
|||||||
+25
-20
@@ -20,7 +20,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using Vocaluxe.Lib.Draw;
|
using Vocaluxe.Lib.Draw;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
@@ -125,12 +125,12 @@ namespace Vocaluxe.Base
|
|||||||
_Draw.ClearScreen();
|
_Draw.ClearScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture CopyScreen()
|
public static CTexture CopyScreen()
|
||||||
{
|
{
|
||||||
return _Draw.CopyScreen();
|
return _Draw.CopyScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CopyScreen(ref STexture texture)
|
public static void CopyScreen(ref CTexture texture)
|
||||||
{
|
{
|
||||||
_Draw.CopyScreen(ref texture);
|
_Draw.CopyScreen(ref texture);
|
||||||
}
|
}
|
||||||
@@ -140,75 +140,80 @@ namespace Vocaluxe.Base
|
|||||||
_Draw.MakeScreenShot();
|
_Draw.MakeScreenShot();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture AddTexture(Bitmap bitmap)
|
public static CTexture AddTexture(Bitmap bitmap)
|
||||||
{
|
{
|
||||||
return _Draw.AddTexture(bitmap);
|
return _Draw.AddTexture(bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture AddTexture(string texturePath)
|
public static CTexture AddTexture(string texturePath)
|
||||||
{
|
{
|
||||||
return _Draw.AddTexture(texturePath);
|
return _Draw.AddTexture(texturePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture AddTexture(int w, int h, byte[] data)
|
public static CTexture AddTexture(int w, int h, byte[] data)
|
||||||
{
|
{
|
||||||
return _Draw.AddTexture(w, h, data);
|
return _Draw.AddTexture(w, h, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture EnqueueTexture(int w, int h, byte[] data)
|
public static CTexture EnqueueTexture(int w, int h, byte[] data)
|
||||||
{
|
{
|
||||||
return _Draw.EnqueueTexture(w, h, data);
|
return _Draw.EnqueueTexture(w, h, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool UpdateTexture(ref STexture texture, byte[] data)
|
public static bool UpdateTexture(CTexture texture, int w, int h, byte[] data)
|
||||||
{
|
{
|
||||||
return _Draw.UpdateTexture(ref texture, data);
|
return _Draw.UpdateTexture(texture, w, h, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RemoveTexture(ref STexture texture)
|
public static bool UpdateOrAddTexture(ref CTexture texture, int w, int h, byte[] data)
|
||||||
|
{
|
||||||
|
return _Draw.UpdateOrAddTexture(ref texture, w, h, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void RemoveTexture(ref CTexture texture)
|
||||||
{
|
{
|
||||||
_Draw.RemoveTexture(ref texture);
|
_Draw.RemoveTexture(ref texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawTexture(STexture texture)
|
public static void DrawTexture(CTexture texture)
|
||||||
{
|
{
|
||||||
_Draw.DrawTexture(texture);
|
_Draw.DrawTexture(texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawTexture(STexture texture, SRectF rect)
|
public static void DrawTexture(CTexture texture, SRectF rect)
|
||||||
{
|
{
|
||||||
_Draw.DrawTexture(texture, rect);
|
_Draw.DrawTexture(texture, rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawTexture(STexture texture, SRectF rect, SColorF color, bool mirrored = false)
|
public static void DrawTexture(CTexture texture, SRectF rect, SColorF color, bool mirrored = false)
|
||||||
{
|
{
|
||||||
_Draw.DrawTexture(texture, rect, color, mirrored);
|
_Draw.DrawTexture(texture, rect, color, mirrored);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawTexture(STexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
|
public static void DrawTexture(CTexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
|
||||||
{
|
{
|
||||||
_Draw.DrawTexture(texture, rect, color, bounds, mirrored);
|
_Draw.DrawTexture(texture, rect, color, bounds, mirrored);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawTexture(STexture texture, SRectF rect, SColorF color, float begin, float end)
|
public static void DrawTexture(CTexture texture, SRectF rect, SColorF color, float begin, float end)
|
||||||
{
|
{
|
||||||
_Draw.DrawTexture(texture, rect, color, begin, end);
|
_Draw.DrawTexture(texture, rect, color, begin, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawTexture(CStatic staticBounds, STexture texture, EAspect aspect)
|
public static void DrawTexture(CStatic staticBounds, CTexture texture, EAspect aspect)
|
||||||
{
|
{
|
||||||
if (texture.Height <= 0f)
|
if (texture == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
RectangleF bounds = new RectangleF(staticBounds.Rect.X, staticBounds.Rect.Y, staticBounds.Rect.W, staticBounds.Rect.H);
|
RectangleF bounds = new RectangleF(staticBounds.Rect.X, staticBounds.Rect.Y, staticBounds.Rect.W, staticBounds.Rect.H);
|
||||||
RectangleF rect = new RectangleF(0f, 0f, texture.Width, texture.Height);
|
RectangleF rect;
|
||||||
|
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, aspect);
|
CHelper.SetRect(bounds, out rect, texture.OrigAspect, aspect);
|
||||||
DrawTexture(texture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, staticBounds.Rect.Z),
|
DrawTexture(texture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, staticBounds.Rect.Z),
|
||||||
texture.Color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f));
|
texture.Color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void DrawTextureReflection(STexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height)
|
public static void DrawTextureReflection(CTexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height)
|
||||||
{
|
{
|
||||||
_Draw.DrawTextureReflection(texture, rect, color, bounds, space, height);
|
_Draw.DrawTextureReflection(texture, rect, color, bounds, space, height);
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-172
@@ -30,152 +30,11 @@ using VocaluxeLib.PartyModes;
|
|||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
{
|
{
|
||||||
class CCursor
|
|
||||||
{
|
|
||||||
private readonly Stopwatch _CursorFadingTimer;
|
|
||||||
private float _CursorTargetAlpha;
|
|
||||||
private float _CursorStartAlpha;
|
|
||||||
private float _CursorFadingTime;
|
|
||||||
private STexture _Cursor;
|
|
||||||
private readonly string _CursorName = String.Empty;
|
|
||||||
|
|
||||||
private readonly Stopwatch _Movetimer;
|
|
||||||
|
|
||||||
public bool ShowCursor;
|
|
||||||
public bool Visible = true;
|
|
||||||
public bool CursorVisible = true;
|
|
||||||
|
|
||||||
public int X
|
|
||||||
{
|
|
||||||
get { return (int)_Cursor.Rect.X; }
|
|
||||||
set { UpdatePosition(value, (int)_Cursor.Rect.Y); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Y
|
|
||||||
{
|
|
||||||
get { return (int)_Cursor.Rect.Y; }
|
|
||||||
set { UpdatePosition((int)_Cursor.Rect.X, value); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsActive
|
|
||||||
{
|
|
||||||
get { return _Movetimer.IsRunning; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public CCursor(string textureName, SColorF color, float w, float h, float z)
|
|
||||||
{
|
|
||||||
_CursorFadingTimer = new Stopwatch();
|
|
||||||
ShowCursor = true;
|
|
||||||
_CursorTargetAlpha = 1f;
|
|
||||||
_CursorStartAlpha = 0f;
|
|
||||||
_CursorFadingTime = 0.5f;
|
|
||||||
|
|
||||||
_CursorName = textureName;
|
|
||||||
_Cursor = CDraw.AddTexture(CTheme.GetSkinFilePath(_CursorName, -1));
|
|
||||||
|
|
||||||
_Cursor.Color = color;
|
|
||||||
_Cursor.Rect.W = w;
|
|
||||||
_Cursor.Rect.H = h;
|
|
||||||
_Cursor.Rect.Z = z;
|
|
||||||
|
|
||||||
_Movetimer = new Stopwatch();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Draw()
|
|
||||||
{
|
|
||||||
if (_Movetimer.IsRunning && _Movetimer.ElapsedMilliseconds / 1000f > CSettings.MouseMoveOffTime)
|
|
||||||
{
|
|
||||||
_Movetimer.Stop();
|
|
||||||
_Fade(0f, 0.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (_CursorFadingTimer.IsRunning)
|
|
||||||
{
|
|
||||||
float t = _CursorFadingTimer.ElapsedMilliseconds / 1000f;
|
|
||||||
if (t < _CursorFadingTime)
|
|
||||||
{
|
|
||||||
if (_CursorTargetAlpha >= _CursorStartAlpha)
|
|
||||||
_Cursor.Color.A = _CursorStartAlpha + (_CursorTargetAlpha - _CursorStartAlpha) * t / _CursorFadingTime;
|
|
||||||
else
|
|
||||||
_Cursor.Color.A = (_CursorStartAlpha - _CursorTargetAlpha) * (1f - t / _CursorFadingTime);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_CursorFadingTimer.Stop();
|
|
||||||
_Cursor.Color.A = _CursorTargetAlpha;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CursorVisible && (CSettings.GameState == EGameState.EditTheme || ShowCursor))
|
|
||||||
CDraw.DrawTexture(_Cursor);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdatePosition(int x, int y)
|
|
||||||
{
|
|
||||||
if (Math.Abs(_Cursor.Rect.X - x) > CSettings.MouseMoveDiffMin ||
|
|
||||||
Math.Abs(_Cursor.Rect.Y - y) > CSettings.MouseMoveDiffMin)
|
|
||||||
{
|
|
||||||
if (_CursorTargetAlpha < 0.01)
|
|
||||||
_Fade(1f, 0.2f);
|
|
||||||
|
|
||||||
_Movetimer.Reset();
|
|
||||||
_Movetimer.Start();
|
|
||||||
CSettings.MouseActive();
|
|
||||||
}
|
|
||||||
|
|
||||||
_Cursor.Rect.X = x;
|
|
||||||
_Cursor.Rect.Y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UnloadTextures()
|
|
||||||
{
|
|
||||||
CDraw.RemoveTexture(ref _Cursor);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ReloadTextures()
|
|
||||||
{
|
|
||||||
UnloadTextures();
|
|
||||||
|
|
||||||
_Cursor = CDraw.AddTexture(CTheme.GetSkinFilePath(_CursorName, -1));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void FadeOut()
|
|
||||||
{
|
|
||||||
_Movetimer.Stop();
|
|
||||||
_Fade(0f, 0.5f);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void FadeIn()
|
|
||||||
{
|
|
||||||
_Movetimer.Reset();
|
|
||||||
_Movetimer.Start();
|
|
||||||
_Fade(1f, 0.2f);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void _Fade(float targetAlpha, float time)
|
|
||||||
{
|
|
||||||
_CursorFadingTimer.Stop();
|
|
||||||
_CursorFadingTimer.Reset();
|
|
||||||
|
|
||||||
if (targetAlpha >= 0f && targetAlpha <= 1f)
|
|
||||||
_CursorTargetAlpha = targetAlpha;
|
|
||||||
else
|
|
||||||
_CursorTargetAlpha = 1f;
|
|
||||||
|
|
||||||
if (time >= 0f)
|
|
||||||
_CursorFadingTime = time;
|
|
||||||
|
|
||||||
_CursorStartAlpha = _Cursor.Color.A;
|
|
||||||
_CursorFadingTimer.Start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static class CGraphics
|
static class CGraphics
|
||||||
{
|
{
|
||||||
private static bool _Fading;
|
private static bool _Fading;
|
||||||
private static Stopwatch _FadingTimer;
|
private static Stopwatch _FadingTimer;
|
||||||
private static CCursor _Cursor;
|
private static readonly CCursor _Cursor = new CCursor();
|
||||||
private static float _GlobalAlpha;
|
private static float _GlobalAlpha;
|
||||||
private static float _ZOffset;
|
private static float _ZOffset;
|
||||||
|
|
||||||
@@ -252,12 +111,7 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
public static void LoadTheme()
|
public static void LoadTheme()
|
||||||
{
|
{
|
||||||
_Cursor = new CCursor(
|
_Cursor.LoadTextures();
|
||||||
CTheme.Cursor.SkinName,
|
|
||||||
new SColorF(CTheme.Cursor.R, CTheme.Cursor.G, CTheme.Cursor.B, CTheme.Cursor.A),
|
|
||||||
CTheme.Cursor.W,
|
|
||||||
CTheme.Cursor.H,
|
|
||||||
CSettings.ZNear);
|
|
||||||
|
|
||||||
for (int i = 0; i < _Screens.Count; i++)
|
for (int i = 0; i < _Screens.Count; i++)
|
||||||
{
|
{
|
||||||
@@ -276,7 +130,7 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
public static void ReloadTheme()
|
public static void ReloadTheme()
|
||||||
{
|
{
|
||||||
_ReloadCursor();
|
_Cursor.ReloadTextures();
|
||||||
foreach (IMenu screen in _Screens)
|
foreach (IMenu screen in _Screens)
|
||||||
screen.ReloadTheme(CTheme.GetThemeScreensPath(-1));
|
screen.ReloadTheme(CTheme.GetThemeScreensPath(-1));
|
||||||
|
|
||||||
@@ -286,7 +140,7 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
public static void ReloadSkin()
|
public static void ReloadSkin()
|
||||||
{
|
{
|
||||||
_ReloadCursor();
|
_Cursor.ReloadTextures();
|
||||||
foreach (IMenu menu in _Screens)
|
foreach (IMenu menu in _Screens)
|
||||||
menu.ReloadTextures();
|
menu.ReloadTextures();
|
||||||
|
|
||||||
@@ -313,7 +167,7 @@ namespace Vocaluxe.Base
|
|||||||
public static bool UpdateGameLogic(CKeys keys, CMouse mouse)
|
public static bool UpdateGameLogic(CKeys keys, CMouse mouse)
|
||||||
{
|
{
|
||||||
bool run = true;
|
bool run = true;
|
||||||
_Cursor.CursorVisible = mouse.Visible;
|
_Cursor.Visible = mouse.Visible;
|
||||||
|
|
||||||
mouse.CopyEvents();
|
mouse.CopyEvents();
|
||||||
keys.CopyEvents();
|
keys.CopyEvents();
|
||||||
@@ -783,27 +637,6 @@ namespace Vocaluxe.Base
|
|||||||
y += rect.Height;
|
y += rect.Height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void _ReloadCursor()
|
|
||||||
{
|
|
||||||
_Cursor.UnloadTextures();
|
|
||||||
|
|
||||||
if (CTheme.Cursor.Color != "")
|
|
||||||
{
|
|
||||||
SColorF color = CTheme.GetColor(CTheme.Cursor.Color, -1);
|
|
||||||
CTheme.Cursor.R = color.R;
|
|
||||||
CTheme.Cursor.G = color.G;
|
|
||||||
CTheme.Cursor.B = color.B;
|
|
||||||
CTheme.Cursor.A = color.A;
|
|
||||||
}
|
|
||||||
|
|
||||||
_Cursor = new CCursor(
|
|
||||||
CTheme.Cursor.SkinName,
|
|
||||||
new SColorF(CTheme.Cursor.R, CTheme.Cursor.G, CTheme.Cursor.B, CTheme.Cursor.A),
|
|
||||||
CTheme.Cursor.W,
|
|
||||||
CTheme.Cursor.H,
|
|
||||||
CSettings.ZNear);
|
|
||||||
}
|
|
||||||
#endregion private stuff
|
#endregion private stuff
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+16
-15
@@ -24,6 +24,7 @@ using System.Drawing;
|
|||||||
using Vocaluxe.Base.Fonts;
|
using Vocaluxe.Base.Fonts;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Game;
|
using VocaluxeLib.Game;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
using VocaluxeLib.Menu.SongMenu;
|
using VocaluxeLib.Menu.SongMenu;
|
||||||
using VocaluxeLib.Songs;
|
using VocaluxeLib.Songs;
|
||||||
@@ -233,12 +234,12 @@ namespace Vocaluxe.Base
|
|||||||
return CTheme.GetSkinIndex(partyModeID);
|
return CTheme.GetSkinIndex(partyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture GetSkinTexture(string textureName, int partyModeID)
|
public CTexture GetSkinTexture(string textureName, int partyModeID)
|
||||||
{
|
{
|
||||||
return CTheme.GetSkinTexture(textureName, partyModeID);
|
return CTheme.GetSkinTexture(textureName, partyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture GetSkinVideoTexture(string videoName, int partyModeID)
|
public CTexture GetSkinVideoTexture(string videoName, int partyModeID)
|
||||||
{
|
{
|
||||||
return CTheme.GetSkinVideoTexture(videoName, partyModeID);
|
return CTheme.GetSkinVideoTexture(videoName, partyModeID);
|
||||||
}
|
}
|
||||||
@@ -341,7 +342,7 @@ namespace Vocaluxe.Base
|
|||||||
CBackgroundMusic.ApplyVolume();
|
CBackgroundMusic.ApplyVolume();
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture GetVideoTexture()
|
public CTexture GetVideoTexture()
|
||||||
{
|
{
|
||||||
return CBackgroundMusic.GetVideoTexture();
|
return CBackgroundMusic.GetVideoTexture();
|
||||||
}
|
}
|
||||||
@@ -349,22 +350,22 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
class CBdraw : IDrawing
|
class CBdraw : IDrawing
|
||||||
{
|
{
|
||||||
public void DrawTexture(STexture texture, SRectF rect)
|
public void DrawTexture(CTexture texture, SRectF rect)
|
||||||
{
|
{
|
||||||
CDraw.DrawTexture(texture, rect);
|
CDraw.DrawTexture(texture, rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawTexture(STexture texture, SRectF rect, SColorF color)
|
public void DrawTexture(CTexture texture, SRectF rect, SColorF color)
|
||||||
{
|
{
|
||||||
CDraw.DrawTexture(texture, rect, color);
|
CDraw.DrawTexture(texture, rect, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawTexture(STexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
|
public void DrawTexture(CTexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
|
||||||
{
|
{
|
||||||
CDraw.DrawTexture(texture, rect, color, bounds, mirrored);
|
CDraw.DrawTexture(texture, rect, color, bounds, mirrored);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawTextureReflection(STexture texture, SRectF rect, SColorF color, SRectF bounds, float reflectionSpace, float reflectionHeight)
|
public void DrawTextureReflection(CTexture texture, SRectF rect, SColorF color, SRectF bounds, float reflectionSpace, float reflectionHeight)
|
||||||
{
|
{
|
||||||
CDraw.DrawTextureReflection(texture, rect, color, bounds, reflectionSpace, reflectionHeight);
|
CDraw.DrawTextureReflection(texture, rect, color, bounds, reflectionSpace, reflectionHeight);
|
||||||
}
|
}
|
||||||
@@ -686,27 +687,27 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
public int Load(string videoFileName)
|
public int Load(string videoFileName)
|
||||||
{
|
{
|
||||||
return CVideo.VdLoad(videoFileName);
|
return CVideo.Load(videoFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Skip(int videoStream, float startPosition, float videoGap)
|
public bool Skip(int videoStream, float startPosition, float videoGap)
|
||||||
{
|
{
|
||||||
return CVideo.VdSkip(videoStream, startPosition, videoGap);
|
return CVideo.Skip(videoStream, startPosition, videoGap);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool GetFrame(int videoStream, ref STexture videoTexture, float time, out float videoTime)
|
public bool GetFrame(int videoStream, ref CTexture videoTexture, float time, out float videoTime)
|
||||||
{
|
{
|
||||||
return CVideo.VdGetFrame(videoStream, ref videoTexture, time, out videoTime);
|
return CVideo.GetFrame(videoStream, ref videoTexture, time, out videoTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsFinished(int videoStream)
|
public bool IsFinished(int videoStream)
|
||||||
{
|
{
|
||||||
return CVideo.VdFinished(videoStream);
|
return CVideo.Finished(videoStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Close(int videoStream)
|
public bool Close(int videoStream)
|
||||||
{
|
{
|
||||||
return CVideo.VdClose(videoStream);
|
return CVideo.Close(videoStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -765,7 +766,7 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
class CBcover : ICover
|
class CBcover : ICover
|
||||||
{
|
{
|
||||||
public STexture GetNoCover()
|
public CTexture GetNoCover()
|
||||||
{
|
{
|
||||||
return CCover.NoCover;
|
return CCover.NoCover;
|
||||||
}
|
}
|
||||||
@@ -773,7 +774,7 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
class CBdataBase : IDataBase
|
class CBdataBase : IDataBase
|
||||||
{
|
{
|
||||||
public bool GetCover(string fileName, ref STexture texture, int coverSize)
|
public bool GetCover(string fileName, ref CTexture texture, int coverSize)
|
||||||
{
|
{
|
||||||
return CDataBase.GetCover(fileName, ref texture, coverSize);
|
return CDataBase.GetCover(fileName, ref texture, coverSize);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ using System.Xml;
|
|||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Game;
|
using VocaluxeLib.Game;
|
||||||
using VocaluxeLib.Profile;
|
using VocaluxeLib.Profile;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
{
|
{
|
||||||
@@ -437,7 +439,7 @@ namespace Vocaluxe.Base
|
|||||||
return String.Empty;
|
return String.Empty;
|
||||||
|
|
||||||
CProfile profile = _Profiles[profileID];
|
CProfile profile = _Profiles[profileID];
|
||||||
if (profile.PlayerName != "")
|
if (!String.IsNullOrEmpty(profile.PlayerName))
|
||||||
profile.PlayerName = profile.PlayerName.Remove(profile.PlayerName.Length - 1);
|
profile.PlayerName = profile.PlayerName.Remove(profile.PlayerName.Length - 1);
|
||||||
|
|
||||||
return profile.PlayerName;
|
return profile.PlayerName;
|
||||||
|
|||||||
+25
-25
@@ -25,6 +25,7 @@ using System.Windows.Forms;
|
|||||||
using System.Xml;
|
using System.Xml;
|
||||||
using Vocaluxe.Base.Fonts;
|
using Vocaluxe.Base.Fonts;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
@@ -49,7 +50,7 @@ namespace Vocaluxe.Base
|
|||||||
public string Name;
|
public string Name;
|
||||||
public string Value;
|
public string Value;
|
||||||
|
|
||||||
public STexture Texture;
|
public CTexture Texture;
|
||||||
public int VideoIndex;
|
public int VideoIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,10 +201,10 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
xmlReader.GetValue("//root/Videos/" + _Skins[skinIndex].VideoList[i].Name, out value, String.Empty);
|
xmlReader.GetValue("//root/Videos/" + _Skins[skinIndex].VideoList[i].Name, out value, String.Empty);
|
||||||
SSkinElement sk = new SSkinElement {Name = _Skins[skinIndex].VideoList[i].Name, Value = value};
|
SSkinElement sk = new SSkinElement {Name = _Skins[skinIndex].VideoList[i].Name, Value = value};
|
||||||
sk.VideoIndex = CVideo.VdLoad(Path.Combine(_Skins[skinIndex].Path, sk.Value));
|
sk.VideoIndex = CVideo.Load(Path.Combine(_Skins[skinIndex].Path, sk.Value));
|
||||||
CVideo.VdSetLoop(sk.VideoIndex, true);
|
CVideo.SetLoop(sk.VideoIndex, true);
|
||||||
CVideo.VdPause(sk.VideoIndex);
|
CVideo.Pause(sk.VideoIndex);
|
||||||
sk.Texture = new STexture(-1);
|
sk.Texture = null;
|
||||||
_Skins[skinIndex].VideoList[i] = sk;
|
_Skins[skinIndex].VideoList[i] = sk;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -225,14 +226,14 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
foreach (SSkinElement sk in _Skins[i].SkinList.Values)
|
foreach (SSkinElement sk in _Skins[i].SkinList.Values)
|
||||||
{
|
{
|
||||||
STexture texture = sk.Texture;
|
CTexture texture = sk.Texture;
|
||||||
CDraw.RemoveTexture(ref texture);
|
CDraw.RemoveTexture(ref texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < _Skins[i].VideoList.Count; j++)
|
for (int j = 0; j < _Skins[i].VideoList.Count; j++)
|
||||||
{
|
{
|
||||||
CVideo.VdClose(_Skins[i].VideoList[j].VideoIndex);
|
CVideo.Close(_Skins[i].VideoList[j].VideoIndex);
|
||||||
STexture videoTexture = _Skins[i].VideoList[j].Texture;
|
CTexture videoTexture = _Skins[i].VideoList[j].Texture;
|
||||||
CDraw.RemoveTexture(ref videoTexture);
|
CDraw.RemoveTexture(ref videoTexture);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -580,12 +581,12 @@ namespace Vocaluxe.Base
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture GetSkinTexture(string textureName, int partyModeID)
|
public static CTexture GetSkinTexture(string textureName, int partyModeID)
|
||||||
{
|
{
|
||||||
int skinIndex = GetSkinIndex(partyModeID);
|
int skinIndex = GetSkinIndex(partyModeID);
|
||||||
if (skinIndex != -1 && textureName != null && _Skins[skinIndex].SkinList.ContainsKey(textureName))
|
if (skinIndex != -1 && textureName != null && _Skins[skinIndex].SkinList.ContainsKey(textureName))
|
||||||
return _Skins[skinIndex].SkinList[textureName].Texture;
|
return _Skins[skinIndex].SkinList[textureName].Texture;
|
||||||
return new STexture(-1);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetSkinFilePath(string skinName, int partyModeID)
|
public static string GetSkinFilePath(string skinName, int partyModeID)
|
||||||
@@ -605,7 +606,7 @@ namespace Vocaluxe.Base
|
|||||||
return skinName;
|
return skinName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static STexture GetSkinVideoTexture(string videoName, int partyModeID)
|
public static CTexture GetSkinVideoTexture(string videoName, int partyModeID)
|
||||||
{
|
{
|
||||||
int skinIndex = GetSkinIndex(partyModeID);
|
int skinIndex = GetSkinIndex(partyModeID);
|
||||||
if (skinIndex != -1)
|
if (skinIndex != -1)
|
||||||
@@ -618,16 +619,16 @@ namespace Vocaluxe.Base
|
|||||||
float time = 0f;
|
float time = 0f;
|
||||||
if (sk.VideoIndex == -1)
|
if (sk.VideoIndex == -1)
|
||||||
{
|
{
|
||||||
sk.VideoIndex = CVideo.VdLoad(GetVideoFilePath(sk.Name, partyModeID));
|
sk.VideoIndex = CVideo.Load(GetVideoFilePath(sk.Name, partyModeID));
|
||||||
CVideo.VdSetLoop(sk.VideoIndex, true);
|
CVideo.SetLoop(sk.VideoIndex, true);
|
||||||
}
|
}
|
||||||
CVideo.VdGetFrame(sk.VideoIndex, ref sk.Texture, time, out time);
|
CVideo.GetFrame(sk.VideoIndex, ref sk.Texture, time, out time);
|
||||||
_Skins[skinIndex].VideoList[i] = sk;
|
_Skins[skinIndex].VideoList[i] = sk;
|
||||||
return sk.Texture;
|
return sk.Texture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new STexture(-1);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SkinVideoPause(string videoName, int partyModeID)
|
public static void SkinVideoPause(string videoName, int partyModeID)
|
||||||
@@ -642,10 +643,10 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
if (sk.VideoIndex == -1)
|
if (sk.VideoIndex == -1)
|
||||||
{
|
{
|
||||||
sk.VideoIndex = CVideo.VdLoad(GetVideoFilePath(sk.Name, partyModeID));
|
sk.VideoIndex = CVideo.Load(GetVideoFilePath(sk.Name, partyModeID));
|
||||||
CVideo.VdSetLoop(sk.VideoIndex, true);
|
CVideo.SetLoop(sk.VideoIndex, true);
|
||||||
}
|
}
|
||||||
CVideo.VdPause(sk.VideoIndex);
|
CVideo.Pause(sk.VideoIndex);
|
||||||
_Skins[skinIndex].VideoList[i] = sk;
|
_Skins[skinIndex].VideoList[i] = sk;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -665,10 +666,10 @@ namespace Vocaluxe.Base
|
|||||||
{
|
{
|
||||||
if (sk.VideoIndex == -1)
|
if (sk.VideoIndex == -1)
|
||||||
{
|
{
|
||||||
sk.VideoIndex = CVideo.VdLoad(GetVideoFilePath(sk.Name, partyModeID));
|
sk.VideoIndex = CVideo.Load(GetVideoFilePath(sk.Name, partyModeID));
|
||||||
CVideo.VdSetLoop(sk.VideoIndex, true);
|
CVideo.SetLoop(sk.VideoIndex, true);
|
||||||
}
|
}
|
||||||
CVideo.VdResume(sk.VideoIndex);
|
CVideo.Resume(sk.VideoIndex);
|
||||||
_Skins[skinIndex].VideoList[i] = sk;
|
_Skins[skinIndex].VideoList[i] = sk;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -809,7 +810,7 @@ namespace Vocaluxe.Base
|
|||||||
writer.WriteElementString("W", Cursor.W.ToString("#0.000"));
|
writer.WriteElementString("W", Cursor.W.ToString("#0.000"));
|
||||||
writer.WriteElementString("H", Cursor.H.ToString("#0.000"));
|
writer.WriteElementString("H", Cursor.H.ToString("#0.000"));
|
||||||
|
|
||||||
if (Cursor.Color != "")
|
if (!String.IsNullOrEmpty(Cursor.Color))
|
||||||
writer.WriteElementString("Color", Cursor.Color);
|
writer.WriteElementString("Color", Cursor.Color);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -871,7 +872,7 @@ namespace Vocaluxe.Base
|
|||||||
public static SColorF GetPlayerColor(string playerNrString, int skinIndex, out bool success)
|
public static SColorF GetPlayerColor(string playerNrString, int skinIndex, out bool success)
|
||||||
{
|
{
|
||||||
int selection = 0;
|
int selection = 0;
|
||||||
if (playerNrString.StartsWith("Player"))
|
if (playerNrString != null && playerNrString.StartsWith("Player"))
|
||||||
int.TryParse(playerNrString.Substring(6), out selection);
|
int.TryParse(playerNrString.Substring(6), out selection);
|
||||||
|
|
||||||
return GetPlayerColor(selection, skinIndex, out success);
|
return GetPlayerColor(selection, skinIndex, out success);
|
||||||
@@ -885,13 +886,12 @@ namespace Vocaluxe.Base
|
|||||||
public static SColorF GetPlayerColor(int playerNr, int skinIndex, out bool success)
|
public static SColorF GetPlayerColor(int playerNr, int skinIndex, out bool success)
|
||||||
{
|
{
|
||||||
success = false;
|
success = false;
|
||||||
SColorF color = new SColorF(1f, 1f, 1f, 1f);
|
|
||||||
|
|
||||||
if (_Skins[skinIndex].PartyModeID != -1)
|
if (_Skins[skinIndex].PartyModeID != -1)
|
||||||
skinIndex = GetSkinIndex(-1);
|
skinIndex = GetSkinIndex(-1);
|
||||||
|
|
||||||
if (_Skins[skinIndex].ThemeColors.Player.Length < playerNr || playerNr < 1)
|
if (_Skins[skinIndex].ThemeColors.Player.Length < playerNr || playerNr < 1)
|
||||||
return color;
|
return new SColorF(1f, 1f, 1f, 1f);
|
||||||
|
|
||||||
success = true;
|
success = true;
|
||||||
return _Skins[skinIndex].ThemeColors.Player[playerNr - 1];
|
return _Skins[skinIndex].ThemeColors.Player[playerNr - 1];
|
||||||
|
|||||||
+25
-41
@@ -21,6 +21,8 @@ using System.Diagnostics;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using Vocaluxe.Lib.Video;
|
using Vocaluxe.Lib.Video;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
{
|
{
|
||||||
@@ -50,12 +52,7 @@ namespace Vocaluxe.Base
|
|||||||
#endregion Init
|
#endregion Init
|
||||||
|
|
||||||
#region Interface
|
#region Interface
|
||||||
public static bool VdInit()
|
public static void CloseAll()
|
||||||
{
|
|
||||||
return _VideoDecoder.Init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void VdCloseAll()
|
|
||||||
{
|
{
|
||||||
_VideoDecoder.CloseAll();
|
_VideoDecoder.CloseAll();
|
||||||
}
|
}
|
||||||
@@ -65,47 +62,47 @@ namespace Vocaluxe.Base
|
|||||||
return _VideoDecoder.GetNumStreams();
|
return _VideoDecoder.GetNumStreams();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int VdLoad(string videoFileName)
|
public static int Load(string videoFileName)
|
||||||
{
|
{
|
||||||
return _VideoDecoder.Load(videoFileName);
|
return _VideoDecoder.Load(videoFileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool VdClose(int streamID)
|
public static bool Close(int streamID)
|
||||||
{
|
{
|
||||||
return _VideoDecoder.Close(streamID);
|
return _VideoDecoder.Close(streamID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float VdGetLength(int streamID)
|
public static float GetLength(int streamID)
|
||||||
{
|
{
|
||||||
return _VideoDecoder.GetLength(streamID);
|
return _VideoDecoder.GetLength(streamID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool VdGetFrame(int streamID, ref STexture frame, float time, out float videoTime)
|
public static bool GetFrame(int streamID, ref CTexture frame, float time, out float videoTime)
|
||||||
{
|
{
|
||||||
return _VideoDecoder.GetFrame(streamID, ref frame, time, out videoTime);
|
return _VideoDecoder.GetFrame(streamID, ref frame, time, out videoTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool VdSkip(int streamID, float start, float gap)
|
public static bool Skip(int streamID, float start, float gap)
|
||||||
{
|
{
|
||||||
return _VideoDecoder.Skip(streamID, start, gap);
|
return _VideoDecoder.Skip(streamID, start, gap);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void VdSetLoop(int streamID, bool loop)
|
public static void SetLoop(int streamID, bool loop)
|
||||||
{
|
{
|
||||||
_VideoDecoder.SetLoop(streamID, loop);
|
_VideoDecoder.SetLoop(streamID, loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void VdPause(int streamID)
|
public static void Pause(int streamID)
|
||||||
{
|
{
|
||||||
_VideoDecoder.Pause(streamID);
|
_VideoDecoder.Pause(streamID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void VdResume(int streamID)
|
public static void Resume(int streamID)
|
||||||
{
|
{
|
||||||
_VideoDecoder.Resume(streamID);
|
_VideoDecoder.Resume(streamID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool VdFinished(int streamID)
|
public static bool Finished(int streamID)
|
||||||
{
|
{
|
||||||
return _VideoDecoder.Finished(streamID);
|
return _VideoDecoder.Finished(streamID);
|
||||||
}
|
}
|
||||||
@@ -121,9 +118,9 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
class CVideoPlayer
|
class CVideoPlayer
|
||||||
{
|
{
|
||||||
private STexture _VideoTexture;
|
private CTexture _VideoTexture;
|
||||||
private int _VideoStream;
|
private int _VideoStream;
|
||||||
private readonly Stopwatch _VideoTimer;
|
private readonly Stopwatch _VideoTimer = new Stopwatch();
|
||||||
private bool _Finished;
|
private bool _Finished;
|
||||||
private bool _Loaded;
|
private bool _Loaded;
|
||||||
|
|
||||||
@@ -134,20 +131,12 @@ namespace Vocaluxe.Base
|
|||||||
|
|
||||||
public bool Loop
|
public bool Loop
|
||||||
{
|
{
|
||||||
set { CVideo.VdSetLoop(_VideoStream, value); }
|
set { CVideo.SetLoop(_VideoStream, value); }
|
||||||
}
|
|
||||||
|
|
||||||
public CVideoPlayer()
|
|
||||||
{
|
|
||||||
_VideoTimer = new Stopwatch();
|
|
||||||
_VideoTexture = new STexture(-1);
|
|
||||||
_Finished = false;
|
|
||||||
_Loaded = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Load(string videoName)
|
public void Load(string videoName)
|
||||||
{
|
{
|
||||||
_VideoStream = CVideo.VdLoad(CTheme.GetVideoFilePath(videoName, -1));
|
_VideoStream = CVideo.Load(CTheme.GetVideoFilePath(videoName, -1));
|
||||||
_Loaded = true;
|
_Loaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,20 +163,15 @@ namespace Vocaluxe.Base
|
|||||||
if (!_Finished)
|
if (!_Finished)
|
||||||
{
|
{
|
||||||
float videoTime = _VideoTimer.ElapsedMilliseconds / 1000f;
|
float videoTime = _VideoTimer.ElapsedMilliseconds / 1000f;
|
||||||
_Finished = CVideo.VdFinished(_VideoStream);
|
_Finished = CVideo.Finished(_VideoStream);
|
||||||
|
|
||||||
STexture tex = new STexture(-1) {Height = 0f};
|
CVideo.GetFrame(_VideoStream, ref _VideoTexture, videoTime, out videoTime);
|
||||||
CVideo.VdGetFrame(_VideoStream, ref tex, videoTime, out videoTime);
|
|
||||||
|
|
||||||
if (tex.Height > 0)
|
|
||||||
{
|
|
||||||
CDraw.RemoveTexture(ref _VideoTexture);
|
|
||||||
_VideoTexture = tex;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (_VideoTexture == null)
|
||||||
|
return;
|
||||||
RectangleF bounds = new RectangleF(0f, 0f, CSettings.RenderW, CSettings.RenderH);
|
RectangleF bounds = new RectangleF(0f, 0f, CSettings.RenderW, CSettings.RenderH);
|
||||||
RectangleF rect = new RectangleF(0f, 0f, _VideoTexture.Width, _VideoTexture.Height);
|
RectangleF rect;
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, EAspect.Crop);
|
CHelper.SetRect(bounds, out rect, _VideoTexture.OrigAspect, EAspect.Crop);
|
||||||
|
|
||||||
CDraw.DrawTexture(_VideoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CSettings.ZFar / 4));
|
CDraw.DrawTexture(_VideoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CSettings.ZFar / 4));
|
||||||
}
|
}
|
||||||
@@ -195,17 +179,17 @@ namespace Vocaluxe.Base
|
|||||||
public void PreLoad()
|
public void PreLoad()
|
||||||
{
|
{
|
||||||
float videoTime = 0f;
|
float videoTime = 0f;
|
||||||
while (_VideoTexture.Index == -1 && videoTime < 1f)
|
while (_VideoTexture == null && videoTime < 1f)
|
||||||
{
|
{
|
||||||
float dummy;
|
float dummy;
|
||||||
CVideo.VdGetFrame(_VideoStream, ref _VideoTexture, 0, out dummy);
|
CVideo.GetFrame(_VideoStream, ref _VideoTexture, 0, out dummy);
|
||||||
videoTime += 0.05f;
|
videoTime += 0.05f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
CVideo.VdClose(_VideoStream);
|
CVideo.Close(_VideoStream);
|
||||||
CDraw.RemoveTexture(ref _VideoTexture);
|
CDraw.RemoveTexture(ref _VideoTexture);
|
||||||
_Loaded = false;
|
_Loaded = false;
|
||||||
_Finished = false;
|
_Finished = false;
|
||||||
|
|||||||
@@ -20,6 +20,8 @@
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using Vocaluxe.Lib.Webcam;
|
using Vocaluxe.Lib.Webcam;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base
|
namespace Vocaluxe.Base
|
||||||
{
|
{
|
||||||
@@ -46,10 +48,9 @@ namespace Vocaluxe.Base
|
|||||||
CConfig.SaveConfig();
|
CConfig.SaveConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool GetFrame(ref STexture tex)
|
public static bool GetFrame(ref CTexture tex)
|
||||||
{
|
{
|
||||||
_Webcam.GetFrame(ref tex);
|
return _Webcam.GetFrame(ref tex);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Bitmap GetBitmap()
|
public static Bitmap GetBitmap()
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ using System.Collections.Generic;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Text;
|
using System.Drawing.Text;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base.Fonts
|
namespace Vocaluxe.Base.Fonts
|
||||||
@@ -87,7 +88,7 @@ namespace Vocaluxe.Base.Fonts
|
|||||||
|
|
||||||
public void DrawGlyph(char chr, float x, float y, float z, SColorF color)
|
public void DrawGlyph(char chr, float x, float y, float z, SColorF color)
|
||||||
{
|
{
|
||||||
STexture texture;
|
CTexture texture;
|
||||||
SRectF rect;
|
SRectF rect;
|
||||||
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
||||||
CDraw.DrawTexture(texture, rect, color);
|
CDraw.DrawTexture(texture, rect, color);
|
||||||
@@ -95,7 +96,7 @@ namespace Vocaluxe.Base.Fonts
|
|||||||
|
|
||||||
public void DrawGlyph(char chr, float x, float y, float z, SColorF color, float begin, float end)
|
public void DrawGlyph(char chr, float x, float y, float z, SColorF color, float begin, float end)
|
||||||
{
|
{
|
||||||
STexture texture;
|
CTexture texture;
|
||||||
SRectF rect;
|
SRectF rect;
|
||||||
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
||||||
CDraw.DrawTexture(texture, rect, color, begin, end);
|
CDraw.DrawTexture(texture, rect, color, begin, end);
|
||||||
@@ -103,7 +104,7 @@ namespace Vocaluxe.Base.Fonts
|
|||||||
|
|
||||||
public void DrawGlyphReflection(char chr, float x, float y, float z, SColorF color, float rspace, float rheight)
|
public void DrawGlyphReflection(char chr, float x, float y, float z, SColorF color, float rspace, float rheight)
|
||||||
{
|
{
|
||||||
STexture texture;
|
CTexture texture;
|
||||||
SRectF rect;
|
SRectF rect;
|
||||||
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
GetOrAddGlyph(chr).GetTextureAndRect(x, y, z, out texture, out rect);
|
||||||
CDraw.DrawTextureReflection(texture, rect, color, rect, rspace, rheight);
|
CDraw.DrawTextureReflection(texture, rect, color, rect, rspace, rheight);
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ namespace Vocaluxe.Base.Fonts
|
|||||||
|
|
||||||
private static void _BuildFonts()
|
private static void _BuildFonts()
|
||||||
{
|
{
|
||||||
foreach (var font in _Fonts)
|
foreach (SFont font in _Fonts)
|
||||||
{
|
{
|
||||||
font.Normal.Dispose();
|
font.Normal.Dispose();
|
||||||
font.Bold.Dispose();
|
font.Bold.Dispose();
|
||||||
@@ -258,8 +258,8 @@ namespace Vocaluxe.Base.Fonts
|
|||||||
Height = height;
|
Height = height;
|
||||||
SetFont(text.Font);
|
SetFont(text.Font);
|
||||||
Style = text.Style;
|
Style = text.Style;
|
||||||
var result = new RectangleF(text.X, text.Y, GetTextWidth(CLanguage.Translate(text.Text, text.TranslationID)),
|
RectangleF result = new RectangleF(text.X, text.Y, GetTextWidth(CLanguage.Translate(text.Text, text.TranslationID)),
|
||||||
GetTextHeight(CLanguage.Translate(text.Text, text.TranslationID)));
|
GetTextHeight(CLanguage.Translate(text.Text, text.TranslationID)));
|
||||||
//restore old values
|
//restore old values
|
||||||
Height = oldHeight;
|
Height = oldHeight;
|
||||||
_CurrentFont = oldFont;
|
_CurrentFont = oldFont;
|
||||||
|
|||||||
@@ -24,12 +24,14 @@ using System.Drawing.Imaging;
|
|||||||
using System.Drawing.Text;
|
using System.Drawing.Text;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Base.Fonts
|
namespace Vocaluxe.Base.Fonts
|
||||||
{
|
{
|
||||||
class CGlyph
|
class CGlyph
|
||||||
{
|
{
|
||||||
private STexture _Texture;
|
private CTexture _Texture;
|
||||||
private readonly SizeF _BoundingBox;
|
private readonly SizeF _BoundingBox;
|
||||||
private readonly RectangleF _DrawBounding;
|
private readonly RectangleF _DrawBounding;
|
||||||
public readonly float MaxHeight;
|
public readonly float MaxHeight;
|
||||||
@@ -121,6 +123,7 @@ namespace Vocaluxe.Base.Fonts
|
|||||||
_DrawBounding.Width = _Texture.Width;
|
_DrawBounding.Width = _Texture.Width;
|
||||||
_DrawBounding.Height = _Texture.Height;*/
|
_DrawBounding.Height = _Texture.Height;*/
|
||||||
#pragma warning disable 162
|
#pragma warning disable 162
|
||||||
|
// ReSharper disable HeuristicUnreachableCode
|
||||||
if (false && Char.IsLetterOrDigit(chr))
|
if (false && Char.IsLetterOrDigit(chr))
|
||||||
{
|
{
|
||||||
if (outline > 0)
|
if (outline > 0)
|
||||||
@@ -128,6 +131,7 @@ namespace Vocaluxe.Base.Fonts
|
|||||||
else
|
else
|
||||||
bmpCropped.Save("font_" + chr + CFonts.Style + "2.png", ImageFormat.Png);
|
bmpCropped.Save("font_" + chr + CFonts.Style + "2.png", ImageFormat.Png);
|
||||||
}
|
}
|
||||||
|
// ReSharper restore HeuristicUnreachableCode
|
||||||
#pragma warning restore 162
|
#pragma warning restore 162
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,7 +149,7 @@ namespace Vocaluxe.Base.Fonts
|
|||||||
return CFonts.Height / _BoundingBox.Height;
|
return CFonts.Height / _BoundingBox.Height;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GetTextureAndRect(float x, float y, float z, out STexture texture, out SRectF rect)
|
public void GetTextureAndRect(float x, float y, float z, out CTexture texture, out SRectF rect)
|
||||||
{
|
{
|
||||||
texture = _Texture;
|
texture = _Texture;
|
||||||
float factor = _GetFactor();
|
float factor = _GetFactor();
|
||||||
|
|||||||
+306
-384
@@ -32,6 +32,7 @@ using System.Windows.Forms;
|
|||||||
using SlimDX.Windows;
|
using SlimDX.Windows;
|
||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Draw
|
namespace Vocaluxe.Lib.Draw
|
||||||
@@ -39,6 +40,8 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
class CDirect3D : RenderForm, IDraw
|
class CDirect3D : RenderForm, IDraw
|
||||||
{
|
{
|
||||||
#region private vars
|
#region private vars
|
||||||
|
private const int _MaxID = 100000;
|
||||||
|
|
||||||
private readonly CKeys _Keys;
|
private readonly CKeys _Keys;
|
||||||
private readonly CMouse _Mouse;
|
private readonly CMouse _Mouse;
|
||||||
private bool _Run;
|
private bool _Run;
|
||||||
@@ -51,10 +54,9 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
private Size _OldSize;
|
private Size _OldSize;
|
||||||
private Size _SizeBeforeMinimize;
|
private Size _SizeBeforeMinimize;
|
||||||
|
|
||||||
private readonly Dictionary<int, STexture> _Textures;
|
private readonly Dictionary<int, Texture> _D3DTextures = new Dictionary<int, Texture>();
|
||||||
private readonly Dictionary<int, Texture> _D3DTextures;
|
private readonly Queue<STextureQueue> _TexturesToLoad = new Queue<STextureQueue>();
|
||||||
private readonly List<STextureQueue> _Queue;
|
private readonly Queue<int> _IDs = new Queue<int>(_MaxID);
|
||||||
private readonly Queue<int> _IDs;
|
|
||||||
|
|
||||||
private readonly Object _MutexTexture = new Object();
|
private readonly Object _MutexTexture = new Object();
|
||||||
|
|
||||||
@@ -66,11 +68,11 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
private int _Y;
|
private int _Y;
|
||||||
private int _X;
|
private int _X;
|
||||||
|
|
||||||
private STexture _BlankTexture;
|
private CTexture _BlankTexture;
|
||||||
|
|
||||||
private readonly Queue<STexturedColoredVertex> _Vertices;
|
private readonly Queue<STexturedColoredVertex> _Vertices = new Queue<STexturedColoredVertex>();
|
||||||
private readonly Queue<Texture> _VerticesTextures;
|
private readonly Queue<Texture> _VerticesTextures = new Queue<Texture>();
|
||||||
private readonly Queue<SlimDX.Matrix> _VerticesRotationMatrices;
|
private readonly Queue<SlimDX.Matrix> _VerticesRotationMatrices = new Queue<SlimDX.Matrix>();
|
||||||
|
|
||||||
private readonly bool _NonPowerOf2TextureSupported;
|
private readonly bool _NonPowerOf2TextureSupported;
|
||||||
#endregion private vars
|
#endregion private vars
|
||||||
@@ -81,19 +83,11 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
public CDirect3D()
|
public CDirect3D()
|
||||||
{
|
{
|
||||||
Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon));
|
Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon));
|
||||||
_Textures = new Dictionary<int, STexture>();
|
|
||||||
_D3DTextures = new Dictionary<int, Texture>();
|
|
||||||
_Queue = new List<STextureQueue>();
|
|
||||||
_IDs = new Queue<int>();
|
|
||||||
|
|
||||||
//Fill Queue with 100000 IDs
|
//Fill Queue with 100000 IDs
|
||||||
for (int i = 0; i < 100000; i++)
|
for (int i = 0; i < _MaxID; i++)
|
||||||
_IDs.Enqueue(i);
|
_IDs.Enqueue(i);
|
||||||
|
|
||||||
_Vertices = new Queue<STexturedColoredVertex>();
|
|
||||||
_VerticesTextures = new Queue<Texture>();
|
|
||||||
_VerticesRotationMatrices = new Queue<SlimDX.Matrix>();
|
|
||||||
|
|
||||||
_Keys = new CKeys();
|
_Keys = new CKeys();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -255,40 +249,39 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
// The window was minimized, so restore it to the last known size
|
// The window was minimized, so restore it to the last known size
|
||||||
if (ClientSize.Width == 0 || ClientSize.Height == 0)
|
if (ClientSize.Width == 0 || ClientSize.Height == 0)
|
||||||
ClientSize = _SizeBeforeMinimize;
|
ClientSize = _SizeBeforeMinimize;
|
||||||
if (_Run)
|
if (!_Run)
|
||||||
|
return;
|
||||||
|
_H = ClientSize.Height;
|
||||||
|
_W = ClientSize.Width;
|
||||||
|
_Y = 0;
|
||||||
|
_X = 0;
|
||||||
|
|
||||||
|
if (_W / (float)_H > CSettings.GetRenderAspect())
|
||||||
{
|
{
|
||||||
_H = ClientSize.Height;
|
//The windows's width is too big
|
||||||
_W = ClientSize.Width;
|
_W = (int)Math.Round(_H * CSettings.GetRenderAspect());
|
||||||
_Y = 0;
|
_X = (ClientSize.Width - _W) / 2;
|
||||||
_X = 0;
|
|
||||||
|
|
||||||
if (_W / (float)_H > CSettings.GetRenderAspect())
|
|
||||||
{
|
|
||||||
//The windows's width is too big
|
|
||||||
_W = (int)Math.Round(_H * CSettings.GetRenderAspect());
|
|
||||||
_X = (ClientSize.Width - _W) / 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//The windows's height is too big
|
|
||||||
_H = (int)Math.Round(_W / CSettings.GetRenderAspect());
|
|
||||||
_Y = (ClientSize.Height - _H) / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Apply the new sizes to the PresentParameters
|
|
||||||
_PresentParameters.BackBufferWidth = ClientSize.Width;
|
|
||||||
_PresentParameters.BackBufferHeight = ClientSize.Height;
|
|
||||||
ClearScreen();
|
|
||||||
//To set new PresentParameters the device has to be resetted
|
|
||||||
_Reset();
|
|
||||||
//All configurations got flushed due to Reset(), so apply them again
|
|
||||||
Init();
|
|
||||||
|
|
||||||
//Set the new Viewport
|
|
||||||
_Device.Viewport = new Viewport(_X, _Y, _W, _H);
|
|
||||||
//Store size so it can get restored after the window gets minimized
|
|
||||||
_SizeBeforeMinimize = ClientSize;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//The windows's height is too big
|
||||||
|
_H = (int)Math.Round(_W / CSettings.GetRenderAspect());
|
||||||
|
_Y = (ClientSize.Height - _H) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Apply the new sizes to the PresentParameters
|
||||||
|
_PresentParameters.BackBufferWidth = ClientSize.Width;
|
||||||
|
_PresentParameters.BackBufferHeight = ClientSize.Height;
|
||||||
|
ClearScreen();
|
||||||
|
//To set new PresentParameters the device has to be resetted
|
||||||
|
_Reset();
|
||||||
|
//All configurations got flushed due to Reset(), so apply them again
|
||||||
|
Init();
|
||||||
|
|
||||||
|
//Set the new Viewport
|
||||||
|
_Device.Viewport = new Viewport(_X, _Y, _W, _H);
|
||||||
|
//Store size so it can get restored after the window gets minimized
|
||||||
|
_SizeBeforeMinimize = ClientSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -677,39 +670,32 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// Copies the current frame into a texture
|
/// Copies the current frame into a texture
|
||||||
/// <returns>A texture holding the current frame</returns>
|
/// <returns>A texture holding the current frame</returns>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public STexture CopyScreen()
|
public CTexture CopyScreen()
|
||||||
{
|
{
|
||||||
STexture texture = new STexture(-1);
|
CTexture texture = _GetNewTexture(_W, _H);
|
||||||
|
|
||||||
Surface backbufferSurface = _Device.GetBackBuffer(0, 0);
|
Surface backbufferSurface = _Device.GetBackBuffer(0, 0);
|
||||||
Texture tex = new Texture(_Device, _PresentParameters.BackBufferWidth, _PresentParameters.BackBufferHeight, 0, Usage.AutoGenerateMipMap, Format.A8R8G8B8, Pool.Managed);
|
Texture tex = new Texture(_Device, texture.W2, texture.H2, 0, Usage.AutoGenerateMipMap, Format.A8R8G8B8, Pool.Managed);
|
||||||
Surface textureSurface = tex.GetSurfaceLevel(0);
|
Surface textureSurface = tex.GetSurfaceLevel(0);
|
||||||
Surface.FromSurface(textureSurface, backbufferSurface, Filter.Default, 0);
|
Surface.FromSurface(textureSurface, backbufferSurface, Filter.Default, 0, new Rectangle(0, 0, _W, _H), new Rectangle(0, 0, _W, _H));
|
||||||
backbufferSurface.Dispose();
|
backbufferSurface.Dispose();
|
||||||
lock (_MutexTexture)
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
_D3DTextures.Add(_IDs.Peek(), tex);
|
texture.ID = _IDs.Dequeue();
|
||||||
|
_D3DTextures.Add(texture.ID, tex);
|
||||||
|
|
||||||
texture.Color = new SColorF(1f, 1f, 1f, 1f);
|
return texture;
|
||||||
texture.Rect = new SRectF(0f, 0f, texture.Width, texture.Height, 0f);
|
|
||||||
texture.Width = _W;
|
|
||||||
texture.Height = _H;
|
|
||||||
texture.W2 = _CheckForNextPowerOf2(texture.Width);
|
|
||||||
texture.H2 = _CheckForNextPowerOf2(texture.Height);
|
|
||||||
texture.Index = _IDs.Dequeue();
|
|
||||||
|
|
||||||
_Textures[texture.Index] = texture;
|
|
||||||
}
|
}
|
||||||
return texture;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Copies the current frame into a texture
|
/// Copies the current frame into a texture
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="texture">The texture in which the frame is copied to</param>
|
/// <param name="texture">The texture in which the frame is copied to</param>
|
||||||
public void CopyScreen(ref STexture texture)
|
public void CopyScreen(ref CTexture texture)
|
||||||
{
|
{
|
||||||
if (!_TextureExists(ref texture) || (int)texture.Width != GetScreenWidth() || (int)texture.Height != GetScreenHeight())
|
//Check for actual texture sizes! (W2/H2) as it may be up/downsized compared to OrigSize
|
||||||
|
if (!_TextureExists(texture) || texture.W2 != GetScreenWidth() || texture.H2 != GetScreenHeight())
|
||||||
{
|
{
|
||||||
RemoveTexture(ref texture);
|
RemoveTexture(ref texture);
|
||||||
texture = CopyScreen();
|
texture = CopyScreen();
|
||||||
@@ -717,7 +703,7 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Surface backbufferSurface = _Device.GetBackBuffer(0, 0);
|
Surface backbufferSurface = _Device.GetBackBuffer(0, 0);
|
||||||
Surface textureSurface = _D3DTextures[texture.Index].GetSurfaceLevel(0);
|
Surface textureSurface = _D3DTextures[texture.ID].GetSurfaceLevel(0);
|
||||||
Surface.FromSurface(textureSurface, backbufferSurface, Filter.Default, 0);
|
Surface.FromSurface(textureSurface, backbufferSurface, Filter.Default, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -741,8 +727,6 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
screen.Save(Path.Combine(path, file + i.ToString("00000") + ".bmp"), ImageFormat.Bmp);
|
screen.Save(Path.Combine(path, file + i.ToString("00000") + ".bmp"), ImageFormat.Bmp);
|
||||||
screen.Dispose();
|
screen.Dispose();
|
||||||
}
|
}
|
||||||
Cursor.Hide();
|
|
||||||
_Mouse.Visible = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -759,8 +743,8 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// <param name="y2">The end y-value</param>
|
/// <param name="y2">The end y-value</param>
|
||||||
public void DrawLine(int a, int r, int g, int b, int w, int x1, int y1, int x2, int y2)
|
public void DrawLine(int a, int r, int g, int b, int w, int x1, int y1, int x2, int y2)
|
||||||
{
|
{
|
||||||
var lineVector = new Vector2[] {new Vector2(x1, y1), new Vector2(x2, y2)};
|
Vector2[] lineVector = new Vector2[] {new Vector2(x1, y1), new Vector2(x2, y2)};
|
||||||
using (var line = new Line(_Device))
|
using (Line line = new Line(_Device))
|
||||||
{
|
{
|
||||||
line.Antialias = true;
|
line.Antialias = true;
|
||||||
line.Begin();
|
line.Begin();
|
||||||
@@ -800,33 +784,33 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="texturePath">The texture's filepath</param>
|
/// <param name="texturePath">The texture's filepath</param>
|
||||||
/// <returns>A STexture object containing the added texture</returns>
|
/// <returns>A STexture object containing the added texture</returns>
|
||||||
public STexture AddTexture(string texturePath)
|
public CTexture AddTexture(string texturePath)
|
||||||
{
|
{
|
||||||
if (File.Exists(texturePath))
|
if (!File.Exists(texturePath))
|
||||||
{
|
{
|
||||||
Bitmap bmp;
|
CLog.LogError("Can't find File: " + texturePath);
|
||||||
try
|
return null;
|
||||||
{
|
|
||||||
bmp = new Bitmap(texturePath);
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
CLog.LogError("Error loading Texture: " + texturePath);
|
|
||||||
return new STexture(-1);
|
|
||||||
}
|
|
||||||
STexture s;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
s = AddTexture(bmp);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
bmp.Dispose();
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
CLog.LogError("Can't find File: " + texturePath);
|
Bitmap bmp;
|
||||||
return new STexture(-1);
|
try
|
||||||
|
{
|
||||||
|
bmp = new Bitmap(texturePath);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
CLog.LogError("Error loading Texture: " + texturePath);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
CTexture s;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
s = AddTexture(bmp);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
bmp.Dispose();
|
||||||
|
}
|
||||||
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -834,10 +818,10 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bmp">The Bitmap of which the texure will be created from</param>
|
/// <param name="bmp">The Bitmap of which the texure will be created from</param>
|
||||||
/// <returns>A STexture object containing the added texture</returns>
|
/// <returns>A STexture object containing the added texture</returns>
|
||||||
public STexture AddTexture(Bitmap bmp)
|
public CTexture AddTexture(Bitmap bmp)
|
||||||
{
|
{
|
||||||
if (bmp.Height == 0 || bmp.Width == 0)
|
if (bmp.Height == 0 || bmp.Width == 0)
|
||||||
return new STexture(-1);
|
return null;
|
||||||
int maxSize;
|
int maxSize;
|
||||||
//Apply the right max size
|
//Apply the right max size
|
||||||
switch (CConfig.TextureQuality)
|
switch (CConfig.TextureQuality)
|
||||||
@@ -862,49 +846,26 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int w = bmp.Width;
|
int w = Math.Min(bmp.Width, maxSize);
|
||||||
int h = bmp.Height;
|
int h = Math.Min(bmp.Height, maxSize);
|
||||||
float ratio = (float)w / h;
|
w = _CheckForNextPowerOf2(w);
|
||||||
int newW = w;
|
h = _CheckForNextPowerOf2(h);
|
||||||
int newH = h;
|
|
||||||
|
|
||||||
if (w > maxSize && w > h)
|
|
||||||
newW = maxSize;
|
|
||||||
else if (h > maxSize)
|
|
||||||
newH = maxSize;
|
|
||||||
else if (w > h)
|
|
||||||
newW = (int)_CheckForNextPowerOf2(w);
|
|
||||||
else
|
|
||||||
newH = (int)_CheckForNextPowerOf2(h);
|
|
||||||
|
|
||||||
Bitmap bmp2 = null;
|
Bitmap bmp2 = null;
|
||||||
byte[] data;
|
byte[] data;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (w != newW || h != newH)
|
if (bmp.Width != w || bmp.Height != h)
|
||||||
{
|
{
|
||||||
if (w != newW)
|
|
||||||
{
|
|
||||||
w = newW;
|
|
||||||
h = (int)Math.Round(w / ratio);
|
|
||||||
if (h == 0)
|
|
||||||
h = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
h = newH;
|
|
||||||
w = (int)Math.Round(h * ratio);
|
|
||||||
if (w == 0)
|
|
||||||
w = 1;
|
|
||||||
}
|
|
||||||
//Create a new Bitmap with the new sizes
|
//Create a new Bitmap with the new sizes
|
||||||
bmp2 = new Bitmap(w, h);
|
bmp2 = new Bitmap(w, h);
|
||||||
//Scale the texture
|
//Scale the texture
|
||||||
Graphics g = Graphics.FromImage(bmp2);
|
using (Graphics g = Graphics.FromImage(bmp2))
|
||||||
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
{
|
||||||
g.SmoothingMode = SmoothingMode.HighQuality;
|
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||||
g.DrawImage(bmp, new Rectangle(0, 0, bmp2.Width, bmp2.Height));
|
g.SmoothingMode = SmoothingMode.HighQuality;
|
||||||
g.Dispose();
|
g.DrawImage(bmp, new Rectangle(0, 0, bmp2.Width, bmp2.Height));
|
||||||
|
}
|
||||||
bmp = bmp2;
|
bmp = bmp2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -920,81 +881,75 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
bmp2.Dispose();
|
bmp2.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
return AddTexture(w, h, data);
|
CTexture texture = new CTexture(bmp.Width, bmp.Height, w, h, true);
|
||||||
|
return _AddTexture(texture, w, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture AddTexture(int w, int h, byte[] data)
|
public CTexture AddTexture(int w, int h, byte[] data)
|
||||||
{
|
{
|
||||||
STexture texture = new STexture(-1);
|
CTexture texture = _GetNewTexture(w, h);
|
||||||
|
return _AddTexture(texture, w, data);
|
||||||
|
}
|
||||||
|
|
||||||
Texture t = _CreateTexture(w, h, data, ref texture);
|
private CTexture _AddTexture(CTexture texture, int w, byte[] data)
|
||||||
|
{
|
||||||
|
Texture t = _CreateTexture(texture.W2, texture.H2, w, data);
|
||||||
|
|
||||||
lock (_MutexTexture)
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
_D3DTextures.Add(_IDs.Peek(), t);
|
texture.ID = _IDs.Dequeue();
|
||||||
texture.Index = _IDs.Dequeue();
|
_D3DTextures.Add(texture.ID, t);
|
||||||
_Textures[texture.Index] = texture;
|
|
||||||
}
|
}
|
||||||
return texture;
|
return texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Texture _CreateTexture(int w, int h, byte[] data, ref STexture texture)
|
private Texture _CreateTexture(int textureW, int textureH, int w, byte[] data)
|
||||||
{
|
{
|
||||||
texture.Width = w;
|
|
||||||
texture.Height = h;
|
|
||||||
texture.W2 = _CheckForNextPowerOf2(w);
|
|
||||||
texture.H2 = _CheckForNextPowerOf2(h);
|
|
||||||
texture.WidthRatio = w / texture.W2;
|
|
||||||
texture.HeightRatio = h / texture.H2;
|
|
||||||
|
|
||||||
//Create a new texture in the managed pool, which does not need to be recreated on a lost device
|
//Create a new texture in the managed pool, which does not need to be recreated on a lost device
|
||||||
//because a copy of the texture is hold in the Ram
|
//because a copy of the texture is hold in the Ram
|
||||||
Texture t = null;
|
Texture t;
|
||||||
try
|
using (t = new Texture(_Device, textureW, textureH, 0, Usage.AutoGenerateMipMap, Format.A8R8G8B8, Pool.Managed))
|
||||||
{
|
_WriteDataToTexture(t, w, data);
|
||||||
t = new Texture(_Device, (int)texture.W2, (int)texture.H2, 0, Usage.AutoGenerateMipMap, Format.A8R8G8B8, Pool.Managed);
|
|
||||||
//Lock the texture and fill it with the data
|
|
||||||
DataRectangle rect = t.LockRectangle(0, LockFlags.Discard);
|
|
||||||
int rowWidth = 4 * (int)texture.W2;
|
|
||||||
for (int i = 0; i + rowWidth <= data.Length; i += 4 * w)
|
|
||||||
{
|
|
||||||
rect.Data.Write(data, i, rowWidth);
|
|
||||||
rect.Data.Position = rect.Data.Position - rowWidth;
|
|
||||||
rect.Data.Position += rect.Pitch;
|
|
||||||
}
|
|
||||||
t.UnlockRectangle(0);
|
|
||||||
|
|
||||||
texture.Color = new SColorF(1f, 1f, 1f, 1f);
|
|
||||||
texture.Rect = new SRectF(0f, 0f, texture.Width, texture.Height, 0f);
|
|
||||||
texture.TexturePath = String.Empty;
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
if (t != null)
|
|
||||||
t.Dispose();
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture EnqueueTexture(int w, int h, byte[] data)
|
private static void _WriteDataToTexture(Texture t, int w, byte[] data)
|
||||||
{
|
{
|
||||||
STexture texture = new STexture(-1);
|
//Lock the texture and fill it with the data
|
||||||
STextureQueue queue = new STextureQueue {Data = data, Height = h, Width = w};
|
DataRectangle rect = t.LockRectangle(0, LockFlags.Discard);
|
||||||
|
int rowWidth = 4 * w;
|
||||||
|
if (rowWidth == rect.Pitch)
|
||||||
|
rect.Data.Write(data, 0, data.Length);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i + rowWidth <= data.Length; i += rowWidth)
|
||||||
|
{
|
||||||
|
rect.Data.Write(data, i, rowWidth);
|
||||||
|
//Go to next row
|
||||||
|
rect.Data.Position = rect.Data.Position - rowWidth + rect.Pitch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
t.UnlockRectangle(0);
|
||||||
|
}
|
||||||
|
|
||||||
texture.Height = h;
|
public CTexture EnqueueTexture(int w, int h, byte[] data)
|
||||||
texture.Width = w;
|
{
|
||||||
|
CTexture texture = _GetNewTexture(w, h);
|
||||||
|
|
||||||
lock (_MutexTexture)
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
_D3DTextures.Add(_IDs.Peek(), null);
|
texture.ID = _IDs.Dequeue();
|
||||||
texture.Index = _IDs.Dequeue();
|
_D3DTextures.Add(texture.ID, null);
|
||||||
queue.ID = texture.Index;
|
STextureQueue queue = new STextureQueue(texture.ID, texture.W2, texture.H2, w, h, data);
|
||||||
_Queue.Add(queue);
|
_TexturesToLoad.Enqueue(queue);
|
||||||
_Textures[texture.Index] = texture;
|
|
||||||
}
|
}
|
||||||
return texture;
|
return texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private CTexture _GetNewTexture(int w, int h)
|
||||||
|
{
|
||||||
|
return new CTexture(w, h, _CheckForNextPowerOf2(w), _CheckForNextPowerOf2(h));
|
||||||
|
}
|
||||||
#endregion adding
|
#endregion adding
|
||||||
|
|
||||||
#region updating
|
#region updating
|
||||||
@@ -1002,48 +957,30 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// Updates the data of a texture
|
/// Updates the data of a texture
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="texture">The texture to update</param>
|
/// <param name="texture">The texture to update</param>
|
||||||
|
/// <param name="w"></param>
|
||||||
|
/// <param name="h"></param>
|
||||||
/// <param name="data">A byte array containing the new texture's data</param>
|
/// <param name="data">A byte array containing the new texture's data</param>
|
||||||
/// <returns>True if succeeded</returns>
|
/// <returns>True if succeeded</returns>
|
||||||
public bool UpdateTexture(ref STexture texture, byte[] data)
|
public bool UpdateTexture(CTexture texture, int w, int h, byte[] data)
|
||||||
{
|
{
|
||||||
if ((texture.Index >= 0) && (_Textures.Count > 0) && _TextureExists(ref texture))
|
//Check if texture exists and extend matches
|
||||||
|
if (!_TextureExists(texture) || texture.UsedWidth != w || texture.UsedHeight != h)
|
||||||
|
return false;
|
||||||
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
lock (_MutexTexture)
|
_WriteDataToTexture(_D3DTextures[texture.ID], w, data);
|
||||||
{
|
|
||||||
DataRectangle rect = _D3DTextures[texture.Index].LockRectangle(0, LockFlags.Discard);
|
|
||||||
int w = (int)texture.Width;
|
|
||||||
for (int i = 0; i < data.Length; i += 4 * w)
|
|
||||||
{
|
|
||||||
rect.Data.Write(data, i, 4 * w);
|
|
||||||
rect.Data.Position -= 4 * w;
|
|
||||||
rect.Data.Position += rect.Pitch;
|
|
||||||
}
|
|
||||||
_D3DTextures[texture.Index].UnlockRectangle(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Flamefire: Unneccesary as height can not be changed by this! (Texture gets copied)
|
|
||||||
//Texture.height_ratio = Texture.height / CheckForNextPowerOf2(Texture.height);
|
|
||||||
//Texture.width_ratio = Texture.width / CheckForNextPowerOf2(Texture.width);
|
|
||||||
return true;
|
|
||||||
|
|
||||||
/*Surface s = _D3DTextures[Texture.index].GetSurfaceLevel(0);
|
|
||||||
DataRectangle d = s.LockRectangle(LockFlags.Discard);
|
|
||||||
|
|
||||||
for (int i = 0; i < Data.Length; )
|
|
||||||
{
|
|
||||||
d.Data.Write(Data, i, 4 * (int)Texture.width);
|
|
||||||
i += 4 * (int)Texture.width;
|
|
||||||
d.Data.Position = d.Data.Position - 4 * (int)Texture.width;
|
|
||||||
d.Data.Position += d.Pitch;
|
|
||||||
}
|
|
||||||
|
|
||||||
Texture.height_ratio = Texture.height / NextPowerOfTwo(Texture.height);
|
|
||||||
Texture.width_ratio = Texture.width / NextPowerOfTwo(Texture.width);
|
|
||||||
|
|
||||||
s.UnlockRectangle();
|
|
||||||
return true; */
|
|
||||||
}
|
}
|
||||||
return false;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool UpdateOrAddTexture(ref CTexture texture, int w, int h, byte[] data)
|
||||||
|
{
|
||||||
|
if (!UpdateTexture(texture, w, h, data))
|
||||||
|
{
|
||||||
|
RemoveTexture(ref texture);
|
||||||
|
texture = AddTexture(w, h, data);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
#endregion updating
|
#endregion updating
|
||||||
|
|
||||||
@@ -1052,40 +989,30 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="texture">The texture to check</param>
|
/// <param name="texture">The texture to check</param>
|
||||||
/// <returns>True if the texture exists</returns>
|
/// <returns>True if the texture exists</returns>
|
||||||
private bool _TextureExists(ref STexture texture)
|
private bool _TextureExists(CTexture texture)
|
||||||
{
|
{
|
||||||
lock (_MutexTexture)
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
if (_Textures.ContainsKey(texture.Index))
|
return texture != null && _D3DTextures.ContainsKey(texture.ID);
|
||||||
{
|
|
||||||
if (_Textures[texture.Index].Index >= 0)
|
|
||||||
{
|
|
||||||
texture = _Textures[texture.Index];
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Removes a texture from the Vram
|
/// Removes a texture from the Vram
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="texture">The texture to be removed</param>
|
/// <param name="texture">The texture to be removed</param>
|
||||||
public void RemoveTexture(ref STexture texture)
|
public void RemoveTexture(ref CTexture texture)
|
||||||
{
|
{
|
||||||
lock (_MutexTexture)
|
if (_TextureExists(texture))
|
||||||
{
|
{
|
||||||
if ((texture.Index >= 0) && (_Textures.Count > 0))
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
_D3DTextures[texture.Index].Dispose();
|
_D3DTextures[texture.ID].Dispose();
|
||||||
_D3DTextures.Remove(texture.Index);
|
_D3DTextures.Remove(texture.ID);
|
||||||
_Textures.Remove(texture.Index);
|
_IDs.Enqueue(texture.ID);
|
||||||
_IDs.Enqueue(texture.Index);
|
|
||||||
texture.Index = -1;
|
|
||||||
texture.ID = -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
texture = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region drawing
|
#region drawing
|
||||||
@@ -1093,8 +1020,10 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// Draws a texture
|
/// Draws a texture
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="texture">The texture to be drawn</param>
|
/// <param name="texture">The texture to be drawn</param>
|
||||||
public void DrawTexture(STexture texture)
|
public void DrawTexture(CTexture texture)
|
||||||
{
|
{
|
||||||
|
if (texture == null)
|
||||||
|
return;
|
||||||
DrawTexture(texture, texture.Rect, texture.Color);
|
DrawTexture(texture, texture.Rect, texture.Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1103,8 +1032,10 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="texture">The texture to be drawn</param>
|
/// <param name="texture">The texture to be drawn</param>
|
||||||
/// <param name="rect">A SRectF struct containing the destination coordinates</param>
|
/// <param name="rect">A SRectF struct containing the destination coordinates</param>
|
||||||
public void DrawTexture(STexture texture, SRectF rect)
|
public void DrawTexture(CTexture texture, SRectF rect)
|
||||||
{
|
{
|
||||||
|
if (texture == null)
|
||||||
|
return;
|
||||||
DrawTexture(texture, rect, texture.Color);
|
DrawTexture(texture, rect, texture.Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1115,7 +1046,7 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// <param name="rect">A SRectF struct containing the destination coordinates</param>
|
/// <param name="rect">A SRectF struct containing the destination coordinates</param>
|
||||||
/// <param name="color">A SColorF struct containing a color which the texture will be colored in</param>
|
/// <param name="color">A SColorF struct containing a color which the texture will be colored in</param>
|
||||||
/// <param name="mirrored">True if the texture should be mirrored</param>
|
/// <param name="mirrored">True if the texture should be mirrored</param>
|
||||||
public void DrawTexture(STexture texture, SRectF rect, SColorF color, bool mirrored = false)
|
public void DrawTexture(CTexture texture, SRectF rect, SColorF color, bool mirrored = false)
|
||||||
{
|
{
|
||||||
DrawTexture(texture, rect, color, new SRectF(0, 0, CSettings.RenderW, CSettings.RenderH, rect.Z), mirrored);
|
DrawTexture(texture, rect, color, new SRectF(0, 0, CSettings.RenderW, CSettings.RenderH, rect.Z), mirrored);
|
||||||
}
|
}
|
||||||
@@ -1128,86 +1059,85 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// <param name="color">A SColorF struct containing a color which the texture will be colored in</param>
|
/// <param name="color">A SColorF struct containing a color which the texture will be colored in</param>
|
||||||
/// <param name="bounds">A SRectF struct containing which part of the texture should be drawn</param>
|
/// <param name="bounds">A SRectF struct containing which part of the texture should be drawn</param>
|
||||||
/// <param name="mirrored">True if the texture should be mirrored</param>
|
/// <param name="mirrored">True if the texture should be mirrored</param>
|
||||||
public void DrawTexture(STexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
|
public void DrawTexture(CTexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
|
||||||
{
|
{
|
||||||
if (_TextureExists(ref texture))
|
if (!_TextureExists(texture))
|
||||||
|
return;
|
||||||
|
if (_D3DTextures[texture.ID] == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
//Calculate the position
|
||||||
|
float x1 = (bounds.X - rect.X) / rect.W * texture.WidthRatio;
|
||||||
|
float x2 = (bounds.X + bounds.W - rect.X) / rect.W * texture.WidthRatio;
|
||||||
|
float y1 = (bounds.Y - rect.Y) / rect.H * texture.HeightRatio;
|
||||||
|
float y2 = (bounds.Y + bounds.H - rect.Y) / rect.H * texture.HeightRatio;
|
||||||
|
|
||||||
|
if (x1 < 0)
|
||||||
|
x1 = 0f;
|
||||||
|
|
||||||
|
if (x2 > texture.WidthRatio)
|
||||||
|
x2 = texture.WidthRatio;
|
||||||
|
|
||||||
|
if (y1 < 0)
|
||||||
|
y1 = 0f;
|
||||||
|
|
||||||
|
if (y2 > texture.HeightRatio)
|
||||||
|
y2 = texture.HeightRatio;
|
||||||
|
|
||||||
|
//Calculate the size
|
||||||
|
float rx1 = rect.X;
|
||||||
|
float rx2 = rect.X + rect.W;
|
||||||
|
float ry1 = rect.Y;
|
||||||
|
float ry2 = rect.Y + rect.H;
|
||||||
|
|
||||||
|
if (rx1 < bounds.X)
|
||||||
|
rx1 = bounds.X;
|
||||||
|
|
||||||
|
if (rx2 > bounds.X + bounds.W)
|
||||||
|
rx2 = bounds.X + bounds.W;
|
||||||
|
|
||||||
|
if (ry1 < bounds.Y)
|
||||||
|
ry1 = bounds.Y;
|
||||||
|
|
||||||
|
if (ry2 > bounds.Y + bounds.H)
|
||||||
|
ry2 = bounds.Y + bounds.H;
|
||||||
|
|
||||||
|
//Align the pixels because Direct3D expects the pixels to be the left top corner
|
||||||
|
rx1 -= 0.5f;
|
||||||
|
ry1 -= 0.5f;
|
||||||
|
rx2 -= 0.5f;
|
||||||
|
ry2 -= 0.5f;
|
||||||
|
|
||||||
|
color.A *= CGraphics.GlobalAlpha;
|
||||||
|
|
||||||
|
if (color.A > 1)
|
||||||
|
color.A = 1;
|
||||||
|
if (color.R > 1)
|
||||||
|
color.R = 1;
|
||||||
|
if (color.G > 1)
|
||||||
|
color.G = 1;
|
||||||
|
if (color.B > 1)
|
||||||
|
color.B = 1;
|
||||||
|
|
||||||
|
Color c = color.AsColor();
|
||||||
|
|
||||||
|
if (!mirrored)
|
||||||
{
|
{
|
||||||
if (_D3DTextures[texture.Index] == null)
|
STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
|
||||||
return;
|
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, y1), c.ToArgb());
|
||||||
|
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
|
||||||
//Calculate the position
|
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y2), c.ToArgb());
|
||||||
float x1 = (bounds.X - rect.X) / rect.W * texture.WidthRatio;
|
vert[3] = new STexturedColoredVertex(new Vector3(rx2, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x2, y1), c.ToArgb());
|
||||||
float x2 = (bounds.X + bounds.W - rect.X) / rect.W * texture.WidthRatio;
|
_AddToVertexBuffer(vert, _D3DTextures[texture.ID], _CalculateRotationMatrix(rect.Rotation, rx1, rx2, ry1, ry2));
|
||||||
float y1 = (bounds.Y - rect.Y) / rect.H * texture.HeightRatio;
|
}
|
||||||
float y2 = (bounds.Y + bounds.H - rect.Y) / rect.H * texture.HeightRatio;
|
else
|
||||||
|
{
|
||||||
if (x1 < 0)
|
STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
|
||||||
x1 = 0f;
|
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, -y1), c.ToArgb());
|
||||||
|
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, -y2), c.ToArgb());
|
||||||
if (x2 > texture.WidthRatio)
|
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, -y2), c.ToArgb());
|
||||||
x2 = texture.WidthRatio;
|
vert[3] = new STexturedColoredVertex(new Vector3(rx2, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x2, -y1), c.ToArgb());
|
||||||
|
_AddToVertexBuffer(vert, _D3DTextures[texture.ID], _CalculateRotationMatrix(rect.Rotation, rx1, rx2, ry1, ry2));
|
||||||
if (y1 < 0)
|
|
||||||
y1 = 0f;
|
|
||||||
|
|
||||||
if (y2 > texture.HeightRatio)
|
|
||||||
y2 = texture.HeightRatio;
|
|
||||||
|
|
||||||
//Calculate the size
|
|
||||||
float rx1 = rect.X;
|
|
||||||
float rx2 = rect.X + rect.W;
|
|
||||||
float ry1 = rect.Y;
|
|
||||||
float ry2 = rect.Y + rect.H;
|
|
||||||
|
|
||||||
if (rx1 < bounds.X)
|
|
||||||
rx1 = bounds.X;
|
|
||||||
|
|
||||||
if (rx2 > bounds.X + bounds.W)
|
|
||||||
rx2 = bounds.X + bounds.W;
|
|
||||||
|
|
||||||
if (ry1 < bounds.Y)
|
|
||||||
ry1 = bounds.Y;
|
|
||||||
|
|
||||||
if (ry2 > bounds.Y + bounds.H)
|
|
||||||
ry2 = bounds.Y + bounds.H;
|
|
||||||
|
|
||||||
//Align the pixels because Direct3D expects the pixels to be the left top corner
|
|
||||||
rx1 -= 0.5f;
|
|
||||||
ry1 -= 0.5f;
|
|
||||||
rx2 -= 0.5f;
|
|
||||||
ry2 -= 0.5f;
|
|
||||||
|
|
||||||
color.A *= CGraphics.GlobalAlpha;
|
|
||||||
|
|
||||||
if (color.A > 1)
|
|
||||||
color.A = 1;
|
|
||||||
if (color.R > 1)
|
|
||||||
color.R = 1;
|
|
||||||
if (color.G > 1)
|
|
||||||
color.G = 1;
|
|
||||||
if (color.B > 1)
|
|
||||||
color.B = 1;
|
|
||||||
|
|
||||||
Color c = color.AsColor();
|
|
||||||
|
|
||||||
if (!mirrored)
|
|
||||||
{
|
|
||||||
STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
|
|
||||||
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, y1), c.ToArgb());
|
|
||||||
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
|
|
||||||
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y2), c.ToArgb());
|
|
||||||
vert[3] = new STexturedColoredVertex(new Vector3(rx2, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x2, y1), c.ToArgb());
|
|
||||||
_AddToVertexBuffer(vert, _D3DTextures[texture.Index], _CalculateRotationMatrix(rect.Rotation, rx1, rx2, ry1, ry2));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
|
|
||||||
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, -y1), c.ToArgb());
|
|
||||||
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, -y2), c.ToArgb());
|
|
||||||
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, -y2), c.ToArgb());
|
|
||||||
vert[3] = new STexturedColoredVertex(new Vector3(rx2, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x2, -y1), c.ToArgb());
|
|
||||||
_AddToVertexBuffer(vert, _D3DTextures[texture.Index], _CalculateRotationMatrix(rect.Rotation, rx1, rx2, ry1, ry2));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1219,11 +1149,11 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// <param name="color">A SColorF struct containing a color which the texture will be colored in</param>
|
/// <param name="color">A SColorF struct containing a color which the texture will be colored in</param>
|
||||||
/// <param name="begin">A Value ranging from 0 to 1 containing the beginning of the texture</param>
|
/// <param name="begin">A Value ranging from 0 to 1 containing the beginning of the texture</param>
|
||||||
/// <param name="end">A Value ranging from 0 to 1 containing the ending of the texture</param>
|
/// <param name="end">A Value ranging from 0 to 1 containing the ending of the texture</param>
|
||||||
public void DrawTexture(STexture texture, SRectF rect, SColorF color, float begin, float end)
|
public void DrawTexture(CTexture texture, SRectF rect, SColorF color, float begin, float end)
|
||||||
{
|
{
|
||||||
if (!_TextureExists(ref texture))
|
if (!_TextureExists(texture))
|
||||||
return;
|
return;
|
||||||
if (_D3DTextures[texture.Index] == null)
|
if (_D3DTextures[texture.ID] == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float x1 = 0f + begin * texture.WidthRatio;
|
float x1 = 0f + begin * texture.WidthRatio;
|
||||||
@@ -1251,7 +1181,7 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
|
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
|
||||||
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y2), c.ToArgb());
|
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y2), c.ToArgb());
|
||||||
vert[3] = new STexturedColoredVertex(new Vector3(rx2, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x2, y1), c.ToArgb());
|
vert[3] = new STexturedColoredVertex(new Vector3(rx2, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x2, y1), c.ToArgb());
|
||||||
_AddToVertexBuffer(vert, _D3DTextures[texture.Index], _CalculateRotationMatrix(rect.Rotation, rx1, rx2, ry1, ry2));
|
_AddToVertexBuffer(vert, _D3DTextures[texture.ID], _CalculateRotationMatrix(rect.Rotation, rx1, rx2, ry1, ry2));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -1263,11 +1193,11 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// <param name="bounds">A SRectF struct containing which part of the texture should be drawn</param>
|
/// <param name="bounds">A SRectF struct containing which part of the texture should be drawn</param>
|
||||||
/// <param name="space">The space between the texture and the reflection</param>
|
/// <param name="space">The space between the texture and the reflection</param>
|
||||||
/// <param name="height">The height of the reflection</param>
|
/// <param name="height">The height of the reflection</param>
|
||||||
public void DrawTextureReflection(STexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height)
|
public void DrawTextureReflection(CTexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height)
|
||||||
{
|
{
|
||||||
if (!_TextureExists(ref texture))
|
if (!_TextureExists(texture))
|
||||||
return;
|
return;
|
||||||
if (_D3DTextures[texture.Index] == null)
|
if (_D3DTextures[texture.ID] == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Math.Abs(rect.W) < float.Epsilon || Math.Abs(rect.H) < float.Epsilon || Math.Abs(bounds.H) < float.Epsilon || Math.Abs(bounds.W) < float.Epsilon ||
|
if (Math.Abs(rect.W) < float.Epsilon || Math.Abs(rect.H) < float.Epsilon || Math.Abs(bounds.H) < float.Epsilon || Math.Abs(bounds.W) < float.Epsilon ||
|
||||||
@@ -1283,61 +1213,58 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
if (height > bounds.H)
|
if (height > bounds.H)
|
||||||
height = bounds.H;
|
height = bounds.H;
|
||||||
|
|
||||||
if (_TextureExists(ref texture))
|
float x1 = (bounds.X - rect.X) / rect.W * texture.WidthRatio;
|
||||||
{
|
float x2 = (bounds.X + bounds.W - rect.X) / rect.W * texture.WidthRatio;
|
||||||
float x1 = (bounds.X - rect.X) / rect.W * texture.WidthRatio;
|
float y1 = (bounds.Y - rect.Y + rect.H - height) / rect.H * texture.HeightRatio;
|
||||||
float x2 = (bounds.X + bounds.W - rect.X) / rect.W * texture.WidthRatio;
|
float y2 = (bounds.Y + bounds.H - rect.Y) / rect.H * texture.HeightRatio;
|
||||||
float y1 = (bounds.Y - rect.Y + rect.H - height) / rect.H * texture.HeightRatio;
|
|
||||||
float y2 = (bounds.Y + bounds.H - rect.Y) / rect.H * texture.HeightRatio;
|
|
||||||
|
|
||||||
if (x1 < 0)
|
if (x1 < 0)
|
||||||
x1 = 0f;
|
x1 = 0f;
|
||||||
|
|
||||||
if (x2 > texture.WidthRatio)
|
if (x2 > texture.WidthRatio)
|
||||||
x2 = texture.WidthRatio;
|
x2 = texture.WidthRatio;
|
||||||
|
|
||||||
if (y1 < 0)
|
if (y1 < 0)
|
||||||
y1 = 0f;
|
y1 = 0f;
|
||||||
|
|
||||||
if (y2 > texture.HeightRatio)
|
if (y2 > texture.HeightRatio)
|
||||||
y2 = texture.HeightRatio;
|
y2 = texture.HeightRatio;
|
||||||
|
|
||||||
|
|
||||||
float rx1 = rect.X;
|
float rx1 = rect.X;
|
||||||
float rx2 = rect.X + rect.W;
|
float rx2 = rect.X + rect.W;
|
||||||
float ry1 = rect.Y + rect.H + space;
|
float ry1 = rect.Y + rect.H + space;
|
||||||
float ry2 = rect.Y + rect.H + space + height;
|
float ry2 = rect.Y + rect.H + space + height;
|
||||||
|
|
||||||
if (rx1 < bounds.X)
|
if (rx1 < bounds.X)
|
||||||
rx1 = bounds.X;
|
rx1 = bounds.X;
|
||||||
|
|
||||||
if (rx2 > bounds.X + bounds.W)
|
if (rx2 > bounds.X + bounds.W)
|
||||||
rx2 = bounds.X + bounds.W;
|
rx2 = bounds.X + bounds.W;
|
||||||
|
|
||||||
if (ry1 < bounds.Y + space)
|
if (ry1 < bounds.Y + space)
|
||||||
ry1 = bounds.Y + space;
|
ry1 = bounds.Y + space;
|
||||||
|
|
||||||
if (ry2 > bounds.Y + bounds.H + space + height)
|
if (ry2 > bounds.Y + bounds.H + space + height)
|
||||||
ry2 = bounds.Y + bounds.H + space + height;
|
ry2 = bounds.Y + bounds.H + space + height;
|
||||||
|
|
||||||
//Align the pixels because Direct3D expects the pixels to be the left top corner
|
//Align the pixels because Direct3D expects the pixels to be the left top corner
|
||||||
rx1 -= 0.5f;
|
rx1 -= 0.5f;
|
||||||
ry1 -= 0.5f;
|
ry1 -= 0.5f;
|
||||||
rx2 -= 0.5f;
|
rx2 -= 0.5f;
|
||||||
ry2 -= 0.5f;
|
ry2 -= 0.5f;
|
||||||
|
|
||||||
color.A *= CGraphics.GlobalAlpha;
|
color.A *= CGraphics.GlobalAlpha;
|
||||||
Color c = color.AsColor();
|
Color c = color.AsColor();
|
||||||
color.A = 0;
|
color.A = 0;
|
||||||
Color transparent = color.AsColor();
|
Color transparent = color.AsColor();
|
||||||
|
|
||||||
STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
|
STexturedColoredVertex[] vert = new STexturedColoredVertex[4];
|
||||||
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
|
vert[0] = new STexturedColoredVertex(new Vector3(rx1, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x1, y2), c.ToArgb());
|
||||||
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y1), transparent.ToArgb());
|
vert[1] = new STexturedColoredVertex(new Vector3(rx1, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x1, y1), transparent.ToArgb());
|
||||||
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y1), transparent.ToArgb());
|
vert[2] = new STexturedColoredVertex(new Vector3(rx2, -ry2, rect.Z + CGraphics.ZOffset), new Vector2(x2, y1), transparent.ToArgb());
|
||||||
vert[3] = new STexturedColoredVertex(new Vector3(rx2, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x2, y2), c.ToArgb());
|
vert[3] = new STexturedColoredVertex(new Vector3(rx2, -ry1, rect.Z + CGraphics.ZOffset), new Vector2(x2, y2), c.ToArgb());
|
||||||
_AddToVertexBuffer(vert, _D3DTextures[texture.Index], _CalculateRotationMatrix(rect.Rotation, rx1, rx2, ry1, ry2));
|
_AddToVertexBuffer(vert, _D3DTextures[texture.ID], _CalculateRotationMatrix(rect.Rotation, rx1, rx2, ry1, ry2));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endregion drawing
|
#endregion drawing
|
||||||
|
|
||||||
@@ -1345,21 +1272,16 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
{
|
{
|
||||||
lock (_MutexTexture)
|
lock (_MutexTexture)
|
||||||
{
|
{
|
||||||
if (_Queue.Count == 0)
|
while (_TexturesToLoad.Count > 0)
|
||||||
return;
|
{
|
||||||
|
STextureQueue q = _TexturesToLoad.Dequeue();
|
||||||
|
Texture t;
|
||||||
|
if (_D3DTextures.TryGetValue(q.ID, out t) && t != null)
|
||||||
|
continue;
|
||||||
|
|
||||||
STextureQueue q = _Queue[0];
|
t = _CreateTexture(q.TextureWidth, q.TextureHeight, q.DataWidth, q.Data);
|
||||||
STexture texture;
|
_D3DTextures[q.ID] = t;
|
||||||
if (_Textures.ContainsKey(q.ID))
|
}
|
||||||
texture = _Textures[q.ID];
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
|
|
||||||
Texture t = _CreateTexture(q.Width, q.Height, q.Data, ref texture);
|
|
||||||
_D3DTextures[q.ID] = t;
|
|
||||||
|
|
||||||
_Textures[texture.Index] = texture;
|
|
||||||
_Queue.RemoveAt(0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1369,7 +1291,7 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// <returns>The amount of textures</returns>
|
/// <returns>The amount of textures</returns>
|
||||||
public int GetTextureCount()
|
public int GetTextureCount()
|
||||||
{
|
{
|
||||||
return _Textures.Count;
|
return _D3DTextures.Count;
|
||||||
}
|
}
|
||||||
#endregion Textures
|
#endregion Textures
|
||||||
|
|
||||||
@@ -1381,13 +1303,13 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="n">The value of which the next power of two will be calculated</param>
|
/// <param name="n">The value of which the next power of two will be calculated</param>
|
||||||
/// <returns>The next power of two</returns>
|
/// <returns>The next power of two</returns>
|
||||||
private float _CheckForNextPowerOf2(float n)
|
private int _CheckForNextPowerOf2(int n)
|
||||||
{
|
{
|
||||||
if (_NonPowerOf2TextureSupported)
|
if (_NonPowerOf2TextureSupported)
|
||||||
return n;
|
return n;
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
throw new ArgumentOutOfRangeException("n", "Must be positive.");
|
throw new ArgumentOutOfRangeException("n", "Must be positive.");
|
||||||
return (float)Math.Pow(2, Math.Ceiling(Math.Log(n, 2)));
|
return (int)Math.Pow(2, Math.Ceiling(Math.Log(n, 2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private SlimDX.Matrix _CalculateRotationMatrix(float rot, float rx1, float rx2, float ry1, float ry2)
|
private SlimDX.Matrix _CalculateRotationMatrix(float rot, float rx1, float rx2, float ry1, float ry2)
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ using System.Threading;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Draw
|
namespace Vocaluxe.Lib.Draw
|
||||||
@@ -46,8 +47,8 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
private bool _TopMost;
|
private bool _TopMost;
|
||||||
private Rectangle _Bounds;
|
private Rectangle _Bounds;
|
||||||
|
|
||||||
private readonly List<STexture> _Textures;
|
private readonly Dictionary<int, CTexture> _Textures = new Dictionary<int, CTexture>();
|
||||||
private readonly List<Bitmap> _Bitmaps;
|
private readonly List<Bitmap> _Bitmaps = new List<Bitmap>();
|
||||||
|
|
||||||
private readonly Color _ClearColor = Color.DarkBlue;
|
private readonly Color _ClearColor = Color.DarkBlue;
|
||||||
|
|
||||||
@@ -55,9 +56,6 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
{
|
{
|
||||||
Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon));
|
Icon = new Icon(Path.Combine(Environment.CurrentDirectory, CSettings.Icon));
|
||||||
|
|
||||||
_Textures = new List<STexture>();
|
|
||||||
_Bitmaps = new List<Bitmap>();
|
|
||||||
|
|
||||||
_Keys = new CKeys();
|
_Keys = new CKeys();
|
||||||
_Mouse = new CMouse();
|
_Mouse = new CMouse();
|
||||||
ClientSize = new Size(1280, 720);
|
ClientSize = new Size(1280, 720);
|
||||||
@@ -290,34 +288,27 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
_G.Clear(_ClearColor);
|
_G.Clear(_ClearColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture CopyScreen()
|
public CTexture CopyScreen()
|
||||||
{
|
{
|
||||||
STexture texture = new STexture(0);
|
|
||||||
Bitmap bmp = new Bitmap(_Backbuffer);
|
Bitmap bmp = new Bitmap(_Backbuffer);
|
||||||
_Bitmaps.Add(bmp);
|
_Bitmaps.Add(bmp);
|
||||||
|
CTexture texture = _GetNewTexture(bmp.Width, bmp.Height);
|
||||||
texture.Index = _Bitmaps.Count - 1;
|
|
||||||
|
|
||||||
texture.Width = bmp.Width;
|
|
||||||
texture.Height = bmp.Height;
|
|
||||||
|
|
||||||
// Add to Texture List
|
// Add to Texture List
|
||||||
texture.Color = new SColorF(1f, 1f, 1f, 1f);
|
_Textures[texture.ID] = texture;
|
||||||
texture.Rect = new SRectF(0f, 0f, texture.Width, texture.Height, 0f);
|
|
||||||
_Textures.Add(texture);
|
|
||||||
|
|
||||||
return texture;
|
return texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CopyScreen(ref STexture texture)
|
public void CopyScreen(ref CTexture texture)
|
||||||
{
|
{
|
||||||
if (texture.Index == 0 || (int)texture.Width != GetScreenWidth() || (int)texture.Height != GetScreenHeight())
|
if (!_TextureExists(texture) || texture.W2 != GetScreenWidth() || texture.H2 != GetScreenHeight())
|
||||||
{
|
{
|
||||||
RemoveTexture(ref texture);
|
RemoveTexture(ref texture);
|
||||||
texture = CopyScreen();
|
texture = CopyScreen();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_Bitmaps[texture.Index] = new Bitmap(_Backbuffer);
|
_Bitmaps[texture.ID] = new Bitmap(_Backbuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MakeScreenShot()
|
public void MakeScreenShot()
|
||||||
@@ -341,70 +332,63 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
|
|
||||||
public void DrawColorReflection(SColorF color, SRectF rect, float space, float height) {}
|
public void DrawColorReflection(SColorF color, SRectF rect, float space, float height) {}
|
||||||
|
|
||||||
public STexture AddTexture(Bitmap bmp)
|
public CTexture AddTexture(Bitmap bmp)
|
||||||
{
|
{
|
||||||
Bitmap bmp2 = new Bitmap(bmp);
|
Bitmap bmp2 = new Bitmap(bmp);
|
||||||
_Bitmaps.Add(bmp2);
|
_Bitmaps.Add(bmp2);
|
||||||
STexture texture = new STexture {Index = _Bitmaps.Count - 1, Width = bmp.Width, Height = bmp.Height, Color = new SColorF(1f, 1f, 1f, 1f)};
|
CTexture texture = _GetNewTexture(bmp.Width, bmp.Height);
|
||||||
|
|
||||||
// Add to Texture List
|
// Add to Texture List
|
||||||
texture.Rect = new SRectF(0f, 0f, texture.Width, texture.Height, 0f);
|
_Textures[texture.ID] = texture;
|
||||||
texture.TexturePath = String.Empty;
|
|
||||||
|
|
||||||
_Textures.Add(texture);
|
|
||||||
|
|
||||||
return texture;
|
return texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture AddTexture(string texturePath)
|
private CTexture _GetNewTexture(int w, int h)
|
||||||
|
{
|
||||||
|
return new CTexture(w, h) {ID = _Bitmaps.Count - 1};
|
||||||
|
}
|
||||||
|
|
||||||
|
public CTexture AddTexture(string texturePath)
|
||||||
{
|
{
|
||||||
STexture texture = new STexture();
|
|
||||||
if (File.Exists(texturePath))
|
if (File.Exists(texturePath))
|
||||||
{
|
{
|
||||||
bool found = false;
|
foreach (CTexture tex in _Textures.Values)
|
||||||
foreach (STexture tex in _Textures)
|
|
||||||
{
|
{
|
||||||
if (tex.TexturePath == texturePath)
|
if (tex.TexturePath == texturePath)
|
||||||
{
|
return tex;
|
||||||
texture = tex;
|
|
||||||
found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
using (Bitmap bmp = new Bitmap(texturePath))
|
||||||
if (!found)
|
|
||||||
{
|
{
|
||||||
using (Bitmap bmp = new Bitmap(texturePath))
|
CTexture texture = AddTexture(bmp);
|
||||||
return AddTexture(bmp);
|
texture.TexturePath = texturePath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return texture;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveTexture(ref STexture texture)
|
private bool _TextureExists(CTexture texture)
|
||||||
{
|
{
|
||||||
if ((texture.Index >= 0) && (_Textures.Count > 0))
|
return texture != null && _Textures.ContainsKey(texture.ID);
|
||||||
{
|
|
||||||
for (int i = 0; i < _Textures.Count; i++)
|
|
||||||
{
|
|
||||||
if (_Textures[i].Index == texture.Index)
|
|
||||||
{
|
|
||||||
_Bitmaps[texture.Index].Dispose();
|
|
||||||
_Textures.RemoveAt(i);
|
|
||||||
texture.Index = -1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture EnqueueTexture(int w, int h, byte[] data)
|
public void RemoveTexture(ref CTexture texture)
|
||||||
|
{
|
||||||
|
if (_TextureExists(texture))
|
||||||
|
{
|
||||||
|
_Bitmaps[texture.ID].Dispose();
|
||||||
|
_Textures.Remove(texture.ID);
|
||||||
|
}
|
||||||
|
texture = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CTexture EnqueueTexture(int w, int h, byte[] data)
|
||||||
{
|
{
|
||||||
return AddTexture(w, h, data);
|
return AddTexture(w, h, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture AddTexture(int w, int h, byte[] data)
|
public CTexture AddTexture(int w, int h, byte[] data)
|
||||||
{
|
{
|
||||||
using (Bitmap bmp = new Bitmap(w, h))
|
using (Bitmap bmp = new Bitmap(w, h))
|
||||||
{
|
{
|
||||||
@@ -415,49 +399,59 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UpdateTexture(ref STexture texture, byte[] data)
|
public bool UpdateTexture(CTexture texture, int w, int h, byte[] data)
|
||||||
{
|
{
|
||||||
if ((texture.Index >= 0) && (_Textures.Count > 0) && (_Bitmaps.Count > texture.Index))
|
if (_TextureExists(texture))
|
||||||
{
|
{
|
||||||
BitmapData bmpData = _Bitmaps[texture.Index].LockBits(new Rectangle(0, 0, _Bitmaps[texture.Index].Width, _Bitmaps[texture.Index].Height),
|
BitmapData bmpData = _Bitmaps[texture.ID].LockBits(new Rectangle(0, 0, _Bitmaps[texture.ID].Width, _Bitmaps[texture.ID].Height),
|
||||||
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
||||||
Marshal.Copy(data, 0, bmpData.Scan0, data.Length);
|
Marshal.Copy(data, 0, bmpData.Scan0, data.Length);
|
||||||
_Bitmaps[texture.Index].UnlockBits(bmpData);
|
_Bitmaps[texture.ID].UnlockBits(bmpData);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool UpdateOrAddTexture(ref CTexture texture, int w, int h, byte[] data)
|
||||||
|
{
|
||||||
|
if (!UpdateTexture(texture, w, h, data))
|
||||||
|
{
|
||||||
|
RemoveTexture(ref texture);
|
||||||
|
texture = AddTexture(w, h, data);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawTexture(STexture texture)
|
public void DrawTexture(CTexture texture)
|
||||||
{
|
{
|
||||||
if ((texture.Index >= 0) && (_Textures.Count > 0) && (_Bitmaps.Count > texture.Index))
|
if (texture != null)
|
||||||
DrawTexture(texture, texture.Rect, texture.Color);
|
DrawTexture(texture, texture.Rect, texture.Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawTexture(STexture texture, SRectF rect)
|
public void DrawTexture(CTexture texture, SRectF rect)
|
||||||
{
|
{
|
||||||
if ((texture.Index >= 0) && (_Textures.Count > 0) && (_Bitmaps.Count > texture.Index))
|
if (texture != null)
|
||||||
DrawTexture(texture, rect, texture.Color);
|
DrawTexture(texture, rect, texture.Color);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawTexture(STexture texture, SRectF rect, SColorF color, bool mirrored = false)
|
public void DrawTexture(CTexture texture, SRectF rect, SColorF color, bool mirrored = false)
|
||||||
{
|
{
|
||||||
if ((texture.Index >= 0) && (_Textures.Count > 0) && (_Bitmaps.Count > texture.Index))
|
if (texture != null)
|
||||||
DrawTexture(texture, rect, color, rect, mirrored);
|
DrawTexture(texture, rect, color, rect, mirrored);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawTexture(STexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
|
public void DrawTexture(CTexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false)
|
||||||
{
|
{
|
||||||
if ((texture.Index >= 0) && (_Textures.Count > 0) && (_Bitmaps.Count > texture.Index))
|
if (!_TextureExists(texture))
|
||||||
{
|
return;
|
||||||
Bitmap coloredBitmap = _ColorizeBitmap(_Bitmaps[texture.Index], color);
|
Bitmap coloredBitmap = _ColorizeBitmap(_Bitmaps[texture.ID], color);
|
||||||
_G.DrawImage(coloredBitmap, new RectangleF(rect.X, rect.Y, rect.W, rect.H));
|
_G.DrawImage(coloredBitmap, new RectangleF(rect.X, rect.Y, rect.W, rect.H));
|
||||||
coloredBitmap.Dispose();
|
coloredBitmap.Dispose();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DrawTexture(STexture texture, SRectF rect, SColorF color, float begin, float end) {}
|
public void DrawTexture(CTexture texture, SRectF rect, SColorF color, float begin, float end) {}
|
||||||
|
|
||||||
public void DrawTextureReflection(STexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height) {}
|
public void DrawTextureReflection(CTexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height) {}
|
||||||
|
|
||||||
public int GetTextureCount()
|
public int GetTextureCount()
|
||||||
{
|
{
|
||||||
|
|||||||
+391
-479
File diff suppressed because it is too large.
Load diff
+18
-15
@@ -17,11 +17,13 @@
|
|||||||
// */
|
// */
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Draw
|
namespace Vocaluxe.Lib.Draw
|
||||||
{
|
{
|
||||||
interface IDraw
|
interface IDraw
|
||||||
@@ -36,28 +38,29 @@ namespace Vocaluxe.Lib.Draw
|
|||||||
int GetTextureCount();
|
int GetTextureCount();
|
||||||
|
|
||||||
void ClearScreen();
|
void ClearScreen();
|
||||||
STexture CopyScreen();
|
CTexture CopyScreen();
|
||||||
void CopyScreen(ref STexture texture);
|
void CopyScreen(ref CTexture texture);
|
||||||
void MakeScreenShot();
|
void MakeScreenShot();
|
||||||
|
|
||||||
STexture AddTexture(string texturePath);
|
CTexture AddTexture(string texturePath);
|
||||||
STexture AddTexture(Bitmap bitmap);
|
CTexture AddTexture(Bitmap bitmap);
|
||||||
STexture AddTexture(int w, int h, byte[] data);
|
CTexture AddTexture(int w, int h, byte[] data);
|
||||||
STexture EnqueueTexture(int w, int h, byte[] data);
|
CTexture EnqueueTexture(int w, int h, byte[] data);
|
||||||
bool UpdateTexture(ref STexture texture, byte[] data);
|
bool UpdateTexture(CTexture texture, int w, int h, byte[] data);
|
||||||
void RemoveTexture(ref STexture texture);
|
bool UpdateOrAddTexture(ref CTexture texture, int w, int h, byte[] data);
|
||||||
|
void RemoveTexture(ref CTexture texture);
|
||||||
|
|
||||||
// Basic Draw Methods
|
// Basic Draw Methods
|
||||||
void DrawLine(int a, int r, int g, int b, int w, int x1, int y1, int x2, int y2);
|
void DrawLine(int a, int r, int g, int b, int w, int x1, int y1, int x2, int y2);
|
||||||
void DrawColor(SColorF color, SRectF rect);
|
void DrawColor(SColorF color, SRectF rect);
|
||||||
void DrawColorReflection(SColorF color, SRectF rect, float space, float height);
|
void DrawColorReflection(SColorF color, SRectF rect, float space, float height);
|
||||||
|
|
||||||
void DrawTexture(STexture texture);
|
void DrawTexture(CTexture texture);
|
||||||
void DrawTexture(STexture texture, SRectF rect);
|
void DrawTexture(CTexture texture, SRectF rect);
|
||||||
void DrawTexture(STexture texture, SRectF rect, SColorF color, bool mirrored = false);
|
void DrawTexture(CTexture texture, SRectF rect, SColorF color, bool mirrored = false);
|
||||||
void DrawTexture(STexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false);
|
void DrawTexture(CTexture texture, SRectF rect, SColorF color, SRectF bounds, bool mirrored = false);
|
||||||
void DrawTexture(STexture texture, SRectF rect, SColorF color, float begin, float end);
|
void DrawTexture(CTexture texture, SRectF rect, SColorF color, float begin, float end);
|
||||||
|
|
||||||
void DrawTextureReflection(STexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height);
|
void DrawTextureReflection(CTexture texture, SRectF rect, SColorF color, SRectF bounds, float space, float height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Video
|
namespace Vocaluxe.Lib.Video
|
||||||
{
|
{
|
||||||
@@ -58,7 +59,7 @@ namespace Vocaluxe.Lib.Video
|
|||||||
return 0f;
|
return 0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract bool GetFrame(int streamID, ref STexture frame, float time, out float videoTime);
|
public abstract bool GetFrame(int streamID, ref CTexture frame, float time, out float videoTime);
|
||||||
|
|
||||||
public virtual bool Skip(int streamID, float start, float gap)
|
public virtual bool Skip(int streamID, float start, float gap)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ using Vocaluxe.Base;
|
|||||||
using Vocaluxe.Lib.Video.Acinerella;
|
using Vocaluxe.Lib.Video.Acinerella;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Video
|
namespace Vocaluxe.Lib.Video
|
||||||
{
|
{
|
||||||
delegate void Closeproc(int streamID);
|
delegate void Closeproc(int streamID);
|
||||||
@@ -90,7 +92,7 @@ namespace Vocaluxe.Lib.Video
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool GetFrame(int streamID, ref STexture frame, float time, out float videoTime)
|
public override bool GetFrame(int streamID, ref CTexture frame, float time, out float videoTime)
|
||||||
{
|
{
|
||||||
videoTime = 0;
|
videoTime = 0;
|
||||||
if (_Initialized)
|
if (_Initialized)
|
||||||
@@ -299,7 +301,7 @@ namespace Vocaluxe.Lib.Video
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool GetFrame(ref STexture frame, float time, out float videoTime)
|
public bool GetFrame(ref CTexture frame, float time, out float videoTime)
|
||||||
{
|
{
|
||||||
videoTime = 0;
|
videoTime = 0;
|
||||||
if (!_FileOpened)
|
if (!_FileOpened)
|
||||||
@@ -323,7 +325,7 @@ namespace Vocaluxe.Lib.Video
|
|||||||
|
|
||||||
_UploadNewFrame(ref frame);
|
_UploadNewFrame(ref frame);
|
||||||
//EventDecode.Set();
|
//EventDecode.Set();
|
||||||
return true;
|
return frame != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.Abs(_SetTime - time) > float.Epsilon)
|
if (Math.Abs(_SetTime - time) > float.Epsilon)
|
||||||
@@ -335,7 +337,7 @@ namespace Vocaluxe.Lib.Video
|
|||||||
_UploadNewFrame(ref frame);
|
_UploadNewFrame(ref frame);
|
||||||
videoTime = _CurrentVideoTime;
|
videoTime = _CurrentVideoTime;
|
||||||
//EventDecode.Set();
|
//EventDecode.Set();
|
||||||
return true;
|
return frame != null;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -650,7 +652,7 @@ namespace Vocaluxe.Lib.Video
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _UploadNewFrame(ref STexture frame)
|
private void _UploadNewFrame(ref CTexture frame)
|
||||||
{
|
{
|
||||||
if (!_FileOpened)
|
if (!_FileOpened)
|
||||||
return;
|
return;
|
||||||
@@ -661,13 +663,7 @@ namespace Vocaluxe.Lib.Video
|
|||||||
|
|
||||||
if (num >= 0)
|
if (num >= 0)
|
||||||
{
|
{
|
||||||
if (frame.Index == -1 || _Width != (int)frame.Width || _Height != (int)frame.Height)
|
CDraw.UpdateOrAddTexture(ref frame, _Width, _Height, _FrameBuffer[num].Data);
|
||||||
{
|
|
||||||
CDraw.RemoveTexture(ref frame);
|
|
||||||
frame = CDraw.AddTexture(_Width, _Height, _FrameBuffer[num].Data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
CDraw.UpdateTexture(ref frame, _FrameBuffer[num].Data);
|
|
||||||
|
|
||||||
lock (_MutexSyncSignals)
|
lock (_MutexSyncSignals)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ using System;
|
|||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using Vocaluxe.Lib.Video.Gstreamer;
|
using Vocaluxe.Lib.Video.Gstreamer;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Video
|
namespace Vocaluxe.Lib.Video
|
||||||
{
|
{
|
||||||
@@ -78,13 +79,13 @@ namespace Vocaluxe.Lib.Video
|
|||||||
return CGstreamerVideoWrapper.GetVideoLength(streamID);
|
return CGstreamerVideoWrapper.GetVideoLength(streamID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool GetFrame(int streamID, ref STexture frame, float time, out float videoTime)
|
public bool GetFrame(int streamID, ref CTexture frame, float time, out float videoTime)
|
||||||
{
|
{
|
||||||
SManagedFrame managedFrame = CGstreamerVideoWrapper.GetFrame(streamID, time);
|
SManagedFrame managedFrame = CGstreamerVideoWrapper.GetFrame(streamID, time);
|
||||||
videoTime = managedFrame.Videotime;
|
videoTime = managedFrame.Videotime;
|
||||||
|
|
||||||
_UploadNewFrame(ref frame, ref managedFrame.Buffer, managedFrame.Width, managedFrame.Height);
|
_UploadNewFrame(ref frame, ref managedFrame.Buffer, managedFrame.Width, managedFrame.Height);
|
||||||
return true;
|
return frame != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Skip(int streamID, float start, float gap)
|
public bool Skip(int streamID, float start, float gap)
|
||||||
@@ -117,17 +118,11 @@ namespace Vocaluxe.Lib.Video
|
|||||||
CGstreamerVideoWrapper.UpdateVideo();
|
CGstreamerVideoWrapper.UpdateVideo();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _UploadNewFrame(ref STexture frame, ref byte[] data, int width, int height)
|
private void _UploadNewFrame(ref CTexture frame, ref byte[] data, int width, int height)
|
||||||
{
|
{
|
||||||
if (data == null)
|
if (data == null)
|
||||||
return;
|
return;
|
||||||
if (frame.Index == -1 || width != (int)frame.Width || height != (int)frame.Height || data.Length == 0)
|
CDraw.UpdateOrAddTexture(ref frame, width, height, data);
|
||||||
{
|
|
||||||
CDraw.RemoveTexture(ref frame);
|
|
||||||
frame = CDraw.AddTexture(width, height, data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
CDraw.UpdateTexture(ref frame, data);
|
|
||||||
data = null;
|
data = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
|
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Video
|
namespace Vocaluxe.Lib.Video
|
||||||
{
|
{
|
||||||
struct SVideoStreams
|
struct SVideoStreams
|
||||||
@@ -41,7 +43,17 @@ namespace Vocaluxe.Lib.Video
|
|||||||
int GetNumStreams();
|
int GetNumStreams();
|
||||||
|
|
||||||
float GetLength(int streamID);
|
float GetLength(int streamID);
|
||||||
bool GetFrame(int streamID, ref STexture frame, float time, out float videoTime);
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="streamID"></param>
|
||||||
|
/// <param name="frame"></param>
|
||||||
|
/// <param name="time"></param>
|
||||||
|
/// <param name="videoTime"></param>
|
||||||
|
/// <returns>True if frame is valid</returns>
|
||||||
|
bool GetFrame(int streamID, ref CTexture frame, float time, out float videoTime);
|
||||||
|
|
||||||
bool Skip(int streamID, float start, float gap);
|
bool Skip(int streamID, float start, float gap);
|
||||||
void SetLoop(int streamID, bool loop);
|
void SetLoop(int streamID, bool loop);
|
||||||
void Pause(int streamID);
|
void Pause(int streamID);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ using System.Drawing.Imaging;
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Webcam
|
namespace Vocaluxe.Lib.Webcam
|
||||||
{
|
{
|
||||||
@@ -41,29 +42,20 @@ namespace Vocaluxe.Lib.Webcam
|
|||||||
|
|
||||||
public void Close()
|
public void Close()
|
||||||
{
|
{
|
||||||
if (_Webcam != null)
|
if (_Webcam == null)
|
||||||
{
|
return;
|
||||||
_Webcam.SignalToStop();
|
_Webcam.SignalToStop();
|
||||||
_Webcam.WaitForStop();
|
_Webcam.WaitForStop();
|
||||||
_Webcam.NewFrame -= _OnFrame;
|
_Webcam.NewFrame -= _OnFrame;
|
||||||
_Data = new byte[1];
|
_Data = new byte[1];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool GetFrame(ref STexture frame)
|
public bool GetFrame(ref CTexture frame)
|
||||||
{
|
{
|
||||||
if (_Webcam != null && _Width > 0 && _Height > 0 && _Data.Length == _Width * _Height * 4)
|
lock (_MutexData)
|
||||||
{
|
{
|
||||||
lock (_MutexData)
|
if (_Webcam != null && _Width > 0 && _Height > 0 && _Data.Length == _Width * _Height * 4)
|
||||||
{
|
CDraw.UpdateOrAddTexture(ref frame, _Width, _Height, _Data);
|
||||||
if (frame.Index == -1 || _Width != (int)frame.Width || _Height != (int)frame.Height)
|
|
||||||
{
|
|
||||||
CDraw.RemoveTexture(ref frame);
|
|
||||||
frame = CDraw.AddTexture(_Width, _Height, _Data);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
CDraw.UpdateTexture(ref frame, _Data);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -114,19 +106,18 @@ namespace Vocaluxe.Lib.Webcam
|
|||||||
|
|
||||||
private void _OnFrame(object sender, NewFrameEventArgs e)
|
private void _OnFrame(object sender, NewFrameEventArgs e)
|
||||||
{
|
{
|
||||||
if (!_Paused)
|
if (_Paused)
|
||||||
|
return;
|
||||||
|
lock (_MutexData)
|
||||||
{
|
{
|
||||||
lock (_MutexData)
|
if (_Width != e.Frame.Width || _Height != e.Frame.Height || _Data.Length != e.Frame.Width * e.Frame.Height * 4)
|
||||||
{
|
_Data = new byte[4 * e.Frame.Width * e.Frame.Height];
|
||||||
if (_Width != e.Frame.Width || _Height != e.Frame.Height || _Data.Length != e.Frame.Width * e.Frame.Height * 4)
|
|
||||||
_Data = new byte[4 * e.Frame.Width * e.Frame.Height];
|
|
||||||
|
|
||||||
_Width = e.Frame.Width;
|
_Width = e.Frame.Width;
|
||||||
_Height = e.Frame.Height;
|
_Height = e.Frame.Height;
|
||||||
BitmapData bitmapdata = e.Frame.LockBits(new Rectangle(0, 0, _Width, _Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
|
BitmapData bitmapdata = e.Frame.LockBits(new Rectangle(0, 0, _Width, _Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
|
||||||
Marshal.Copy(bitmapdata.Scan0, _Data, 0, _Data.Length);
|
Marshal.Copy(bitmapdata.Scan0, _Data, 0, _Data.Length);
|
||||||
e.Frame.UnlockBits(bitmapdata);
|
e.Frame.UnlockBits(bitmapdata);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,14 +129,13 @@ namespace Vocaluxe.Lib.Webcam
|
|||||||
|
|
||||||
public void Start()
|
public void Start()
|
||||||
{
|
{
|
||||||
if (_Webcam != null)
|
if (_Webcam == null)
|
||||||
{
|
return;
|
||||||
_Webcam.NewFrame -= _OnFrame;
|
_Webcam.NewFrame -= _OnFrame;
|
||||||
//Subscribe to NewFrame event
|
//Subscribe to NewFrame event
|
||||||
_Webcam.NewFrame += _OnFrame;
|
_Webcam.NewFrame += _OnFrame;
|
||||||
_Webcam.Start();
|
_Webcam.Start();
|
||||||
_Paused = false;
|
_Paused = false;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Stop()
|
public void Stop()
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ using System.Collections.Generic;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
|
||||||
|
using System.Drawing;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace Vocaluxe.Lib.Webcam
|
namespace Vocaluxe.Lib.Webcam
|
||||||
{
|
{
|
||||||
struct SWebcamDevice
|
struct SWebcamDevice
|
||||||
@@ -54,7 +57,7 @@ namespace Vocaluxe.Lib.Webcam
|
|||||||
void Stop();
|
void Stop();
|
||||||
void Close();
|
void Close();
|
||||||
|
|
||||||
bool GetFrame(ref STexture frame);
|
bool GetFrame(ref CTexture frame);
|
||||||
Bitmap GetBitmap();
|
Bitmap GetBitmap();
|
||||||
SWebcamConfig GetConfig();
|
SWebcamConfig GetConfig();
|
||||||
SWebcamDevice[] GetDevices();
|
SWebcamDevice[] GetDevices();
|
||||||
|
|||||||
+1
-1
@@ -240,7 +240,7 @@ namespace Vocaluxe
|
|||||||
CController.Close();
|
CController.Close();
|
||||||
CSound.RecordCloseAll();
|
CSound.RecordCloseAll();
|
||||||
CSound.CloseAllStreams();
|
CSound.CloseAllStreams();
|
||||||
CVideo.VdCloseAll();
|
CVideo.CloseAll();
|
||||||
CDraw.Unload();
|
CDraw.Unload();
|
||||||
CDataBase.CloseConnections();
|
CDataBase.CloseConnections();
|
||||||
CWebcam.Close();
|
CWebcam.Close();
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ using System.Windows.Forms;
|
|||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using Vocaluxe.Base.Fonts;
|
using Vocaluxe.Base.Fonts;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Screens
|
namespace Vocaluxe.Screens
|
||||||
@@ -51,8 +52,8 @@ namespace Vocaluxe.Screens
|
|||||||
_Image = image;
|
_Image = image;
|
||||||
_ImgDot = imgDot;
|
_ImgDot = imgDot;
|
||||||
_Particle = particle;
|
_Particle = particle;
|
||||||
_ParticleOffsetX = (int)Math.Round(particleOffsetX * image.Rect.W / image.Texture.Width - particle.Rect.W / 2);
|
_ParticleOffsetX = (int)Math.Round(particleOffsetX * image.Rect.W / image.Texture.OrigSize.Width - particle.Rect.W / 2);
|
||||||
_ParticleOffsetY = (int)Math.Round(particleOffsetY * image.Rect.H / image.Texture.Height - particle.Rect.H / 2);
|
_ParticleOffsetY = (int)Math.Round(particleOffsetY * image.Rect.H / image.Texture.OrigSize.Height - particle.Rect.H / 2);
|
||||||
Active = true;
|
Active = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,21 +128,21 @@ namespace Vocaluxe.Screens
|
|||||||
private List<string[]> _Paragraphs;
|
private List<string[]> _Paragraphs;
|
||||||
private List<CText> _ParagraphTexts;
|
private List<CText> _ParagraphTexts;
|
||||||
|
|
||||||
private STexture _TexLogo;
|
private CTexture _TexLogo;
|
||||||
private STexture _TexPerfectNoteStar;
|
private CTexture _TexPerfectNoteStar;
|
||||||
|
|
||||||
private STexture _TexRedDot;
|
private CTexture _TexRedDot;
|
||||||
private STexture _TexBlueDot;
|
private CTexture _TexBlueDot;
|
||||||
|
|
||||||
private STexture _TexNameBrunzel;
|
private CTexture _TexNameBrunzel;
|
||||||
private STexture _TexNameDarkice;
|
private CTexture _TexNameDarkice;
|
||||||
private STexture _TexNameFlokuep;
|
private CTexture _TexNameFlokuep;
|
||||||
private STexture _TexNameFlamefire;
|
private CTexture _TexNameFlamefire;
|
||||||
private STexture _TexNameMesand;
|
private CTexture _TexNameMesand;
|
||||||
private STexture _TexNameBohning;
|
private CTexture _TexNameBohning;
|
||||||
private STexture _TexNameBabene03;
|
private CTexture _TexNameBabene03;
|
||||||
private STexture _TexNamePantero;
|
private CTexture _TexNamePantero;
|
||||||
private STexture _TexNamePinky007;
|
private CTexture _TexNamePinky007;
|
||||||
|
|
||||||
public override void Init()
|
public override void Init()
|
||||||
{
|
{
|
||||||
@@ -283,12 +284,12 @@ namespace Vocaluxe.Screens
|
|||||||
return GetNewParticleEffect(numStars, partColor, rect, _TexPerfectNoteStar, partSize, EParticleType.Star);
|
return GetNewParticleEffect(numStars, partColor, rect, _TexPerfectNoteStar, partSize, EParticleType.Star);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _AddNewCreditName(STexture texture, int particleOffsetX, int particleOffsetY, bool bigParticles)
|
private void _AddNewCreditName(CTexture texture, int particleOffsetX, int particleOffsetY, bool bigParticles)
|
||||||
{
|
{
|
||||||
bool isRight = _CreditNames.Count % 2 == 0;
|
bool isRight = _CreditNames.Count % 2 == 0;
|
||||||
int partRectSize = bigParticles ? 25 : 20;
|
int partRectSize = bigParticles ? 25 : 20;
|
||||||
int partCount = bigParticles ? 8 : 6;
|
int partCount = bigParticles ? 8 : 6;
|
||||||
STexture texDot = isRight ? _TexRedDot : _TexBlueDot;
|
CTexture texDot = isRight ? _TexRedDot : _TexBlueDot;
|
||||||
|
|
||||||
CStatic image = GetNewStatic(texture, new SColorF(1, 1, 1, 1), new SRectF(-1, -1, 400, 120, -4));
|
CStatic image = GetNewStatic(texture, new SColorF(1, 1, 1, 1), new SRectF(-1, -1, 400, 120, -4));
|
||||||
|
|
||||||
@@ -318,7 +319,8 @@ namespace Vocaluxe.Screens
|
|||||||
base.OnShow();
|
base.OnShow();
|
||||||
|
|
||||||
//Vocaluxe-Logo
|
//Vocaluxe-Logo
|
||||||
_Logo = GetNewStatic(_TexLogo, new SColorF(1, 1, 1, 1), new SRectF((CSettings.RenderW - _TexLogo.Width) / 2, -270, _TexLogo.Width, _TexLogo.Height, -2));
|
_Logo = GetNewStatic(_TexLogo, new SColorF(1, 1, 1, 1),
|
||||||
|
new SRectF((float)(CSettings.RenderW - _TexLogo.OrigSize.Width) / 2, -270, _TexLogo.OrigSize.Width, _TexLogo.OrigSize.Height, -2));
|
||||||
|
|
||||||
//Little stars for logo
|
//Little stars for logo
|
||||||
int numstars = (int)(_Logo.Rect.W * 0.25f / 2f);
|
int numstars = (int)(_Logo.Rect.W * 0.25f / 2f);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
using VocaluxeLib.Profile;
|
using VocaluxeLib.Profile;
|
||||||
|
|
||||||
@@ -55,12 +56,12 @@ namespace Vocaluxe.Screens
|
|||||||
{"EqualizerPlayer1", "EqualizerPlayer2", "EqualizerPlayer3", "EqualizerPlayer4", "EqualizerPlayer5", "EqualizerPlayer6"};
|
{"EqualizerPlayer1", "EqualizerPlayer2", "EqualizerPlayer3", "EqualizerPlayer4", "EqualizerPlayer5", "EqualizerPlayer6"};
|
||||||
private readonly string[] _SelectSlideDuetPlayer = new string[]
|
private readonly string[] _SelectSlideDuetPlayer = new string[]
|
||||||
{"SelectSlideDuetPlayer1", "SelectSlideDuetPlayer2", "SelectSlideDuetPlayer3", "SelectSlideDuetPlayer4", "SelectSlideDuetPlayer5", "SelectSlideDuetPlayer6"};
|
{"SelectSlideDuetPlayer1", "SelectSlideDuetPlayer2", "SelectSlideDuetPlayer3", "SelectSlideDuetPlayer4", "SelectSlideDuetPlayer5", "SelectSlideDuetPlayer6"};
|
||||||
private readonly STexture[] _OriginalPlayerAvatarTextures = new STexture[CSettings.MaxNumPlayer];
|
private readonly CTexture[] _OriginalPlayerAvatarTextures = new CTexture[CSettings.MaxNumPlayer];
|
||||||
|
|
||||||
private bool _SelectingKeyboardActive;
|
private bool _SelectingKeyboardActive;
|
||||||
private bool _SelectingFast;
|
private bool _SelectingFast;
|
||||||
private int _SelectingSwitchNr = -1;
|
private int _SelectingSwitchNr = -1;
|
||||||
private int _SelectingFastPlayerNr = 0;
|
private int _SelectingFastPlayerNr;
|
||||||
private int _SelectedPlayerNr = -1;
|
private int _SelectedPlayerNr = -1;
|
||||||
private bool _AvatarsChanged = false;
|
private bool _AvatarsChanged = false;
|
||||||
private bool _ProfilesChanged = false;
|
private bool _ProfilesChanged = false;
|
||||||
@@ -445,7 +446,7 @@ namespace Vocaluxe.Screens
|
|||||||
CConfig.Players[_SelectingSwitchNr] = string.Empty;
|
CConfig.Players[_SelectingSwitchNr] = string.Empty;
|
||||||
//Update texture and name
|
//Update texture and name
|
||||||
_Statics[_StaticPlayerAvatar[_SelectingSwitchNr]].Texture = _OriginalPlayerAvatarTextures[_SelectingSwitchNr];
|
_Statics[_StaticPlayerAvatar[_SelectingSwitchNr]].Texture = _OriginalPlayerAvatarTextures[_SelectingSwitchNr];
|
||||||
_Texts[_TextPlayer[_SelectingSwitchNr]].Text = CProfiles.GetPlayerName(-1, (_SelectingSwitchNr+1));
|
_Texts[_TextPlayer[_SelectingSwitchNr]].Text = CProfiles.GetPlayerName(-1, (_SelectingSwitchNr + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
CProfile[] profiles = CProfiles.GetProfiles();
|
CProfile[] profiles = CProfiles.GetProfiles();
|
||||||
@@ -467,7 +468,7 @@ namespace Vocaluxe.Screens
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//Selected player is dropped out of area
|
//Selected player is dropped out of area
|
||||||
else if (_SelectingSwitchNr > -1)
|
if (_SelectingSwitchNr > -1)
|
||||||
{
|
{
|
||||||
//Update Game-infos with new player
|
//Update Game-infos with new player
|
||||||
CGame.Players[_SelectingSwitchNr].ProfileID = -1;
|
CGame.Players[_SelectingSwitchNr].ProfileID = -1;
|
||||||
@@ -598,7 +599,7 @@ namespace Vocaluxe.Screens
|
|||||||
else
|
else
|
||||||
stopSelectingFast = true;
|
stopSelectingFast = true;
|
||||||
}
|
}
|
||||||
else if(mouseEvent.MB)
|
else if (mouseEvent.MB)
|
||||||
{
|
{
|
||||||
_ResetPlayerSelections();
|
_ResetPlayerSelections();
|
||||||
_SelectingFast = true;
|
_SelectingFast = true;
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ using Vocaluxe.Base;
|
|||||||
using Vocaluxe.Lib.Webcam;
|
using Vocaluxe.Lib.Webcam;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Screens
|
namespace Vocaluxe.Screens
|
||||||
{
|
{
|
||||||
@@ -46,7 +48,7 @@ namespace Vocaluxe.Screens
|
|||||||
private const string _ButtonExit = "ButtonExit";
|
private const string _ButtonExit = "ButtonExit";
|
||||||
|
|
||||||
private SWebcamConfig _Config;
|
private SWebcamConfig _Config;
|
||||||
private STexture _WebcamTexture = new STexture(-1);
|
private CTexture _WebcamTexture;
|
||||||
private int _DeviceNr;
|
private int _DeviceNr;
|
||||||
private int _CapabilityNr;
|
private int _CapabilityNr;
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ using Vocaluxe.Base;
|
|||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
using VocaluxeLib.Profile;
|
using VocaluxeLib.Profile;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
namespace Vocaluxe.Screens
|
namespace Vocaluxe.Screens
|
||||||
{
|
{
|
||||||
@@ -65,7 +67,7 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
private EEditMode _EditMode;
|
private EEditMode _EditMode;
|
||||||
|
|
||||||
private STexture _WebcamTexture = new STexture(-1);
|
private CTexture _WebcamTexture;
|
||||||
private Bitmap _Snapshot;
|
private Bitmap _Snapshot;
|
||||||
|
|
||||||
public override void Init()
|
public override void Init()
|
||||||
@@ -223,7 +225,7 @@ namespace Vocaluxe.Screens
|
|||||||
{
|
{
|
||||||
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
CProfiles.SetAvatar(_SelectSlides[_SelectSlideProfiles].ValueIndex,
|
||||||
_SelectSlides[_SelectSlideAvatars].ValueIndex);
|
_SelectSlides[_SelectSlideAvatars].ValueIndex);
|
||||||
if (CWebcam.IsDeviceAvailable() && _WebcamTexture.Index > 0)
|
if (CWebcam.IsDeviceAvailable() && _WebcamTexture != null)
|
||||||
_OnDiscardSnapshot();
|
_OnDiscardSnapshot();
|
||||||
}
|
}
|
||||||
else if (_SelectSlides[_SelectSlideGuestProfile].Selected)
|
else if (_SelectSlides[_SelectSlideGuestProfile].Selected)
|
||||||
|
|||||||
@@ -369,7 +369,7 @@ namespace Vocaluxe.Screens
|
|||||||
_Statics[_StaticPointsBarBG[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayer;
|
_Statics[_StaticPointsBarBG[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayer;
|
||||||
_Statics[_StaticAvatar[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayer;
|
_Statics[_StaticAvatar[player, numplayer]].Visible = numplayer + 1 == CGame.NumPlayer;
|
||||||
|
|
||||||
_Statics[_StaticAvatar[player, numplayer]].Texture = new STexture(-1);
|
_Statics[_StaticAvatar[player, numplayer]].Texture = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ using System.Windows.Forms;
|
|||||||
using Vocaluxe.Base;
|
using Vocaluxe.Base;
|
||||||
using Vocaluxe.Base.Fonts;
|
using Vocaluxe.Base.Fonts;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu;
|
using VocaluxeLib.Menu;
|
||||||
using VocaluxeLib.Menu.SingNotes;
|
using VocaluxeLib.Menu.SingNotes;
|
||||||
using VocaluxeLib.Menu.SongMenu;
|
using VocaluxeLib.Menu.SongMenu;
|
||||||
@@ -101,9 +102,9 @@ namespace Vocaluxe.Screens
|
|||||||
private const float _Volume = 100f;
|
private const float _Volume = 100f;
|
||||||
private int _CurrentVideo = -1;
|
private int _CurrentVideo = -1;
|
||||||
private EAspect _VideoAspect = EAspect.Crop;
|
private EAspect _VideoAspect = EAspect.Crop;
|
||||||
private STexture _CurrentVideoTexture = new STexture(-1);
|
private CTexture _CurrentVideoTexture;
|
||||||
private STexture _CurrentWebcamFrameTexture = new STexture(-1);
|
private CTexture _CurrentWebcamFrameTexture;
|
||||||
private STexture _Background = new STexture(-1);
|
private CTexture _Background;
|
||||||
|
|
||||||
private float _CurrentTime;
|
private float _CurrentTime;
|
||||||
private float _FinishTime;
|
private float _FinishTime;
|
||||||
@@ -400,7 +401,7 @@ namespace Vocaluxe.Screens
|
|||||||
if (_CurrentVideo != -1 && !_FadeOut && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON)
|
if (_CurrentVideo != -1 && !_FadeOut && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON)
|
||||||
{
|
{
|
||||||
float vtime;
|
float vtime;
|
||||||
CVideo.VdGetFrame(_CurrentVideo, ref _CurrentVideoTexture, _CurrentTime, out vtime);
|
CVideo.GetFrame(_CurrentVideo, ref _CurrentVideoTexture, _CurrentTime, out vtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_Webcam)
|
if (_Webcam)
|
||||||
@@ -416,8 +417,8 @@ namespace Vocaluxe.Screens
|
|||||||
_FadeOut = false;
|
_FadeOut = false;
|
||||||
|
|
||||||
_CurrentVideo = -1;
|
_CurrentVideo = -1;
|
||||||
_CurrentVideoTexture = new STexture(-1);
|
_CurrentVideoTexture = null;
|
||||||
_CurrentWebcamFrameTexture = new STexture(-1);
|
_CurrentWebcamFrameTexture = null;
|
||||||
_CurrentBeat = -100;
|
_CurrentBeat = -100;
|
||||||
_CurrentTime = 0f;
|
_CurrentTime = 0f;
|
||||||
_FinishTime = 0f;
|
_FinishTime = 0f;
|
||||||
@@ -458,33 +459,27 @@ namespace Vocaluxe.Screens
|
|||||||
{
|
{
|
||||||
if (_Active)
|
if (_Active)
|
||||||
{
|
{
|
||||||
|
CTexture background;
|
||||||
|
EAspect aspect = EAspect.Crop;
|
||||||
if (_CurrentVideo != -1 && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON && !_Webcam)
|
if (_CurrentVideo != -1 && CConfig.VideosInSongs == EOffOn.TR_CONFIG_ON && !_Webcam)
|
||||||
{
|
{
|
||||||
RectangleF bounds = new RectangleF(0, 0, CSettings.RenderW, CSettings.RenderH);
|
background = _CurrentVideoTexture;
|
||||||
RectangleF rect = new RectangleF(0f, 0f, _CurrentVideoTexture.Width, _CurrentVideoTexture.Height);
|
aspect = _VideoAspect;
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, _VideoAspect);
|
|
||||||
|
|
||||||
CDraw.DrawTexture(_CurrentVideoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, 0f),
|
|
||||||
_CurrentVideoTexture.Color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false);
|
|
||||||
}
|
}
|
||||||
else if (_Webcam)
|
else if (_Webcam)
|
||||||
{
|
{
|
||||||
RectangleF bounds = new RectangleF(0, 0, CSettings.RenderW, CSettings.RenderH);
|
background = _CurrentWebcamFrameTexture;
|
||||||
RectangleF rect = new RectangleF(0f, 0f, _CurrentWebcamFrameTexture.Width, _CurrentWebcamFrameTexture.Height);
|
aspect = _VideoAspect;
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, _VideoAspect);
|
|
||||||
|
|
||||||
CDraw.DrawTexture(_CurrentWebcamFrameTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, 0f),
|
|
||||||
_CurrentVideoTexture.Color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
background = _Background;
|
||||||
|
if (background != null)
|
||||||
{
|
{
|
||||||
// Draw Background
|
|
||||||
RectangleF bounds = new RectangleF(0, 0, CSettings.RenderW, CSettings.RenderH);
|
RectangleF bounds = new RectangleF(0, 0, CSettings.RenderW, CSettings.RenderH);
|
||||||
RectangleF rect = new RectangleF(0f, 0f, _Background.Width, _Background.Height);
|
RectangleF rect;
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, EAspect.Crop);
|
CHelper.SetRect(bounds, out rect, background.OrigAspect, aspect);
|
||||||
|
CDraw.DrawTexture(background, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, 0f),
|
||||||
CDraw.DrawTexture(_Background, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, 0f),
|
background.Color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f));
|
||||||
_Background.Color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -561,7 +556,7 @@ namespace Vocaluxe.Screens
|
|||||||
CSound.RecordStop();
|
CSound.RecordStop();
|
||||||
if (_CurrentVideo != -1)
|
if (_CurrentVideo != -1)
|
||||||
{
|
{
|
||||||
CVideo.VdClose(_CurrentVideo);
|
CVideo.Close(_CurrentVideo);
|
||||||
_CurrentVideo = -1;
|
_CurrentVideo = -1;
|
||||||
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
||||||
}
|
}
|
||||||
@@ -624,15 +619,15 @@ namespace Vocaluxe.Screens
|
|||||||
|
|
||||||
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
CDraw.RemoveTexture(ref _CurrentVideoTexture);
|
||||||
|
|
||||||
if (song.VideoFileName != "")
|
if (!String.IsNullOrEmpty(song.VideoFileName))
|
||||||
{
|
{
|
||||||
_CurrentVideo = CVideo.VdLoad(Path.Combine(song.Folder, song.VideoFileName));
|
_CurrentVideo = CVideo.Load(Path.Combine(song.Folder, song.VideoFileName));
|
||||||
CVideo.VdSkip(_CurrentVideo, song.Start, song.VideoGap);
|
CVideo.Skip(_CurrentVideo, song.Start, song.VideoGap);
|
||||||
_VideoAspect = song.VideoAspect;
|
_VideoAspect = song.VideoAspect;
|
||||||
}
|
}
|
||||||
|
|
||||||
CDraw.RemoveTexture(ref _Background);
|
CDraw.RemoveTexture(ref _Background);
|
||||||
if (song.BackgroundFileName != "")
|
if (!String.IsNullOrEmpty(song.BackgroundFileName))
|
||||||
_Background = CDraw.AddTexture(Path.Combine(song.Folder, song.BackgroundFileName));
|
_Background = CDraw.AddTexture(Path.Combine(song.Folder, song.BackgroundFileName));
|
||||||
|
|
||||||
_SingNotes[_SingBars].Reset();
|
_SingNotes[_SingBars].Reset();
|
||||||
@@ -705,8 +700,8 @@ namespace Vocaluxe.Screens
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bool lyricsOnTop = CConfig.LyricsPosition == ELyricsPosition.TR_CONFIG_LYRICSPOSITION_TOP
|
bool lyricsOnTop = CConfig.LyricsPosition == ELyricsPosition.TR_CONFIG_LYRICSPOSITION_TOP
|
||||||
|| CConfig.LyricsPosition == ELyricsPosition.TR_CONFIG_LYRICSPOSITION_BOTH
|
|| CConfig.LyricsPosition == ELyricsPosition.TR_CONFIG_LYRICSPOSITION_BOTH
|
||||||
|| (CConfig.LyricsPosition == ELyricsPosition.TR_CONFIG_LYRICSPOSITION_DYNAMIC && _DynamicLyricsTop);
|
|| (CConfig.LyricsPosition == ELyricsPosition.TR_CONFIG_LYRICSPOSITION_DYNAMIC && _DynamicLyricsTop);
|
||||||
_Lyrics[_LyricMainTop].Visible = lyricsOnTop;
|
_Lyrics[_LyricMainTop].Visible = lyricsOnTop;
|
||||||
_Lyrics[_LyricSubTop].Visible = lyricsOnTop;
|
_Lyrics[_LyricSubTop].Visible = lyricsOnTop;
|
||||||
@@ -1377,7 +1372,7 @@ namespace Vocaluxe.Screens
|
|||||||
foreach (CLine line in voice.Lines.Where(line => line.VisibleInTimeLine))
|
foreach (CLine line in voice.Lines.Where(line => line.VisibleInTimeLine))
|
||||||
{
|
{
|
||||||
STimeRect trect = new STimeRect {StartBeat = line.FirstNoteBeat, EndBeat = line.EndBeat};
|
STimeRect trect = new STimeRect {StartBeat = line.FirstNoteBeat, EndBeat = line.EndBeat};
|
||||||
trect.Rect = GetNewStatic(new STexture(-1),
|
trect.Rect = GetNewStatic(null,
|
||||||
new SColorF(1f, 1f, 1f, 1f),
|
new SColorF(1f, 1f, 1f, 1f),
|
||||||
new SRectF(
|
new SRectF(
|
||||||
stat.Rect.X + stat.Rect.W * ((CGame.GetTimeFromBeats(trect.StartBeat, song.BPM) + song.Gap - song.Start) / totalTime),
|
stat.Rect.X + stat.Rect.W * ((CGame.GetTimeFromBeats(trect.StartBeat, song.BPM) + song.Gap - song.Start) / totalTime),
|
||||||
|
|||||||
@@ -42,17 +42,17 @@ namespace Vocaluxe.Screens
|
|||||||
base.Init();
|
base.Init();
|
||||||
const string test = "Ö ÄÜabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPGRSTUVWGXZ1234567890";
|
const string test = "Ö ÄÜabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPGRSTUVWGXZ1234567890";
|
||||||
SColorF color = new SColorF(1, 0, 0, 1);
|
SColorF color = new SColorF(1, 0, 0, 1);
|
||||||
CText text = new CText(10, 50, 1, 32, 0, EAlignment.Left, EStyle.Normal, "Normal", color, "jÄNormal Text" + test, -1, 26, 0);
|
CText text = new CText(10, 50, 1, 32, 0, EAlignment.Left, EStyle.Normal, "Normal", color, "jÄNormal Text" + test, -1, 26, 1);
|
||||||
_AddText(text);
|
_AddText(text);
|
||||||
text = new CText(10, 90, 1, 32, 0, EAlignment.Left, EStyle.Bold, "Normal", color, "jÄBold Text" + test, -1, 26, 0);
|
text = new CText(10, 90, 1, 32, 0, EAlignment.Left, EStyle.Bold, "Normal", color, "jÄBold Text" + test, -1, 26, 1);
|
||||||
_AddText(text);
|
_AddText(text);
|
||||||
text = new CText(10, 130, 1, 32, 0, EAlignment.Left, EStyle.Italic, "Normal", color, "jÄItalic Text" + test, -1, 26, 0);
|
text = new CText(10, 130, 1, 32, 0, EAlignment.Left, EStyle.Italic, "Normal", color, "jÄItalic Text" + test, -1, 26, 1);
|
||||||
_AddText(text);
|
_AddText(text);
|
||||||
text = new CText(10, 170, 1, 32, 0, EAlignment.Left, EStyle.Normal, "Outline", color, "jÄNormal Text" + test, -1, 50, 0);
|
text = new CText(10, 170, 1, 32, 0, EAlignment.Left, EStyle.Normal, "Outline", color, "jÄNormal Text" + test, -1, 50, 1);
|
||||||
_AddText(text);
|
_AddText(text);
|
||||||
text = new CText(10, 210, 1, 32, 0, EAlignment.Left, EStyle.Bold, "Outline", color, "jÄBold Text" + test, -1, 100, 0);
|
text = new CText(10, 210, 1, 32, 0, EAlignment.Left, EStyle.Bold, "Outline", color, "jÄBold Text" + test, -1, 100, 1);
|
||||||
_AddText(text);
|
_AddText(text);
|
||||||
text = new CText(10, 250, 1, 32, 0, EAlignment.Left, EStyle.Italic, "Outline", color, "jÄItalic Text" + test, -1, 150, 0);
|
text = new CText(10, 250, 1, 32, 0, EAlignment.Left, EStyle.Italic, "Outline", color, "jÄItalic Text" + test, -1, 150, 1);
|
||||||
_AddText(text);
|
_AddText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -178,6 +178,7 @@
|
|||||||
<Compile Include="Base\CBackgroundMusic.cs" />
|
<Compile Include="Base\CBackgroundMusic.cs" />
|
||||||
<Compile Include="Base\CConfig.cs" />
|
<Compile Include="Base\CConfig.cs" />
|
||||||
<Compile Include="Base\CCover.cs" />
|
<Compile Include="Base\CCover.cs" />
|
||||||
|
<Compile Include="Base\CCursor.cs" />
|
||||||
<Compile Include="Base\CDataBase.cs" />
|
<Compile Include="Base\CDataBase.cs" />
|
||||||
<Compile Include="Base\CDraw.cs" />
|
<Compile Include="Base\CDraw.cs" />
|
||||||
<Compile Include="Base\Fonts\CFont.cs" />
|
<Compile Include="Base\Fonts\CFont.cs" />
|
||||||
|
|||||||
+18
-21
@@ -91,9 +91,9 @@ namespace VocaluxeLib
|
|||||||
|
|
||||||
public static void SetRect(RectangleF bounds, out RectangleF rect, float rectAspect, EAspect aspect)
|
public static void SetRect(RectangleF bounds, out RectangleF rect, float rectAspect, EAspect aspect)
|
||||||
{
|
{
|
||||||
float rW = bounds.Right - bounds.Left;
|
float boundsW = bounds.Width;
|
||||||
float rH = bounds.Bottom - bounds.Top;
|
float boundsH = bounds.Height;
|
||||||
float rA = rW / rH;
|
float boundsAspect = boundsW / boundsH;
|
||||||
|
|
||||||
float scaledWidth;
|
float scaledWidth;
|
||||||
float scaledHeight;
|
float scaledHeight;
|
||||||
@@ -101,42 +101,39 @@ namespace VocaluxeLib
|
|||||||
switch (aspect)
|
switch (aspect)
|
||||||
{
|
{
|
||||||
case EAspect.Crop:
|
case EAspect.Crop:
|
||||||
if (rA >= rectAspect)
|
if (boundsAspect >= rectAspect)
|
||||||
{
|
{
|
||||||
scaledWidth = rW;
|
scaledWidth = boundsW;
|
||||||
scaledHeight = rH * rA / rectAspect;
|
scaledHeight = boundsW / rectAspect;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
scaledHeight = rH;
|
scaledHeight = boundsH;
|
||||||
scaledWidth = rW * rectAspect / rA;
|
scaledWidth = boundsH * rectAspect;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EAspect.LetterBox:
|
case EAspect.LetterBox:
|
||||||
if (rectAspect >= 1)
|
if (boundsAspect <= rectAspect)
|
||||||
{
|
{
|
||||||
scaledWidth = rW;
|
scaledWidth = boundsW;
|
||||||
scaledHeight = rH * rA / rectAspect;
|
scaledHeight = boundsW / rectAspect;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
scaledHeight = rH;
|
scaledHeight = boundsH;
|
||||||
scaledWidth = rW * rectAspect / rA;
|
scaledWidth = boundsH * rectAspect;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
scaledWidth = rW;
|
scaledWidth = boundsW;
|
||||||
scaledHeight = rH;
|
scaledHeight = boundsH;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
float left = (rW - scaledWidth) / 2 + bounds.Left;
|
float left = (boundsW - scaledWidth) / 2 + bounds.Left;
|
||||||
float rigth = left + scaledWidth;
|
float upper = (boundsH - scaledHeight) / 2 + bounds.Top;
|
||||||
|
|
||||||
float upper = (rH - scaledHeight) / 2 + bounds.Top;
|
rect = new RectangleF(left, upper, scaledWidth, scaledHeight);
|
||||||
float lower = upper + scaledHeight;
|
|
||||||
|
|
||||||
rect = new RectangleF(left, upper, rigth - left, lower - upper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<string> ListFiles(string path, string cast, bool recursive = false, bool fullpath = false)
|
public static List<string> ListFiles(string path, string cast, bool recursive = false, bool fullpath = false)
|
||||||
|
|||||||
@@ -0,0 +1,133 @@
|
|||||||
|
using System.Drawing;
|
||||||
|
using VocaluxeLib.Menu;
|
||||||
|
|
||||||
|
namespace VocaluxeLib.Draw
|
||||||
|
{
|
||||||
|
public class CTexture
|
||||||
|
{
|
||||||
|
public int ID = -1;
|
||||||
|
public int PBO;
|
||||||
|
//Only used by OpenGL (the texture "name" according to the specs)
|
||||||
|
public int Name = -1;
|
||||||
|
|
||||||
|
public string TexturePath = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Original size (e.g. of bmp)
|
||||||
|
/// </summary>
|
||||||
|
public readonly Size OrigSize;
|
||||||
|
public float OrigAspect
|
||||||
|
{
|
||||||
|
get { return (float)OrigSize.Width / OrigSize.Height; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Current size when drawn
|
||||||
|
/// </summary>
|
||||||
|
public SRectF Rect;
|
||||||
|
|
||||||
|
public SColorF Color = new SColorF(1f, 1f, 1f, 1f);
|
||||||
|
|
||||||
|
private int _W2, _H2;
|
||||||
|
private readonly bool _UseFullTexture;
|
||||||
|
/// <summary>
|
||||||
|
/// Internal texture width (on device), a power of 2 if necessary
|
||||||
|
/// </summary>
|
||||||
|
public int W2
|
||||||
|
{
|
||||||
|
get { return _W2; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_W2 = value;
|
||||||
|
if (_UseFullTexture)
|
||||||
|
WidthRatio = 1;
|
||||||
|
else
|
||||||
|
WidthRatio = (float)OrigSize.Width / _W2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Internal texture height (on device), a power of 2 if necessary
|
||||||
|
/// </summary>
|
||||||
|
public int H2
|
||||||
|
{
|
||||||
|
get { return _H2; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_H2 = value;
|
||||||
|
if (_UseFullTexture)
|
||||||
|
HeightRatio = 1;
|
||||||
|
else
|
||||||
|
HeightRatio = (float)OrigSize.Height / _H2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Internal use. Specifies which part of texture memory is actually used
|
||||||
|
/// </summary>
|
||||||
|
public float WidthRatio { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Internal use. Specifies which part of texture memory is actually used
|
||||||
|
/// </summary>
|
||||||
|
public float HeightRatio { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Actual texture space used in x direction
|
||||||
|
/// </summary>
|
||||||
|
public int UsedWidth
|
||||||
|
{
|
||||||
|
get { return (int)(_W2 * WidthRatio); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Actual texture space used in y direction
|
||||||
|
/// </summary>
|
||||||
|
public int UsedHeight
|
||||||
|
{
|
||||||
|
get { return (int)(_H2 * HeightRatio); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
/// <summary>
|
||||||
|
/// Internal use. Specifies if full texture memory should be used
|
||||||
|
/// Set to true if you resized the original image to the maximum
|
||||||
|
/// </summary>
|
||||||
|
public bool UseFullTexture
|
||||||
|
{
|
||||||
|
get { return _UseFullTexture; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_UseFullTexture = value;
|
||||||
|
if (value)
|
||||||
|
{
|
||||||
|
WidthRatio = 1;
|
||||||
|
HeightRatio = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WidthRatio = (float)OrigSize.Width / _W2;
|
||||||
|
HeightRatio = (float)OrigSize.Height / _H2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a new texture reference
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="origWidth">Original width (Bitmap size)</param>
|
||||||
|
/// <param name="origHeight">Original height (Bitmap size)</param>
|
||||||
|
/// <param name="texWidth">Width in video memory</param>
|
||||||
|
/// <param name="texHeight">Height in video memory</param>
|
||||||
|
/// <param name="useFullTexture">True if it is using the full size of the video memory (no blank parts due to Pow-2-Issue)</param>
|
||||||
|
public CTexture(int origWidth, int origHeight, int texWidth = 0, int texHeight = 0, bool useFullTexture = false)
|
||||||
|
{
|
||||||
|
OrigSize = new Size(origWidth, origHeight);
|
||||||
|
Rect = new SRectF(0f, 0f, origWidth, origHeight, 0f);
|
||||||
|
_UseFullTexture = useFullTexture;
|
||||||
|
|
||||||
|
//IMPORTANT: Use setter here to calculate ratios!
|
||||||
|
W2 = (texWidth > 0) ? texWidth : origWidth;
|
||||||
|
H2 = (texHeight > 0) ? texHeight : origHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace VocaluxeLib.Menu
|
namespace VocaluxeLib.Menu
|
||||||
{
|
{
|
||||||
@@ -118,7 +119,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: Background color for type \"Color\" from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: Background color for type \"Color\" from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -139,13 +140,13 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void Resume()
|
public void Resume()
|
||||||
{
|
{
|
||||||
if (_Theme.Type == EBackgroundTypes.Video && _Theme.VideoName != "" && CBase.Config.GetVideoBackgrounds() == EOffOn.TR_CONFIG_ON)
|
if (_Theme.Type == EBackgroundTypes.Video && !String.IsNullOrEmpty(_Theme.VideoName) && CBase.Config.GetVideoBackgrounds() == EOffOn.TR_CONFIG_ON)
|
||||||
CBase.Theme.SkinVideoResume(_Theme.VideoName, _PartyModeID);
|
CBase.Theme.SkinVideoResume(_Theme.VideoName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Pause()
|
public void Pause()
|
||||||
{
|
{
|
||||||
if (_Theme.VideoName != "")
|
if (!String.IsNullOrEmpty(_Theme.VideoName))
|
||||||
CBase.Theme.SkinVideoPause(_Theme.VideoName, _PartyModeID);
|
CBase.Theme.SkinVideoPause(_Theme.VideoName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +166,7 @@ namespace VocaluxeLib.Menu
|
|||||||
ok = _DrawVideo();
|
ok = _DrawVideo();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_Theme.TextureName != "" &&
|
if (!String.IsNullOrEmpty(_Theme.TextureName) &&
|
||||||
(_Theme.Type == EBackgroundTypes.Texture ||
|
(_Theme.Type == EBackgroundTypes.Texture ||
|
||||||
(_Theme.Type == EBackgroundTypes.Video && (CBase.Config.GetVideoBackgrounds() == EOffOn.TR_CONFIG_OFF || !ok))))
|
(_Theme.Type == EBackgroundTypes.Video && (CBase.Config.GetVideoBackgrounds() == EOffOn.TR_CONFIG_OFF || !ok))))
|
||||||
ok = _DrawTexture();
|
ok = _DrawTexture();
|
||||||
@@ -181,7 +182,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void LoadTextures()
|
public void LoadTextures()
|
||||||
{
|
{
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,12 +203,12 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
private bool _DrawTexture()
|
private bool _DrawTexture()
|
||||||
{
|
{
|
||||||
STexture texture = CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
CTexture texture = CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
||||||
if (texture.Height > 0)
|
if (texture != null)
|
||||||
{
|
{
|
||||||
RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
|
RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
|
||||||
RectangleF rect = new RectangleF(0f, 0f, texture.Width, texture.Height);
|
RectangleF rect;
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, EAspect.Crop);
|
CHelper.SetRect(bounds, out rect, texture.OrigAspect, EAspect.Crop);
|
||||||
|
|
||||||
CBase.Drawing.DrawTexture(texture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CBase.Settings.GetZFar() / 4));
|
CBase.Drawing.DrawTexture(texture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CBase.Settings.GetZFar() / 4));
|
||||||
return true;
|
return true;
|
||||||
@@ -217,12 +218,12 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
private bool _DrawVideo()
|
private bool _DrawVideo()
|
||||||
{
|
{
|
||||||
STexture videoTexture = CBase.Theme.GetSkinVideoTexture(_Theme.VideoName, _PartyModeID);
|
CTexture videoTexture = CBase.Theme.GetSkinVideoTexture(_Theme.VideoName, _PartyModeID);
|
||||||
if (videoTexture.Height > 0)
|
if (videoTexture != null)
|
||||||
{
|
{
|
||||||
RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
|
RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
|
||||||
RectangleF rect = new RectangleF(0f, 0f, videoTexture.Width, videoTexture.Height);
|
RectangleF rect;
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, EAspect.Crop);
|
CHelper.SetRect(bounds, out rect, videoTexture.OrigAspect, EAspect.Crop);
|
||||||
|
|
||||||
CBase.Drawing.DrawTexture(videoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CBase.Settings.GetZFar() / 4));
|
CBase.Drawing.DrawTexture(videoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CBase.Settings.GetZFar() / 4));
|
||||||
return true;
|
return true;
|
||||||
@@ -232,12 +233,12 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
private bool _DrawBackgroundMusicVideo()
|
private bool _DrawBackgroundMusicVideo()
|
||||||
{
|
{
|
||||||
STexture videoTexture = CBase.BackgroundMusic.GetVideoTexture();
|
CTexture videoTexture = CBase.BackgroundMusic.GetVideoTexture();
|
||||||
if (videoTexture.Height > 0)
|
if (videoTexture != null)
|
||||||
{
|
{
|
||||||
RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
|
RectangleF bounds = new RectangleF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH());
|
||||||
RectangleF rect = new RectangleF(0f, 0f, videoTexture.Width, videoTexture.Height);
|
RectangleF rect;
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, EAspect.Crop);
|
CHelper.SetRect(bounds, out rect, videoTexture.OrigAspect, EAspect.Crop);
|
||||||
|
|
||||||
CBase.Drawing.DrawTexture(videoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CBase.Settings.GetZFar() / 4));
|
CBase.Drawing.DrawTexture(videoTexture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CBase.Settings.GetZFar() / 4));
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
+13
-33
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace VocaluxeLib.Menu
|
namespace VocaluxeLib.Menu
|
||||||
{
|
{
|
||||||
@@ -39,8 +40,8 @@ namespace VocaluxeLib.Menu
|
|||||||
private bool _ThemeLoaded;
|
private bool _ThemeLoaded;
|
||||||
private readonly int _PartyModeID;
|
private readonly int _PartyModeID;
|
||||||
|
|
||||||
public STexture Texture;
|
public CTexture Texture;
|
||||||
public STexture SelTexture;
|
public CTexture SelTexture;
|
||||||
public SRectF Rect;
|
public SRectF Rect;
|
||||||
public SColorF Color;
|
public SColorF Color;
|
||||||
public SColorF SelColor;
|
public SColorF SelColor;
|
||||||
@@ -79,8 +80,8 @@ namespace VocaluxeLib.Menu
|
|||||||
Text.Selected = value;
|
Text.Selected = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public bool Visible;
|
public bool Visible = true;
|
||||||
public bool Enabled;
|
public bool Enabled = true;
|
||||||
|
|
||||||
public string GetThemeName()
|
public string GetThemeName()
|
||||||
{
|
{
|
||||||
@@ -90,28 +91,10 @@ namespace VocaluxeLib.Menu
|
|||||||
public CButton(int partyModeID)
|
public CButton(int partyModeID)
|
||||||
{
|
{
|
||||||
_PartyModeID = partyModeID;
|
_PartyModeID = partyModeID;
|
||||||
_Theme = new SThemeButton();
|
|
||||||
Rect = new SRectF();
|
|
||||||
Color = new SColorF();
|
|
||||||
SelColor = new SColorF();
|
|
||||||
Texture = new STexture(-1);
|
|
||||||
SelTexture = new STexture(-1);
|
|
||||||
|
|
||||||
_IsSelText = false;
|
|
||||||
Text = new CText(_PartyModeID);
|
Text = new CText(_PartyModeID);
|
||||||
_SelText = new CText(_PartyModeID);
|
_SelText = new CText(_PartyModeID);
|
||||||
Selected = false;
|
Selected = false;
|
||||||
Visible = true;
|
|
||||||
EditMode = false;
|
EditMode = false;
|
||||||
Enabled = true;
|
|
||||||
|
|
||||||
_Reflection = false;
|
|
||||||
_ReflectionSpace = 0f;
|
|
||||||
_ReflectionHeight = 0f;
|
|
||||||
|
|
||||||
_SelReflection = false;
|
|
||||||
_SelReflectionSpace = 0f;
|
|
||||||
_SelReflectionHeight = 0f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CButton(CButton button)
|
public CButton(CButton button)
|
||||||
@@ -131,13 +114,10 @@ namespace VocaluxeLib.Menu
|
|||||||
Texture = button.Texture;
|
Texture = button.Texture;
|
||||||
SelTexture = button.SelTexture;
|
SelTexture = button.SelTexture;
|
||||||
|
|
||||||
_IsSelText = false;
|
|
||||||
Text = new CText(button.Text);
|
Text = new CText(button.Text);
|
||||||
_SelText = new CText(button._SelText);
|
_SelText = new CText(button._SelText);
|
||||||
Selected = false;
|
Selected = false;
|
||||||
Visible = true;
|
|
||||||
EditMode = false;
|
EditMode = false;
|
||||||
_ThemeLoaded = false;
|
|
||||||
Enabled = button.Enabled;
|
Enabled = button.Enabled;
|
||||||
|
|
||||||
_Reflection = button._Reflection;
|
_Reflection = button._Reflection;
|
||||||
@@ -241,7 +221,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: Button color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: Button color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -253,7 +233,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<SColor>: Selected button color from ColorScheme (high priority)");
|
writer.WriteComment("<SColor>: Selected button color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <SR>, <SG>, <SB>, <SA> (lower priority)");
|
writer.WriteComment("or <SR>, <SG>, <SB>, <SA> (lower priority)");
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
writer.WriteElementString("SColor", _Theme.SelColorName);
|
writer.WriteElementString("SColor", _Theme.SelColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -301,11 +281,11 @@ namespace VocaluxeLib.Menu
|
|||||||
if (!Visible && CBase.Settings.GetGameState() != EGameState.EditTheme && !forceDraw)
|
if (!Visible && CBase.Settings.GetGameState() != EGameState.EditTheme && !forceDraw)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
STexture texture;
|
CTexture texture;
|
||||||
|
|
||||||
if (!Selected && !Pressed || !Enabled)
|
if (!Selected && !Pressed || !Enabled)
|
||||||
{
|
{
|
||||||
texture = Texture.Index != -1 ? Texture : CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
texture = Texture ?? CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
||||||
|
|
||||||
CBase.Drawing.DrawTexture(texture, Rect, Color);
|
CBase.Drawing.DrawTexture(texture, Rect, Color);
|
||||||
|
|
||||||
@@ -319,7 +299,7 @@ namespace VocaluxeLib.Menu
|
|||||||
}
|
}
|
||||||
else if (!_IsSelText)
|
else if (!_IsSelText)
|
||||||
{
|
{
|
||||||
texture = Texture.Index != -1 ? Texture : CBase.Theme.GetSkinTexture(_Theme.SelTextureName, _PartyModeID);
|
texture = Texture ?? CBase.Theme.GetSkinTexture(_Theme.SelTextureName, _PartyModeID);
|
||||||
|
|
||||||
CBase.Drawing.DrawTexture(texture, Rect, SelColor);
|
CBase.Drawing.DrawTexture(texture, Rect, SelColor);
|
||||||
|
|
||||||
@@ -333,7 +313,7 @@ namespace VocaluxeLib.Menu
|
|||||||
}
|
}
|
||||||
else if (_IsSelText)
|
else if (_IsSelText)
|
||||||
{
|
{
|
||||||
texture = SelTexture.Index != -1 ? SelTexture : CBase.Theme.GetSkinTexture(_Theme.SelTextureName, _PartyModeID);
|
texture = SelTexture ?? CBase.Theme.GetSkinTexture(_Theme.SelTextureName, _PartyModeID);
|
||||||
|
|
||||||
CBase.Drawing.DrawTexture(texture, Rect, SelColor);
|
CBase.Drawing.DrawTexture(texture, Rect, SelColor);
|
||||||
|
|
||||||
@@ -361,10 +341,10 @@ namespace VocaluxeLib.Menu
|
|||||||
{
|
{
|
||||||
Text.LoadTextures();
|
Text.LoadTextures();
|
||||||
|
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
SelColor = CBase.Theme.GetColor(_Theme.SelColorName, _PartyModeID);
|
SelColor = CBase.Theme.GetColor(_Theme.SelColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: Equalizer color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: Equalizer color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -186,7 +186,7 @@ namespace VocaluxeLib.Menu
|
|||||||
}
|
}
|
||||||
writer.WriteComment("<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)");
|
writer.WriteComment("<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)");
|
writer.WriteComment("or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("MaxColor", _Theme.ColorName);
|
writer.WriteElementString("MaxColor", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -274,10 +274,10 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void LoadTextures()
|
public void LoadTextures()
|
||||||
{
|
{
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.MaxColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.MaxColorName))
|
||||||
MaxColor = CBase.Theme.GetColor(_Theme.MaxColorName, _PartyModeID);
|
MaxColor = CBase.Theme.GetColor(_Theme.MaxColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: Lyric text color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: Lyric text color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -184,7 +184,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<SColor>: Highlighted lyric color from ColorScheme (high priority)");
|
writer.WriteComment("<SColor>: Highlighted lyric color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <SR>, <SG>, <SB>, <SA> (lower priority)");
|
writer.WriteComment("or <SR>, <SG>, <SB>, <SA> (lower priority)");
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
writer.WriteElementString("SColor", _Theme.SelColorName);
|
writer.WriteElementString("SColor", _Theme.SelColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -521,10 +521,10 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void LoadTextures()
|
public void LoadTextures()
|
||||||
{
|
{
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
_Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
_Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
_ColorProcessed = CBase.Theme.GetColor(_Theme.SelColorName, _PartyModeID);
|
_ColorProcessed = CBase.Theme.GetColor(_Theme.SelColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ using System.IO;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu.SingNotes;
|
using VocaluxeLib.Menu.SingNotes;
|
||||||
using VocaluxeLib.Menu.SongMenu;
|
using VocaluxeLib.Menu.SongMenu;
|
||||||
|
|
||||||
@@ -478,7 +479,7 @@ namespace VocaluxeLib.Menu
|
|||||||
return new CStatic(oldStatic);
|
return new CStatic(oldStatic);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CStatic GetNewStatic(STexture texture, SColorF color, SRectF rect)
|
public CStatic GetNewStatic(CTexture texture, SColorF color, SRectF rect)
|
||||||
{
|
{
|
||||||
return new CStatic(_PartyModeID, texture, color, rect);
|
return new CStatic(_PartyModeID, texture, color, rect);
|
||||||
}
|
}
|
||||||
@@ -523,7 +524,7 @@ namespace VocaluxeLib.Menu
|
|||||||
return new CPlaylist(_PartyModeID);
|
return new CPlaylist(_PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CParticleEffect GetNewParticleEffect(int maxNumber, SColorF color, SRectF area, STexture texture, float size, EParticleType type)
|
public CParticleEffect GetNewParticleEffect(int maxNumber, SColorF color, SRectF area, CTexture texture, float size, EParticleType type)
|
||||||
{
|
{
|
||||||
return new CParticleEffect(_PartyModeID, maxNumber, color, area, texture, size, type);
|
return new CParticleEffect(_PartyModeID, maxNumber, color, area, texture, size, type);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
using VocaluxeLib.Profile;
|
using VocaluxeLib.Profile;
|
||||||
|
|
||||||
@@ -71,8 +72,8 @@ namespace VocaluxeLib.Menu
|
|||||||
public SRectF Rect;
|
public SRectF Rect;
|
||||||
private readonly List<CTile> _Tiles;
|
private readonly List<CTile> _Tiles;
|
||||||
|
|
||||||
private STexture _TextureEmptyTile;
|
private CTexture _TextureEmptyTile;
|
||||||
private STexture _TextureTileSelected;
|
private CTexture _TextureTileSelected;
|
||||||
|
|
||||||
public SColorF ColorEmptyTile;
|
public SColorF ColorEmptyTile;
|
||||||
|
|
||||||
@@ -194,7 +195,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<ColorEmptyTile>: Static color from ColorScheme (high priority)");
|
writer.WriteComment("<ColorEmptyTile>: Static color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorEmptyTileName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorEmptyTileName))
|
||||||
writer.WriteElementString("ColorEmptyTile", _Theme.ColorEmptyTileName);
|
writer.WriteElementString("ColorEmptyTile", _Theme.ColorEmptyTileName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -225,7 +226,7 @@ namespace VocaluxeLib.Menu
|
|||||||
writer.WriteComment("<Font>: Text font name");
|
writer.WriteComment("<Font>: Text font name");
|
||||||
writer.WriteElementString("Font", _Theme.NameFont);
|
writer.WriteElementString("Font", _Theme.NameFont);
|
||||||
writer.WriteComment("<Color>: Text color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: Text color from ColorScheme (high priority)");
|
||||||
if (_Theme.NameColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.NameColorName))
|
||||||
writer.WriteElementString("Color", _Theme.NameColorName);
|
writer.WriteElementString("Color", _Theme.NameColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -350,7 +351,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void HandleMouse(SMouseEvent mevent)
|
public void HandleMouse(SMouseEvent mevent)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _Tiles.Count; i++ )
|
for (int i = 0; i < _Tiles.Count; i++)
|
||||||
{
|
{
|
||||||
if (CHelper.IsInBounds(_Tiles[i].Avatar.Rect, mevent))
|
if (CHelper.IsInBounds(_Tiles[i].Avatar.Rect, mevent))
|
||||||
{
|
{
|
||||||
@@ -465,10 +466,10 @@ namespace VocaluxeLib.Menu
|
|||||||
_TextureEmptyTile = CBase.Theme.GetSkinTexture(_Theme.TextureEmptyTileName, _PartyModeID);
|
_TextureEmptyTile = CBase.Theme.GetSkinTexture(_Theme.TextureEmptyTileName, _PartyModeID);
|
||||||
_TextureTileSelected = CBase.Theme.GetSkinTexture(_Theme.TextureTileSelectedName, _PartyModeID);
|
_TextureTileSelected = CBase.Theme.GetSkinTexture(_Theme.TextureTileSelectedName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.ColorEmptyTileName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorEmptyTileName))
|
||||||
ColorEmptyTile = CBase.Theme.GetColor(_Theme.ColorEmptyTileName, _PartyModeID);
|
ColorEmptyTile = CBase.Theme.GetColor(_Theme.ColorEmptyTileName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.NameColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.NameColorName))
|
||||||
_Theme.NameColor = CBase.Theme.GetColor(_Theme.NameColorName, _PartyModeID);
|
_Theme.NameColor = CBase.Theme.GetColor(_Theme.NameColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace VocaluxeLib.Menu
|
namespace VocaluxeLib.Menu
|
||||||
{
|
{
|
||||||
@@ -45,11 +46,11 @@ namespace VocaluxeLib.Menu
|
|||||||
#region private vars
|
#region private vars
|
||||||
private readonly int _PartyModeID;
|
private readonly int _PartyModeID;
|
||||||
private readonly string _TextureName;
|
private readonly string _TextureName;
|
||||||
private readonly STexture _Texture;
|
private readonly CTexture _Texture;
|
||||||
private SRectF _Rect;
|
private SRectF _Rect;
|
||||||
private float _Size;
|
private float _Size;
|
||||||
private SColorF _Color;
|
private SColorF _Color;
|
||||||
private float _Alpha;
|
private float _Alpha = 1;
|
||||||
private float _Angle; //0..360°
|
private float _Angle; //0..360°
|
||||||
private readonly float _MaxAge; //[s]
|
private readonly float _MaxAge; //[s]
|
||||||
private float _Age; //[s]
|
private float _Age; //[s]
|
||||||
@@ -61,7 +62,7 @@ namespace VocaluxeLib.Menu
|
|||||||
private float _LastTime;
|
private float _LastTime;
|
||||||
private readonly EParticleType _Type;
|
private readonly EParticleType _Type;
|
||||||
|
|
||||||
private readonly Stopwatch _Timer;
|
private readonly Stopwatch _Timer = new Stopwatch();
|
||||||
#endregion private vars
|
#endregion private vars
|
||||||
|
|
||||||
#region public vars
|
#region public vars
|
||||||
@@ -115,26 +116,20 @@ namespace VocaluxeLib.Menu
|
|||||||
{
|
{
|
||||||
_PartyModeID = partyModeID;
|
_PartyModeID = partyModeID;
|
||||||
_TextureName = textureName;
|
_TextureName = textureName;
|
||||||
_Texture = new STexture(-1);
|
|
||||||
_Color = color;
|
_Color = color;
|
||||||
_Rect = new SRectF(x, y, size, size, z);
|
_Rect = new SRectF(x, y, size, size, z);
|
||||||
_Size = size;
|
_Size = size;
|
||||||
_Alpha = 1f;
|
|
||||||
_Angle = 0f;
|
|
||||||
_Vx = vx;
|
_Vx = vx;
|
||||||
_Vy = vy;
|
_Vy = vy;
|
||||||
_Vr = vr;
|
_Vr = vr;
|
||||||
_Vsize = vsize;
|
_Vsize = vsize;
|
||||||
_LastTime = 0f;
|
|
||||||
_Type = type;
|
_Type = type;
|
||||||
|
|
||||||
_Timer = new Stopwatch();
|
|
||||||
_Age = 0f;
|
|
||||||
_MaxAge = maxage;
|
_MaxAge = maxage;
|
||||||
_Rotation = (float)(CBase.Game.GetRandomDouble() * 360.0);
|
_Rotation = (float)(CBase.Game.GetRandomDouble() * 360.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CParticle(int partyModeID, STexture texture, SColorF color, float x, float y, float size, float maxage, float z, float vx, float vy, float vr, float vsize,
|
public CParticle(int partyModeID, CTexture texture, SColorF color, float x, float y, float size, float maxage, float z, float vx, float vy, float vr, float vsize,
|
||||||
EParticleType type)
|
EParticleType type)
|
||||||
{
|
{
|
||||||
_PartyModeID = partyModeID;
|
_PartyModeID = partyModeID;
|
||||||
@@ -143,17 +138,12 @@ namespace VocaluxeLib.Menu
|
|||||||
_Color = color;
|
_Color = color;
|
||||||
_Rect = new SRectF(x, y, size, size, z);
|
_Rect = new SRectF(x, y, size, size, z);
|
||||||
_Size = size;
|
_Size = size;
|
||||||
_Alpha = 1f;
|
|
||||||
_Angle = 0f;
|
|
||||||
_Vx = vx;
|
_Vx = vx;
|
||||||
_Vy = vy;
|
_Vy = vy;
|
||||||
_Vr = vr;
|
_Vr = vr;
|
||||||
_Vsize = vsize;
|
_Vsize = vsize;
|
||||||
_LastTime = 0f;
|
|
||||||
_Type = type;
|
_Type = type;
|
||||||
|
|
||||||
_Timer = new Stopwatch();
|
|
||||||
_Age = 0f;
|
|
||||||
_MaxAge = maxage;
|
_MaxAge = maxage;
|
||||||
_Rotation = (float)(CBase.Game.GetRandomDouble() * 360.0);
|
_Rotation = (float)(CBase.Game.GetRandomDouble() * 360.0);
|
||||||
}
|
}
|
||||||
@@ -298,7 +288,7 @@ namespace VocaluxeLib.Menu
|
|||||||
public void Draw()
|
public void Draw()
|
||||||
{
|
{
|
||||||
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
|
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
|
||||||
if (_TextureName != "")
|
if (!String.IsNullOrEmpty(_TextureName))
|
||||||
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
|
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
|
||||||
CBase.Drawing.DrawTexture(CBase.Theme.GetSkinTexture(_TextureName, _PartyModeID), _Rect, new SColorF(_Color.R, _Color.G, _Color.B, _Color.A * Alpha2 * _Alpha));
|
CBase.Drawing.DrawTexture(CBase.Theme.GetSkinTexture(_TextureName, _PartyModeID), _Rect, new SColorF(_Color.R, _Color.G, _Color.B, _Color.A * Alpha2 * _Alpha));
|
||||||
else
|
else
|
||||||
@@ -312,7 +302,7 @@ namespace VocaluxeLib.Menu
|
|||||||
private SThemeParticleEffect _Theme;
|
private SThemeParticleEffect _Theme;
|
||||||
private bool _ThemeLoaded;
|
private bool _ThemeLoaded;
|
||||||
|
|
||||||
public STexture Texture;
|
public CTexture Texture;
|
||||||
public SColorF Color;
|
public SColorF Color;
|
||||||
public SRectF Rect;
|
public SRectF Rect;
|
||||||
|
|
||||||
@@ -356,7 +346,6 @@ namespace VocaluxeLib.Menu
|
|||||||
Rect = rect;
|
Rect = rect;
|
||||||
Color = color;
|
Color = color;
|
||||||
_Theme.TextureName = textureName;
|
_Theme.TextureName = textureName;
|
||||||
Texture = new STexture(-1);
|
|
||||||
_MaxNumber = maxNumber;
|
_MaxNumber = maxNumber;
|
||||||
_Size = size;
|
_Size = size;
|
||||||
_Type = type;
|
_Type = type;
|
||||||
@@ -365,7 +354,7 @@ namespace VocaluxeLib.Menu
|
|||||||
Visible = true;
|
Visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CParticleEffect(int partyModeID, int maxNumber, SColorF color, SRectF rect, STexture texture, float size, EParticleType type)
|
public CParticleEffect(int partyModeID, int maxNumber, SColorF color, SRectF rect, CTexture texture, float size, EParticleType type)
|
||||||
{
|
{
|
||||||
_PartyModeID = partyModeID;
|
_PartyModeID = partyModeID;
|
||||||
_Theme = new SThemeParticleEffect();
|
_Theme = new SThemeParticleEffect();
|
||||||
@@ -435,7 +424,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: ParticleEffect color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: ParticleEffect color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -546,7 +535,7 @@ namespace VocaluxeLib.Menu
|
|||||||
h = 0;
|
h = 0;
|
||||||
|
|
||||||
CParticle star;
|
CParticle star;
|
||||||
if (_Theme.TextureName != "")
|
if (!String.IsNullOrEmpty(_Theme.TextureName))
|
||||||
{
|
{
|
||||||
star = new CParticle(_PartyModeID, _Theme.TextureName, Color,
|
star = new CParticle(_PartyModeID, _Theme.TextureName, Color,
|
||||||
CBase.Game.GetRandom(w) + Rect.X - size / 4f,
|
CBase.Game.GetRandom(w) + Rect.X - size / 4f,
|
||||||
@@ -602,14 +591,14 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void UnloadTextures()
|
public void UnloadTextures()
|
||||||
{
|
{
|
||||||
Texture = new STexture();
|
Texture = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadTextures()
|
public void LoadTextures()
|
||||||
{
|
{
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
if (_Theme.TextureName != "")
|
if (!String.IsNullOrEmpty(_Theme.TextureName))
|
||||||
Texture = CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
Texture = CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<ColorBackground>: Button color from ColorScheme (high priority)");
|
writer.WriteComment("<ColorBackground>: Button color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <BackgroundR>, <BackgroundG>, <BackgroundB>, <BackgroundA> (lower priority)");
|
writer.WriteComment("or <BackgroundR>, <BackgroundG>, <BackgroundB>, <BackgroundA> (lower priority)");
|
||||||
if (_Theme.ColorBackgroundName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorBackgroundName))
|
||||||
writer.WriteElementString("ColorBackground", _Theme.ColorBackgroundName);
|
writer.WriteElementString("ColorBackground", _Theme.ColorBackgroundName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -385,7 +385,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<SColorBackground>: Selected paylist-entry color from ColorScheme (high priority)");
|
writer.WriteComment("<SColorBackground>: Selected paylist-entry color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <SBackgroundR>, <SBackgroundG>, <SBackgroundB>, <SBackgroundA> (lower priority)");
|
writer.WriteComment("or <SBackgroundR>, <SBackgroundG>, <SBackgroundB>, <SBackgroundA> (lower priority)");
|
||||||
if (_Theme.SelColorBackgroundName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorBackgroundName))
|
||||||
writer.WriteElementString("SColorBackground", _Theme.SelColorBackgroundName);
|
writer.WriteElementString("SColorBackground", _Theme.SelColorBackgroundName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -464,10 +464,10 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void LoadTextures()
|
public void LoadTextures()
|
||||||
{
|
{
|
||||||
if (_Theme.ColorBackgroundName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorBackgroundName))
|
||||||
BackgroundColor = CBase.Theme.GetColor(_Theme.ColorBackgroundName, _PartyModeID);
|
BackgroundColor = CBase.Theme.GetColor(_Theme.ColorBackgroundName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.SelColorBackgroundName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorBackgroundName))
|
||||||
BackgroundSelColor = CBase.Theme.GetColor(_Theme.SelColorBackgroundName, _PartyModeID);
|
BackgroundSelColor = CBase.Theme.GetColor(_Theme.SelColorBackgroundName, _PartyModeID);
|
||||||
|
|
||||||
_Theme.Text1.LoadTextures();
|
_Theme.Text1.LoadTextures();
|
||||||
@@ -518,7 +518,7 @@ namespace VocaluxeLib.Menu
|
|||||||
break;
|
break;
|
||||||
case Keys.Delete:
|
case Keys.Delete:
|
||||||
case Keys.Back:
|
case Keys.Back:
|
||||||
if (_Theme.ButtonPlaylistName.Text.Text != "")
|
if (!String.IsNullOrEmpty(_Theme.ButtonPlaylistName.Text.Text))
|
||||||
_Theme.ButtonPlaylistName.Text.Text = _Theme.ButtonPlaylistName.Text.Text.Remove(_Theme.ButtonPlaylistName.Text.Text.Length - 1);
|
_Theme.ButtonPlaylistName.Text.Text = _Theme.ButtonPlaylistName.Text.Text.Remove(_Theme.ButtonPlaylistName.Text.Text.Length - 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace VocaluxeLib.Menu
|
namespace VocaluxeLib.Menu
|
||||||
{
|
{
|
||||||
@@ -127,7 +128,7 @@ namespace VocaluxeLib.Menu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private STexture _GetTextureValue(string value)
|
private CTexture _GetTextureValue(string value)
|
||||||
{
|
{
|
||||||
return CBase.Theme.GetSkinTexture(value, _PartyModeID);
|
return CBase.Theme.GetSkinTexture(value, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace VocaluxeLib.Menu
|
namespace VocaluxeLib.Menu
|
||||||
{
|
{
|
||||||
@@ -110,7 +111,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
private readonly List<string> _ValueNames;
|
private readonly List<string> _ValueNames;
|
||||||
private readonly List<int> _ValuePartyModeIDs;
|
private readonly List<int> _ValuePartyModeIDs;
|
||||||
private readonly List<STexture> _Textures;
|
private readonly List<CTexture> _Textures;
|
||||||
private readonly List<int> _ValueIndexes;
|
private readonly List<int> _ValueIndexes;
|
||||||
|
|
||||||
private readonly List<SRectF> _ValueBounds = new List<SRectF>();
|
private readonly List<SRectF> _ValueBounds = new List<SRectF>();
|
||||||
@@ -178,7 +179,7 @@ namespace VocaluxeLib.Menu
|
|||||||
MaxW = 0f;
|
MaxW = 0f;
|
||||||
|
|
||||||
_Selected = false;
|
_Selected = false;
|
||||||
_Textures = new List<STexture>();
|
_Textures = new List<CTexture>();
|
||||||
_ValueIndexes = new List<int>();
|
_ValueIndexes = new List<int>();
|
||||||
_ValueNames = new List<string>();
|
_ValueNames = new List<string>();
|
||||||
_ValuePartyModeIDs = new List<int>();
|
_ValuePartyModeIDs = new List<int>();
|
||||||
@@ -226,7 +227,7 @@ namespace VocaluxeLib.Menu
|
|||||||
MaxW = slide.MaxW;
|
MaxW = slide.MaxW;
|
||||||
|
|
||||||
_Selected = slide._Selected;
|
_Selected = slide._Selected;
|
||||||
_Textures = new List<STexture>(slide._Textures);
|
_Textures = new List<CTexture>(slide._Textures);
|
||||||
_ValueIndexes = new List<int>(slide._ValueIndexes);
|
_ValueIndexes = new List<int>(slide._ValueIndexes);
|
||||||
_ValueNames = new List<string>(slide._ValueNames);
|
_ValueNames = new List<string>(slide._ValueNames);
|
||||||
_ValueBounds = new List<SRectF>(slide._ValueBounds);
|
_ValueBounds = new List<SRectF>(slide._ValueBounds);
|
||||||
@@ -411,7 +412,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: SelectSlide color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: SelectSlide color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -423,7 +424,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<SColor>: Selected SelectSlide color from ColorScheme (high priority)");
|
writer.WriteComment("<SColor>: Selected SelectSlide color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <SR>, <SG>, <SB>, <SA> (lower priority)");
|
writer.WriteComment("or <SR>, <SG>, <SB>, <SA> (lower priority)");
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
writer.WriteElementString("SColor", _Theme.SelColorName);
|
writer.WriteElementString("SColor", _Theme.SelColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -435,7 +436,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)");
|
writer.WriteComment("<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <HR>, <HG>, <HB>, <HA> (lower priority)");
|
writer.WriteComment("or <HR>, <HG>, <HB>, <HA> (lower priority)");
|
||||||
if (_Theme.HighlightColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.HighlightColorName))
|
||||||
writer.WriteElementString("HColor", _Theme.HighlightColorName);
|
writer.WriteElementString("HColor", _Theme.HighlightColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -447,7 +448,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<ArrowColor>: Arrow color from ColorScheme (high priority)");
|
writer.WriteComment("<ArrowColor>: Arrow color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)");
|
writer.WriteComment("or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)");
|
||||||
if (_Theme.ArrowColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ArrowColorName))
|
||||||
writer.WriteElementString("ArrowColor", _Theme.ArrowColorName);
|
writer.WriteElementString("ArrowColor", _Theme.ArrowColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -459,7 +460,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<ArrowSColor>: Selected arrow color from ColorScheme (high priority)");
|
writer.WriteComment("<ArrowSColor>: Selected arrow color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)");
|
writer.WriteComment("or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)");
|
||||||
if (_Theme.SelArrowColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelArrowColorName))
|
||||||
writer.WriteElementString("ArrowSColor", _Theme.SelArrowColorName);
|
writer.WriteElementString("ArrowSColor", _Theme.SelArrowColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -471,7 +472,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<TextColor>: Text color from ColorScheme (high priority)");
|
writer.WriteComment("<TextColor>: Text color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)");
|
writer.WriteComment("or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)");
|
||||||
if (_Theme.TextColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.TextColorName))
|
||||||
writer.WriteElementString("TextColor", _Theme.TextColorName);
|
writer.WriteElementString("TextColor", _Theme.TextColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -483,7 +484,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<TextSColor>: Selected text color from ColorScheme (high priority)");
|
writer.WriteComment("<TextSColor>: Selected text color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)");
|
writer.WriteComment("or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)");
|
||||||
if (_Theme.SelTextColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelTextColorName))
|
||||||
writer.WriteElementString("TextSColor", _Theme.SelTextColorName);
|
writer.WriteElementString("TextSColor", _Theme.SelTextColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -530,20 +531,20 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void AddValue(string value, int partyModeID)
|
public void AddValue(string value, int partyModeID)
|
||||||
{
|
{
|
||||||
AddValue(value, new STexture(-1), _ValueIndexes.Count, partyModeID);
|
AddValue(value, null, _ValueIndexes.Count, partyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddValue(string value, STexture texture)
|
public void AddValue(string value, CTexture texture)
|
||||||
{
|
{
|
||||||
AddValue(value, texture, _ValueIndexes.Count, _PartyModeID);
|
AddValue(value, texture, _ValueIndexes.Count, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _AddValue(string value, STexture texture, int valueIndex)
|
private void _AddValue(string value, CTexture texture, int valueIndex)
|
||||||
{
|
{
|
||||||
AddValue(value, texture, valueIndex, _PartyModeID);
|
AddValue(value, texture, valueIndex, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddValue(string value, STexture texture, int valueIndex, int partyModeID)
|
public void AddValue(string value, CTexture texture, int valueIndex, int partyModeID)
|
||||||
{
|
{
|
||||||
_ValueNames.Add(value);
|
_ValueNames.Add(value);
|
||||||
_Textures.Add(texture);
|
_Textures.Add(texture);
|
||||||
@@ -559,12 +560,12 @@ namespace VocaluxeLib.Menu
|
|||||||
public void AddValues(IEnumerable<string> values)
|
public void AddValues(IEnumerable<string> values)
|
||||||
{
|
{
|
||||||
foreach (string value in values)
|
foreach (string value in values)
|
||||||
_AddValue(value, new STexture(-1), _PartyModeID);
|
_AddValue(value, null, _PartyModeID);
|
||||||
|
|
||||||
_ValueBounds.Clear();
|
_ValueBounds.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddValues(string[] values, STexture[] textures)
|
public void AddValues(string[] values, CTexture[] textures)
|
||||||
{
|
{
|
||||||
if (values.Length != textures.Length)
|
if (values.Length != textures.Length)
|
||||||
return;
|
return;
|
||||||
@@ -588,12 +589,7 @@ namespace VocaluxeLib.Menu
|
|||||||
RenameValue(Selection, newName);
|
RenameValue(Selection, newName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RenameValue(int selection, string newName)
|
public void RenameValue(int selection, string newName, CTexture newTexture = null)
|
||||||
{
|
|
||||||
RenameValue(selection, newName, new STexture(-1));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RenameValue(int selection, string newName, STexture newTexture)
|
|
||||||
{
|
{
|
||||||
if (selection < 0 && selection >= _ValueNames.Count)
|
if (selection < 0 && selection >= _ValueNames.Count)
|
||||||
return;
|
return;
|
||||||
@@ -696,15 +692,15 @@ namespace VocaluxeLib.Menu
|
|||||||
if (!Visible && CBase.Settings.GetGameState() != EGameState.EditTheme)
|
if (!Visible && CBase.Settings.GetGameState() != EGameState.EditTheme)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
STexture texture = CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
CTexture texture = CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
||||||
STexture textureArrowLeft = CBase.Theme.GetSkinTexture(_Theme.TextureArrowLeftName, _PartyModeID);
|
CTexture textureArrowLeft = CBase.Theme.GetSkinTexture(_Theme.TextureArrowLeftName, _PartyModeID);
|
||||||
STexture textureArrowRight = CBase.Theme.GetSkinTexture(_Theme.TextureArrowRightName, _PartyModeID);
|
CTexture textureArrowRight = CBase.Theme.GetSkinTexture(_Theme.TextureArrowRightName, _PartyModeID);
|
||||||
|
|
||||||
STexture selTexture = CBase.Theme.GetSkinTexture(_Theme.SelTextureName, _PartyModeID);
|
CTexture selTexture = CBase.Theme.GetSkinTexture(_Theme.SelTextureName, _PartyModeID);
|
||||||
STexture selTextureArrowLeft = CBase.Theme.GetSkinTexture(_Theme.SelTextureArrowLeftName, _PartyModeID);
|
CTexture selTextureArrowLeft = CBase.Theme.GetSkinTexture(_Theme.SelTextureArrowLeftName, _PartyModeID);
|
||||||
STexture selTextureArrowRight = CBase.Theme.GetSkinTexture(_Theme.SelTextureArrowRightName, _PartyModeID);
|
CTexture selTextureArrowRight = CBase.Theme.GetSkinTexture(_Theme.SelTextureArrowRightName, _PartyModeID);
|
||||||
|
|
||||||
STexture highlightTexture = CBase.Theme.GetSkinTexture(_Theme.HighlightTextureName, _PartyModeID);
|
CTexture highlightTexture = CBase.Theme.GetSkinTexture(_Theme.HighlightTextureName, _PartyModeID);
|
||||||
|
|
||||||
if (Selected)
|
if (Selected)
|
||||||
{
|
{
|
||||||
@@ -791,25 +787,25 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void LoadTextures()
|
public void LoadTextures()
|
||||||
{
|
{
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
SelColor = CBase.Theme.GetColor(_Theme.SelColorName, _PartyModeID);
|
SelColor = CBase.Theme.GetColor(_Theme.SelColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.HighlightColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.HighlightColorName))
|
||||||
HighlightColor = CBase.Theme.GetColor(_Theme.HighlightColorName, _PartyModeID);
|
HighlightColor = CBase.Theme.GetColor(_Theme.HighlightColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.ArrowColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ArrowColorName))
|
||||||
ColorArrow = CBase.Theme.GetColor(_Theme.ArrowColorName, _PartyModeID);
|
ColorArrow = CBase.Theme.GetColor(_Theme.ArrowColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.SelArrowColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelArrowColorName))
|
||||||
SelColorArrow = CBase.Theme.GetColor(_Theme.SelArrowColorName, _PartyModeID);
|
SelColorArrow = CBase.Theme.GetColor(_Theme.SelArrowColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.TextColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.TextColorName))
|
||||||
TextColor = CBase.Theme.GetColor(_Theme.TextColorName, _PartyModeID);
|
TextColor = CBase.Theme.GetColor(_Theme.TextColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
SelTextColor = CBase.Theme.GetColor(_Theme.SelTextColorName, _PartyModeID);
|
SelTextColor = CBase.Theme.GetColor(_Theme.SelTextColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
-45
@@ -20,6 +20,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace VocaluxeLib.Menu
|
namespace VocaluxeLib.Menu
|
||||||
{
|
{
|
||||||
@@ -42,10 +43,10 @@ namespace VocaluxeLib.Menu
|
|||||||
return _Theme.Name;
|
return _Theme.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
private STexture _Texture;
|
private CTexture _Texture;
|
||||||
public STexture Texture
|
public CTexture Texture
|
||||||
{
|
{
|
||||||
get { return _Texture.Index != -1 ? _Texture : CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID); }
|
get { return _Texture ?? CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID); }
|
||||||
|
|
||||||
set { _Texture = value; }
|
set { _Texture = value; }
|
||||||
}
|
}
|
||||||
@@ -58,35 +59,20 @@ namespace VocaluxeLib.Menu
|
|||||||
public float ReflectionHeight;
|
public float ReflectionHeight;
|
||||||
|
|
||||||
public bool Selected;
|
public bool Selected;
|
||||||
public bool Visible;
|
public bool Visible = true;
|
||||||
|
|
||||||
public float Alpha;
|
public float Alpha = 1;
|
||||||
|
|
||||||
public EAspect Aspect = EAspect.Stretch;
|
public EAspect Aspect = EAspect.Stretch;
|
||||||
|
|
||||||
public CStatic(int partyModeID)
|
public CStatic(int partyModeID)
|
||||||
{
|
{
|
||||||
_PartyModeID = partyModeID;
|
_PartyModeID = partyModeID;
|
||||||
_Theme = new SThemeStatic();
|
|
||||||
_ThemeLoaded = false;
|
|
||||||
|
|
||||||
_Texture = new STexture(-1);
|
|
||||||
Color = new SColorF();
|
|
||||||
Rect = new SRectF();
|
|
||||||
Reflection = false;
|
|
||||||
ReflectionSpace = 0f;
|
|
||||||
ReflectionHeight = 0f;
|
|
||||||
|
|
||||||
Selected = false;
|
|
||||||
Alpha = 1f;
|
|
||||||
Visible = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CStatic(CStatic s)
|
public CStatic(CStatic s)
|
||||||
{
|
{
|
||||||
_PartyModeID = s._PartyModeID;
|
_PartyModeID = s._PartyModeID;
|
||||||
_Theme = new SThemeStatic();
|
|
||||||
_ThemeLoaded = false;
|
|
||||||
|
|
||||||
_Texture = s.Texture;
|
_Texture = s.Texture;
|
||||||
Color = new SColorF(s.Color);
|
Color = new SColorF(s.Color);
|
||||||
@@ -100,40 +86,21 @@ namespace VocaluxeLib.Menu
|
|||||||
Visible = s.Visible;
|
Visible = s.Visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CStatic(int partyModeID, STexture texture, SColorF color, SRectF rect)
|
public CStatic(int partyModeID, CTexture texture, SColorF color, SRectF rect)
|
||||||
{
|
{
|
||||||
_PartyModeID = partyModeID;
|
_PartyModeID = partyModeID;
|
||||||
_Theme = new SThemeStatic();
|
|
||||||
_ThemeLoaded = false;
|
|
||||||
|
|
||||||
_Texture = texture;
|
_Texture = texture;
|
||||||
Color = color;
|
Color = color;
|
||||||
Rect = rect;
|
Rect = rect;
|
||||||
Reflection = false;
|
|
||||||
ReflectionSpace = 0f;
|
|
||||||
ReflectionHeight = 0f;
|
|
||||||
|
|
||||||
Selected = false;
|
|
||||||
Alpha = 1f;
|
|
||||||
Visible = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CStatic(int partyModeID, string textureSkinName, SColorF color, SRectF rect)
|
public CStatic(int partyModeID, string textureSkinName, SColorF color, SRectF rect)
|
||||||
{
|
{
|
||||||
_PartyModeID = partyModeID;
|
_PartyModeID = partyModeID;
|
||||||
_Theme = new SThemeStatic {TextureName = textureSkinName};
|
_Theme.TextureName = textureSkinName;
|
||||||
_ThemeLoaded = false;
|
|
||||||
|
|
||||||
_Texture = new STexture(-1);
|
|
||||||
Color = color;
|
Color = color;
|
||||||
Rect = rect;
|
Rect = rect;
|
||||||
Reflection = false;
|
|
||||||
ReflectionSpace = 0f;
|
|
||||||
ReflectionHeight = 0f;
|
|
||||||
|
|
||||||
Selected = false;
|
|
||||||
Alpha = 1f;
|
|
||||||
Visible = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LoadTheme(string xmlPath, string elementName, CXMLReader xmlReader, int skinIndex)
|
public bool LoadTheme(string xmlPath, string elementName, CXMLReader xmlReader, int skinIndex)
|
||||||
@@ -194,7 +161,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: Static color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: Static color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -238,7 +205,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void Draw(float scale, float z, EAspect aspect, bool forceDraw = false)
|
public void Draw(float scale, float z, EAspect aspect, bool forceDraw = false)
|
||||||
{
|
{
|
||||||
STexture texture = _Texture.Index != -1 ? _Texture : CBase.Theme.GetSkinTexture(_Theme.TextureName, _PartyModeID);
|
CTexture texture = Texture;
|
||||||
|
|
||||||
SRectF bounds = new SRectF(
|
SRectF bounds = new SRectF(
|
||||||
Rect.X - Rect.W * (scale - 1f),
|
Rect.X - Rect.W * (scale - 1f),
|
||||||
@@ -253,7 +220,7 @@ namespace VocaluxeLib.Menu
|
|||||||
{
|
{
|
||||||
RectangleF bounds2 = new RectangleF(bounds.X, bounds.Y, bounds.W, bounds.H);
|
RectangleF bounds2 = new RectangleF(bounds.X, bounds.Y, bounds.W, bounds.H);
|
||||||
RectangleF rect2;
|
RectangleF rect2;
|
||||||
CHelper.SetRect(bounds2, out rect2, texture.Width / texture.Height, aspect);
|
CHelper.SetRect(bounds2, out rect2, texture.OrigAspect, aspect);
|
||||||
|
|
||||||
rect.X = rect2.X;
|
rect.X = rect2.X;
|
||||||
rect.Y = rect2.Y;
|
rect.Y = rect2.Y;
|
||||||
@@ -277,7 +244,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void LoadTextures()
|
public void LoadTextures()
|
||||||
{
|
{
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ namespace VocaluxeLib.Menu
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Do NOT read/write this anywhere but in _UpdateTextPosition!
|
/// Do NOT read/write this anywhere but in _UpdateTextPosition!
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private SRectF _Rect;
|
private SRectF _Rect;
|
||||||
public SRectF Rect
|
public SRectF Rect
|
||||||
@@ -396,7 +396,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: Text color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: Text color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -408,7 +408,7 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
writer.WriteComment("<SColor>: Selected Text color from ColorScheme (high priority)");
|
writer.WriteComment("<SColor>: Selected Text color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <SR>, <SG>, <SB>, <SA> (lower priority)");
|
writer.WriteComment("or <SR>, <SG>, <SB>, <SA> (lower priority)");
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
writer.WriteElementString("SColor", _Theme.SelColorName);
|
writer.WriteElementString("SColor", _Theme.SelColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -499,8 +499,8 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void DrawRelative(float rx, float ry, float reflectionHeight = 0f, float reflectionSpace = 0f, float rectHeight = 0f)
|
public void DrawRelative(float rx, float ry, float reflectionHeight = 0f, float reflectionSpace = 0f, float rectHeight = 0f)
|
||||||
{
|
{
|
||||||
var oldReflectionSpace = ReflectionSpace;
|
float oldReflectionSpace = ReflectionSpace;
|
||||||
var oldReflectionHeight = ReflectionHeight;
|
float oldReflectionHeight = ReflectionHeight;
|
||||||
if (reflectionHeight > 0)
|
if (reflectionHeight > 0)
|
||||||
{
|
{
|
||||||
ReflectionSpace = (rectHeight - Rect.Y - Rect.H) * 2 + reflectionSpace;
|
ReflectionSpace = (rectHeight - Rect.Y - Rect.H) * 2 + reflectionSpace;
|
||||||
@@ -521,10 +521,10 @@ namespace VocaluxeLib.Menu
|
|||||||
|
|
||||||
public void LoadTextures()
|
public void LoadTextures()
|
||||||
{
|
{
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
|
|
||||||
if (_Theme.SelColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.SelColorName))
|
||||||
SelColor = CBase.Theme.GetColor(_Theme.SelColorName, _PartyModeID);
|
SelColor = CBase.Theme.GetColor(_Theme.SelColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ using System.Collections.ObjectModel;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
using VocaluxeLib.Game;
|
using VocaluxeLib.Game;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.Menu.SongMenu;
|
using VocaluxeLib.Menu.SongMenu;
|
||||||
using VocaluxeLib.PartyModes;
|
using VocaluxeLib.PartyModes;
|
||||||
using VocaluxeLib.Profile;
|
using VocaluxeLib.Profile;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
using VocaluxeLib.Songs;
|
using VocaluxeLib.Songs;
|
||||||
|
|
||||||
@@ -386,9 +387,7 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
_PlayerNotes[n].Rect.Z
|
_PlayerNotes[n].Rect.Z
|
||||||
);
|
);
|
||||||
|
|
||||||
float f = 0.7f;
|
float f = (note.Hit) ? 0.7f : 0.4f;
|
||||||
if (!note.Hit)
|
|
||||||
f = 0.4f;
|
|
||||||
|
|
||||||
_DrawNote(rect, color, f);
|
_DrawNote(rect, color, f);
|
||||||
|
|
||||||
@@ -471,39 +470,31 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
|
|
||||||
private void _DrawNote(SRectF rect, SColorF color, float factor = 1f)
|
private void _DrawNote(SRectF rect, SColorF color, float factor = 1f)
|
||||||
{
|
{
|
||||||
const int spacing = 0;
|
if (factor <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
float d = (1f - factor) / 2 * rect.H;
|
float dh = (1f - factor) * rect.H / 2;
|
||||||
float dw = d;
|
float dw = Math.Min(dh, rect.W / 2);
|
||||||
|
|
||||||
if (2 * dw > rect.W)
|
SRectF noteRect = new SRectF(rect.X + dw, rect.Y + dh, rect.W - 2 * dw, rect.H - 2 * dh, rect.Z);
|
||||||
dw = rect.W / 2;
|
|
||||||
|
|
||||||
SRectF r = new SRectF(
|
CTexture noteBegin = CBase.Theme.GetSkinTexture(_Theme.SkinLeftName, _PartyModeID);
|
||||||
rect.X + dw + spacing,
|
CTexture noteMiddle = CBase.Theme.GetSkinTexture(_Theme.SkinMiddleName, _PartyModeID);
|
||||||
rect.Y + d + spacing,
|
CTexture noteEnd = CBase.Theme.GetSkinTexture(_Theme.SkinRightName, _PartyModeID);
|
||||||
rect.W - 2 * dw - 2 * spacing,
|
|
||||||
rect.H - 2 * d - 2 * spacing,
|
|
||||||
rect.Z
|
|
||||||
);
|
|
||||||
|
|
||||||
STexture noteBegin = CBase.Theme.GetSkinTexture(_Theme.SkinLeftName, _PartyModeID);
|
//Width of each of the ends (round parts)
|
||||||
STexture noteMiddle = CBase.Theme.GetSkinTexture(_Theme.SkinMiddleName, _PartyModeID);
|
//Need 2 of them so use minimum
|
||||||
STexture noteEnd = CBase.Theme.GetSkinTexture(_Theme.SkinRightName, _PartyModeID);
|
float endsW = Math.Min(noteRect.H * noteBegin.OrigAspect, noteRect.W / 2);
|
||||||
|
|
||||||
float dx = noteBegin.Width * r.H / noteBegin.Height;
|
CBase.Drawing.DrawTexture(noteBegin, new SRectF(noteRect.X, noteRect.Y, endsW, noteRect.H, noteRect.Z), color);
|
||||||
if (2 * dx > r.W)
|
|
||||||
dx = r.W / 2;
|
|
||||||
|
|
||||||
|
SRectF middleRect = new SRectF(noteRect.X + endsW, noteRect.Y, noteRect.W - 2 * endsW, noteRect.H, noteRect.Z);
|
||||||
CBase.Drawing.DrawTexture(noteBegin, new SRectF(r.X, r.Y, dx, r.H, r.Z), color);
|
if (noteRect.W >= 4 * endsW)
|
||||||
|
CBase.Drawing.DrawTexture(noteMiddle, middleRect, color);
|
||||||
if (r.W - 2 * dx >= 2 * dx)
|
|
||||||
CBase.Drawing.DrawTexture(noteMiddle, new SRectF(r.X + dx, r.Y, r.W - 2 * dx, r.H, r.Z), color);
|
|
||||||
else
|
else
|
||||||
CBase.Drawing.DrawTexture(noteMiddle, new SRectF(r.X + dx, r.Y, 2 * dx, r.H, r.Z), color, new SRectF(r.X + dx, r.Y, r.W - 2 * dx, r.H, r.Z));
|
CBase.Drawing.DrawTexture(noteMiddle, new SRectF(middleRect.X, middleRect.Y, 2 * endsW, middleRect.H, middleRect.Z), color, middleRect);
|
||||||
|
|
||||||
CBase.Drawing.DrawTexture(noteEnd, new SRectF(r.X + r.W - dx, r.Y, dx, r.H, r.Z), color);
|
CBase.Drawing.DrawTexture(noteEnd, new SRectF(noteRect.X + noteRect.W - endsW, noteRect.Y, endsW, noteRect.H, noteRect.Z), color);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _DrawNoteBG(SRectF rect, SColorF color, float factor, Stopwatch timer)
|
private void _DrawNoteBG(SRectF rect, SColorF color, float factor, Stopwatch timer)
|
||||||
@@ -534,11 +525,11 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
rect.Z
|
rect.Z
|
||||||
);
|
);
|
||||||
|
|
||||||
STexture noteBackgroundBegin = CBase.Theme.GetSkinTexture(_Theme.SkinBackgroundLeftName, _PartyModeID);
|
CTexture noteBackgroundBegin = CBase.Theme.GetSkinTexture(_Theme.SkinBackgroundLeftName, _PartyModeID);
|
||||||
STexture noteBackgroundMiddle = CBase.Theme.GetSkinTexture(_Theme.SkinBackgroundMiddleName, _PartyModeID);
|
CTexture noteBackgroundMiddle = CBase.Theme.GetSkinTexture(_Theme.SkinBackgroundMiddleName, _PartyModeID);
|
||||||
STexture noteBackgroundEnd = CBase.Theme.GetSkinTexture(_Theme.SkinBackgroundRightName, _PartyModeID);
|
CTexture noteBackgroundEnd = CBase.Theme.GetSkinTexture(_Theme.SkinBackgroundRightName, _PartyModeID);
|
||||||
|
|
||||||
float dx = noteBackgroundBegin.Width * r.H / noteBackgroundBegin.Height;
|
float dx = r.H * noteBackgroundBegin.OrigAspect;
|
||||||
if (2 * dx > r.W)
|
if (2 * dx > r.W)
|
||||||
dx = r.W / 2;
|
dx = r.W / 2;
|
||||||
|
|
||||||
@@ -629,8 +620,8 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
rect.Z
|
rect.Z
|
||||||
);
|
);
|
||||||
|
|
||||||
STexture noteBegin = CBase.Theme.GetSkinTexture(_Theme.SkinLeftName, _PartyModeID);
|
CTexture noteBegin = CBase.Theme.GetSkinTexture(_Theme.SkinLeftName, _PartyModeID);
|
||||||
float dx = noteBegin.Width * r.H / noteBegin.Height;
|
float dx = r.H * noteBegin.OrigAspect;
|
||||||
if (2 * dx > r.W)
|
if (2 * dx > r.W)
|
||||||
dx = r.W / 2;
|
dx = r.W / 2;
|
||||||
|
|
||||||
@@ -686,7 +677,7 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
_PlayerNotes[n].Color.B,
|
_PlayerNotes[n].Color.B,
|
||||||
_PlayerNotes[n].Color.A * _PlayerNotes[n].Alpha);
|
_PlayerNotes[n].Color.A * _PlayerNotes[n].Alpha);
|
||||||
|
|
||||||
STexture toneHelper = CBase.Theme.GetSkinTexture(_Theme.SkinToneHelperName, _PartyModeID);
|
CTexture toneHelper = CBase.Theme.GetSkinTexture(_Theme.SkinToneHelperName, _PartyModeID);
|
||||||
CBase.Drawing.DrawTexture(toneHelper, drawRect, color);
|
CBase.Drawing.DrawTexture(toneHelper, drawRect, color);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ using System.Collections.Generic;
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.PartyModes;
|
using VocaluxeLib.PartyModes;
|
||||||
|
|
||||||
namespace VocaluxeLib.Menu.SongMenu
|
namespace VocaluxeLib.Menu.SongMenu
|
||||||
@@ -104,7 +105,7 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
private readonly List<int> _Streams = new List<int>();
|
private readonly List<int> _Streams = new List<int>();
|
||||||
private int _Actsong = -1;
|
private int _Actsong = -1;
|
||||||
private int _Actsongstream = -1;
|
private int _Actsongstream = -1;
|
||||||
protected STexture _Vidtex = new STexture(-1);
|
protected CTexture _Vidtex;
|
||||||
|
|
||||||
protected bool _Initialized;
|
protected bool _Initialized;
|
||||||
protected int _LastKnownNumSongs;
|
protected int _LastKnownNumSongs;
|
||||||
@@ -351,7 +352,7 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
|
|
||||||
writer.WriteComment("<Color>: Tile color from ColorScheme (high priority)");
|
writer.WriteComment("<Color>: Tile color from ColorScheme (high priority)");
|
||||||
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
writer.WriteElementString("Color", _Theme.ColorName);
|
writer.WriteElementString("Color", _Theme.ColorName);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -438,19 +439,21 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
if (_Actsong != _PreviewSelected)
|
if (_Actsong != _PreviewSelected)
|
||||||
_SelectSong(_PreviewSelected);
|
_SelectSong(_PreviewSelected);
|
||||||
|
|
||||||
if (_Streams.Count > 0 && _Video != -1)
|
if (_Streams.Count <= 0 || _Video == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (CBase.Video.IsFinished(_Video) || CBase.Sound.IsFinished(_Actsongstream))
|
||||||
{
|
{
|
||||||
if (CBase.Video.IsFinished(_Video) || CBase.Sound.IsFinished(_Actsongstream))
|
CBase.Video.Close(_Video);
|
||||||
{
|
_Video = -1;
|
||||||
CBase.Video.Close(_Video);
|
return;
|
||||||
_Video = -1;
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
float time = CBase.Sound.GetPosition(_Actsongstream);
|
float time = CBase.Sound.GetPosition(_Actsongstream);
|
||||||
|
|
||||||
float vtime;
|
float vtime;
|
||||||
CBase.Video.GetFrame(_Video, ref _Vidtex, time, out vtime);
|
if (CBase.Video.GetFrame(_Video, ref _Vidtex, time, out vtime))
|
||||||
|
{
|
||||||
if (_VideoFadeTimer.ElapsedMilliseconds <= 3000L)
|
if (_VideoFadeTimer.ElapsedMilliseconds <= 3000L)
|
||||||
_Vidtex.Color.A = _VideoFadeTimer.ElapsedMilliseconds / 3000f;
|
_Vidtex.Color.A = _VideoFadeTimer.ElapsedMilliseconds / 3000f;
|
||||||
else
|
else
|
||||||
@@ -464,7 +467,7 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
public virtual void OnShow()
|
public virtual void OnShow()
|
||||||
{
|
{
|
||||||
_Actsongstream = -1;
|
_Actsongstream = -1;
|
||||||
_Vidtex = new STexture(-1);
|
_Vidtex = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void OnHide()
|
public virtual void OnHide()
|
||||||
@@ -546,7 +549,7 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
|
|
||||||
if (_Theme.ColorName != "")
|
if (!String.IsNullOrEmpty(_Theme.ColorName))
|
||||||
_Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
_Color = CBase.Theme.GetColor(_Theme.ColorName, _PartyModeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ using System.Collections.Generic;
|
|||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
using VocaluxeLib.PartyModes;
|
using VocaluxeLib.PartyModes;
|
||||||
using VocaluxeLib.Songs;
|
using VocaluxeLib.Songs;
|
||||||
|
|
||||||
@@ -38,8 +39,8 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
private CStatic _MedleyCalcIcon;
|
private CStatic _MedleyCalcIcon;
|
||||||
private CStatic _MedleyTagIcon;
|
private CStatic _MedleyTagIcon;
|
||||||
|
|
||||||
private STexture _CoverBigTexture;
|
private CTexture _CoverBigTexture;
|
||||||
private STexture _CoverTexture;
|
private CTexture _CoverTexture;
|
||||||
|
|
||||||
private CText _Artist;
|
private CText _Artist;
|
||||||
private CText _Title;
|
private CText _Title;
|
||||||
@@ -323,7 +324,7 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
{
|
{
|
||||||
foreach (CStatic tile in _Tiles)
|
foreach (CStatic tile in _Tiles)
|
||||||
{
|
{
|
||||||
if ((tile.Texture.Index != _CoverTexture.Index) && CHelper.IsInBounds(tile.Rect, mouseEvent) && !sel)
|
if (tile.Texture != _CoverTexture && CHelper.IsInBounds(tile.Rect, mouseEvent) && !sel)
|
||||||
{
|
{
|
||||||
if (mouseEvent.LB || !CBase.Songs.IsInCategory())
|
if (mouseEvent.LB || !CBase.Songs.IsInCategory())
|
||||||
{
|
{
|
||||||
@@ -371,7 +372,7 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
{
|
{
|
||||||
foreach (CStatic tile in _Tiles)
|
foreach (CStatic tile in _Tiles)
|
||||||
{
|
{
|
||||||
if ((tile.Texture.Index != _CoverTexture.Index) && CHelper.IsInBounds(tile.Rect, mouseEvent))
|
if (tile.Texture != _CoverTexture && CHelper.IsInBounds(tile.Rect, mouseEvent))
|
||||||
{
|
{
|
||||||
_EnterCategory(_PreviewSelected);
|
_EnterCategory(_PreviewSelected);
|
||||||
mouseEvent.Handled = true;
|
mouseEvent.Handled = true;
|
||||||
@@ -394,7 +395,7 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
|
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
|
||||||
if (tile.Texture.Index != _CoverTexture.Index)
|
if (tile.Texture != _CoverTexture)
|
||||||
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
|
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
|
||||||
tile.Draw(1f, tile.Rect.Z, EAspect.Crop);
|
tile.Draw(1f, tile.Rect.Z, EAspect.Crop);
|
||||||
else
|
else
|
||||||
@@ -453,18 +454,17 @@ namespace VocaluxeLib.Menu.SongMenu
|
|||||||
|
|
||||||
_TextBG.Draw();
|
_TextBG.Draw();
|
||||||
|
|
||||||
|
if (_Vidtex != null && _Video != -1)
|
||||||
if (_Vidtex.Index != -1 && _Video != -1)
|
|
||||||
{
|
{
|
||||||
if (_Vidtex.Color.A < 1)
|
if (_Vidtex.Color.A < 1)
|
||||||
_CoverBig.Draw(1f, EAspect.Crop);
|
_CoverBig.Draw(1f, EAspect.Crop);
|
||||||
RectangleF bounds = new RectangleF(_CoverBig.Rect.X, _CoverBig.Rect.Y, _CoverBig.Rect.W, _CoverBig.Rect.H);
|
RectangleF bounds = new RectangleF(_CoverBig.Rect.X, _CoverBig.Rect.Y, _CoverBig.Rect.W, _CoverBig.Rect.H);
|
||||||
RectangleF rect = new RectangleF(0f, 0f, _Vidtex.Width, _Vidtex.Height);
|
RectangleF rect;
|
||||||
CHelper.SetRect(bounds, out rect, rect.Width / rect.Height, EAspect.Crop);
|
CHelper.SetRect(bounds, out rect, _Vidtex.OrigAspect, EAspect.Crop);
|
||||||
SRectF vidRect = new SRectF(rect.X, rect.Y, rect.Width, rect.Height, _CoverBig.Rect.Z);
|
SRectF vidRect = new SRectF(rect.X, rect.Y, rect.Width, rect.Height, _CoverBig.Rect.Z);
|
||||||
SRectF vidRectBounds = new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f);
|
SRectF vidRectBounds = new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f);
|
||||||
|
|
||||||
CBase.Drawing.DrawTexture(_Vidtex, vidRect, _Vidtex.Color, vidRectBounds, false);
|
CBase.Drawing.DrawTexture(_Vidtex, vidRect, _Vidtex.Color, vidRectBounds);
|
||||||
CBase.Drawing.DrawTextureReflection(_Vidtex, vidRect, _Vidtex.Color, vidRectBounds, _CoverBig.ReflectionSpace, _CoverBig.ReflectionHeight);
|
CBase.Drawing.DrawTextureReflection(_Vidtex, vidRect, _Vidtex.Color, vidRectBounds, _CoverBig.ReflectionSpace, _CoverBig.ReflectionHeight);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -20,14 +20,15 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using VocaluxeLib;
|
using VocaluxeLib;
|
||||||
|
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
|
||||||
namespace VocaluxeLib.Songs
|
namespace VocaluxeLib.Songs
|
||||||
{
|
{
|
||||||
public class CCategory
|
public class CCategory
|
||||||
{
|
{
|
||||||
public readonly string Name;
|
public readonly string Name;
|
||||||
private STexture _CoverTextureSmall = new STexture(-1);
|
private CTexture _CoverTextureSmall;
|
||||||
private STexture _CoverTextureBig = new STexture(-1);
|
private CTexture _CoverTextureBig;
|
||||||
private bool _CoverBigLoaded;
|
|
||||||
public readonly List<CSongPointer> Songs = new List<CSongPointer>();
|
public readonly List<CSongPointer> Songs = new List<CSongPointer>();
|
||||||
|
|
||||||
public CCategory(string name)
|
public CCategory(string name)
|
||||||
@@ -35,26 +36,25 @@ namespace VocaluxeLib.Songs
|
|||||||
Name = name;
|
Name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture CoverTextureSmall
|
public CTexture CoverTextureSmall
|
||||||
{
|
{
|
||||||
get { return _CoverTextureSmall; }
|
get { return _CoverTextureSmall; }
|
||||||
|
|
||||||
set { _CoverTextureSmall = value; }
|
set { _CoverTextureSmall = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture CoverTextureBig
|
public CTexture CoverTextureBig
|
||||||
{
|
{
|
||||||
get { return _CoverBigLoaded ? _CoverTextureBig : _CoverTextureSmall; }
|
get { return _CoverTextureBig ?? _CoverTextureSmall; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (value.Index == -1)
|
if (value == null)
|
||||||
return;
|
return;
|
||||||
_CoverTextureBig = value;
|
_CoverTextureBig = value;
|
||||||
_CoverBigLoaded = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public CCategory(string name, STexture coverSmall, STexture coverBig)
|
public CCategory(string name, CTexture coverSmall, CTexture coverBig)
|
||||||
{
|
{
|
||||||
Name = name;
|
Name = name;
|
||||||
CoverTextureSmall = coverSmall;
|
CoverTextureSmall = coverSmall;
|
||||||
|
|||||||
+11
-23
@@ -22,6 +22,8 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu.SingNotes;
|
||||||
|
|
||||||
namespace VocaluxeLib.Songs
|
namespace VocaluxeLib.Songs
|
||||||
{
|
{
|
||||||
@@ -68,10 +70,8 @@ namespace VocaluxeLib.Songs
|
|||||||
|
|
||||||
public class CSong
|
public class CSong
|
||||||
{
|
{
|
||||||
private bool _CoverSmallLoaded;
|
private CTexture _CoverTextureSmall;
|
||||||
private bool _CoverBigLoaded;
|
private CTexture _CoverTextureBig;
|
||||||
private STexture _CoverTextureSmall = new STexture(-1);
|
|
||||||
private STexture _CoverTextureBig = new STexture(-1);
|
|
||||||
|
|
||||||
public SMedley Medley;
|
public SMedley Medley;
|
||||||
|
|
||||||
@@ -95,30 +95,22 @@ namespace VocaluxeLib.Songs
|
|||||||
|
|
||||||
public bool NotesLoaded { get; private set; }
|
public bool NotesLoaded { get; private set; }
|
||||||
|
|
||||||
public STexture CoverTextureSmall
|
public CTexture CoverTextureSmall
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (!_CoverSmallLoaded)
|
if (_CoverTextureSmall == null)
|
||||||
LoadSmallCover();
|
LoadSmallCover();
|
||||||
return _CoverTextureSmall;
|
return _CoverTextureSmall;
|
||||||
}
|
}
|
||||||
|
|
||||||
set
|
set { _CoverTextureSmall = value; }
|
||||||
{
|
|
||||||
_CoverTextureSmall = value;
|
|
||||||
_CoverSmallLoaded = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public STexture CoverTextureBig
|
public CTexture CoverTextureBig
|
||||||
{
|
{
|
||||||
get { return _CoverBigLoaded ? _CoverTextureBig : _CoverTextureSmall; }
|
get { return _CoverTextureBig ?? _CoverTextureSmall; }
|
||||||
set
|
set { _CoverTextureBig = value; }
|
||||||
{
|
|
||||||
_CoverTextureBig = value;
|
|
||||||
_CoverBigLoaded = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Title = String.Empty;
|
public string Title = String.Empty;
|
||||||
@@ -213,8 +205,6 @@ namespace VocaluxeLib.Songs
|
|||||||
VideoFileName = song.VideoFileName;
|
VideoFileName = song.VideoFileName;
|
||||||
|
|
||||||
VideoAspect = song.VideoAspect;
|
VideoAspect = song.VideoAspect;
|
||||||
_CoverSmallLoaded = song._CoverSmallLoaded;
|
|
||||||
_CoverBigLoaded = song._CoverBigLoaded;
|
|
||||||
NotesLoaded = song.NotesLoaded;
|
NotesLoaded = song.NotesLoaded;
|
||||||
|
|
||||||
Artist = song.Artist;
|
Artist = song.Artist;
|
||||||
@@ -749,7 +739,7 @@ namespace VocaluxeLib.Songs
|
|||||||
|
|
||||||
public void LoadSmallCover()
|
public void LoadSmallCover()
|
||||||
{
|
{
|
||||||
if (_CoverSmallLoaded)
|
if (_CoverTextureSmall != null)
|
||||||
return;
|
return;
|
||||||
if (CoverFileName != "")
|
if (CoverFileName != "")
|
||||||
{
|
{
|
||||||
@@ -758,8 +748,6 @@ namespace VocaluxeLib.Songs
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
_CoverTextureSmall = CBase.Cover.GetNoCover();
|
_CoverTextureSmall = CBase.Cover.GetNoCover();
|
||||||
|
|
||||||
_CoverSmallLoaded = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _CheckFiles()
|
private void _CheckFiles()
|
||||||
|
|||||||
+4
-39
@@ -23,6 +23,10 @@ using System.Drawing;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using VocaluxeLib.Songs;
|
using VocaluxeLib.Songs;
|
||||||
|
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using VocaluxeLib.Draw;
|
||||||
|
using VocaluxeLib.Menu.SingNotes;
|
||||||
|
|
||||||
namespace VocaluxeLib
|
namespace VocaluxeLib
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -99,45 +103,6 @@ namespace VocaluxeLib
|
|||||||
public int Y;
|
public int Y;
|
||||||
public int Z;
|
public int Z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct STexture
|
|
||||||
{
|
|
||||||
public int Index;
|
|
||||||
public int PBO;
|
|
||||||
public int ID;
|
|
||||||
|
|
||||||
public string TexturePath;
|
|
||||||
|
|
||||||
public float Width;
|
|
||||||
public float Height;
|
|
||||||
public SRectF Rect;
|
|
||||||
|
|
||||||
public float W2; //power of 2 width
|
|
||||||
public float H2; //power of 2 height
|
|
||||||
public float WidthRatio;
|
|
||||||
public float HeightRatio;
|
|
||||||
|
|
||||||
public SColorF Color;
|
|
||||||
|
|
||||||
public STexture(int index)
|
|
||||||
{
|
|
||||||
Index = index;
|
|
||||||
PBO = 0;
|
|
||||||
ID = -1;
|
|
||||||
TexturePath = String.Empty;
|
|
||||||
|
|
||||||
Width = 1f;
|
|
||||||
Height = 1f;
|
|
||||||
Rect = new SRectF(0f, 0f, 1f, 1f, 0f);
|
|
||||||
|
|
||||||
W2 = 2f;
|
|
||||||
H2 = 2f;
|
|
||||||
WidthRatio = 0.5f;
|
|
||||||
HeightRatio = 0.5f;
|
|
||||||
|
|
||||||
Color = new SColorF(1f, 1f, 1f, 1f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion Drawing
|
#endregion Drawing
|
||||||
|
|
||||||
#region Inputs
|
#region Inputs
|
||||||
|
|||||||
@@ -131,6 +131,7 @@
|
|||||||
<Compile Include="Menu\CStatic.cs" />
|
<Compile Include="Menu\CStatic.cs" />
|
||||||
<Compile Include="Menu\CText.cs" />
|
<Compile Include="Menu\CText.cs" />
|
||||||
<Compile Include="Menu\CScreenSetting.cs" />
|
<Compile Include="Menu\CScreenSetting.cs" />
|
||||||
|
<Compile Include="Draw\CTexture.cs" />
|
||||||
<Compile Include="CXMLReader.cs" />
|
<Compile Include="CXMLReader.cs" />
|
||||||
<Compile Include="Enums.cs" />
|
<Compile Include="Enums.cs" />
|
||||||
<Compile Include="Menu\IMenu.cs" />
|
<Compile Include="Menu\IMenu.cs" />
|
||||||
|
|||||||
Reference in new issue
Block a user