public UISize(UIEnums.Sizing Sizing, int Size, int Minimum = 0, int MarginStart = 0, int MarginEnd = 0, int PaddingStart = 0, int PaddingEnd = 0) { this.Sizing = Sizing; this.Size = Size; this.Minimum = Minimum; this.MarginStart = MarginStart; this.MarginEnd = MarginEnd; this.PaddingStart = PaddingStart; this.PaddingEnd = PaddingEnd; }
private UISize DecodeCodedSize(string CodedSize) { Queue <string> tokens = new Queue <string>(); StringBuilder currentToken = new StringBuilder(); foreach (char c in CodedSize) { if (char.IsNumber(c)) { if (currentToken.Length > 0 && !char.IsNumber(currentToken[currentToken.Length - 1])) { tokens.Enqueue(currentToken.ToString()); currentToken.Clear(); } } else if (char.IsLetter(c)) { if (currentToken.Length > 0 && !char.IsLetter(currentToken[currentToken.Length - 1])) { tokens.Enqueue(currentToken.ToString()); currentToken.Clear(); } } else if (c == '<' || c == '>' || c == '%' || c == '[' || c == ']') { tokens.Enqueue(currentToken.ToString()); currentToken.Clear(); } else if (char.IsWhiteSpace(c)) { if (currentToken.Length > 0) { tokens.Enqueue(currentToken.ToString()); currentToken.Clear(); } continue; } currentToken.Append(c); } if (currentToken.Length > 0) { tokens.Enqueue(currentToken.ToString()); } int size = 0; UIEnums.Sizing sizing = UIEnums.Sizing.Fixed; int marginStart = 0; int marginEnd = 0; int paddingStart = 0; int paddingEnd = 0; while (tokens.Count > 0) { string token = tokens.Dequeue(); if (int.TryParse(token, out int possibleInt)) { size = possibleInt; string unit = tokens.Dequeue(); switch (unit) { case "px": sizing = UIEnums.Sizing.Fixed; break; case "%": sizing = UIEnums.Sizing.Relative; break; case "r": sizing = UIEnums.Sizing.Rest; break; } } else if (token == "[") { paddingStart = int.Parse(tokens.Dequeue()); } else if (token == "]") { paddingEnd = int.Parse(tokens.Dequeue()); } else if (token == "<") { marginStart = int.Parse(tokens.Dequeue()); } else if (token == ">") { marginEnd = int.Parse(tokens.Dequeue()); } } return(new UISize( sizing, size, MarginStart: marginStart, MarginEnd: marginEnd, PaddingStart: paddingStart, PaddingEnd: paddingEnd )); }