diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..dc52224f --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +obj +Output/Songs +*.mp4 +*.pdb +/Output/Benchmark.log + +/Output/CoverDB.sqlite + +/Output/HighscoreDB.sqlite + +/Output/PartyModes/*/Code/* + +/Output/Vocaluxe.exe* + +/Output/Vocaluxe.vshost.exe* + +/Output/VocaluxeLib.dll + +*.psess + +/*.vsp + +/*.ctl + +/Output/Registration.xml + +/Vocaluxe.suo +/Vocaluxe/Vocaluxe.csproj.user + +/Output/Config.xml diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs index c53b827c..ecd3d5c1 100644 --- a/Vocaluxe/Base/CConfig.cs +++ b/Vocaluxe/Base/CConfig.cs @@ -6,7 +6,6 @@ using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; using System.Xml; -using System.Xml.XPath; using OpenTK.Platform; @@ -80,6 +79,8 @@ namespace Vocaluxe.Base public static string Language = "English"; public static EOffOn LyricsOnTop = EOffOn.TR_CONFIG_OFF; public static string[] Players = new string[CSettings.MaxNumPlayer]; + + public static float MinLineBreakTime = 0.1f; //Minimum time to show the text before it is (to be) sung (if possible) // Video public static EVideoDecoder VideoDecoder = EVideoDecoder.FFmpeg; @@ -121,196 +122,163 @@ namespace Vocaluxe.Base public static bool LoadConfig() { #region Inits - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader; try { - xPathDoc = new XPathDocument(CSettings.sFileConfig); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(CSettings.sFileConfig); } - catch (Exception) + catch (Exception e) { - CLog.LogError("Error opening Config.xml (FileName: " + CSettings.sFileConfig); - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; + CLog.LogError("Error opening Config.xml " + CSettings.sFileConfig + ": " + e.Message); + return false; } #endregion Inits - if (loaded) + string value = string.Empty; + + #region Debug + xmlReader.TryGetEnumValue("//root/Debug/DebugLevel", ref DebugLevel); + #endregion Debug + + #region Graphics + xmlReader.TryGetEnumValue("//root/Graphics/Renderer", ref Renderer); + xmlReader.TryGetEnumValue("//root/Graphics/TextureQuality", ref TextureQuality); + xmlReader.TryGetIntValueRange("//root/Graphics/CoverSize", ref CoverSize, 32, 1024); + + xmlReader.TryGetIntValue("//root/Graphics/ScreenW", ref ScreenW); + xmlReader.TryGetIntValue("//root/Graphics/ScreenH", ref ScreenH); + xmlReader.TryGetEnumValue("//root/Graphics/AAMode", ref AAMode); + xmlReader.TryGetEnumValue("//root/Graphics/Colors", ref Colors); + xmlReader.TryGetFloatValue("//root/Graphics/MaxFPS", ref MaxFPS); + xmlReader.TryGetEnumValue("//root/Graphics/VSync", ref VSync); + xmlReader.TryGetEnumValue("//root/Graphics/FullScreen", ref FullScreen); + xmlReader.TryGetFloatValue("//root/Graphics/FadeTime", ref FadeTime); + #endregion Graphics + + #region Theme + xmlReader.GetValue("//root/Theme/Name", ref Theme, Theme); + xmlReader.GetValue("//root/Theme/Skin", ref Skin, Skin); + xmlReader.GetValue("//root/Theme/Cover", ref CoverTheme, CoverTheme); + xmlReader.TryGetEnumValue("//root/Theme/DrawNoteLines", ref DrawNoteLines); + xmlReader.TryGetEnumValue("//root/Theme/DrawToneHelper", ref DrawToneHelper); + xmlReader.TryGetEnumValue("//root/Theme/TimerLook", ref TimerLook); + xmlReader.TryGetEnumValue("//root/Theme/PlayerInfo", ref PlayerInfo); + xmlReader.TryGetEnumValue("//root/Theme/FadePlayerInfo", ref FadePlayerInfo); + xmlReader.TryGetEnumValue("//root/Theme/CoverLoading", ref CoverLoading); + xmlReader.TryGetEnumValue("//root/Theme/LyricStyle", ref LyricStyle); + #endregion Theme + + #region Sound + xmlReader.TryGetEnumValue("//root/Sound/PlayBackLib", ref PlayBackLib); + xmlReader.TryGetEnumValue("//root/Sound/RecordLib", ref RecordLib); + xmlReader.TryGetEnumValue("//root/Sound/AudioBufferSize", ref AudioBufferSize); + + xmlReader.TryGetIntValueRange("//root/Sound/AudioLatency", ref AudioLatency, -500, 500); + + xmlReader.TryGetEnumValue("//root/Sound/BackgroundMusic", ref BackgroundMusic); + xmlReader.TryGetIntValueRange("//root/Sound/BackgroundMusicVolume", ref BackgroundMusicVolume); + xmlReader.TryGetEnumValue("//root/Sound/BackgroundMusicSource", ref BackgroundMusicSource); + xmlReader.TryGetIntValueRange("//root/Sound/PreviewMusicVolume", ref PreviewMusicVolume); + xmlReader.TryGetIntValueRange("//root/Sound/GameMusicVolume", ref GameMusicVolume); + #endregion Sound + + #region Game + // Songfolder + value = string.Empty; + int i = 1; + while (xmlReader.GetValue("//root/Game/SongFolder" + i.ToString(), ref value, value)) { - string value = string.Empty; + if (i == 1) + SongFolder.Clear(); - #region Debug - CHelper.TryGetEnumValueFromXML("//root/Debug/DebugLevel", navigator, ref DebugLevel); - #endregion Debug - - #region Graphics - CHelper.TryGetEnumValueFromXML("//root/Graphics/Renderer", navigator, ref Renderer); - CHelper.TryGetEnumValueFromXML("//root/Graphics/TextureQuality", navigator, ref TextureQuality); - CHelper.TryGetIntValueFromXML("//root/Graphics/CoverSize", navigator, ref CoverSize); - if (CoverSize > 1024) - CoverSize = 1024; - if (CoverSize < 32) - CoverSize = 32; - - CHelper.TryGetIntValueFromXML("//root/Graphics/ScreenW", navigator, ref ScreenW); - CHelper.TryGetIntValueFromXML("//root/Graphics/ScreenH", navigator, ref ScreenH); - CHelper.TryGetEnumValueFromXML("//root/Graphics/AAMode", navigator, ref AAMode); - CHelper.TryGetEnumValueFromXML("//root/Graphics/Colors", navigator, ref Colors); - CHelper.TryGetFloatValueFromXML("//root/Graphics/MaxFPS", navigator, ref MaxFPS); - CHelper.TryGetEnumValueFromXML("//root/Graphics/VSync", navigator, ref VSync); - CHelper.TryGetEnumValueFromXML("//root/Graphics/FullScreen", navigator, ref FullScreen); - CHelper.TryGetFloatValueFromXML("//root/Graphics/FadeTime", navigator, ref FadeTime); - #endregion Graphics - - #region Theme - CHelper.GetValueFromXML("//root/Theme/Name", navigator, ref Theme, Theme); - CHelper.GetValueFromXML("//root/Theme/Skin", navigator, ref Skin, Skin); - CHelper.GetValueFromXML("//root/Theme/Cover", navigator, ref CoverTheme, CoverTheme); - CHelper.TryGetEnumValueFromXML("//root/Theme/DrawNoteLines", navigator, ref DrawNoteLines); - CHelper.TryGetEnumValueFromXML("//root/Theme/DrawToneHelper", navigator, ref DrawToneHelper); - CHelper.TryGetEnumValueFromXML("//root/Theme/TimerLook", navigator, ref TimerLook); - CHelper.TryGetEnumValueFromXML("//root/Theme/PlayerInfo", navigator, ref PlayerInfo); - CHelper.TryGetEnumValueFromXML("//root/Theme/FadePlayerInfo", navigator, ref FadePlayerInfo); - CHelper.TryGetEnumValueFromXML("//root/Theme/CoverLoading", navigator, ref CoverLoading); - CHelper.TryGetEnumValueFromXML("//root/Theme/LyricStyle", navigator, ref LyricStyle); - #endregion Theme - - #region Sound - CHelper.TryGetEnumValueFromXML("//root/Sound/PlayBackLib", navigator, ref PlayBackLib); - CHelper.TryGetEnumValueFromXML("//root/Sound/RecordLib", navigator, ref RecordLib); - CHelper.TryGetEnumValueFromXML("//root/Sound/AudioBufferSize", navigator, ref AudioBufferSize); - - CHelper.TryGetIntValueFromXML("//root/Sound/AudioLatency", navigator, ref AudioLatency); - if (AudioLatency < -500) - AudioLatency = -500; - if (AudioLatency > 500) - AudioLatency = 500; - - CHelper.TryGetEnumValueFromXML("//root/Sound/BackgroundMusic", navigator, ref BackgroundMusic); - CHelper.TryGetIntValueFromXML("//root/Sound/BackgroundMusicVolume", navigator, ref BackgroundMusicVolume); - if (BackgroundMusicVolume < 0) - BackgroundMusicVolume = 0; - if (BackgroundMusicVolume > 100) - BackgroundMusicVolume = 100; - CHelper.TryGetEnumValueFromXML("//root/Sound/BackgroundMusicSource", navigator, ref BackgroundMusicSource); - CHelper.TryGetIntValueFromXML("//root/Sound/PreviewMusicVolume", navigator, ref PreviewMusicVolume); - if (PreviewMusicVolume < 0) - PreviewMusicVolume = 0; - if (PreviewMusicVolume > 100) - PreviewMusicVolume = 100; - CHelper.TryGetIntValueFromXML("//root/Sound/GameMusicVolume", navigator, ref GameMusicVolume); - if (GameMusicVolume < 0) - GameMusicVolume = 0; - if (GameMusicVolume > 100) - GameMusicVolume = 100; - #endregion Sound - - #region Game - // Songfolder + SongFolder.Add(value); value = string.Empty; - int i = 1; - while(CHelper.GetValueFromXML("//root/Game/SongFolder" + i.ToString(), navigator, ref value, value)) - { - if (i == 1) - SongFolder.Clear(); - - SongFolder.Add(value); - value = string.Empty; - i++; - } - - CHelper.TryGetEnumValueFromXML("//root/Game/SongMenu", navigator, ref SongMenu); - CHelper.TryGetEnumValueFromXML("//root/Game/SongSorting", navigator, ref SongSorting); - CHelper.TryGetEnumValueFromXML("//root/Game/IgnoreArticles", navigator, ref IgnoreArticles); - CHelper.TryGetFloatValueFromXML("//root/Game/ScoreAnimationTime", navigator, ref ScoreAnimationTime); - CHelper.TryGetEnumValueFromXML("//root/Game/TimerMode", navigator, ref TimerMode); - CHelper.TryGetIntValueFromXML("//root/Game/NumPlayer", navigator, ref NumPlayer); - CHelper.TryGetEnumValueFromXML("//root/Game/Tabs", navigator, ref Tabs); - CHelper.GetValueFromXML("//root/Game/Language", navigator, ref Language, Language); - CHelper.TryGetEnumValueFromXML("//root/Game/LyricsOnTop", navigator, ref LyricsOnTop); - - if ((ScoreAnimationTime > 0 && ScoreAnimationTime < 1) || ScoreAnimationTime < 0) - { - ScoreAnimationTime = 1; - } - - if (NumPlayer < 1 || NumPlayer > CSettings.MaxNumPlayer) - NumPlayer = 2; - - List _Languages = new List(); - _Languages = CLanguage.GetLanguages(); - - bool _LangExists = false; - - for (i = 0; i < _Languages.Count; i++) - { - if (_Languages[i] == Language) - { - _LangExists = true; - } - } - - //TODO: What should we do, if English not exists? - if(_LangExists == false){ - Language = "English"; - - } - CLanguage.SetLanguage(Language); - - //Read players from config - for (i = 1; i <= CSettings.MaxNumPlayer; i++) - { - CHelper.GetValueFromXML("//root/Game/Players/Player" + i.ToString(), navigator, ref Players[i-1], string.Empty); - } - - #endregion Game - - #region Video - CHelper.TryGetEnumValueFromXML("//root/Video/VideoDecoder", navigator, ref VideoDecoder); - CHelper.TryGetEnumValueFromXML("//root/Video/VideoBackgrounds", navigator, ref VideoBackgrounds); - CHelper.TryGetEnumValueFromXML("//root/Video/VideoPreview", navigator, ref VideoPreview); - CHelper.TryGetEnumValueFromXML("//root/Video/VideosInSongs", navigator, ref VideosInSongs); - CHelper.TryGetEnumValueFromXML("//root/Video/VideosToBackground", navigator, ref VideosToBackground); - - CHelper.TryGetEnumValueFromXML("//root/Video/WebcamLib", navigator, ref WebcamLib); - WebcamConfig = new SWebcamConfig(); - CHelper.GetValueFromXML("//root/Video/WebcamConfig/MonikerString", navigator, ref WebcamConfig.MonikerString, String.Empty); - CHelper.TryGetIntValueFromXML("//root/Video/WebcamConfig/Framerate", navigator, ref WebcamConfig.Framerate); - CHelper.TryGetIntValueFromXML("//root/Video/WebcamConfig/Width", navigator, ref WebcamConfig.Width); - CHelper.TryGetIntValueFromXML("//root/Video/WebcamConfig/Height", navigator, ref WebcamConfig.Height); - #endregion Video - - #region Record - MicConfig = new SMicConfig[CSettings.MaxNumPlayer]; - value = string.Empty; - for (int p = 1; p <= CSettings.MaxNumPlayer; p++) - { - MicConfig[p - 1] = new SMicConfig(0); - CHelper.GetValueFromXML("//root/Record/MicConfig" + p.ToString() + "/DeviceName", navigator, ref MicConfig[p - 1].DeviceName, String.Empty); - CHelper.GetValueFromXML("//root/Record/MicConfig" + p.ToString() + "/DeviceDriver", navigator, ref MicConfig[p - 1].DeviceDriver, String.Empty); - CHelper.GetValueFromXML("//root/Record/MicConfig" + p.ToString() + "/InputName", navigator, ref MicConfig[p - 1].InputName, String.Empty); - CHelper.TryGetIntValueFromXML("//root/Record/MicConfig" + p.ToString() + "/Channel", navigator, ref MicConfig[p - 1].Channel); - } - - CHelper.TryGetIntValueFromXML("//root/Record/MicDelay", navigator, ref MicDelay); - MicDelay = (int)(20 * Math.Round(MicDelay / 20.0)); - if (MicDelay < 0) - MicDelay = 0; - if (MicDelay > 500) - MicDelay = 500; - #endregion Record - - return true; + i++; } - else return false; + + xmlReader.TryGetEnumValue("//root/Game/SongMenu", ref SongMenu); + xmlReader.TryGetEnumValue("//root/Game/SongSorting", ref SongSorting); + xmlReader.TryGetEnumValue("//root/Game/IgnoreArticles", ref IgnoreArticles); + xmlReader.TryGetFloatValue("//root/Game/ScoreAnimationTime", ref ScoreAnimationTime); + xmlReader.TryGetEnumValue("//root/Game/TimerMode", ref TimerMode); + xmlReader.TryGetIntValue("//root/Game/NumPlayer", ref NumPlayer); + xmlReader.TryGetEnumValue("//root/Game/Tabs", ref Tabs); + xmlReader.GetValue("//root/Game/Language", ref Language, Language); + xmlReader.TryGetEnumValue("//root/Game/LyricsOnTop", ref LyricsOnTop); + xmlReader.TryGetFloatValue("//root/Game/MinLineBreakTime", ref MinLineBreakTime); + + if ((ScoreAnimationTime > 0 && ScoreAnimationTime < 1) || ScoreAnimationTime < 0) + { + ScoreAnimationTime = 1; + } + + if (MinLineBreakTime < 0) + MinLineBreakTime = 0.1f; + + if (NumPlayer < 1 || NumPlayer > CSettings.MaxNumPlayer) + NumPlayer = 2; + + List _Languages = new List(); + _Languages = CLanguage.GetLanguages(); + + bool _LangExists = false; + + for (i = 0; i < _Languages.Count; i++) + { + if (_Languages[i] == Language) + { + _LangExists = true; + } + } + + //TODO: What should we do, if English not exists? + if(_LangExists == false){ + Language = "English"; + + } + CLanguage.SetLanguage(Language); + + //Read players from config + for (i = 1; i <= CSettings.MaxNumPlayer; i++) + { + xmlReader.GetValue("//root/Game/Players/Player" + i.ToString(), ref Players[i - 1], string.Empty); + } + + #endregion Game + + #region Video + xmlReader.TryGetEnumValue("//root/Video/VideoDecoder", ref VideoDecoder); + xmlReader.TryGetEnumValue("//root/Video/VideoBackgrounds", ref VideoBackgrounds); + xmlReader.TryGetEnumValue("//root/Video/VideoPreview", ref VideoPreview); + xmlReader.TryGetEnumValue("//root/Video/VideosInSongs", ref VideosInSongs); + xmlReader.TryGetEnumValue("//root/Video/VideosToBackground", ref VideosToBackground); + + xmlReader.TryGetEnumValue("//root/Video/WebcamLib", ref WebcamLib); + WebcamConfig = new SWebcamConfig(); + xmlReader.GetValue("//root/Video/WebcamConfig/MonikerString", ref WebcamConfig.MonikerString, String.Empty); + xmlReader.TryGetIntValue("//root/Video/WebcamConfig/Framerate", ref WebcamConfig.Framerate); + xmlReader.TryGetIntValue("//root/Video/WebcamConfig/Width", ref WebcamConfig.Width); + xmlReader.TryGetIntValue("//root/Video/WebcamConfig/Height", ref WebcamConfig.Height); + #endregion Video + + #region Record + MicConfig = new SMicConfig[CSettings.MaxNumPlayer]; + value = string.Empty; + for (int p = 1; p <= CSettings.MaxNumPlayer; p++) + { + MicConfig[p - 1] = new SMicConfig(0); + xmlReader.GetValue("//root/Record/MicConfig" + p.ToString() + "/DeviceName", ref MicConfig[p - 1].DeviceName, String.Empty); + xmlReader.GetValue("//root/Record/MicConfig" + p.ToString() + "/DeviceDriver", ref MicConfig[p - 1].DeviceDriver, String.Empty); + xmlReader.GetValue("//root/Record/MicConfig" + p.ToString() + "/InputName", ref MicConfig[p - 1].InputName, String.Empty); + xmlReader.TryGetIntValue("//root/Record/MicConfig" + p.ToString() + "/Channel", ref MicConfig[p - 1].Channel); + } + + xmlReader.TryGetIntValueRange("//root/Record/MicDelay", ref MicDelay, 0, 500); + MicDelay = (int)(20 * Math.Round(MicDelay / 20.0)); + #endregion Record + + return true; } public static bool SaveConfig() @@ -503,6 +471,9 @@ namespace Vocaluxe.Base writer.WriteComment("Lyrics also on Top of screen: " + CHelper.ListStrings(Enum.GetNames(typeof(EOffOn)))); writer.WriteElementString("LyricsOnTop", Enum.GetName(typeof(EOffOn), LyricsOnTop)); + writer.WriteComment("MinLineBreakTime: Value >= 0 in s. Minimum time the text is shown before it is to be sung"); + writer.WriteElementString("MinLineBreakTime", MinLineBreakTime.ToString()); + writer.WriteComment("Default profile for players 1..." + CSettings.MaxNumPlayer.ToString() + ":"); writer.WriteStartElement("Players"); for (int i = 1; i <= CSettings.MaxNumPlayer; i++) diff --git a/Vocaluxe/Base/CCover.cs b/Vocaluxe/Base/CCover.cs index c63082f8..66b8f8c5 100644 --- a/Vocaluxe/Base/CCover.cs +++ b/Vocaluxe/Base/CCover.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Lib.Draw; using Vocaluxe.Menu; @@ -164,32 +163,14 @@ namespace Vocaluxe.Base foreach (string file in files) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(path, file)); - try - { - xPathDoc = new XPathDocument(Path.Combine(path, file)); - navigator = xPathDoc.CreateNavigator(); - loaded = true; - } - catch (Exception) - { - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; - } - - if (loaded) + if (xmlReader != null) { SCoverTheme coverTheme = new SCoverTheme(); - CHelper.GetValueFromXML("//root/Info/Name", navigator, ref coverTheme.Name, String.Empty); - CHelper.GetValueFromXML("//root/Info/Folder", navigator, ref coverTheme.Folder, String.Empty); + xmlReader.GetValue("//root/Info/Name", ref coverTheme.Name, String.Empty); + xmlReader.GetValue("//root/Info/Folder", ref coverTheme.Folder, String.Empty); if (coverTheme.Folder != String.Empty && coverTheme.Name != String.Empty) { @@ -213,39 +194,21 @@ namespace Vocaluxe.Base if (coverTheme.Name != String.Empty) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(CSettings.sFolderCover, coverTheme.File)); - try - { - xPathDoc = new XPathDocument(Path.Combine(CSettings.sFolderCover, coverTheme.File)); - navigator = xPathDoc.CreateNavigator(); - loaded = true; - } - catch (Exception) - { - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; - } - - if (loaded) + if (xmlReader != null) { lock (_MutexCover) { _Cover.Clear(); - List cover = CHelper.GetValuesFromXML("Cover", navigator); + List cover = xmlReader.GetValues("Cover"); for (int i = 0; i < cover.Count; i++) { SCover sk = new SCover(); string name = String.Empty; string value = String.Empty; - CHelper.GetValueFromXML("//root/Cover/" + cover[i] + "/Name", navigator, ref name, String.Empty); - CHelper.GetValueFromXML("//root/Cover/" + cover[i] + "/Path", navigator, ref value, String.Empty); + xmlReader.GetValue("//root/Cover/" + cover[i] + "/Name", ref name, String.Empty); + xmlReader.GetValue("//root/Cover/" + cover[i] + "/Path", ref value, String.Empty); sk.Name = name; sk.Value = Path.Combine(coverTheme.Folder,value); if (File.Exists(Path.Combine(CSettings.sFolderCover, Path.Combine(coverTheme.Folder, value)))) diff --git a/Vocaluxe/Base/CFont.cs b/Vocaluxe/Base/CFont.cs index 79120eb4..dbdc14f9 100644 --- a/Vocaluxe/Base/CFont.cs +++ b/Vocaluxe/Base/CFont.cs @@ -9,7 +9,6 @@ using System.IO; using System.Text; using System.Windows.Forms; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Lib.Draw; using Vocaluxe.Menu; @@ -674,92 +673,80 @@ namespace Vocaluxe.Base /// private static bool LoadFontList() { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader; try { - xPathDoc = new XPathDocument(System.IO.Path.Combine(CSettings.sFolderFonts, CSettings.sFileFonts)); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(System.IO.Path.Combine(CSettings.sFolderFonts, CSettings.sFileFonts)); } catch (Exception e) { CLog.LogError("Error loading default fonts: " + e.Message); - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; + return false; } _Fonts.Clear(); - if (loaded) + string value = string.Empty; + int i = 1; + while (xmlReader.GetValue("//root/Font" + i.ToString() + "/Folder", ref value, value)) { - string value = string.Empty; - int i = 1; - while (CHelper.GetValueFromXML("//root/Font" + i.ToString() + "/Folder", navigator, ref value, value)) - { - string Folder = value; + string Folder = value; - CHelper.GetValueFromXML("//root/Font" + i.ToString() + "/FileNormal", navigator, ref value, value); - value = Path.Combine(Directory.GetCurrentDirectory(), - Path.Combine(CSettings.sFolderFonts, Path.Combine(Folder, value))); - CFont f = new CFont(value); - SFont sf = new SFont(); - sf.Normal = f; + xmlReader.GetValue("//root/Font" + i.ToString() + "/FileNormal", ref value, value); + value = Path.Combine(Directory.GetCurrentDirectory(), + Path.Combine(CSettings.sFolderFonts, Path.Combine(Folder, value))); + CFont f = new CFont(value); + SFont sf = new SFont(); + sf.Normal = f; - string name = String.Empty; - CHelper.GetValueFromXML("//root/Font" + i.ToString() + "/Name", navigator, ref name, value); - sf.Name = name; - sf.IsThemeFont = false; - sf.ThemeName = String.Empty; - sf.PartyModeID = -1; + string name = String.Empty; + xmlReader.GetValue("//root/Font" + i.ToString() + "/Name", ref name, value); + sf.Name = name; + sf.IsThemeFont = false; + sf.ThemeName = String.Empty; + sf.PartyModeID = -1; - CHelper.GetValueFromXML("//root/Font" + i.ToString() + "/FileItalic", navigator, ref value, value); - value = Path.Combine(Directory.GetCurrentDirectory(), - Path.Combine(CSettings.sFolderFonts, Path.Combine(Folder, value))); - f = new CFont(value); - sf.Italic = f; + xmlReader.GetValue("//root/Font" + i.ToString() + "/FileItalic", ref value, value); + value = Path.Combine(Directory.GetCurrentDirectory(), + Path.Combine(CSettings.sFolderFonts, Path.Combine(Folder, value))); + f = new CFont(value); + sf.Italic = f; - CHelper.GetValueFromXML("//root/Font" + i.ToString() + "/FileBold", navigator, ref value, value); - value = Path.Combine(Directory.GetCurrentDirectory(), - Path.Combine(CSettings.sFolderFonts, Path.Combine(Folder, value))); - f = new CFont(value); - sf.Bold = f; + xmlReader.GetValue("//root/Font" + i.ToString() + "/FileBold", ref value, value); + value = Path.Combine(Directory.GetCurrentDirectory(), + Path.Combine(CSettings.sFolderFonts, Path.Combine(Folder, value))); + f = new CFont(value); + sf.Bold = f; - CHelper.GetValueFromXML("//root/Font" + i.ToString() + "/FileBoldItalic", navigator, ref value, value); - value = Path.Combine(Directory.GetCurrentDirectory(), - Path.Combine(CSettings.sFolderFonts, Path.Combine(Folder, value))); - f = new CFont(value); - sf.BoldItalic = f; + xmlReader.GetValue("//root/Font" + i.ToString() + "/FileBoldItalic", ref value, value); + value = Path.Combine(Directory.GetCurrentDirectory(), + Path.Combine(CSettings.sFolderFonts, Path.Combine(Folder, value))); + f = new CFont(value); + sf.BoldItalic = f; - sf.Outline = 0f; - CHelper.TryGetFloatValueFromXML("//root/Font" + i.ToString() + "/Outline", navigator, ref sf.Outline); + sf.Outline = 0f; + xmlReader.TryGetFloatValue("//root/Font" + i.ToString() + "/Outline", ref sf.Outline); - sf.OutlineColor = new SColorF(0f, 0f, 0f, 1f); - CHelper.TryGetFloatValueFromXML("//root/Font" + i.ToString() + "/OutlineColorR", navigator, ref sf.OutlineColor.R); - CHelper.TryGetFloatValueFromXML("//root/Font" + i.ToString() + "/OutlineColorG", navigator, ref sf.OutlineColor.G); - CHelper.TryGetFloatValueFromXML("//root/Font" + i.ToString() + "/OutlineColorB", navigator, ref sf.OutlineColor.B); - CHelper.TryGetFloatValueFromXML("//root/Font" + i.ToString() + "/OutlineColorA", navigator, ref sf.OutlineColor.A); + sf.OutlineColor = new SColorF(0f, 0f, 0f, 1f); + xmlReader.TryGetFloatValue("//root/Font" + i.ToString() + "/OutlineColorR", ref sf.OutlineColor.R); + xmlReader.TryGetFloatValue("//root/Font" + i.ToString() + "/OutlineColorG", ref sf.OutlineColor.G); + xmlReader.TryGetFloatValue("//root/Font" + i.ToString() + "/OutlineColorB", ref sf.OutlineColor.B); + xmlReader.TryGetFloatValue("//root/Font" + i.ToString() + "/OutlineColorA", ref sf.OutlineColor.A); - _Fonts.Add(sf); - i++; - } + _Fonts.Add(sf); + i++; } - return loaded; + return true; } /// /// Loads theme fonts from skin file /// - public static void LoadThemeFonts(string ThemeName, string FontFolder, XPathNavigator navigator) + public static void LoadThemeFonts(string ThemeName, string FontFolder, CXMLReader xmlReader) { string value = string.Empty; int i = 1; - while (CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/Folder", navigator, ref value, value)) + while (xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/Folder", ref value, value)) { SFont sf = new SFont(); sf.Folder = value; @@ -770,42 +757,42 @@ namespace Vocaluxe.Base bool ok = true; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/FileNormal", navigator, ref value, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/FileNormal", ref value, value); sf.FileNormal = value; value = Path.Combine(FontFolder, Path.Combine(sf.Folder, value)); CFont f = new CFont(value); sf.Normal = f; string name = String.Empty; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/Name", navigator, ref name, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/Name", ref name, value); sf.Name = name; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/FileItalic", navigator, ref value, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/FileItalic", ref value, value); sf.FileItalic = value; value = Path.Combine(FontFolder, Path.Combine(sf.Folder, value)); f = new CFont(value); sf.Italic = f; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/FileBold", navigator, ref value, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/FileBold", ref value, value); sf.FileBold = value; value = Path.Combine(FontFolder, Path.Combine(sf.Folder, value)); f = new CFont(value); sf.Bold = f; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/FileBoldItalic", navigator, ref value, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/FileBoldItalic", ref value, value); sf.FileBoldItalic = value; value = Path.Combine(FontFolder, Path.Combine(sf.Folder, value)); f = new CFont(value); sf.BoldItalic = f; sf.Outline = 0f; - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/Outline", navigator, ref sf.Outline); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/Outline", ref sf.Outline); sf.OutlineColor = new SColorF(0f, 0f, 0f, 1f); - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/OutlineColorR", navigator, ref sf.OutlineColor.R); - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/OutlineColorG", navigator, ref sf.OutlineColor.G); - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/OutlineColorB", navigator, ref sf.OutlineColor.B); - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/OutlineColorA", navigator, ref sf.OutlineColor.A); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/OutlineColorR", ref sf.OutlineColor.R); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/OutlineColorG", ref sf.OutlineColor.G); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/OutlineColorB", ref sf.OutlineColor.B); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/OutlineColorA", ref sf.OutlineColor.A); if (ok) _Fonts.Add(sf); @@ -890,11 +877,11 @@ namespace Vocaluxe.Base /// /// Loads party mode fonts from skin file /// - public static void LoadPartyModeFonts(int PartyModeID, string FontFolder, XPathNavigator navigator) + public static void LoadPartyModeFonts(int PartyModeID, string FontFolder, CXMLReader xmlReader) { string value = string.Empty; int i = 1; - while (CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/Folder", navigator, ref value, value)) + while (xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/Folder", ref value, value)) { SFont sf = new SFont(); sf.Folder = value; @@ -905,42 +892,42 @@ namespace Vocaluxe.Base bool ok = true; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/FileNormal", navigator, ref value, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/FileNormal", ref value, value); sf.FileNormal = value; value = Path.Combine(FontFolder, Path.Combine(sf.Folder, value)); CFont f = new CFont(value); sf.Normal = f; string name = String.Empty; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/Name", navigator, ref name, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/Name", ref name, value); sf.Name = name; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/FileItalic", navigator, ref value, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/FileItalic", ref value, value); sf.FileItalic = value; value = Path.Combine(FontFolder, Path.Combine(sf.Folder, value)); f = new CFont(value); sf.Italic = f; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/FileBold", navigator, ref value, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/FileBold", ref value, value); sf.FileBold = value; value = Path.Combine(FontFolder, Path.Combine(sf.Folder, value)); f = new CFont(value); sf.Bold = f; - ok &= CHelper.GetValueFromXML("//root/Fonts/Font" + i.ToString() + "/FileBoldItalic", navigator, ref value, value); + ok &= xmlReader.GetValue("//root/Fonts/Font" + i.ToString() + "/FileBoldItalic", ref value, value); sf.FileBoldItalic = value; value = Path.Combine(FontFolder, Path.Combine(sf.Folder, value)); f = new CFont(value); sf.BoldItalic = f; sf.Outline = 0f; - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/Outline", navigator, ref sf.Outline); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/Outline", ref sf.Outline); sf.OutlineColor = new SColorF(0f, 0f, 0f, 1f); - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/OutlineColorR", navigator, ref sf.OutlineColor.R); - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/OutlineColorG", navigator, ref sf.OutlineColor.G); - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/OutlineColorB", navigator, ref sf.OutlineColor.B); - ok &= CHelper.TryGetFloatValueFromXML("//root/Fonts/Font" + i.ToString() + "/OutlineColorA", navigator, ref sf.OutlineColor.A); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/OutlineColorR", ref sf.OutlineColor.R); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/OutlineColorG", ref sf.OutlineColor.G); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/OutlineColorB", ref sf.OutlineColor.B); + ok &= xmlReader.TryGetFloatValue("//root/Fonts/Font" + i.ToString() + "/OutlineColorA", ref sf.OutlineColor.A); if (ok) _Fonts.Add(sf); diff --git a/Vocaluxe/Base/CLanguage.cs b/Vocaluxe/Base/CLanguage.cs index a4d0d049..bc366e11 100644 --- a/Vocaluxe/Base/CLanguage.cs +++ b/Vocaluxe/Base/CLanguage.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Menu; @@ -241,125 +240,103 @@ namespace Vocaluxe.Base private static bool LoadPartyLanguageFile(int PartyModeID, string file) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader; try { - xPathDoc = new XPathDocument(file); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(file); } catch (Exception e) { - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; - CLog.LogError("Error opening Party Language File " + file + ": " + e.Message); + return false; } - if (loaded) + string value = string.Empty; + if (xmlReader.GetValue("//resources/string[@name='language']", ref value, value)) { - string value = string.Empty; - if (loaded == CHelper.GetValueFromXML("//resources/string[@name='language']", navigator, ref value, value)) - { - int nr = GetLanguageNr(value); + int nr = GetLanguageNr(value); - if (nr == -1) - return true; - - SPartyLanguage lang = new SPartyLanguage(); - lang.PartyModeID = PartyModeID; - lang.Texts = new Hashtable(); - - List texts = CHelper.GetAttributesFromXML("resources", navigator, "name"); - for (int i = 0; i < texts.Count; i++) - { - if (CHelper.GetValueFromXML("//resources/string[@name='" + texts[i] + "']", navigator, ref value, value)) - { - try - { - lang.Texts.Add(texts[i], value); - } - catch (Exception e) - { - CLog.LogError("Error reading Party Language File " + file + ": " + e.Message); - return false; - } - } - - } - _Languages[nr].PartyModeTexts.Add(lang); + if (nr == -1) return true; + + SPartyLanguage lang = new SPartyLanguage(); + lang.PartyModeID = PartyModeID; + lang.Texts = new Hashtable(); + + List texts = xmlReader.GetAttributes("resources", "name"); + for (int i = 0; i < texts.Count; i++) + { + if (xmlReader.GetValue("//resources/string[@name='" + texts[i] + "']", ref value, value)) + { + try + { + lang.Texts.Add(texts[i], value); + } + catch (Exception e) + { + CLog.LogError("Error reading Party Language File " + file + ": " + e.Message); + return false; + } + } + } + _Languages[nr].PartyModeTexts.Add(lang); + return true; + } + else + { + CLog.LogError("Error reading Party Language File " + file); + return false; } - CLog.LogError("Error reading Party Language File " + file); - return false; } private static void LoadLanguageFile(string FileName) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; SLanguage lang = new SLanguage(); lang.LanguageFilePath = Path.Combine(CSettings.sFolderLanguages, FileName); + CXMLReader xmlReader; + try { - xPathDoc = new XPathDocument(lang.LanguageFilePath); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(lang.LanguageFilePath); } catch (Exception e) { - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; - - CLog.LogError("Error opening Language File " + FileName + ": " + e.Message); + CLog.LogError("Error opening Language File " + FileName + ": " + e.Message); + return; } - if (loaded) + string value = string.Empty; + if (xmlReader.GetValue("//resources/string[@name='language']", ref value, value)) { - string value = string.Empty; - if (CHelper.GetValueFromXML("//resources/string[@name='language']", navigator, ref value, value)) + lang.Name = value; + + if (lang.Name == CSettings.FallbackLanguage) + _FallbackLanguage = _Languages.Count; + + lang.Texts = new Hashtable(); + lang.PartyModeTexts = new List(); + + List texts = xmlReader.GetAttributes("resources", "name"); + for (int i = 0; i < texts.Count; i++) { - lang.Name = value; - - if (lang.Name == CSettings.FallbackLanguage) - _FallbackLanguage = _Languages.Count; - - lang.Texts = new Hashtable(); - lang.PartyModeTexts = new List(); - - List texts = CHelper.GetAttributesFromXML("resources", navigator, "name"); - for (int i = 0; i < texts.Count; i++) + if (xmlReader.GetValue("//resources/string[@name='" + texts[i] + "']", ref value, value)) { - if (CHelper.GetValueFromXML("//resources/string[@name='" + texts[i] + "']", navigator, ref value, value)) + try { - try - { - lang.Texts.Add(texts[i], value); - } - catch (Exception e) - { - CLog.LogError("Error reading Language File " + FileName + ": " + e.Message); - } + lang.Texts.Add(texts[i], value); + } + catch (Exception e) + { + CLog.LogError("Error reading Language File " + FileName + ": " + e.Message); } - } - - _Languages.Add(lang); + } + + _Languages.Add(lang); } } diff --git a/Vocaluxe/Base/CParty.cs b/Vocaluxe/Base/CParty.cs index 1b661582..8126b6df 100644 --- a/Vocaluxe/Base/CParty.cs +++ b/Vocaluxe/Base/CParty.cs @@ -4,8 +4,6 @@ using System.Collections.Generic; using System.IO; using System.Reflection; using System.Text; -using System.Xml; -using System.Xml.XPath; using Vocaluxe.Menu; using Vocaluxe.PartyModes; @@ -224,53 +222,31 @@ namespace Vocaluxe.Base pm.ScreenFiles = new List(); pm.NoErrors = false; - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader; try { - xPathDoc = new XPathDocument(file); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(file); } catch (Exception e) { - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; - CLog.LogError("Error opening party mode file " + file + ": " + e.Message); + + return pm; } - if (loaded) - { - loaded &= CHelper.TryGetIntValueFromXML("//root/PartyModeSystemVersion", navigator, ref pm.PartyModeSystemVersion); - loaded &= CHelper.GetValueFromXML("//root/Info/Name", navigator, ref pm.Name, "ERROR Name"); - loaded &= CHelper.GetValueFromXML("//root/Info/Description", navigator, ref pm.Description, "ERROR Description"); - loaded &= CHelper.GetValueFromXML("//root/Info/Author", navigator, ref pm.Author, "ERROR Author"); - loaded &= CHelper.GetValueFromXML("//root/Info/Folder", navigator, ref pm.Folder, "ERROR Folder"); - loaded &= CHelper.GetValueFromXML("//root/Info/PartyModeFile", navigator, ref pm.PartyModeFile, "ERROR PartyModeFile"); - loaded &= CHelper.GetInnerValuesFromXML("PartyScreens", navigator, ref pm.ScreenFiles); - loaded &= CHelper.TryGetIntValueFromXML("//root/Info/PartyModeVersionMajor", navigator, ref pm.PartyModeVersionMajor); - loaded &= CHelper.TryGetIntValueFromXML("//root/Info/PartyModeVersionMinor", navigator, ref pm.PartyModeVersionMinor); - loaded &= CHelper.GetValueFromXML("//root/Info/TargetAudience", navigator, ref pm.TargetAudience, "ERROR TargetAudience"); + bool loaded = true; - if (pm.PartyModeSystemVersion != PartyModeSystemVersion) - { - CLog.LogError("Error loading PartyMode file (wrong PartyModeSystemVersion): " + file); - return pm; - } - - if (pm.ScreenFiles.Count == 0) - { - CLog.LogError("Error loading PartyMode file (no ScreenFiles found): " + file); - return pm; - } - } + loaded &= xmlReader.TryGetIntValue("//root/PartyModeSystemVersion", ref pm.PartyModeSystemVersion); + loaded &= xmlReader.GetValue("//root/Info/Name", ref pm.Name, "ERROR Name"); + loaded &= xmlReader.GetValue("//root/Info/Description", ref pm.Description, "ERROR Description"); + loaded &= xmlReader.GetValue("//root/Info/Author", ref pm.Author, "ERROR Author"); + loaded &= xmlReader.GetValue("//root/Info/Folder", ref pm.Folder, "ERROR Folder"); + loaded &= xmlReader.GetValue("//root/Info/PartyModeFile", ref pm.PartyModeFile, "ERROR PartyModeFile"); + loaded &= xmlReader.GetInnerValues("PartyScreens", ref pm.ScreenFiles); + loaded &= xmlReader.TryGetIntValue("//root/Info/PartyModeVersionMajor", ref pm.PartyModeVersionMajor); + loaded &= xmlReader.TryGetIntValue("//root/Info/PartyModeVersionMinor", ref pm.PartyModeVersionMinor); + loaded &= xmlReader.GetValue("//root/Info/TargetAudience", ref pm.TargetAudience, "ERROR TargetAudience"); if (!loaded) { @@ -278,6 +254,18 @@ namespace Vocaluxe.Base return pm; } + if (pm.PartyModeSystemVersion != PartyModeSystemVersion) + { + CLog.LogError("Error loading PartyMode file (wrong PartyModeSystemVersion): " + file); + return pm; + } + + if (pm.ScreenFiles.Count == 0) + { + CLog.LogError("Error loading PartyMode file (no ScreenFiles found): " + file); + return pm; + } + string PathToCode = Path.Combine(Path.Combine(CSettings.sFolderPartyModes, pm.Folder), CSettings.sFolderPartyModeCode); List FilesToCompile = new List(); diff --git a/Vocaluxe/Base/CPlaylists.cs b/Vocaluxe/Base/CPlaylists.cs index 4a7fb088..6a0fc124 100644 --- a/Vocaluxe/Base/CPlaylists.cs +++ b/Vocaluxe/Base/CPlaylists.cs @@ -3,8 +3,6 @@ using System.Collections.Generic; using System.IO; using System.Text; using System.Text.RegularExpressions; -using System.Xml; -using System.Xml.XPath; using Vocaluxe.Lib.Playlist; using Vocaluxe.GameModes; diff --git a/Vocaluxe/Base/CProfiles.cs b/Vocaluxe/Base/CProfiles.cs index c1eedb3f..8b7712cc 100644 --- a/Vocaluxe/Base/CProfiles.cs +++ b/Vocaluxe/Base/CProfiles.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Lib.Draw; using Vocaluxe.Menu; @@ -359,59 +358,46 @@ namespace Vocaluxe.Base private static void LoadProfile(string FileName) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; - SProfile profile = new SProfile(); profile.ProfileFile = Path.Combine(CSettings.sFolderProfiles, FileName); + CXMLReader xmlReader; + try { - xPathDoc = new XPathDocument(profile.ProfileFile); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(profile.ProfileFile); } catch (Exception e) { - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; - - CLog.LogError("Error opening Profile File " + FileName + ": " + e.Message); + CLog.LogError("Error opening Profile File " + FileName + ": " + e.Message); + return; } - if (loaded) + string value = String.Empty; + if (xmlReader.GetValue("//root/Info/PlayerName", ref value, value)) { - string value = String.Empty; - if (CHelper.GetValueFromXML("//root/Info/PlayerName", navigator, ref value, value)) + profile.PlayerName = value; + + profile.Difficulty = EGameDifficulty.TR_CONFIG_EASY; + xmlReader.TryGetEnumValue("//root/Info/Difficulty", ref profile.Difficulty); + + profile.Avatar = new SAvatar(-1); + if (xmlReader.GetValue("//root/Info/Avatar", ref value, value)) { - profile.PlayerName = value; - - profile.Difficulty = EGameDifficulty.TR_CONFIG_EASY; - CHelper.TryGetEnumValueFromXML("//root/Info/Difficulty", navigator, ref profile.Difficulty); - - profile.Avatar = new SAvatar(-1); - if (CHelper.GetValueFromXML("//root/Info/Avatar", navigator, ref value, value)) - { - profile.Avatar = GetAvatar(value); - } - - profile.GuestProfile = EOffOn.TR_CONFIG_OFF; - CHelper.TryGetEnumValueFromXML("//root/Info/GuestProfile", navigator, ref profile.GuestProfile); - - profile.Active = EOffOn.TR_CONFIG_ON; - CHelper.TryGetEnumValueFromXML("//root/Info/Active", navigator, ref profile.Active); - - _Profiles.Add(profile); - } - else - { - CLog.LogError("Can't find PlayerName in Profile File: " + FileName); + profile.Avatar = GetAvatar(value); } + + profile.GuestProfile = EOffOn.TR_CONFIG_OFF; + xmlReader.TryGetEnumValue("//root/Info/GuestProfile", ref profile.GuestProfile); + + profile.Active = EOffOn.TR_CONFIG_ON; + xmlReader.TryGetEnumValue("//root/Info/Active", ref profile.Active); + + _Profiles.Add(profile); + } + else + { + CLog.LogError("Can't find PlayerName in Profile File: " + FileName); } } #endregion private methods diff --git a/Vocaluxe/Base/CTheme.cs b/Vocaluxe/Base/CTheme.cs index ab24c2da..6c5dcf13 100644 --- a/Vocaluxe/Base/CTheme.cs +++ b/Vocaluxe/Base/CTheme.cs @@ -4,7 +4,6 @@ using System.IO; using System.Text; using System.Windows.Forms; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Lib.Draw; using Vocaluxe.Menu; @@ -148,80 +147,68 @@ namespace Vocaluxe.Base public static bool LoadSkin(int SkinIndex) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader; try { - xPathDoc = new XPathDocument(Path.Combine(_Skins[SkinIndex].Path, _Skins[SkinIndex].FileName)); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(Path.Combine(_Skins[SkinIndex].Path, _Skins[SkinIndex].FileName)); } catch (Exception e) { CLog.LogError("Error loading skin " + _Skins[SkinIndex].FileName + ": " + e.Message); - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; + return false; } - if (loaded) + string value = String.Empty; + + + // load skins/textures + List keys = new List(_Skins[SkinIndex].SkinList.Keys); + + foreach (string name in keys) { - string value = String.Empty; - - - // load skins/textures - List keys = new List(_Skins[SkinIndex].SkinList.Keys); - - foreach (string name in keys) + try { - try - { - CHelper.GetValueFromXML("//root/Skins/" + name, navigator, ref value, String.Empty); - SkinElement sk = _Skins[SkinIndex].SkinList[name]; - sk.Value = value; - sk.VideoIndex = -1; - sk.Texture = CDraw.AddTexture(Path.Combine(_Skins[SkinIndex].Path, sk.Value)); - _Skins[SkinIndex].SkinList[name] = sk; - } - catch (Exception e) - { - MessageBox.Show("Error on loading texture \"" + name + "\": " + e.Message + e.StackTrace); - CLog.LogError("Error on loading texture \"" + name + "\": " + e.Message + e.StackTrace); - } + xmlReader.GetValue("//root/Skins/" + name, ref value, String.Empty); + SkinElement sk = _Skins[SkinIndex].SkinList[name]; + sk.Value = value; + sk.VideoIndex = -1; + sk.Texture = CDraw.AddTexture(Path.Combine(_Skins[SkinIndex].Path, sk.Value)); + _Skins[SkinIndex].SkinList[name] = sk; } - - - // load videos - for (int i = 0; i < _Skins[SkinIndex].VideoList.Count; i++) + catch (Exception e) { - try - { - CHelper.GetValueFromXML("//root/Videos/" + _Skins[SkinIndex].VideoList[i].Name, navigator, ref value, String.Empty); - SkinElement sk = new SkinElement(); - sk.Name = _Skins[SkinIndex].VideoList[i].Name; - sk.Value = value; - sk.VideoIndex = CVideo.VdLoad(Path.Combine(_Skins[SkinIndex].Path, sk.Value)); - CVideo.VdSetLoop(sk.VideoIndex, true); - CVideo.VdPause(sk.VideoIndex); - sk.Texture = new STexture(-1); - _Skins[SkinIndex].VideoList[i] = sk; - } - catch (Exception e) - { - MessageBox.Show("Error on loading video \"" + _Skins[SkinIndex].VideoList[i].Name + "\": " + e.Message + e.StackTrace); - CLog.LogError("Error on loading video \"" + _Skins[SkinIndex].VideoList[i].Name + "\": " + e.Message + e.StackTrace); - } + MessageBox.Show("Error on loading texture \"" + name + "\": " + e.Message + e.StackTrace); + CLog.LogError("Error on loading texture \"" + name + "\": " + e.Message + e.StackTrace); } - - // load colors - LoadColors(navigator, SkinIndex); } - return loaded; + + + // load videos + for (int i = 0; i < _Skins[SkinIndex].VideoList.Count; i++) + { + try + { + xmlReader.GetValue("//root/Videos/" + _Skins[SkinIndex].VideoList[i].Name, ref value, String.Empty); + SkinElement sk = new SkinElement(); + sk.Name = _Skins[SkinIndex].VideoList[i].Name; + sk.Value = value; + sk.VideoIndex = CVideo.VdLoad(Path.Combine(_Skins[SkinIndex].Path, sk.Value)); + CVideo.VdSetLoop(sk.VideoIndex, true); + CVideo.VdPause(sk.VideoIndex); + sk.Texture = new STexture(-1); + _Skins[SkinIndex].VideoList[i] = sk; + } + catch (Exception e) + { + MessageBox.Show("Error on loading video \"" + _Skins[SkinIndex].VideoList[i].Name + "\": " + e.Message + e.StackTrace); + CLog.LogError("Error on loading video \"" + _Skins[SkinIndex].VideoList[i].Name + "\": " + e.Message + e.StackTrace); + } + } + + // load colors + LoadColors(xmlReader, SkinIndex); + return true; } public static void UnloadSkins() @@ -271,57 +258,45 @@ namespace Vocaluxe.Base public static bool LoadTheme(int ThemeIndex) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; - if (ThemeIndex < 0 || ThemeIndex >= _Themes.Count) { CLog.LogError("Can't find Theme Index " + ThemeIndex.ToString()); return false; } + CXMLReader xmlReader; + try { - xPathDoc = new XPathDocument(Path.Combine(_Themes[ThemeIndex].Path, _Themes[ThemeIndex].FileName)); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(Path.Combine(_Themes[ThemeIndex].Path, _Themes[ThemeIndex].FileName)); } catch (Exception e) { CLog.LogError("Error loading theme " + _Themes[ThemeIndex].FileName + ": " + e.Message); - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; + return false; } - if (loaded) + int skinIndex = GetSkinIndex(_Themes[ThemeIndex].PartyModeID); + + // Load Cursor + if (_Themes[ThemeIndex].PartyModeID == -1) + LoadCursor(xmlReader, skinIndex); + + // load fonts + if (_Themes[ThemeIndex].PartyModeID == -1) { - int skinIndex = GetSkinIndex(_Themes[ThemeIndex].PartyModeID); - - // Load Cursor - if (_Themes[ThemeIndex].PartyModeID == -1) - LoadCursor(navigator, skinIndex); - - // load fonts - if (_Themes[ThemeIndex].PartyModeID == -1) - { - CFonts.LoadThemeFonts( - _Themes[ThemeIndex].Name, - Path.Combine(Path.Combine(_Themes[ThemeIndex].Path, _Themes[ThemeIndex].SkinFolder), CSettings.sFolderThemeFonts), - navigator); - } - else - { - CFonts.LoadPartyModeFonts(_Themes[ThemeIndex].PartyModeID, - Path.Combine(_Themes[ThemeIndex].Path, CSettings.sFolderPartyModeFonts), - navigator); - } + CFonts.LoadThemeFonts( + _Themes[ThemeIndex].Name, + Path.Combine(Path.Combine(_Themes[ThemeIndex].Path, _Themes[ThemeIndex].SkinFolder), CSettings.sFolderThemeFonts), + xmlReader); } - return loaded; + else + { + CFonts.LoadPartyModeFonts(_Themes[ThemeIndex].PartyModeID, + Path.Combine(_Themes[ThemeIndex].Path, CSettings.sFolderPartyModeFonts), + xmlReader); + } + return true; } public static void SaveTheme() @@ -445,64 +420,51 @@ namespace Vocaluxe.Base public static bool AddTheme(string FilePath, int PartyModeID) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader; try { - xPathDoc = new XPathDocument(FilePath); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(FilePath); } catch (Exception e) { CLog.LogError("Error loading theme " + FilePath + ": " + e.Message); - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; + return false; } - if (loaded) + Theme theme = new Theme(); + + int version = 0; + xmlReader.TryGetIntValue("//root/ThemeSystemVersion", ref version); + + if (version == ThemeSystemVersion) { - Theme theme = new Theme(); - - int version = 0; - CHelper.TryGetIntValueFromXML("//root/ThemeSystemVersion", navigator, ref version); - - if (version == ThemeSystemVersion) + xmlReader.GetValue("//root/Info/Name", ref theme.Name, String.Empty); + if (theme.Name != String.Empty) { - CHelper.GetValueFromXML("//root/Info/Name", navigator, ref theme.Name, String.Empty); - if (theme.Name != String.Empty) - { - CHelper.GetValueFromXML("//root/Info/Author", navigator, ref theme.Author, String.Empty); - CHelper.GetValueFromXML("//root/Info/SkinFolder", navigator, ref theme.SkinFolder, String.Empty); - CHelper.TryGetIntValueFromXML("//root/Info/ThemeVersionMajor", navigator, ref theme.ThemeVersionMajor); - CHelper.TryGetIntValueFromXML("//root/Info/ThemeVersionMinor", navigator, ref theme.ThemeVersionMinor); - theme.Path = Path.GetDirectoryName(FilePath); - theme.FileName = Path.GetFileName(FilePath); - theme.PartyModeID = PartyModeID; + xmlReader.GetValue("//root/Info/Author", ref theme.Author, String.Empty); + xmlReader.GetValue("//root/Info/SkinFolder", ref theme.SkinFolder, String.Empty); + xmlReader.TryGetIntValue("//root/Info/ThemeVersionMajor", ref theme.ThemeVersionMajor); + xmlReader.TryGetIntValue("//root/Info/ThemeVersionMinor", ref theme.ThemeVersionMinor); + theme.Path = Path.GetDirectoryName(FilePath); + theme.FileName = Path.GetFileName(FilePath); + theme.PartyModeID = PartyModeID; - _Themes.Add(theme); - } - } - else - { - string msg = "Can't load Theme \"" + FilePath + "\", "; - if (version < ThemeSystemVersion) - msg += "the file ist outdated! "; - else - msg += "the file is for newer program versions! "; - - msg += "Current ThemeSystemVersion is " + ThemeSystemVersion.ToString(); - CLog.LogError(msg); - loaded = false; + _Themes.Add(theme); } } - return loaded; + else + { + string msg = "Can't load Theme \"" + FilePath + "\", "; + if (version < ThemeSystemVersion) + msg += "the file is outdated! "; + else + msg += "the file is for newer program versions! "; + + msg += "Current ThemeSystemVersion is " + ThemeSystemVersion.ToString(); + CLog.LogError(msg); + } + return true; } public static void ListSkins() @@ -536,82 +498,70 @@ namespace Vocaluxe.Base foreach (string file in files) { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader; try { - xPathDoc = new XPathDocument(Path.Combine(path, file)); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(Path.Combine(path, file)); } catch (Exception e) { CLog.LogError("Error loading skin " + file + ": " + e.Message); - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; + continue; } - if (loaded) + Skin skin = new Skin(); + + int version = 0; + xmlReader.TryGetIntValue("//root/SkinSystemVersion", ref version); + + if (version == SkinSystemVersion) { - Skin skin = new Skin(); - - int version = 0; - CHelper.TryGetIntValueFromXML("//root/SkinSystemVersion", navigator, ref version); - - if (version == SkinSystemVersion) + xmlReader.GetValue("//root/Info/Name", ref skin.Name, String.Empty); + if (skin.Name != String.Empty) { - CHelper.GetValueFromXML("//root/Info/Name", navigator, ref skin.Name, String.Empty); - if (skin.Name != String.Empty) + xmlReader.GetValue("//root/Info/Author", ref skin.Author, String.Empty); + xmlReader.TryGetIntValue("//root/Info/SkinVersionMajor", ref skin.SkinVersionMajor); + xmlReader.TryGetIntValue("//root/Info/SkinVersionMinor", ref skin.SkinVersionMinor); + + + skin.Path = path; + skin.FileName = file; + skin.PartyModeID = theme.PartyModeID; + + skin.SkinList = new Dictionary(); + List names = xmlReader.GetValues("Skins"); + foreach (string str in names) { - CHelper.GetValueFromXML("//root/Info/Author", navigator, ref skin.Author, String.Empty); - CHelper.TryGetIntValueFromXML("//root/Info/SkinVersionMajor", navigator, ref skin.SkinVersionMajor); - CHelper.TryGetIntValueFromXML("//root/Info/SkinVersionMinor", navigator, ref skin.SkinVersionMinor); - - - skin.Path = path; - skin.FileName = file; - skin.PartyModeID = theme.PartyModeID; - - skin.SkinList = new Dictionary(); - List names = CHelper.GetValuesFromXML("Skins", navigator); - foreach (string str in names) - { - SkinElement sk = new SkinElement(); - sk.Name = str; - sk.Value = String.Empty; - skin.SkinList[str] = sk; - } - - skin.VideoList = new List(); - names = CHelper.GetValuesFromXML("Videos", navigator); - foreach (string str in names) - { - SkinElement sk = new SkinElement(); - sk.Name = str; - sk.Value = String.Empty; - skin.VideoList.Add(sk); - } - _Skins.Add(skin); + SkinElement sk = new SkinElement(); + sk.Name = str; + sk.Value = String.Empty; + skin.SkinList[str] = sk; } - } - else - { - string msg = "Can't load Skin \"" + file + "\", "; - if (version < SkinSystemVersion) - msg += "the file ist outdated! "; - else - msg += "the file is for newer program versions! "; - msg += "Current SkinSystemVersion is " + SkinSystemVersion.ToString(); - CLog.LogError(msg); + skin.VideoList = new List(); + names = xmlReader.GetValues("Videos"); + foreach (string str in names) + { + SkinElement sk = new SkinElement(); + sk.Name = str; + sk.Value = String.Empty; + skin.VideoList.Add(sk); + } + _Skins.Add(skin); } } + else + { + string msg = "Can't load Skin \"" + file + "\", "; + if (version < SkinSystemVersion) + msg += "the file ist outdated! "; + else + msg += "the file is for newer program versions! "; + + msg += "Current SkinSystemVersion is " + SkinSystemVersion.ToString(); + CLog.LogError(msg); + } } } #endregion Theme and Skin loading and writing @@ -804,7 +754,7 @@ namespace Vocaluxe.Base #endregion Theme and Skin index handling #region Element loading - private static void LoadColors(XPathNavigator navigator, int SkinIndex) + private static void LoadColors(CXMLReader xmlReader, int SkinIndex) { Skin skin = _Skins[SkinIndex]; @@ -814,14 +764,14 @@ namespace Vocaluxe.Base float value = 0f; int i = 1; - while (CHelper.TryGetFloatValueFromXML("//root/Colors/Player" + i.ToString() + "/R", navigator, ref value)) + while (xmlReader.TryGetFloatValue("//root/Colors/Player" + i.ToString() + "/R", ref value)) { SColorF color = new SColorF(); color.R = value; - CHelper.TryGetFloatValueFromXML("//root/Colors/Player" + i.ToString() + "/G", navigator, ref color.G); - CHelper.TryGetFloatValueFromXML("//root/Colors/Player" + i.ToString() + "/B", navigator, ref color.B); - CHelper.TryGetFloatValueFromXML("//root/Colors/Player" + i.ToString() + "/A", navigator, ref color.A); + xmlReader.TryGetFloatValue("//root/Colors/Player" + i.ToString() + "/G", ref color.G); + xmlReader.TryGetFloatValue("//root/Colors/Player" + i.ToString() + "/B", ref color.B); + xmlReader.TryGetFloatValue("//root/Colors/Player" + i.ToString() + "/A", ref color.A); PlayerColors.Add(color); i++; @@ -830,16 +780,16 @@ namespace Vocaluxe.Base } List ColorScheme = new List(); - List names = CHelper.GetValuesFromXML("ColorSchemes", navigator); + List names = xmlReader.GetValues("ColorSchemes"); foreach (string str in names) { SColorScheme scheme = new SColorScheme(); scheme.Name = str; - CHelper.TryGetFloatValueFromXML("//root/ColorSchemes/" + str + "/R", navigator, ref scheme.Color.R); - CHelper.TryGetFloatValueFromXML("//root/ColorSchemes/" + str + "/G", navigator, ref scheme.Color.G); - CHelper.TryGetFloatValueFromXML("//root/ColorSchemes/" + str + "/B", navigator, ref scheme.Color.B); - CHelper.TryGetFloatValueFromXML("//root/ColorSchemes/" + str + "/A", navigator, ref scheme.Color.A); + xmlReader.TryGetFloatValue("//root/ColorSchemes/" + str + "/R", ref scheme.Color.R); + xmlReader.TryGetFloatValue("//root/ColorSchemes/" + str + "/G", ref scheme.Color.G); + xmlReader.TryGetFloatValue("//root/ColorSchemes/" + str + "/B", ref scheme.Color.B); + xmlReader.TryGetFloatValue("//root/ColorSchemes/" + str + "/A", ref scheme.Color.A); ColorScheme.Add(scheme); } @@ -848,15 +798,15 @@ namespace Vocaluxe.Base _Skins[SkinIndex] = skin; } - private static void LoadCursor(XPathNavigator navigator, int SkinIndex) + private static void LoadCursor(CXMLReader xmlReader, int SkinIndex) { string value = String.Empty; - CHelper.GetValueFromXML("//root/Cursor/Skin", navigator, ref Cursor.SkinName, value); + xmlReader.GetValue("//root/Cursor/Skin", ref Cursor.SkinName, value); - CHelper.TryGetFloatValueFromXML("//root/Cursor/W", navigator, ref Cursor.w); - CHelper.TryGetFloatValueFromXML("//root/Cursor/H", navigator, ref Cursor.h); + xmlReader.TryGetFloatValue("//root/Cursor/W", ref Cursor.w); + xmlReader.TryGetFloatValue("//root/Cursor/H", ref Cursor.h); - if (CHelper.GetValueFromXML("//root/Cursor/Color", navigator, ref value, value)) + if (xmlReader.GetValue("//root/Cursor/Color", ref value, value)) { SColorF color = GetColor(value, _Skins[SkinIndex].PartyModeID); Cursor.r = color.R; @@ -868,10 +818,10 @@ namespace Vocaluxe.Base else { Cursor.color = String.Empty; - CHelper.TryGetFloatValueFromXML("//root/Cursor/R", navigator, ref Cursor.r); - CHelper.TryGetFloatValueFromXML("//root/Cursor/G", navigator, ref Cursor.g); - CHelper.TryGetFloatValueFromXML("//root/Cursor/B", navigator, ref Cursor.b); - CHelper.TryGetFloatValueFromXML("//root/Cursor/A", navigator, ref Cursor.a); + xmlReader.TryGetFloatValue("//root/Cursor/R", ref Cursor.r); + xmlReader.TryGetFloatValue("//root/Cursor/G", ref Cursor.g); + xmlReader.TryGetFloatValue("//root/Cursor/B", ref Cursor.b); + xmlReader.TryGetFloatValue("//root/Cursor/A", ref Cursor.a); } } #endregion Element loading diff --git a/Vocaluxe/Base/CUtility.cs b/Vocaluxe/Base/CUtility.cs index 81029815..aefc060d 100644 --- a/Vocaluxe/Base/CUtility.cs +++ b/Vocaluxe/Base/CUtility.cs @@ -6,8 +6,6 @@ using System.Globalization; using System.IO; using System.Text; using System.Windows.Forms; -using System.Xml; -using System.Xml.XPath; using Vocaluxe.Lib.Draw; using Vocaluxe.Menu; diff --git a/Vocaluxe/Lib/Playlist/CPlaylistFile.cs b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs index e319b12c..db08989d 100644 --- a/Vocaluxe/Lib/Playlist/CPlaylistFile.cs +++ b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Base; using Vocaluxe.GameModes; @@ -122,76 +121,63 @@ namespace Vocaluxe.Lib.Playlist private void LoadPlaylist() { - bool loaded = false; - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader; try { - xPathDoc = new XPathDocument(PlaylistFile); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(PlaylistFile); } catch (Exception e) { - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; - CLog.LogError("Error opening Playlist File " + PlaylistFile + ": " + e.Message); + return; } - if (loaded) + string value = String.Empty; + if (xmlReader.GetValue("//root/Info/PlaylistName", ref value, value)) { - string value = String.Empty; - if (CHelper.GetValueFromXML("//root/Info/PlaylistName", navigator, ref value, value)) + PlaylistName = value; + + Songs = new List(); + + List songs = xmlReader.GetValues("Songs"); + string artist = String.Empty; + string title = String.Empty; + EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL; + + for (int i = 0; i < songs.Count; i++) { - PlaylistName = value; + xmlReader.GetValue("//root/Songs/" + songs[i] + "/Artist", ref artist, String.Empty); + xmlReader.GetValue("//root/Songs/" + songs[i] + "/Title", ref title, String.Empty); + xmlReader.TryGetEnumValue("//root/Songs/" + songs[i] + "/GameMode", ref gm); - Songs = new List(); + CPlaylistSong song = new CPlaylistSong(); + song.SongID = -1; + CSong[] AllSongs = CSongs.AllSongs; - List songs = CHelper.GetValuesFromXML("Songs", navigator); - string artist = String.Empty; - string title = String.Empty; - EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL; - - for (int i = 0; i < songs.Count; i++) + for (int s = 0; s < AllSongs.Length; s++) { - CHelper.GetValueFromXML("//root/Songs/" + songs[i] + "/Artist", navigator, ref artist, String.Empty); - CHelper.GetValueFromXML("//root/Songs/" + songs[i] + "/Title", navigator, ref title, String.Empty); - CHelper.TryGetEnumValueFromXML("//root/Songs/" + songs[i] + "/GameMode", navigator, ref gm); - - CPlaylistSong song = new CPlaylistSong(); - song.SongID = -1; - CSong[] AllSongs = CSongs.AllSongs; - - for (int s = 0; s < AllSongs.Length; s++) + if (AllSongs[s].Artist == artist && AllSongs[s].Title == title) { - if (AllSongs[s].Artist == artist && AllSongs[s].Title == title) - { - song.SongID = AllSongs[s].ID; - break; - } - } - - if (song.SongID != -1) - { - song.GameMode = gm; - Songs.Add(song); - } - else - { - CLog.LogError("Can't find song '" + title + "' from '" + artist + "' in playlist file: " + PlaylistFile); + song.SongID = AllSongs[s].ID; + break; } } + + if (song.SongID != -1) + { + song.GameMode = gm; + Songs.Add(song); + } + else + { + CLog.LogError("Can't find song '" + title + "' from '" + artist + "' in playlist file: " + PlaylistFile); + } } - else - { - CLog.LogError("Can't find PlaylistName in Playlist File: " + PlaylistFile); - } + } + else + { + CLog.LogError("Can't find PlaylistName in Playlist File: " + PlaylistFile); } } diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs index b1775d87..64a6edd4 100644 --- a/Vocaluxe/Screens/CScreenSing.cs +++ b/Vocaluxe/Screens/CScreenSing.cs @@ -738,6 +738,30 @@ namespace Vocaluxe.Screens CWebcam.Close(); } + private int FindCurrentLine(CLine[] line, CSong song) + { + float CurrentTime = _CurrentTime - song.Gap; + //We are only interested in the last matching line, so either do not check further after line[j].StartBeat > _CurrentBeat or go backwards! + for (int j = line.Length - 1; j >= 0; j--) + { + if (line[j].StartBeat <= _CurrentBeat) + { + float FirstNoteTime = CGame.GetTimeFromBeats(line[j].FirstNoteBeat, song.BPM); + //Earlist possible line break is 10s before first note + if (FirstNoteTime <= CurrentTime + 10f) + { + //First line has no predecessor or line has to be shown + if(j == 0 || FirstNoteTime - CConfig.MinLineBreakTime <= CurrentTime) return j; + float LastNoteTime = CGame.GetTimeFromBeats(line[j-1].LastNoteBeat, song.BPM); + //No line break if last line is not fully evaluated (with 50% tolerance -> tested so notes are drawn) + if(LastNoteTime + CConfig.MicDelay/1000f * 1.5f >= CurrentTime) return j-1; + return j; + } + } + } + return -1; + } + private void UpdateLyrics() { if (_FadeOut) @@ -759,18 +783,8 @@ namespace Vocaluxe.Screens lines[i] = song.Notes.GetLines(i); CLine[] line = lines[i].Line; - // find current line (it must be the same as in CalcFadingAlpha) - int nr = -1; - for (int j = 0; j < line.Length; j++) - { - if (line[j].StartBeat <= _CurrentBeat) - { - if (CGame.GetTimeFromBeats(line[j].FirstNoteBeat, song.BPM) <= _CurrentTime - song.Gap + 10f) - { - nr = j; - } - } - } + // find current line + int nr = FindCurrentLine(line, song); if (nr != -1) { @@ -1048,18 +1062,8 @@ namespace Vocaluxe.Screens lines[i] = Song.Notes.GetLines(i); CLine[] line = lines[i].Line; - // find current line for lyric sub fading (it must be the same as in UpdateLyrics) - int CurrentLineSub = 0; - for (int j = 0; j < line.Length; j++) - { - if (line[j].StartBeat <= _CurrentBeat) - { - if (CGame.GetTimeFromBeats(line[j].FirstNoteBeat, Song.BPM) <= _CurrentTime - Song.Gap + 10f) - { - CurrentLineSub = j; - } - } - } + // find current line for lyric sub fading + int CurrentLineSub = FindCurrentLine(line, Song); // find current line for lyric main fading int CurrentLine = 0; diff --git a/VocaluxeLib/Menu/CBackground.cs b/VocaluxeLib/Menu/CBackground.cs index 49b3b714..bc9a1012 100644 --- a/VocaluxeLib/Menu/CBackground.cs +++ b/VocaluxeLib/Menu/CBackground.cs @@ -4,7 +4,6 @@ using System.Diagnostics; using System.Drawing; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -55,28 +54,28 @@ namespace Vocaluxe.Menu #endregion Constructors #region public - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Type", navigator, ref _Theme.Type); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); - bool vid = CHelper.GetValueFromXML(item + "/Video", navigator, ref _Theme.VideoName, String.Empty); - bool tex = CHelper.GetValueFromXML(item + "/Skin", navigator, ref _Theme.TextureName, String.Empty); + bool vid = xmlReader.GetValue(item + "/Video", ref _Theme.VideoName, String.Empty); + bool tex = xmlReader.GetValue(item + "/Skin", ref _Theme.TextureName, String.Empty); _ThemeLoaded &= vid || tex || _Theme.Type == EBackgroundTypes.None; - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { bool success = true; - success &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R); - success &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G); - success &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B); - success &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A); + success &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + success &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + success &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + success &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); if (_Theme.Type != EBackgroundTypes.None) _ThemeLoaded &= success; diff --git a/VocaluxeLib/Menu/CButton.cs b/VocaluxeLib/Menu/CButton.cs index 9ffae3cd..6f6d1153 100644 --- a/VocaluxeLib/Menu/CButton.cs +++ b/VocaluxeLib/Menu/CButton.cs @@ -3,7 +3,6 @@ using System.Drawing; using System.Collections.Generic; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -135,69 +134,69 @@ namespace Vocaluxe.Menu SReflectionSpace = button.SReflectionSpace; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Skin", navigator, ref _Theme.TextureName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinSelected", navigator, ref _Theme.STextureName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", ref _Theme.TextureName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinSelected", ref _Theme.STextureName, String.Empty); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref Rect.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref Rect.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref Rect.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref Rect.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref Rect.H); - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } - if (CHelper.GetValueFromXML(item + "/SColor", navigator, ref _Theme.SColorName, String.Empty)) + if (xmlReader.GetValue(item + "/SColor", ref _Theme.SColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.SColorName, SkinIndex, ref SColor); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SR", navigator, ref SColor.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SG", navigator, ref SColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SB", navigator, ref SColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SA", navigator, ref SColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref SColor.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SColor.A); } - _ThemeLoaded &= Text.LoadTheme(item, "Text", navigator, SkinIndex, true); + _ThemeLoaded &= Text.LoadTheme(item, "Text", xmlReader, SkinIndex, true); Text.Z = Rect.Z; - if (CHelper.ItemExistsInXML(item + "/SText", navigator)) + if (xmlReader.ItemExists(item + "/SText")) { SelText = true; - _ThemeLoaded &= SText.LoadTheme(item, "SText", navigator, SkinIndex, true); + _ThemeLoaded &= SText.LoadTheme(item, "SText", xmlReader, SkinIndex, true); SText.Z = Rect.Z; } //Reflections - if (CHelper.ItemExistsInXML(item + "/Reflection", navigator)) + if (xmlReader.ItemExists(item + "/Reflection")) { Reflection = true; - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Space", navigator, ref ReflectionSpace); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Height", navigator, ref ReflectionHeight); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); } else Reflection = false; - if (CHelper.ItemExistsInXML(item + "/SReflection", navigator)) + if (xmlReader.ItemExists(item + "/SReflection")) { SReflection = true; - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SReflection/Space", navigator, ref SReflectionSpace); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SReflection/Height", navigator, ref SReflectionHeight); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SReflection/Space", ref SReflectionSpace); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SReflection/Height", ref SReflectionHeight); } else SReflection = false; diff --git a/VocaluxeLib/Menu/CEqualizer.cs b/VocaluxeLib/Menu/CEqualizer.cs index be96a4a7..006bc76b 100644 --- a/VocaluxeLib/Menu/CEqualizer.cs +++ b/VocaluxeLib/Menu/CEqualizer.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Drawing; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -73,57 +72,57 @@ namespace Vocaluxe.Menu ReflectionHeight = 0f; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Skin", navigator, ref _Theme.TextureName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", ref _Theme.TextureName, String.Empty); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref Rect.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref Rect.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref Rect.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref Rect.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref Rect.H); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/NumBars", navigator, ref _Theme.NumBars); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/NumBars", ref _Theme.NumBars); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Space", navigator, ref Space); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Space", ref Space); - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Style", navigator, ref _Theme.Style); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Style", ref _Theme.Style); - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/DrawNegative", navigator, ref _Theme.DrawNegative); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/DrawNegative", ref _Theme.DrawNegative); - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } - if (CHelper.GetValueFromXML(item + "/MaxColor", navigator, ref _Theme.MaxColorName, String.Empty)) + if (xmlReader.GetValue(item + "/MaxColor", ref _Theme.MaxColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxR", navigator, ref MaxColor.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxG", navigator, ref MaxColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxB", navigator, ref MaxColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxA", navigator, ref MaxColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxR", ref MaxColor.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxG", ref MaxColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxB", ref MaxColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxA", ref MaxColor.A); } //Reflection - if (CHelper.ItemExistsInXML(item + "/Reflection", navigator)) + if (xmlReader.ItemExists(item + "/Reflection")) { Reflection = true; - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Space", navigator, ref ReflectionSpace); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Height", navigator, ref ReflectionHeight); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); } else Reflection = false; diff --git a/VocaluxeLib/Menu/CHelper.cs b/VocaluxeLib/Menu/CHelper.cs index 3a02d77b..5d3fc59a 100644 --- a/VocaluxeLib/Menu/CHelper.cs +++ b/VocaluxeLib/Menu/CHelper.cs @@ -4,8 +4,6 @@ using System.Drawing; using System.Globalization; using System.IO; using System.Text; -using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -127,187 +125,7 @@ namespace Vocaluxe.Menu Rect = new RectangleF(Left, Upper, Rigth - Left, Lower - Upper); } - public static bool TryGetEnumValueFromXML(string Cast, XPathNavigator Navigator, ref T value) - where T : struct - { - string val = String.Empty; - if (GetValueFromXML(Cast, Navigator, ref val, Enum.GetName(typeof(T), value))) - { - TryParse(val, out value, true); - return true; - } - return false; - } - public static bool TryGetIntValueFromXML(string Cast, XPathNavigator Navigator, ref int value) - { - string val = String.Empty; - if (GetValueFromXML(Cast, Navigator, ref val, value.ToString())) - { - int res = 0; - if (int.TryParse(val, out res)) - { - value = res; - return true; - } - } - return false; - } - - public static bool TryGetFloatValueFromXML(string Cast, XPathNavigator Navigator, ref float value) - { - string val = String.Empty; - if (GetValueFromXML(Cast, Navigator, ref val, value.ToString())) - { - float res = 0; - if (TryParse(val, out res)) - { - value = res; - return true; - } - } - return false; - } - - public static bool GetValueFromXML(string Cast, XPathNavigator Navigator, ref string Value, string DefaultValue) - { - XPathNodeIterator iterator; - int results = 0; - string val = string.Empty; - - try - { - Navigator.MoveToFirstChild(); - iterator = Navigator.Select(Cast); - - while (iterator.MoveNext()) - { - val = iterator.Current.Value; - results++; - } - } - catch (Exception) - { - results = 0; - } - - if ((results == 0) || (results > 1)) - { - Value = DefaultValue; - return false; - } - else - { - Value = val; - return true; - } - - } - - public static List GetValuesFromXML(string Cast, XPathNavigator Navigator) - { - List values = new List(); - - try - { - Navigator.MoveToRoot(); - Navigator.MoveToFirstChild(); - Navigator.MoveToFirstChild(); - - while (Navigator.Name != Cast) - Navigator.MoveToNext(); - - Navigator.MoveToFirstChild(); - - values.Add(Navigator.LocalName); - while (Navigator.MoveToNext()) - values.Add(Navigator.LocalName); - - } - catch (Exception) - { - - } - - return values; - } - - public static List GetAttributesFromXML(string Cast, XPathNavigator Navigator, string attribute) - { - List values = new List(); - - try - { - Navigator.MoveToRoot(); - Navigator.MoveToFirstChild(); - - while (Navigator.Name != Cast) - Navigator.MoveToNext(); - - Navigator.MoveToFirstChild(); - - values.Add(Navigator.LocalName); - while (Navigator.MoveToNext()) - values.Add(Navigator.GetAttribute(attribute, "")); - - } - catch (Exception) - { - - } - - return values; - } - - public static bool GetInnerValuesFromXML(string Cast, XPathNavigator Navigator, ref List Values) - { - try - { - Navigator.MoveToRoot(); - Navigator.MoveToFirstChild(); - Navigator.MoveToFirstChild(); - - while (Navigator.Name != Cast) - Navigator.MoveToNext(); - - Navigator.MoveToFirstChild(); - - Values.Add(Navigator.Value); - while (Navigator.MoveToNext()) - Values.Add(Navigator.Value); - - } - catch - { - return false; - } - - return true; - } - - public static bool ItemExistsInXML(string Cast, XPathNavigator Navigator) - { - XPathNodeIterator iterator; - int results = 0; - - try - { - Navigator.MoveToFirstChild(); - iterator = Navigator.Select(Cast); - - while (iterator.MoveNext()) - results++; - } - catch (Exception) - { - results = 0; - } - - if (results == 0) - return false; - - return true; - } public List ListFiles(string path, string cast) { diff --git a/VocaluxeLib/Menu/CLyric.cs b/VocaluxeLib/Menu/CLyric.cs index cb4b17e1..5b356576 100644 --- a/VocaluxeLib/Menu/CLyric.cs +++ b/VocaluxeLib/Menu/CLyric.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Drawing; using System.Text; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Menu.SingNotes; @@ -108,39 +107,39 @@ namespace Vocaluxe.Menu _Style = ELyricStyle.Fill; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref _X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref _Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref _Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref _MaxW); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref _H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _MaxW); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _H); - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } - if (CHelper.GetValueFromXML(item + "/SColor", navigator, ref _Theme.SColorName, String.Empty)) + if (xmlReader.GetValue(item + "/SColor", ref _Theme.SColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.SColorName, SkinIndex, ref ColorProcessed); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SR", navigator, ref ColorProcessed.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SG", navigator, ref ColorProcessed.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SB", navigator, ref ColorProcessed.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SA", navigator, ref ColorProcessed.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref ColorProcessed.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref ColorProcessed.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref ColorProcessed.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref ColorProcessed.A); } if (_ThemeLoaded) diff --git a/VocaluxeLib/Menu/CMenu.cs b/VocaluxeLib/Menu/CMenu.cs index 587a0702..223d920f 100644 --- a/VocaluxeLib/Menu/CMenu.cs +++ b/VocaluxeLib/Menu/CMenu.cs @@ -6,7 +6,6 @@ using System.IO; using System.Text; using System.Windows.Forms; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Menu; using Vocaluxe.Menu.SingNotes; @@ -176,45 +175,37 @@ namespace Vocaluxe.Menu { string file = Path.Combine(XmlPath, _ThemeName + ".xml"); - XPathDocument xPathDoc = null; - XPathNavigator navigator = null; + CXMLReader xmlReader = null; - bool loaded = false; try { - xPathDoc = new XPathDocument(file); - navigator = xPathDoc.CreateNavigator(); - loaded = true; + xmlReader = new CXMLReader(file); } catch (Exception e) { - loaded = false; - if (navigator != null) - navigator = null; - - if (xPathDoc != null) - xPathDoc = null; + if (xmlReader != null) + xmlReader = null; _Base.Log.LogError("Error loading theme file " + file + ": " + e.Message); } bool VersionCheck = false; - if (loaded) - VersionCheck = CheckVersion(_ScreenVersion, navigator); + if (xmlReader != null) + VersionCheck = CheckVersion(_ScreenVersion, xmlReader); int SkinIndex = _Base.Theme.GetSkinIndex(_PartyModeID); - if (loaded && VersionCheck && SkinIndex != -1) + if (xmlReader != null && VersionCheck && SkinIndex != -1) { _ThemePath = XmlPath; - LoadThemeBasics(navigator, SkinIndex); + LoadThemeBasics(xmlReader, SkinIndex); if (_ThemeBackgrounds != null) { for (int i = 0; i < _ThemeBackgrounds.Length; i++) { CBackground background = new CBackground(_Base, _PartyModeID); - if (background.LoadTheme("//root/" + _ThemeName, _ThemeBackgrounds[i], navigator, SkinIndex)) + if (background.LoadTheme("//root/" + _ThemeName, _ThemeBackgrounds[i], xmlReader, SkinIndex)) { _htBackgrounds.Add(_ThemeBackgrounds[i], AddBackground(background)); } @@ -230,7 +221,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeStatics.Length; i++) { CStatic stat = new CStatic(_Base, _PartyModeID); - if (stat.LoadTheme("//root/" + _ThemeName, _ThemeStatics[i], navigator, SkinIndex)) + if (stat.LoadTheme("//root/" + _ThemeName, _ThemeStatics[i], xmlReader, SkinIndex)) { _htStatics.Add(_ThemeStatics[i], AddStatic(stat)); } @@ -246,7 +237,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeTexts.Length; i++) { CText text = new CText(_Base, _PartyModeID); - if (text.LoadTheme("//root/" + _ThemeName, _ThemeTexts[i], navigator, SkinIndex)) + if (text.LoadTheme("//root/" + _ThemeName, _ThemeTexts[i], xmlReader, SkinIndex)) { _htTexts.Add(_ThemeTexts[i], AddText(text)); } @@ -262,7 +253,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeButtons.Length; i++) { CButton button = new CButton(_Base, _PartyModeID); - if (button.LoadTheme("//root/" + _ThemeName, _ThemeButtons[i], navigator, SkinIndex)) + if (button.LoadTheme("//root/" + _ThemeName, _ThemeButtons[i], xmlReader, SkinIndex)) { _htButtons.Add(_ThemeButtons[i], AddButton(button)); } @@ -278,7 +269,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeSelectSlides.Length; i++) { CSelectSlide slide = new CSelectSlide(_Base, _PartyModeID); - if (slide.LoadTheme("//root/" + _ThemeName, _ThemeSelectSlides[i], navigator, SkinIndex)) + if (slide.LoadTheme("//root/" + _ThemeName, _ThemeSelectSlides[i], xmlReader, SkinIndex)) { _htSelectSlides.Add(_ThemeSelectSlides[i], AddSelectSlide(slide)); } @@ -294,7 +285,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeSongMenus.Length; i++) { CSongMenu sm = new CSongMenu(_Base, _PartyModeID); - if (sm.LoadTheme("//root/" + _ThemeName, _ThemeSongMenus[i], navigator, SkinIndex)) + if (sm.LoadTheme("//root/" + _ThemeName, _ThemeSongMenus[i], xmlReader, SkinIndex)) { _htSongMenus.Add(_ThemeSongMenus[i], AddSongMenu(sm)); } @@ -310,7 +301,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeLyrics.Length; i++) { CLyric lyric = new CLyric(_Base, _PartyModeID); - if (lyric.LoadTheme("//root/" + _ThemeName, _ThemeLyrics[i], navigator, SkinIndex)) + if (lyric.LoadTheme("//root/" + _ThemeName, _ThemeLyrics[i], xmlReader, SkinIndex)) { _htLyrics.Add(_ThemeLyrics[i], AddLyric(lyric)); } @@ -326,7 +317,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeSingNotes.Length; i++) { CSingNotes notes = new CSingNotesClassic(_Base, _PartyModeID); - if (notes.LoadTheme("//root/" + _ThemeName, _ThemeSingNotes[i], navigator, SkinIndex)) + if (notes.LoadTheme("//root/" + _ThemeName, _ThemeSingNotes[i], xmlReader, SkinIndex)) { _htSingNotes.Add(_ThemeSingNotes[i], AddSingNote(notes)); } @@ -342,7 +333,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeNameSelections.Length; i++) { CNameSelection nsel = new CNameSelection(_Base, _PartyModeID); - if (nsel.LoadTheme("//root/" + _ThemeName, _ThemeNameSelections[i], navigator, SkinIndex)) + if (nsel.LoadTheme("//root/" + _ThemeName, _ThemeNameSelections[i], xmlReader, SkinIndex)) { _htNameSelections.Add(_ThemeNameSelections[i], AddNameSelection(nsel)); } @@ -358,7 +349,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeEqualizers.Length; i++) { CEqualizer eq = new CEqualizer(_Base, _PartyModeID); - if (eq.LoadTheme("//root/" + _ThemeName, _ThemeEqualizers[i], navigator, SkinIndex)) + if (eq.LoadTheme("//root/" + _ThemeName, _ThemeEqualizers[i], xmlReader, SkinIndex)) { _htEqualizers.Add(_ThemeEqualizers[i], AddEqualizer(eq)); } @@ -374,7 +365,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemePlaylists.Length; i++) { CPlaylist pls = new CPlaylist(_Base, _PartyModeID); - if (pls.LoadTheme("//root/" + _ThemeName, _ThemePlaylists[i], navigator, SkinIndex)) + if (pls.LoadTheme("//root/" + _ThemeName, _ThemePlaylists[i], xmlReader, SkinIndex)) { _htPlaylists.Add(_ThemePlaylists[i], AddPlaylist(pls)); } @@ -390,7 +381,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeParticleEffects.Length; i++) { CParticleEffect pe = new CParticleEffect(_Base, _PartyModeID); - if (pe.LoadTheme("//root/" + _ThemeName, _ThemeParticleEffects[i], navigator, SkinIndex)) + if (pe.LoadTheme("//root/" + _ThemeName, _ThemeParticleEffects[i], xmlReader, SkinIndex)) { _htParticleEffects.Add(_ThemeParticleEffects[i], AddParticleEffect(pe)); } @@ -406,7 +397,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < _ThemeScreenSettings.Length; i++) { CScreenSetting se = new CScreenSetting(_Base, _PartyModeID); - if (se.LoadTheme("//root/" + _ThemeName, _ThemeScreenSettings[i], navigator, SkinIndex)) + if (se.LoadTheme("//root/" + _ThemeName, _ThemeScreenSettings[i], xmlReader, SkinIndex)) { _htScreenSettings.Add(_ThemeScreenSettings[i], AddScreenSetting(se)); } @@ -417,10 +408,6 @@ namespace Vocaluxe.Menu } } } - else - { - - } } public virtual void SaveTheme() @@ -2516,10 +2503,10 @@ namespace Vocaluxe.Menu } } - private bool CheckVersion(int Version, XPathNavigator navigator) + private bool CheckVersion(int Version, CXMLReader xmlReader) { int version = 0; - CHelper.TryGetIntValueFromXML("//root/" + _ThemeName + "/ScreenVersion", navigator, ref version); + xmlReader.TryGetIntValue("//root/" + _ThemeName + "/ScreenVersion", ref version); if (version == Version) return true; @@ -2537,14 +2524,14 @@ namespace Vocaluxe.Menu return false; } - private void LoadThemeBasics(XPathNavigator navigator, int SkinIndex) + private void LoadThemeBasics(CXMLReader xmlReader, int SkinIndex) { string value = String.Empty; // Backgrounds CBackground background = new CBackground(_Base, _PartyModeID); int i = 1; - while (background.LoadTheme("//root/" + _ThemeName, "Background" + i.ToString(), navigator, SkinIndex)) + while (background.LoadTheme("//root/" + _ThemeName, "Background" + i.ToString(), xmlReader, SkinIndex)) { AddBackground(background); background = new CBackground(_Base, _PartyModeID); @@ -2554,7 +2541,7 @@ namespace Vocaluxe.Menu // Statics CStatic stat = new CStatic(_Base, _PartyModeID); i = 1; - while (stat.LoadTheme("//root/" + _ThemeName, "Static" + i.ToString(), navigator, SkinIndex)) + while (stat.LoadTheme("//root/" + _ThemeName, "Static" + i.ToString(), xmlReader, SkinIndex)) { AddStatic(stat); stat = new CStatic(_Base, _PartyModeID); @@ -2564,7 +2551,7 @@ namespace Vocaluxe.Menu // Texts CText text = new CText(_Base, _PartyModeID); i = 1; - while (text.LoadTheme("//root/" + _ThemeName, "Text" + i.ToString(), navigator, SkinIndex)) + while (text.LoadTheme("//root/" + _ThemeName, "Text" + i.ToString(), xmlReader, SkinIndex)) { AddText(text); text = new CText(_Base, _PartyModeID); @@ -2574,7 +2561,7 @@ namespace Vocaluxe.Menu // ParticleEffects CParticleEffect partef = new CParticleEffect(_Base, _PartyModeID); i = 1; - while (partef.LoadTheme("//root/" + _ThemeName, "ParticleEffect" + i.ToString(), navigator, SkinIndex)) + while (partef.LoadTheme("//root/" + _ThemeName, "ParticleEffect" + i.ToString(), xmlReader, SkinIndex)) { AddParticleEffect(partef); partef = new CParticleEffect(_Base, _PartyModeID); diff --git a/VocaluxeLib/Menu/CNameSelection.cs b/VocaluxeLib/Menu/CNameSelection.cs index 4ca22c33..176ed0c9 100644 --- a/VocaluxeLib/Menu/CNameSelection.cs +++ b/VocaluxeLib/Menu/CNameSelection.cs @@ -2,9 +2,8 @@ using System.Collections.Generic; using System.Drawing; using System.Text; -using System.Xml; -using System.Xml.XPath; using System.Windows.Forms; +using System.Xml; namespace Vocaluxe.Menu { @@ -109,54 +108,54 @@ namespace Vocaluxe.Menu UpdateList(0); } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref Rect.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref Rect.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref Rect.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref Rect.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref Rect.H); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinEmptyTile", navigator, ref _Theme.TextureEmptyTileName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinEmptyTile", ref _Theme.TextureEmptyTileName, String.Empty); - if (CHelper.GetValueFromXML(item + "/ColorEmptyTile", navigator, ref _Theme.ColorEmptyTileName, String.Empty)) + if (xmlReader.GetValue(item + "/ColorEmptyTile", ref _Theme.ColorEmptyTileName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorEmptyTileName, SkinIndex, ref ColorEmptyTile); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref ColorEmptyTile.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref ColorEmptyTile.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref ColorEmptyTile.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref ColorEmptyTile.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref ColorEmptyTile.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref ColorEmptyTile.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref ColorEmptyTile.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref ColorEmptyTile.A); } - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinTileSelected", navigator, ref _Theme.TextureTileSelectedName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinTileSelected", ref _Theme.TextureTileSelectedName, String.Empty); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/Tiles/W", navigator, ref _TileW); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/Tiles/H", navigator, ref _TileH); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/Tiles/NumW", navigator, ref _NumW); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/Tiles/NumH", navigator, ref _NumH); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Tiles/SpaceW", navigator, ref _SpaceW); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Tiles/SpaceH", navigator, ref _SpaceH); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Tiles/Name/Space", navigator, ref _Theme.NameSpace); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Tiles/Name/H", navigator, ref _Theme.NameHeight); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Tiles/Name/Font", navigator, ref _Theme.NameFont, "Normal"); - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Tiles/Name/Style", navigator, ref _Theme.NameStyle); - if (CHelper.GetValueFromXML(item + "/Tiles/Name/Color", navigator, ref _Theme.NameColorName, String.Empty)) + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/W", ref _TileW); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/H", ref _TileH); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/NumW", ref _NumW); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/NumH", ref _NumH); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/SpaceW", ref _SpaceW); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/SpaceH", ref _SpaceH); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/Space", ref _Theme.NameSpace); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/H", ref _Theme.NameHeight); + _ThemeLoaded &= xmlReader.GetValue(item + "/Tiles/Name/Font", ref _Theme.NameFont, "Normal"); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Tiles/Name/Style", ref _Theme.NameStyle); + if (xmlReader.GetValue(item + "/Tiles/Name/Color", ref _Theme.NameColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.NameColorName, SkinIndex, ref _Theme.NameColor); } else { - if (CHelper.TryGetFloatValueFromXML(item + "/Tiles/Name/R", navigator, ref _Theme.NameColor.R)) + if (xmlReader.TryGetFloatValue(item + "/Tiles/Name/R", ref _Theme.NameColor.R)) { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Tiles/Name/G", navigator, ref _Theme.NameColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Tiles/Name/B", navigator, ref _Theme.NameColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Tiles/Name/A", navigator, ref _Theme.NameColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/G", ref _Theme.NameColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/B", ref _Theme.NameColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/A", ref _Theme.NameColor.A); } } diff --git a/VocaluxeLib/Menu/CObjectInteractions.cs b/VocaluxeLib/Menu/CObjectInteractions.cs index 0e8a575d..be96cfc6 100644 --- a/VocaluxeLib/Menu/CObjectInteractions.cs +++ b/VocaluxeLib/Menu/CObjectInteractions.cs @@ -5,8 +5,6 @@ using System.Drawing; using System.IO; using System.Text; using System.Windows.Forms; -using System.Xml; -using System.Xml.XPath; using Vocaluxe.Menu; using Vocaluxe.Menu.SingNotes; diff --git a/VocaluxeLib/Menu/CParticle.cs b/VocaluxeLib/Menu/CParticle.cs index 35b597a3..17f590fe 100644 --- a/VocaluxeLib/Menu/CParticle.cs +++ b/VocaluxeLib/Menu/CParticle.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -381,34 +380,34 @@ namespace Vocaluxe.Menu Visible = true; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Skin", navigator, ref _Theme.TextureName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", ref _Theme.TextureName, String.Empty); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref Rect.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref Rect.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref Rect.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref Rect.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref Rect.H); - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Type", navigator, ref _Type); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Size", navigator, ref _Size); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/MaxNumber", navigator, ref _MaxNumber); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Type); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Size", ref _Size); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/MaxNumber", ref _MaxNumber); if (_ThemeLoaded) { diff --git a/VocaluxeLib/Menu/CPlaylist.cs b/VocaluxeLib/Menu/CPlaylist.cs index c87ad892..6817954b 100644 --- a/VocaluxeLib/Menu/CPlaylist.cs +++ b/VocaluxeLib/Menu/CPlaylist.cs @@ -2,9 +2,8 @@ using System.Drawing; using System.Collections.Generic; using System.Text; -using System.Xml; -using System.Xml.XPath; using System.Windows.Forms; +using System.Xml; using Vocaluxe.Menu.SongMenu; @@ -236,57 +235,57 @@ namespace Vocaluxe.Menu _Interactions.AddButton(_Theme.ButtonPlaylistSing); } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinBackground", navigator, ref _Theme.TextureBackgroundName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinBackgroundSelected", navigator, ref _Theme.STextureBackgroundName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackground", ref _Theme.TextureBackgroundName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundSelected", ref _Theme.STextureBackgroundName, String.Empty); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H); - if (CHelper.GetValueFromXML(item + "/ColorBackground", navigator, ref _Theme.ColorBackgroundName, String.Empty)) + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref Rect.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref Rect.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref Rect.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref Rect.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref Rect.H); + if (xmlReader.GetValue(item + "/ColorBackground", ref _Theme.ColorBackgroundName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorBackgroundName, SkinIndex, ref BackgroundColor); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/BackgroundR", navigator, ref BackgroundColor.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/BackgroundG", navigator, ref BackgroundColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/BackgroundB", navigator, ref BackgroundColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/BackgroundA", navigator, ref BackgroundColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundR", ref BackgroundColor.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundG", ref BackgroundColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundB", ref BackgroundColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundA", ref BackgroundColor.A); } - if (CHelper.GetValueFromXML(item + "/SColorBackground", navigator, ref _Theme.SColorBackgroundName, String.Empty)) + if (xmlReader.GetValue(item + "/SColorBackground", ref _Theme.SColorBackgroundName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.SColorBackgroundName, SkinIndex, ref BackgroundSColor); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SBackgroundR", navigator, ref BackgroundSColor.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SBackgroundG", navigator, ref BackgroundSColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SBackgroundB", navigator, ref BackgroundSColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SBackgroundA", navigator, ref BackgroundSColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundR", ref BackgroundSColor.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundG", ref BackgroundSColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundB", ref BackgroundSColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundA", ref BackgroundSColor.A); } - _ThemeLoaded &= _Theme.Text1.LoadTheme(item, "TextPart1", navigator, SkinIndex); + _ThemeLoaded &= _Theme.Text1.LoadTheme(item, "TextPart1", xmlReader, SkinIndex); - _ThemeLoaded &= _Theme.StaticCover.LoadTheme(item, "StaticCover", navigator, SkinIndex); - _ThemeLoaded &= _Theme.StaticPlaylistHeader.LoadTheme(item, "StaticPlaylistHeader", navigator, SkinIndex); - _ThemeLoaded &= _Theme.StaticPlaylistFooter.LoadTheme(item, "StaticPlaylistFooter", navigator, SkinIndex); + _ThemeLoaded &= _Theme.StaticCover.LoadTheme(item, "StaticCover", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.StaticPlaylistHeader.LoadTheme(item, "StaticPlaylistHeader", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.StaticPlaylistFooter.LoadTheme(item, "StaticPlaylistFooter", xmlReader, SkinIndex); - _ThemeLoaded &= _Theme.ButtonPlaylistName.LoadTheme(item, "ButtonPlaylistName", navigator, SkinIndex); - _ThemeLoaded &= _Theme.ButtonPlaylistSing.LoadTheme(item, "ButtonPlaylistSing", navigator, SkinIndex); - _ThemeLoaded &= _Theme.ButtonPlaylistClose.LoadTheme(item, "ButtonPlaylistClose", navigator, SkinIndex); - _ThemeLoaded &= _Theme.ButtonPlaylistSave.LoadTheme(item, "ButtonPlaylistSave", navigator, SkinIndex); - _ThemeLoaded &= _Theme.ButtonPlaylistDelete.LoadTheme(item, "ButtonPlaylistDelete", navigator, SkinIndex); + _ThemeLoaded &= _Theme.ButtonPlaylistName.LoadTheme(item, "ButtonPlaylistName", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.ButtonPlaylistSing.LoadTheme(item, "ButtonPlaylistSing", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.ButtonPlaylistClose.LoadTheme(item, "ButtonPlaylistClose", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.ButtonPlaylistSave.LoadTheme(item, "ButtonPlaylistSave", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.ButtonPlaylistDelete.LoadTheme(item, "ButtonPlaylistDelete", xmlReader, SkinIndex); - _ThemeLoaded &= _Theme.SelectSlideGameMode.LoadTheme(item, "SelectSlideGameMode", navigator, SkinIndex); + _ThemeLoaded &= _Theme.SelectSlideGameMode.LoadTheme(item, "SelectSlideGameMode", xmlReader, SkinIndex); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/EntryHeight", navigator, ref _Theme.EntryHeight); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/EntryHeight", ref _Theme.EntryHeight); if (_ThemeLoaded) { _Theme.Name = ElementName; diff --git a/VocaluxeLib/Menu/CScreenSetting.cs b/VocaluxeLib/Menu/CScreenSetting.cs index c65be5ff..fcbe80b7 100644 --- a/VocaluxeLib/Menu/CScreenSetting.cs +++ b/VocaluxeLib/Menu/CScreenSetting.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Drawing; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -51,13 +50,13 @@ namespace Vocaluxe.Menu _ThemeLoaded = ts._ThemeLoaded; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Value", navigator, ref _Theme.Value, String.Empty); - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Type", navigator, ref _Theme.Type); + _ThemeLoaded &= xmlReader.GetValue(item + "/Value", ref _Theme.Value, String.Empty); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); if (_ThemeLoaded) { diff --git a/VocaluxeLib/Menu/CSelectSlide.cs b/VocaluxeLib/Menu/CSelectSlide.cs index f8a11269..684386ae 100644 --- a/VocaluxeLib/Menu/CSelectSlide.cs +++ b/VocaluxeLib/Menu/CSelectSlide.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Drawing; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -230,133 +229,133 @@ namespace Vocaluxe.Menu Visible = slide.Visible; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Skin", navigator, ref _Theme.TextureName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinArrowLeft", navigator, ref _Theme.TextureArrowLeftName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinArrowRight", navigator, ref _Theme.TextureArrowRightName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", ref _Theme.TextureName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowLeft", ref _Theme.TextureArrowLeftName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowRight", ref _Theme.TextureArrowRightName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinSelected", navigator, ref _Theme.STextureName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinArrowLeftSelected", navigator, ref _Theme.STextureArrowLeftName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinArrowRightSelected", navigator, ref _Theme.STextureArrowRightName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinSelected", ref _Theme.STextureName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowLeftSelected", ref _Theme.STextureArrowLeftName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowRightSelected", ref _Theme.STextureArrowRightName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinHighlighted", navigator, ref _Theme.HTextureName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinHighlighted", ref _Theme.HTextureName, String.Empty); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref Rect.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref Rect.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref Rect.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref Rect.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref Rect.H); - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } - if (CHelper.GetValueFromXML(item + "/SColor", navigator, ref _Theme.SColorName, String.Empty)) + if (xmlReader.GetValue(item + "/SColor", ref _Theme.SColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.SColorName, SkinIndex, ref SColor); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SR", navigator, ref SColor.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SG", navigator, ref SColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SB", navigator, ref SColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SA", navigator, ref SColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref SColor.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SColor.A); } - if (CHelper.GetValueFromXML(item + "/HColor", navigator, ref _Theme.HColorName, String.Empty)) + if (xmlReader.GetValue(item + "/HColor", ref _Theme.HColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.HColorName, SkinIndex, ref HColor); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/HR", navigator, ref HColor.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/HG", navigator, ref HColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/HB", navigator, ref HColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/HA", navigator, ref HColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/HR", ref HColor.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/HG", ref HColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/HB", ref HColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/HA", ref HColor.A); } - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowLeftX", navigator, ref RectArrowLeft.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowLeftY", navigator, ref RectArrowLeft.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowLeftZ", navigator, ref RectArrowLeft.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowLeftW", navigator, ref RectArrowLeft.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowLeftH", navigator, ref RectArrowLeft.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftX", ref RectArrowLeft.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftY", ref RectArrowLeft.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftZ", ref RectArrowLeft.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftW", ref RectArrowLeft.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftH", ref RectArrowLeft.H); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowRightX", navigator, ref RectArrowRight.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowRightY", navigator, ref RectArrowRight.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowRightZ", navigator, ref RectArrowRight.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowRightW", navigator, ref RectArrowRight.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowRightH", navigator, ref RectArrowRight.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightX", ref RectArrowRight.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightY", ref RectArrowRight.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightZ", ref RectArrowRight.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightW", ref RectArrowRight.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightH", ref RectArrowRight.H); - if (CHelper.GetValueFromXML(item + "/ArrowColor", navigator, ref _Theme.ArrowColorName, String.Empty)) + if (xmlReader.GetValue(item + "/ArrowColor", ref _Theme.ArrowColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ArrowColorName, SkinIndex, ref ColorArrow); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowR", navigator, ref ColorArrow.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowG", navigator, ref ColorArrow.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowB", navigator, ref ColorArrow.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowA", navigator, ref ColorArrow.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowR", ref ColorArrow.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowG", ref ColorArrow.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowB", ref ColorArrow.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowA", ref ColorArrow.A); } - if (CHelper.GetValueFromXML(item + "/ArrowSColor", navigator, ref _Theme.SArrowColorName, String.Empty)) + if (xmlReader.GetValue(item + "/ArrowSColor", ref _Theme.SArrowColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.SArrowColorName, SkinIndex, ref SColorArrow); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowSR", navigator, ref SColorArrow.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowSG", navigator, ref SColorArrow.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowSB", navigator, ref SColorArrow.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/ArrowSA", navigator, ref SColorArrow.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSR", ref SColorArrow.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSG", ref SColorArrow.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSB", ref SColorArrow.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSA", ref SColorArrow.A); } - if (CHelper.GetValueFromXML(item + "/TextColor", navigator, ref _Theme.TextColorName, String.Empty)) + if (xmlReader.GetValue(item + "/TextColor", ref _Theme.TextColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.TextColorName, SkinIndex, ref TextColor); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextR", navigator, ref TextColor.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextG", navigator, ref TextColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextB", navigator, ref TextColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextA", navigator, ref TextColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextR", ref TextColor.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextG", ref TextColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextB", ref TextColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextA", ref TextColor.A); } - if (CHelper.GetValueFromXML(item + "/TextSColor", navigator, ref _Theme.STextColorName, String.Empty)) + if (xmlReader.GetValue(item + "/TextSColor", ref _Theme.STextColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.STextColorName, SkinIndex, ref STextColor); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextSR", navigator, ref STextColor.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextSG", navigator, ref STextColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextSB", navigator, ref STextColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextSA", navigator, ref STextColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSR", ref STextColor.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSG", ref STextColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSB", ref STextColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSA", ref STextColor.A); } - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextH", navigator, ref TextH); - if(CHelper.TryGetFloatValueFromXML(item + "/TextRelativeX", navigator, ref TextRelativeX)) - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextRelativeX", navigator, ref TextRelativeX); - if(CHelper.TryGetFloatValueFromXML(item + "/TextRelativeY", navigator, ref TextRelativeY)) - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextRelativeY", navigator, ref TextRelativeY); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextMaxW", navigator, ref MaxW); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/TextFont", navigator, ref _Theme.TextFont, "Normal"); - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/TextStyle", navigator, ref _Theme.TextStyle); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextH", ref TextH); + if(xmlReader.TryGetFloatValue(item + "/TextRelativeX", ref TextRelativeX)) + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextRelativeX", ref TextRelativeX); + if(xmlReader.TryGetFloatValue(item + "/TextRelativeY", ref TextRelativeY)) + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextRelativeY", ref TextRelativeY); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextMaxW", ref MaxW); + _ThemeLoaded &= xmlReader.GetValue(item + "/TextFont", ref _Theme.TextFont, "Normal"); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/TextStyle", ref _Theme.TextStyle); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/NumVisible", navigator, ref _NumVisible); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/NumVisible", ref _NumVisible); if (_ThemeLoaded) { diff --git a/VocaluxeLib/Menu/CStatic.cs b/VocaluxeLib/Menu/CStatic.cs index d6fd5de9..fd26867e 100644 --- a/VocaluxeLib/Menu/CStatic.cs +++ b/VocaluxeLib/Menu/CStatic.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Drawing; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -132,36 +131,36 @@ namespace Vocaluxe.Menu Visible = true; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Skin", navigator, ref _Theme.TextureName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", ref _Theme.TextureName, String.Empty); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref Rect.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref Rect.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref Rect.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref Rect.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref Rect.H); - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } - if (CHelper.ItemExistsInXML(item + "/Reflection", navigator)) + if (xmlReader.ItemExists(item + "/Reflection")) { Reflection = true; - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Space", navigator, ref ReflectionSpace); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Height", navigator, ref ReflectionHeight); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); } else Reflection = false; diff --git a/VocaluxeLib/Menu/CText.cs b/VocaluxeLib/Menu/CText.cs index 42bf4b12..a173d228 100644 --- a/VocaluxeLib/Menu/CText.cs +++ b/VocaluxeLib/Menu/CText.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Drawing; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -471,63 +470,63 @@ namespace Vocaluxe.Menu Reflection = false; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { - return LoadTheme(XmlPath, ElementName, navigator, SkinIndex, false); + return LoadTheme(XmlPath, ElementName, xmlReader, SkinIndex, false); } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex, bool ButtonText) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex, bool ButtonText) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref _X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref _Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Y); if (!ButtonText) - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref _Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref _Height); - CHelper.TryGetFloatValueFromXML(item + "/MaxW", navigator, ref _MaxWidth); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Height); + xmlReader.TryGetFloatValue(item + "/MaxW", ref _MaxWidth); - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } - if (CHelper.GetValueFromXML(item + "/SColor", navigator, ref _Theme.SColorName, String.Empty)) + if (xmlReader.GetValue(item + "/SColor", ref _Theme.SColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.SColorName, SkinIndex, ref SColor); } else { - if (CHelper.TryGetFloatValueFromXML(item + "/SR", navigator, ref SColor.R)) + if (xmlReader.TryGetFloatValue(item + "/SR", ref SColor.R)) { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SG", navigator, ref SColor.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SB", navigator, ref SColor.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SA", navigator, ref SColor.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SColor.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SColor.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SColor.A); } } - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Align", navigator, ref _Align); - CHelper.TryGetEnumValueFromXML(item + "/HAlign", navigator, ref _HAlign); - _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Style", navigator, ref _Style); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Font", navigator, ref _Fon, "Normal"); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Align", ref _Align); + xmlReader.TryGetEnumValue(item + "/HAlign", ref _HAlign); + _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Style", ref _Style); + _ThemeLoaded &= xmlReader.GetValue(item + "/Font", ref _Fon, "Normal"); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Text", navigator, ref _Theme.Text, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/Text", ref _Theme.Text, String.Empty); - if (CHelper.ItemExistsInXML(item + "/Reflection", navigator) && !ButtonText) + if (xmlReader.ItemExists(item + "/Reflection") && !ButtonText) { Reflection = true; - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Space", navigator, ref ReflectionSpace); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Height", navigator, ref ReflectionHeight); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); } else Reflection = false; diff --git a/VocaluxeLib/Menu/CXMLReader.cs b/VocaluxeLib/Menu/CXMLReader.cs new file mode 100644 index 00000000..1d6284c3 --- /dev/null +++ b/VocaluxeLib/Menu/CXMLReader.cs @@ -0,0 +1,221 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Xml.XPath; + +namespace Vocaluxe.Menu +{ + public class CXMLReader + { + private XPathNavigator _Navigator; + + public CXMLReader(string uri) + { + XPathDocument xPathDoc = new XPathDocument(uri); + _Navigator = xPathDoc.CreateNavigator(); + } + + public XPathNavigator Navigator + { + get { return _Navigator; } + } + + public static CXMLReader OpenFile(string sUri) + { + try + { + return new CXMLReader(sUri); + } + catch (Exception) + { + //TODO: How to log from here? + return null; + } + } + + public bool TryGetEnumValue(string Cast, ref T value) + where T : struct + { + string val = String.Empty; + if (GetValue(Cast, ref val, Enum.GetName(typeof(T), value))) + { + CHelper.TryParse(val, out value, true); + return true; + } + return false; + } + + public bool TryGetIntValue(string Cast, ref int value) + { + string val = String.Empty; + if (GetValue(Cast, ref val, value.ToString())) + { + return int.TryParse(val, out value); + } + return false; + } + + public bool TryGetIntValueRange(string Cast,ref int value, int min = 0, int max = 100) + { + bool result = TryGetIntValue(Cast, ref value); + if (result) + { + if (value < min) + value = min; + else if (value > max) + value = max; + } + return result; + } + + public bool TryGetFloatValue(string Cast, ref float value) + { + string val = String.Empty; + if (GetValue(Cast, ref val, value.ToString())) + { + return CHelper.TryParse(val, out value); + } + return false; + } + + public bool GetValue(string Cast, ref string Value, string DefaultValue) + { + XPathNodeIterator iterator; + int results = 0; + string val = string.Empty; + + try + { + _Navigator.MoveToFirstChild(); + iterator = _Navigator.Select(Cast); + + while (iterator.MoveNext()) + { + val = iterator.Current.Value; + results++; + } + } + catch (Exception) + { + results = 0; + } + + if ((results == 0) || (results > 1)) + { + Value = DefaultValue; + return false; + } + else + { + Value = val; + return true; + } + + } + + public List GetValues(string Cast) + { + List values = new List(); + + try + { + _Navigator.MoveToRoot(); + _Navigator.MoveToFirstChild(); + _Navigator.MoveToFirstChild(); + + while (_Navigator.Name != Cast) + _Navigator.MoveToNext(); + + _Navigator.MoveToFirstChild(); + + values.Add(_Navigator.LocalName); + while (_Navigator.MoveToNext()) + values.Add(_Navigator.LocalName); + + } + catch (Exception) + { + + } + + return values; + } + + public List GetAttributes(string Cast, string attribute) + { + List values = new List(); + + try + { + _Navigator.MoveToRoot(); + _Navigator.MoveToFirstChild(); + + while (_Navigator.Name != Cast) + _Navigator.MoveToNext(); + + _Navigator.MoveToFirstChild(); + + values.Add(_Navigator.LocalName); + while (_Navigator.MoveToNext()) + values.Add(_Navigator.GetAttribute(attribute, "")); + + } + catch (Exception) + { + + } + + return values; + } + + public bool GetInnerValues(string Cast, ref List Values) + { + try + { + _Navigator.MoveToRoot(); + _Navigator.MoveToFirstChild(); + _Navigator.MoveToFirstChild(); + + while (_Navigator.Name != Cast) + _Navigator.MoveToNext(); + + _Navigator.MoveToFirstChild(); + + Values.Add(_Navigator.Value); + while (_Navigator.MoveToNext()) + Values.Add(_Navigator.Value); + + } + catch + { + return false; + } + + return true; + } + + public bool ItemExists(string Cast) + { + XPathNodeIterator iterator; + int results = 0; + + try + { + _Navigator.MoveToFirstChild(); + iterator = _Navigator.Select(Cast); + + while (iterator.MoveNext()) + results++; + } + catch (Exception) + { + results = 0; + } + + if (results == 0) + return false; + + return true; + } + } +} diff --git a/VocaluxeLib/Menu/IMenuElement.cs b/VocaluxeLib/Menu/IMenuElement.cs index f93a5acd..6aae45df 100644 --- a/VocaluxeLib/Menu/IMenuElement.cs +++ b/VocaluxeLib/Menu/IMenuElement.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu { @@ -10,7 +9,7 @@ namespace Vocaluxe.Menu { string GetThemeName(); - bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex); + bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex); bool SaveTheme(XmlWriter writer); void UnloadTextures(); diff --git a/VocaluxeLib/Menu/SingNotes/CNotes.cs b/VocaluxeLib/Menu/SingNotes/CNotes.cs index dfda1ee0..74f008df 100644 --- a/VocaluxeLib/Menu/SingNotes/CNotes.cs +++ b/VocaluxeLib/Menu/SingNotes/CNotes.cs @@ -636,7 +636,7 @@ namespace Vocaluxe.Menu.SingNotes #region Methods public void AddLine(CLine Line) { - AddLine(Line, true); + AddLine(Line, false); } public void AddLine(CLine Line, bool updateTimings) { diff --git a/VocaluxeLib/Menu/SingNotes/CSingNotes.cs b/VocaluxeLib/Menu/SingNotes/CSingNotes.cs index d1d60408..40992e3d 100644 --- a/VocaluxeLib/Menu/SingNotes/CSingNotes.cs +++ b/VocaluxeLib/Menu/SingNotes/CSingNotes.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Text; using System.Xml; -using System.Xml.XPath; namespace Vocaluxe.Menu.SingNotes { @@ -80,22 +79,22 @@ namespace Vocaluxe.Menu.SingNotes return _Theme.Name; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinLeft", navigator, ref _Theme.SkinLeftName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinMiddle", navigator, ref _Theme.SkinMiddleName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinRight", navigator, ref _Theme.SkinRightName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinLeft", ref _Theme.SkinLeftName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinMiddle", ref _Theme.SkinMiddleName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinRight", ref _Theme.SkinRightName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinBackgroundLeft", navigator, ref _Theme.SkinBackgroundLeftName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinBackgroundMiddle", navigator, ref _Theme.SkinBackgroundMiddleName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinBackgroundRight", navigator, ref _Theme.SkinBackgroundRightName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundLeft", ref _Theme.SkinBackgroundLeftName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundMiddle", ref _Theme.SkinBackgroundMiddleName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundRight", ref _Theme.SkinBackgroundRightName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinGoldenStar", navigator, ref _Theme.SkinGoldenStarName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinToneHelper", navigator, ref _Theme.SkinToneHelperName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinPerfectNoteStar", navigator, ref _Theme.SkinPerfectNoteStarName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinGoldenStar", ref _Theme.SkinGoldenStarName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinToneHelper", ref _Theme.SkinToneHelperName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/SkinPerfectNoteStar", ref _Theme.SkinPerfectNoteStarName, String.Empty); _BarPos = new SRectF[_Base.Settings.GetMaxNumPlayer(), _Base.Settings.GetMaxNumPlayer()]; for (int numplayer = 0; numplayer < _Base.Settings.GetMaxNumPlayer(); numplayer++) @@ -106,11 +105,11 @@ namespace Vocaluxe.Menu.SingNotes { _BarPos[player, numplayer] = new SRectF(); string target = "/BarPositions/P" + (player + 1).ToString() + "N" + (numplayer + 1).ToString(); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + target + "X", navigator, ref _BarPos[player, numplayer].X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + target + "Y", navigator, ref _BarPos[player, numplayer].Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + target + "Z", navigator, ref _BarPos[player, numplayer].Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + target + "W", navigator, ref _BarPos[player, numplayer].W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + target + "H", navigator, ref _BarPos[player, numplayer].H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "X", ref _BarPos[player, numplayer].X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "Y", ref _BarPos[player, numplayer].Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "Z", ref _BarPos[player, numplayer].Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "W", ref _BarPos[player, numplayer].W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "H", ref _BarPos[player, numplayer].H); } } } diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenu.cs b/VocaluxeLib/Menu/SongMenu/CSongMenu.cs index 4a654c00..bd2a9753 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenu.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenu.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Text; using System.Xml; -using System.Xml.XPath; using Vocaluxe.Menu; using Vocaluxe.PartyModes; @@ -166,9 +165,9 @@ namespace Vocaluxe.Menu.SongMenu return _SongMenu.GetThemeName(); } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { - return _SongMenu.LoadTheme(XmlPath, ElementName, navigator, SkinIndex); + return _SongMenu.LoadTheme(XmlPath, ElementName, xmlReader, SkinIndex); } public bool SaveTheme(XmlWriter writer) diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs index 44c75526..85f17a83 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; -using System.Xml.XPath; using Vocaluxe.PartyModes; @@ -259,61 +258,61 @@ namespace Vocaluxe.Menu.SongMenu return _Theme.Name; } - public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) + public bool LoadTheme(string XmlPath, string ElementName, CXMLReader xmlReader, int SkinIndex) { string item = XmlPath + "/" + ElementName; _ThemeLoaded = true; - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/CoverBackground", navigator, ref _Theme.CoverBackgroundName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/CoverBigBackground", navigator, ref _Theme.CoverBigBackgroundName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/DuetIcon", navigator, ref _Theme.DuetIconName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/VideoIcon", navigator, ref _Theme.VideoIconName, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/MedleyCalcIcon", navigator, ref _Theme.MedleyCalcIcon, String.Empty); - _ThemeLoaded &= CHelper.GetValueFromXML(item + "/MedleyTagIcon", navigator, ref _Theme.MedleyTagIcon, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/CoverBackground", ref _Theme.CoverBackgroundName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/CoverBigBackground", ref _Theme.CoverBigBackgroundName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/DuetIcon", ref _Theme.DuetIconName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/VideoIcon", ref _Theme.VideoIconName, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/MedleyCalcIcon", ref _Theme.MedleyCalcIcon, String.Empty); + _ThemeLoaded &= xmlReader.GetValue(item + "/MedleyTagIcon", ref _Theme.MedleyTagIcon, String.Empty); - if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty)) + if (xmlReader.GetValue(item + "/Color", ref _Theme.ColorName, String.Empty)) { _ThemeLoaded &= _Base.Theme.GetColor(_Theme.ColorName, SkinIndex, ref _Color); } else { - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref _Color.R); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref _Color.G); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref _Color.B); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref _Color.A); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _Color.R); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _Color.G); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _Color.B); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _Color.A); } #region SongMenuTileBoard - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/SongMenuTileBoard/NumW", navigator, ref _Theme.songMenuTileBoard.numW); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/SongMenuTileBoard/NumH", navigator, ref _Theme.songMenuTileBoard.numH); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/SpaceW", navigator, ref _Theme.songMenuTileBoard.spaceW); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/SpaceH", navigator, ref _Theme.songMenuTileBoard.spaceH); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumW", ref _Theme.songMenuTileBoard.numW); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumH", ref _Theme.songMenuTileBoard.numH); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/SpaceW", ref _Theme.songMenuTileBoard.spaceW); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/SpaceH", ref _Theme.songMenuTileBoard.spaceH); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/SongMenuTileBoard/NumWsmall", navigator, ref _Theme.songMenuTileBoard.numWsmall); - _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/SongMenuTileBoard/NumHsmall", navigator, ref _Theme.songMenuTileBoard.numHsmall); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumWsmall", ref _Theme.songMenuTileBoard.numWsmall); + _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumHsmall", ref _Theme.songMenuTileBoard.numHsmall); - _ThemeLoaded &= _Theme.songMenuTileBoard.TextArtist.LoadTheme(item + "/SongMenuTileBoard", "TextArtist", navigator, SkinIndex); - _ThemeLoaded &= _Theme.songMenuTileBoard.TextTitle.LoadTheme(item + "/SongMenuTileBoard", "TextTitle", navigator, SkinIndex); - _ThemeLoaded &= _Theme.songMenuTileBoard.TextSongLength.LoadTheme(item + "/SongMenuTileBoard", "TextSongLength", navigator, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.TextArtist.LoadTheme(item + "/SongMenuTileBoard", "TextArtist", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.TextTitle.LoadTheme(item + "/SongMenuTileBoard", "TextTitle", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.TextSongLength.LoadTheme(item + "/SongMenuTileBoard", "TextSongLength", xmlReader, SkinIndex); - _ThemeLoaded &= _Theme.songMenuTileBoard.StaticCoverBig.LoadTheme(item + "/SongMenuTileBoard", "StaticCoverBig", navigator, SkinIndex); - _ThemeLoaded &= _Theme.songMenuTileBoard.StaticTextBG.LoadTheme(item + "/SongMenuTileBoard", "StaticTextBG", navigator, SkinIndex); - _ThemeLoaded &= _Theme.songMenuTileBoard.StaticDuetIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticDuetIcon", navigator, SkinIndex); - _ThemeLoaded &= _Theme.songMenuTileBoard.StaticVideoIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticVideoIcon", navigator, SkinIndex); - _ThemeLoaded &= _Theme.songMenuTileBoard.StaticMedleyCalcIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticMedleyCalcIcon", navigator, SkinIndex); - _ThemeLoaded &= _Theme.songMenuTileBoard.StaticMedleyTagIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticMedleyTagIcon", navigator, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.StaticCoverBig.LoadTheme(item + "/SongMenuTileBoard", "StaticCoverBig", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.StaticTextBG.LoadTheme(item + "/SongMenuTileBoard", "StaticTextBG", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.StaticDuetIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticDuetIcon", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.StaticVideoIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticVideoIcon", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.StaticMedleyCalcIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticMedleyCalcIcon", xmlReader, SkinIndex); + _ThemeLoaded &= _Theme.songMenuTileBoard.StaticMedleyTagIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticMedleyTagIcon", xmlReader, SkinIndex); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectX", navigator, ref _Theme.songMenuTileBoard.TileRect.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectY", navigator, ref _Theme.songMenuTileBoard.TileRect.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectZ", navigator, ref _Theme.songMenuTileBoard.TileRect.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectW", navigator, ref _Theme.songMenuTileBoard.TileRect.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectH", navigator, ref _Theme.songMenuTileBoard.TileRect.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectX", ref _Theme.songMenuTileBoard.TileRect.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectY", ref _Theme.songMenuTileBoard.TileRect.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectZ", ref _Theme.songMenuTileBoard.TileRect.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectW", ref _Theme.songMenuTileBoard.TileRect.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectH", ref _Theme.songMenuTileBoard.TileRect.H); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallX", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.X); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallY", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.Y); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallZ", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.Z); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallW", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.W); - _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallH", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.H); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallX", ref _Theme.songMenuTileBoard.TileRectSmall.X); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallY", ref _Theme.songMenuTileBoard.TileRectSmall.Y); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallZ", ref _Theme.songMenuTileBoard.TileRectSmall.Z); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallW", ref _Theme.songMenuTileBoard.TileRectSmall.W); + _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallH", ref _Theme.songMenuTileBoard.TileRectSmall.H); #endregion SongMenuTileBoard diff --git a/VocaluxeLib/VocaluxeLib.csproj b/VocaluxeLib/VocaluxeLib.csproj index 2e8963d1..921b3bd0 100644 --- a/VocaluxeLib/VocaluxeLib.csproj +++ b/VocaluxeLib/VocaluxeLib.csproj @@ -126,6 +126,7 @@ +