Beispiel #1
0
 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;
 }
Beispiel #2
0
        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
                       ));
        }