private void Deserialize(byte[] data, bool ignoreErrors) { // Deserialize headers ByteStream stream = new ByteStream(data); ICONDIR icondir = new ICONDIR(stream); ICONDIRENTRY[] icondirentries = new ICONDIRENTRY[icondir.ImageCount]; for (int i = 0; i < icondirentries.Length; i++) { icondirentries[i] = new ICONDIRENTRY(icondir.Type, stream); } this.Type = icondir.Type; // Deserialize images foreach (ICONDIRENTRY icondirentry in icondirentries) { try { this.Images.Add(new ICOImage(this.Type, icondirentry, data)); } catch (Exception e) { if (!ignoreErrors) { throw e; } } } }
private byte[] SerializeHeaders() { ByteStream stream = new ByteStream(ICONDIR.SIZE + (ICONDIRENTRY.SIZE * Images.Count)); stream.Write(ICONDIR.Serialize(this.Type, this.Images.Count)); foreach (ICOImage image in Images) { stream.Write(ICONDIRENTRY.Serialize(this.Type, image, this.OffsetOfImage(image))); } return(stream.Buffer); }