From f873e7f9c35b8dfc30a1d2a6d278362b6f039135 Mon Sep 17 00:00:00 2001 From: adelikat Date: Tue, 25 Feb 2020 12:50:23 -0600 Subject: [PATCH] cleanup some BizwareGL files - spaces to tabs, remove used code, cleanup --- BizHawk.sln.DotSettings | 2 + .../Borrowed/BitmapFontParser/BitmapFont.cs | 192 ++---- .../BitmapFontParser/BitmapFontLoader.cs | 601 +++++------------- .../IGraphicsControl.cs | 2 - Bizware/BizHawk.Bizware.BizwareGL/Pipeline.cs | 16 +- .../StringRenderer.cs | 7 +- Bizware/BizHawk.Bizware.BizwareGL/TexAtlas.cs | 28 +- 7 files changed, 227 insertions(+), 621 deletions(-) diff --git a/BizHawk.sln.DotSettings b/BizHawk.sln.DotSettings index 808a4cd6c9..8944aa2001 100644 --- a/BizHawk.sln.DotSettings +++ b/BizHawk.sln.DotSettings @@ -235,6 +235,7 @@ True True True + True True True True @@ -305,6 +306,7 @@ True True True + True True True True diff --git a/Bizware/BizHawk.Bizware.BizwareGL/Borrowed/BitmapFontParser/BitmapFont.cs b/Bizware/BizHawk.Bizware.BizwareGL/Borrowed/BitmapFontParser/BitmapFont.cs index 80c4f6433d..46f4b53234 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL/Borrowed/BitmapFontParser/BitmapFont.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL/Borrowed/BitmapFontParser/BitmapFont.cs @@ -1,183 +1,71 @@ -//public domain assumed from cyotek.com - -using System; -using System.Collections; +using System.Collections; using System.Collections.Generic; using System.Drawing; +// public domain assumed from cyotek.com namespace Cyotek.Drawing.BitmapFont { - public class BitmapFont : IEnumerable - { - #region  Public Member Declarations + public class BitmapFont : IEnumerable + { + public IEnumerator GetEnumerator() + { + foreach (KeyValuePair pair in Characters) + { + yield return pair.Value; + } + } - public const int NoMaxWidth = -1; + public int AlphaChannel { get; set; } - #endregion  Public Member Declarations + public int BaseHeight { get; set; } - #region  Public Constructors + public int BlueChannel { get; set; } - public BitmapFont() - { } + public bool Bold { get; set; } - #endregion  Public Constructors + public IDictionary Characters { get; set; } - #region  Public Methods + public string Charset { get; set; } - public IEnumerator GetEnumerator() - { - foreach (KeyValuePair pair in this.Characters) - yield return pair.Value; - } + public string FamilyName { get; set; } - public int GetKerning(char previous, char current) - { - Kerning key; - int result; + public int FontSize { get; set; } - key = new Kerning(previous, current, 0); - if (!this.Kernings.TryGetValue(key, out result)) - result = 0; + public int GreenChannel { get; set; } - return result; - } + public bool Italic { get; set; } - public Size MeasureFont(string text) - { - return this.MeasureFont(text, BitmapFont.NoMaxWidth); - } + public IDictionary Kernings { get; set; } - public Size MeasureFont(string text, double maxWidth) - { - char previousCharacter; - string normalizedText; - int currentLineWidth; - int currentLineHeight; - int blockWidth; - int blockHeight; - List lineHeights; + public int LineHeight { get; set; } - previousCharacter = ' '; - normalizedText = this.NormalizeLineBreaks(text); - currentLineWidth = 0; - currentLineHeight = this.LineHeight; - blockWidth = 0; - blockHeight = 0; - lineHeights = new List(); + public int OutlineSize { get; set; } - foreach (char character in normalizedText) - { - switch (character) - { - case '\n': - lineHeights.Add(currentLineHeight); - blockWidth = Math.Max(blockWidth, currentLineWidth); - currentLineWidth = 0; - currentLineHeight = this.LineHeight; - break; - default: - Character data; - int width; + public bool Packed { get; set; } - data = this[character]; - width = data.XAdvance + this.GetKerning(previousCharacter, character); + public Padding Padding { get; set; } - if (maxWidth != BitmapFont.NoMaxWidth && currentLineWidth + width >= maxWidth) - { - lineHeights.Add(currentLineHeight); - blockWidth = Math.Max(blockWidth, currentLineWidth); - currentLineWidth = 0; - currentLineHeight = this.LineHeight; - } + public Page[] Pages { get; set; } - currentLineWidth += width; - currentLineHeight = Math.Max(currentLineHeight, data.Bounds.Height + data.Offset.Y); - previousCharacter = character; - break; - } - } + public int RedChannel { get; set; } - // finish off the current line if required - if (currentLineHeight != 0) - lineHeights.Add(currentLineHeight); + public bool Smoothed { get; set; } - // reduce any lines other than the last back to the base - for (int i = 0; i < lineHeights.Count - 1; i++) - lineHeights[i] = this.LineHeight; + public Point Spacing { get; set; } - // calculate the final block height - foreach (int lineHeight in lineHeights) - blockHeight += lineHeight; + public int StretchedHeight { get; set; } - return new Size(Math.Max(currentLineWidth, blockWidth), blockHeight); - } + public int SuperSampling { get; set; } - public string NormalizeLineBreaks(string s) - { - return s.Replace("\r\n", "\n").Replace("\r", "\n"); - } + public Size TextureSize { get; set; } - #endregion  Public Methods + public Character this[char character] => Characters[character]; - #region  Public Properties + public bool Unicode { get; set; } - public int AlphaChannel { get; set; } - - public int BaseHeight { get; set; } - - public int BlueChannel { get; set; } - - public bool Bold { get; set; } - - public IDictionary Characters { get; set; } - - public string Charset { get; set; } - - public string FamilyName { get; set; } - - public int FontSize { get; set; } - - public int GreenChannel { get; set; } - - public bool Italic { get; set; } - - public IDictionary Kernings { get; set; } - - public int LineHeight { get; set; } - - public int OutlineSize { get; set; } - - public bool Packed { get; set; } - - public Padding Padding { get; set; } - - public Page[] Pages { get; set; } - - public int RedChannel { get; set; } - - public bool Smoothed { get; set; } - - public Point Spacing { get; set; } - - public int StretchedHeight { get; set; } - - public int SuperSampling { get; set; } - - public Size TextureSize { get; set; } - - public Character this[char character] => this.Characters[character]; - - public bool Unicode { get; set; } - - #endregion  Public Properties - - #region  Private Methods - - IEnumerator IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - - #endregion  Private Methods - } + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } } diff --git a/Bizware/BizHawk.Bizware.BizwareGL/Borrowed/BitmapFontParser/BitmapFontLoader.cs b/Bizware/BizHawk.Bizware.BizwareGL/Borrowed/BitmapFontParser/BitmapFontLoader.cs index 31dd1c80b2..e290401d98 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL/Borrowed/BitmapFontParser/BitmapFontLoader.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL/Borrowed/BitmapFontParser/BitmapFontLoader.cs @@ -1,447 +1,170 @@ -//public domain assumed from cyotek.com - -using System; +using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Xml; +// public domain assumed from cyotek.com namespace Cyotek.Drawing.BitmapFont { - // Parsing class for bitmap fonts generated by AngelCode BMFont - // http://www.angelcode.com/products/bmfont/ - - public static class BitmapFontLoader - { - #region  Public Class Methods - - ///// - ///// Loads a bitmap font from a file, attempting to auto detect the file type - ///// - ///// Name of the file to load. - ///// - //public static BitmapFont LoadFontFromFile(string fileName) - //{ - // BitmapFont result; - - // if (string.IsNullOrEmpty(fileName)) - // throw new ArgumentNullException("fileName", "File name not specified"); - // else if (!File.Exists(fileName)) - // throw new FileNotFoundException(string.Format("Cannot find file '{0}'", fileName), fileName); - - // using (FileStream file = File.OpenRead(fileName)) - // { - // using (TextReader reader = new StreamReader(file)) - // { - // string line; - - // line = reader.ReadLine(); - - // if (line.StartsWith("info ")) - // result = BitmapFontLoader.LoadFontFromTextFile(fileName); - // else if (line.StartsWith(" - /// Loads a bitmap font from a text file. - /// - /// Name of the file to load. - public static BitmapFont LoadFontFromTextFile(string fileName) - { - BitmapFont font; - IDictionary pageData; - IDictionary kerningDictionary; - IDictionary charDictionary; - string resourcePath; - string[] lines; - - if (string.IsNullOrEmpty(fileName)) - throw new ArgumentNullException(nameof(fileName), "File name not specified"); - else if (!File.Exists(fileName)) - throw new FileNotFoundException(string.Format("Cannot find file '{0}'", fileName), fileName); - - pageData = new SortedDictionary(); - kerningDictionary = new Dictionary(); - charDictionary = new Dictionary(); - font = new BitmapFont(); - - resourcePath = Path.GetDirectoryName(fileName); - lines = File.ReadAllLines(fileName); - - foreach (string line in lines) - { - string[] parts; - - parts = BitmapFontLoader.Split(line, ' '); - - if (parts.Length != 0) - { - switch (parts[0]) - { - case "info": - font.FamilyName = BitmapFontLoader.GetNamedString(parts, "face"); - font.FontSize = BitmapFontLoader.GetNamedInt(parts, "size"); - font.Bold = BitmapFontLoader.GetNamedBool(parts, "bold"); - font.Italic = BitmapFontLoader.GetNamedBool(parts, "italic"); - font.Charset = BitmapFontLoader.GetNamedString(parts, "charset"); - font.Unicode = BitmapFontLoader.GetNamedBool(parts, "unicode"); - font.StretchedHeight = BitmapFontLoader.GetNamedInt(parts, "stretchH"); - font.Smoothed = BitmapFontLoader.GetNamedBool(parts, "smooth"); - font.SuperSampling = BitmapFontLoader.GetNamedInt(parts, "aa"); - font.Padding = BitmapFontLoader.ParsePadding(BitmapFontLoader.GetNamedString(parts, "padding")); - font.Spacing = BitmapFontLoader.ParsePoint(BitmapFontLoader.GetNamedString(parts, "spacing")); - font.OutlineSize = BitmapFontLoader.GetNamedInt(parts, "outline"); - break; - case "common": - font.LineHeight = BitmapFontLoader.GetNamedInt(parts, "lineHeight"); - font.BaseHeight = BitmapFontLoader.GetNamedInt(parts, "base"); - font.TextureSize = new Size - ( - BitmapFontLoader.GetNamedInt(parts, "scaleW"), - BitmapFontLoader.GetNamedInt(parts, "scaleH") - ); - font.Packed = BitmapFontLoader.GetNamedBool(parts, "packed"); - font.AlphaChannel = BitmapFontLoader.GetNamedInt(parts, "alphaChnl"); - font.RedChannel = BitmapFontLoader.GetNamedInt(parts, "redChnl"); - font.GreenChannel = BitmapFontLoader.GetNamedInt(parts, "greenChnl"); - font.BlueChannel = BitmapFontLoader.GetNamedInt(parts, "blueChnl"); - break; - case "page": - int id; - string name; - string textureId; - - id = BitmapFontLoader.GetNamedInt(parts, "id"); - name = BitmapFontLoader.GetNamedString(parts, "file"); - textureId = Path.GetFileNameWithoutExtension(name); - - pageData.Add(id, new Page(id, Path.Combine(resourcePath, name))); - break; - case "char": - Character charData; - - charData = new Character - { - Char = (char)BitmapFontLoader.GetNamedInt(parts, "id"), - Bounds = new Rectangle - ( - BitmapFontLoader.GetNamedInt(parts, "x"), - BitmapFontLoader.GetNamedInt(parts, "y"), - BitmapFontLoader.GetNamedInt(parts, "width"), - BitmapFontLoader.GetNamedInt(parts, "height") - ), - Offset = new Point - ( - BitmapFontLoader.GetNamedInt(parts, "xoffset"), - BitmapFontLoader.GetNamedInt(parts, "yoffset") - ), - XAdvance = BitmapFontLoader.GetNamedInt(parts, "xadvance"), - TexturePage = BitmapFontLoader.GetNamedInt(parts, "page"), - Channel = BitmapFontLoader.GetNamedInt(parts, "chnl") - }; - charDictionary.Add(charData.Char, charData); - break; - case "kerning": - Kerning key; - - key = new Kerning((char)BitmapFontLoader.GetNamedInt(parts, "first"), (char)BitmapFontLoader.GetNamedInt(parts, "second"), GetNamedInt(parts, "amount")); - - if (!kerningDictionary.ContainsKey(key)) - kerningDictionary.Add(key, key.Amount); - break; - } - } - } - - font.Pages = BitmapFontLoader.ToArray(pageData.Values); - font.Characters = charDictionary; - font.Kernings = kerningDictionary; - - return font; - } - - /// - /// Loads a bitmap font from an XML file. - /// - /// Name of the file to load. - public static BitmapFont LoadFontFromXmlFile(Stream stream) - { - XmlDocument document; - BitmapFont font; - IDictionary pageData; - IDictionary kerningDictionary; - IDictionary charDictionary; - XmlNode root; - XmlNode properties; - - document = new XmlDocument(); - pageData = new SortedDictionary(); - kerningDictionary = new Dictionary(); - charDictionary = new Dictionary(); - font = new BitmapFont(); - - document.Load(stream); - root = document.DocumentElement; - - // load the basic attributes - properties = root.SelectSingleNode("info"); - font.FamilyName = properties.Attributes["face"].Value; - font.FontSize = Convert.ToInt32(properties.Attributes["size"].Value); - font.Bold = Convert.ToInt32(properties.Attributes["bold"].Value) != 0; - font.Italic = Convert.ToInt32(properties.Attributes["italic"].Value) != 0; - font.Unicode = Convert.ToInt32(properties.Attributes["unicode"].Value) != 0; - font.StretchedHeight = Convert.ToInt32(properties.Attributes["stretchH"].Value); - font.Charset = properties.Attributes["charset"].Value; - font.Smoothed = Convert.ToInt32(properties.Attributes["smooth"].Value) != 0; - font.SuperSampling = Convert.ToInt32(properties.Attributes["aa"].Value); - font.Padding = BitmapFontLoader.ParsePadding(properties.Attributes["padding"].Value); - font.Spacing = BitmapFontLoader.ParsePoint(properties.Attributes["spacing"].Value); - font.OutlineSize = Convert.ToInt32(properties.Attributes["outline"].Value); - - // common attributes - properties = root.SelectSingleNode("common"); - font.BaseHeight = Convert.ToInt32(properties.Attributes["lineHeight"].Value); - font.LineHeight = Convert.ToInt32(properties.Attributes["base"].Value); - font.TextureSize = new Size - ( - Convert.ToInt32(properties.Attributes["scaleW"].Value), - Convert.ToInt32(properties.Attributes["scaleH"].Value) - ); - font.Packed = Convert.ToInt32(properties.Attributes["packed"].Value) != 0; - font.AlphaChannel = Convert.ToInt32(properties.Attributes["alphaChnl"].Value); - font.RedChannel = Convert.ToInt32(properties.Attributes["redChnl"].Value); - font.GreenChannel = Convert.ToInt32(properties.Attributes["greenChnl"].Value); - font.BlueChannel = Convert.ToInt32(properties.Attributes["blueChnl"].Value); - - // load texture information - foreach (XmlNode node in root.SelectNodes("pages/page")) - { - Page page; - - page = new Page(); - page.Id = Convert.ToInt32(node.Attributes["id"].Value); - page.FileName = node.Attributes["file"].Value; - - pageData.Add(page.Id, page); - } - font.Pages = BitmapFontLoader.ToArray(pageData.Values); - - // load character information - foreach (XmlNode node in root.SelectNodes("chars/char")) - { - Character character; - - character = new Character(); - character.Char = (char)Convert.ToInt32(node.Attributes["id"].Value); - character.Bounds = new Rectangle - ( - Convert.ToInt32(node.Attributes["x"].Value), - Convert.ToInt32(node.Attributes["y"].Value), - Convert.ToInt32(node.Attributes["width"].Value), - Convert.ToInt32(node.Attributes["height"].Value) - ); - character.Offset = new Point - ( - Convert.ToInt32(node.Attributes["xoffset"].Value), - Convert.ToInt32(node.Attributes["yoffset"].Value) - ); - character.XAdvance = Convert.ToInt32(node.Attributes["xadvance"].Value); - character.TexturePage = Convert.ToInt32(node.Attributes["page"].Value); - character.Channel = Convert.ToInt32(node.Attributes["chnl"].Value); - - charDictionary.Add(character.Char, character); - } - font.Characters = charDictionary; - - // loading kerning information - foreach (XmlNode node in root.SelectNodes("kernings/kerning")) - { - Kerning key; - - key = new Kerning((char)Convert.ToInt32(node.Attributes["first"].Value), (char)Convert.ToInt32(node.Attributes["second"].Value), Convert.ToInt32(node.Attributes["amount"].Value)); - - if (!kerningDictionary.ContainsKey(key)) - kerningDictionary.Add(key, key.Amount); - } - font.Kernings = kerningDictionary; - - return font; - } - - #endregion  Public Class Methods - - #region  Private Class Methods - - /// - /// Returns a boolean from an array of name/value pairs. - /// - /// The array of parts. - /// The name of the value to return. - private static bool GetNamedBool(string[] parts, string name) - { - return BitmapFontLoader.GetNamedInt(parts, name) != 0; - } - - /// - /// Returns an integer from an array of name/value pairs. - /// - /// The array of parts. - /// The name of the value to return. - private static int GetNamedInt(string[] parts, string name) - { - return Convert.ToInt32(BitmapFontLoader.GetNamedString(parts, name)); - } - - /// - /// Returns a string from an array of name/value pairs. - /// - /// The array of parts. - /// The name of the value to return. - private static string GetNamedString(string[] parts, string name) - { - string result; - - result = ""; - name = name.ToLowerInvariant(); - - foreach (string part in parts) - { - int nameEndIndex; - - nameEndIndex = part.IndexOf("="); - if (nameEndIndex != -1) - { - string namePart; - string valuePart; - - namePart = part.Substring(0, nameEndIndex).ToLowerInvariant(); - valuePart = part.Substring(nameEndIndex + 1); - - if (namePart == name) - { - if (valuePart.StartsWith("\"") && valuePart.EndsWith("\"")) - valuePart = valuePart.Substring(1, valuePart.Length - 2); - - result = valuePart; - break; - } - } - } - - return result; - } - - /// - /// Creates a Padding object from a string representation - /// - /// The string. - private static Padding ParsePadding(string s) - { - string[] parts; - - parts = s.Split(','); - - return new Padding() - { - Left = Convert.ToInt32(parts[3].Trim()), - Top = Convert.ToInt32(parts[0].Trim()), - Right = Convert.ToInt32(parts[1].Trim()), - Bottom = Convert.ToInt32(parts[2].Trim()) - }; - } - - /// - /// Creates a Point object from a string representation - /// - /// The string. - private static Point ParsePoint(string s) - { - string[] parts; - - parts = s.Split(','); - - return new Point() - { - X = Convert.ToInt32(parts[0].Trim()), - Y = Convert.ToInt32(parts[1].Trim()) - }; - } - - /// - /// Splits the specified string using a given delimiter, ignoring any instances of the delimiter as part of a quoted string. - /// - /// The string to split. - /// The delimiter. - private static string[] Split(string s, char delimiter) - { - string[] results; - - if (s.Contains("\"")) - { - List parts; - int partStart; - - partStart = -1; - parts = new List(); - - do - { - int partEnd; - int quoteStart; - int quoteEnd; - bool hasQuotes; - - quoteStart = s.IndexOf("\"", partStart + 1); - quoteEnd = s.IndexOf("\"", quoteStart + 1); - partEnd = s.IndexOf(delimiter, partStart + 1); - - if (partEnd == -1) - partEnd = s.Length; - - hasQuotes = quoteStart != -1 && partEnd > quoteStart && partEnd < quoteEnd; - if (hasQuotes) - partEnd = s.IndexOf(delimiter, quoteEnd + 1); - - parts.Add(s.Substring(partStart + 1, partEnd - partStart - 1)); - - if (hasQuotes) - partStart = partEnd - 1; - - partStart = s.IndexOf(delimiter, partStart + 1); - } while (partStart != -1); - - results = parts.ToArray(); - } - else - results = s.Split(new char[] { delimiter }, StringSplitOptions.RemoveEmptyEntries); - - return results; - } - - /// - /// Converts the given collection into an array - /// - /// Type of the items in the array - /// The values. - private static T[] ToArray(ICollection values) - { - T[] result; - - // avoid a forced .NET 3 dependency just for one call to Linq - - result = new T[values.Count]; - values.CopyTo(result, 0); - - return result; - } - - #endregion  Private Class Methods - } + // Parsing class for bitmap fonts generated by AngelCode BMFont + // http://www.angelcode.com/products/bmfont/ + + public static class BitmapFontLoader + { + #region  Public Class Methods + + /// + /// Loads a bitmap font from an XML file. + /// + public static BitmapFont LoadFontFromXmlFile(Stream stream) + { + var document = new XmlDocument(); + IDictionary pageData = new SortedDictionary(); + IDictionary kerningDictionary = new Dictionary(); + IDictionary charDictionary = new Dictionary(); + var font = new BitmapFont(); + + document.Load(stream); + XmlNode root = document.DocumentElement; + + // load the basic attributes + var properties = root.SelectSingleNode("info"); + font.FamilyName = properties.Attributes["face"].Value; + font.FontSize = Convert.ToInt32(properties.Attributes["size"].Value); + font.Bold = Convert.ToInt32(properties.Attributes["bold"].Value) != 0; + font.Italic = Convert.ToInt32(properties.Attributes["italic"].Value) != 0; + font.Unicode = Convert.ToInt32(properties.Attributes["unicode"].Value) != 0; + font.StretchedHeight = Convert.ToInt32(properties.Attributes["stretchH"].Value); + font.Charset = properties.Attributes["charset"].Value; + font.Smoothed = Convert.ToInt32(properties.Attributes["smooth"].Value) != 0; + font.SuperSampling = Convert.ToInt32(properties.Attributes["aa"].Value); + font.Padding = ParsePadding(properties.Attributes["padding"].Value); + font.Spacing = ParsePoint(properties.Attributes["spacing"].Value); + font.OutlineSize = Convert.ToInt32(properties.Attributes["outline"].Value); + + // common attributes + properties = root.SelectSingleNode("common"); + font.BaseHeight = Convert.ToInt32(properties.Attributes["lineHeight"].Value); + font.LineHeight = Convert.ToInt32(properties.Attributes["base"].Value); + font.TextureSize = new Size + ( + Convert.ToInt32(properties.Attributes["scaleW"].Value), + Convert.ToInt32(properties.Attributes["scaleH"].Value) + ); + font.Packed = Convert.ToInt32(properties.Attributes["packed"].Value) != 0; + font.AlphaChannel = Convert.ToInt32(properties.Attributes["alphaChnl"].Value); + font.RedChannel = Convert.ToInt32(properties.Attributes["redChnl"].Value); + font.GreenChannel = Convert.ToInt32(properties.Attributes["greenChnl"].Value); + font.BlueChannel = Convert.ToInt32(properties.Attributes["blueChnl"].Value); + + // load texture information + foreach (XmlNode node in root.SelectNodes("pages/page")) + { + var page = new Page + { + Id = Convert.ToInt32(node.Attributes["id"].Value), + FileName = node.Attributes["file"].Value + }; + + pageData.Add(page.Id, page); + } + font.Pages = ToArray(pageData.Values); + + // load character information + foreach (XmlNode node in root.SelectNodes("chars/char")) + { + var character = new Character + { + Char = (char) Convert.ToInt32(node.Attributes["id"].Value), + Bounds = new Rectangle + ( + Convert.ToInt32(node.Attributes["x"].Value), + Convert.ToInt32(node.Attributes["y"].Value), + Convert.ToInt32(node.Attributes["width"].Value), + Convert.ToInt32(node.Attributes["height"].Value) + ), + Offset = new Point + ( + Convert.ToInt32(node.Attributes["xoffset"].Value), + Convert.ToInt32(node.Attributes["yoffset"].Value) + ), + XAdvance = Convert.ToInt32(node.Attributes["xadvance"].Value), + TexturePage = Convert.ToInt32(node.Attributes["page"].Value), + Channel = Convert.ToInt32(node.Attributes["chnl"].Value) + }; + + charDictionary.Add(character.Char, character); + } + + font.Characters = charDictionary; + + // loading kerning information + foreach (XmlNode node in root.SelectNodes("kernings/kerning")) + { + var key = new Kerning((char)Convert.ToInt32(node.Attributes["first"].Value), (char)Convert.ToInt32(node.Attributes["second"].Value), Convert.ToInt32(node.Attributes["amount"].Value)); + + if (!kerningDictionary.ContainsKey(key)) + { + kerningDictionary.Add(key, key.Amount); + } + } + + font.Kernings = kerningDictionary; + + return font; + } + + #endregion  Public Class Methods + + #region  Private Class Methods + + /// + /// Creates a Padding object from a string representation + /// + /// The string. + private static Padding ParsePadding(string s) + { + var parts = s.Split(','); + + return new Padding + { + Left = Convert.ToInt32(parts[3].Trim()), + Top = Convert.ToInt32(parts[0].Trim()), + Right = Convert.ToInt32(parts[1].Trim()), + Bottom = Convert.ToInt32(parts[2].Trim()) + }; + } + + /// + /// Creates a Point object from a string representation + /// + /// The string. + private static Point ParsePoint(string s) + { + var parts = s.Split(','); + + return new Point + { + X = Convert.ToInt32(parts[0].Trim()), + Y = Convert.ToInt32(parts[1].Trim()) + }; + } + + /// + /// Converts the given collection into an array + /// + /// Type of the items in the array + /// The values. + private static T[] ToArray(ICollection values) + { + // avoid a forced .NET 3 dependency just for one call to Linq + var result = new T[values.Count]; + values.CopyTo(result, 0); + + return result; + } + + #endregion  Private Class Methods + } } diff --git a/Bizware/BizHawk.Bizware.BizwareGL/IGraphicsControl.cs b/Bizware/BizHawk.Bizware.BizwareGL/IGraphicsControl.cs index 724544f7f3..d9a90dbba6 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL/IGraphicsControl.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL/IGraphicsControl.cs @@ -30,6 +30,4 @@ namespace BizHawk.Bizware.BizwareGL /// void End(); } - - } \ No newline at end of file diff --git a/Bizware/BizHawk.Bizware.BizwareGL/Pipeline.cs b/Bizware/BizHawk.Bizware.BizwareGL/Pipeline.cs index d709885732..59632feb4b 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL/Pipeline.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL/Pipeline.cs @@ -23,8 +23,11 @@ namespace BizHawk.Bizware.BizwareGL return; UniformsDictionary = new SpecialWorkingDictionary(this); - foreach(var ui in uniforms) + foreach (var ui in uniforms) + { UniformsDictionary[ui.Name] = new PipelineUniform(this); + } + foreach (var ui in uniforms) { UniformsDictionary[ui.Name].AddUniformInfo(ui); @@ -47,11 +50,9 @@ namespace BizHawk.Bizware.BizwareGL { get { - PipelineUniform temp; - if (!TryGetValue(key, out temp)) + if (!TryGetValue(key, out var temp)) { - var ui = new UniformInfo(); - ui.Opaque = null; + var ui = new UniformInfo {Opaque = null}; temp = this[key] = new PipelineUniform(null); } @@ -65,12 +66,11 @@ namespace BizHawk.Bizware.BizwareGL readonly SpecialWorkingDictionary UniformsDictionary; IDictionary Uniforms => UniformsDictionary; - public IEnumerable GetUniforms() { return Uniforms.Values; } + public IEnumerable GetUniforms() => Uniforms.Values; public PipelineUniform TryGetUniform(string name) { - PipelineUniform ret = null; - Uniforms.TryGetValue(name,out ret); + Uniforms.TryGetValue(name, out var ret); return ret; } diff --git a/Bizware/BizHawk.Bizware.BizwareGL/StringRenderer.cs b/Bizware/BizHawk.Bizware.BizwareGL/StringRenderer.cs index 6a68bfb439..6a34b8d788 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL/StringRenderer.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL/StringRenderer.cs @@ -16,7 +16,7 @@ namespace BizHawk.Bizware.BizwareGL Owner = owner; FontInfo = Cyotek.Drawing.BitmapFont.BitmapFontLoader.LoadFontFromXmlFile(xml); - //load textures + // load textures for(int i=0;i TexturePages = new List(); - + private readonly Cyotek.Drawing.BitmapFont.BitmapFont FontInfo; + private List TexturePages = new List(); } } \ No newline at end of file diff --git a/Bizware/BizHawk.Bizware.BizwareGL/TexAtlas.cs b/Bizware/BizHawk.Bizware.BizwareGL/TexAtlas.cs index b64b04f3d8..e777ae795f 100644 --- a/Bizware/BizHawk.Bizware.BizwareGL/TexAtlas.cs +++ b/Bizware/BizHawk.Bizware.BizwareGL/TexAtlas.cs @@ -21,8 +21,7 @@ namespace BizHawk.Bizware.BizwareGL public object Item; } - - class TryFitParam + private class TryFitParam { public TryFitParam(int _w, int _h) { this.w = _w; this.h = _h; } public readonly int w; @@ -49,19 +48,19 @@ namespace BizHawk.Bizware.BizwareGL /// public static PackedAtlasResults PackAtlas(IEnumerable items) { - PackedAtlasResults ret = new PackedAtlasResults(); + var ret = new PackedAtlasResults(); ret.Atlases.Add(new PackedAtlasResults.SingleAtlas()); - //initially, we'll try all the items; none remain - List currentItems = new List(items); - List remainItems = new List(); + // initially, we'll try all the items; none remain + var currentItems = new List(items); + var remainItems = new List(); RETRY: - //this is where the texture size range is determined. - //we run this every time we make an atlas, in case we want to variably control the maximum texture output size. - //ALSO - we accumulate data in there, so we need to refresh it each time. ... lame. - List todoSizes = new List(); + // this is where the texture size range is determined. + // we run this every time we make an atlas, in case we want to variably control the maximum texture output size. + // ALSO - we accumulate data in there, so we need to refresh it each time. ... lame. + var todoSizes = new List(); for (int i = 3; i <= MaxSizeBits; i++) { for (int j = 3; j <= MaxSizeBits; j++) @@ -164,9 +163,9 @@ namespace BizHawk.Bizware.BizwareGL return ret; } - //original file: RectangleBinPack.cpp - //author: Jukka Jylänki - class RectangleBinPack + // original file: RectangleBinPack.cpp + // author: Jukka Jylänki + private class RectangleBinPack { /** A node of a binary tree. Each node represents a rectangular area of the texture we surface. Internal nodes store rectangles of used data, whereas leaf nodes track @@ -315,8 +314,5 @@ namespace BizHawk.Bizware.BizwareGL return node; } } - } - - } \ No newline at end of file