public void Add(Icon icon) { bool canAdd = true; foreach (Icon i in this.Datas) { if (i.index == icon.index) { canAdd = false; break; } } if (canAdd) this.Datas.Add(icon); }
public void Remove(Icon icon) { this.Datas.Remove(icon); }
public static FontIcons Parse(string aJSON) { FontIcons icons = new FontIcons(); bool QuoteMode = false; bool isIndex = false; string token = string.Empty; string tokenName = string.Empty; Icon ctx = null; int i = 0; bool isBreak = false; while (i < aJSON.Length) { if (!isBreak || aJSON[i] == '{') { isBreak = false; switch (aJSON[i]) { case '.': if (QuoteMode) { token += aJSON[i]; break; } ctx = null; isIndex = true; token = string.Empty; break; case '"': QuoteMode ^= true; break; case ':': if (QuoteMode) { token += aJSON[i]; break; } if (!isIndex) { token = string.Empty; } else { isBreak = true; } break; case '{': if (QuoteMode) { token += aJSON[i]; break; } isIndex = false; tokenName = token; token = ""; if (!string.IsNullOrEmpty(tokenName)) ctx = new Icon(tokenName); break; case '\\': ++i; if (QuoteMode) { char C = aJSON[i]; switch (C) { case 't': token += '\t'; break; case 'r': token += '\r'; break; case 'n': token += '\n'; break; case 'b': token += '\b'; break; case 'f': break; case 'u': { string s = aJSON.Substring(i + 1, 4); token += (char)int.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier); i += 4; break; } default: token += C; break; } } break; case '}': if (QuoteMode) { token += aJSON[i]; break; } if (ctx != null) { ctx.setCode(token); token = string.Empty; icons.Add(ctx); } else { token = string.Empty; } break; case '\r': case '\n': break; case ' ': case '\t': if (QuoteMode) token += aJSON[i]; break; default: token += aJSON[i]; break; } ++i; } else { ++i; } } return icons; }