Exemple #1
0
        public IEnumerator <Chunk> GetEnumerator()
        {
            List <Chunk> chunksPorOrden = new List <Chunk>();

            chunksPorOrden.Add(IHDR);
            //pongo los que van antes que PLTE
            chunksPorOrden.AddRange(extras.Filtra(chunk => {
                return(chunksAfterPLTE.Existe(chunk.ChunkType));
            }));
            if (iCCP != null)
            {
                chunksPorOrden.Add(iCCP);
            }
            else if (sRGB != null)
            {
                chunksPorOrden.Add(sRGB);
            }
            //pongo si esta PLTE
            if (PLTE != null)
            {
                chunksPorOrden.Add(PLTE);
            }
            //pongo los que van despues de PLTE
            chunksPorOrden.AddRange(extras.Filtra(chunk => {
                return(chunksBeforePLTE.Existe(chunk.ChunkType));
            }));
            chunksPorOrden.AddRange(idats);
            //pongo los que van despues de IDAT
            chunksPorOrden.AddRange(extras.Filtra(chunk => {
                return(chunksAfterIDAT.Existe(chunk.ChunkType));
            }));
            //pongo los que no tienen orden
            chunksPorOrden.AddRange(extras.Filtra(chunk => {
                return(chunksSinPosicion.Existe(chunk.ChunkType));
            }));
            if (tIME == null)
            {
                UpdateTIMELastModification();
            }
            if (SoftwareMetadata)
            {
                metadata.AddOrReplace(Metadata.Software.ToString(), new tEXtChunk(Metadata.Software.ToString(), "Gabriel.Cat.PNG"));
            }
            chunksPorOrden.Add(tIME);
            chunksPorOrden.AddRange(metadata.ValuesToArray());
            chunksPorOrden.Add(IEND);
            return(chunksPorOrden.GetEnumerator());
        }