public override void CloneDataFromRead(PngChunk other) { // THIS SHOULD NOT BE CALLED IF ALREADY CLONED WITH COPY CONSTRUCTOR PngChunkUNKNOWN c = (PngChunkUNKNOWN)other; data = c.data; // not deep copy }
/// <summary> /// If <paramref name="outFilePath" /> is NULL then file is written in-place. /// <paramref name="chunkId" /> must follow the PNG conventions: four ascii letters, ID[0] : /// lowercase (ancillary) ID[1] : lowercase if private, upppecase if public ID[3] : uppercase if /// "safe to copy" /// </summary> public static void WriteCustomChunk(string inFilePath, string outFilePath, string chunkId, byte[] data) { PngChunk CreateChunk(ImageInfo imgInfo) { PngChunkUNKNOWN chunk = new PngChunkUNKNOWN(chunkId, imgInfo); chunk.SetData(data); chunk.Priority = true; return(chunk); } using (var inStream = OpenInputStream(inFilePath, outFilePath == null)) WriteChunk(inStream, outFilePath ?? inFilePath, CreateChunk); }
PngChunkUNKNOWN(PngChunkUNKNOWN c, ImageInfo info) : base(c.Id, info) { System.Array.Copy(c.data, 0, data, 0, c.data.Length); }