コード例 #1
0
        protected override void ParseData(byte[] chunkData)
        {
            Llista <byte> bytesAConvertir = new Llista <byte>();
            long          posicion        = 0;

            while (chunkData[posicion] != NULLBYTE && chunkData.LongLength > posicion)
            {
                bytesAConvertir.Add(chunkData[posicion++]);
            }
            if (chunkData[posicion] == NULLBYTE)
            {
                keyword = Serializar.ToString(bytesAConvertir.ToTaula());
                bytesAConvertir.Clear();
                posicion++;                //paso nullByte
                while (chunkData.LongLength > posicion)
                {
                    bytesAConvertir.Add(chunkData[posicion++]);
                }
                Information = Serializar.ToString(System.Text.ASCIIEncoding.Convert(System.Text.Encoding.GetEncoding(1252), Encoding.ASCII, bytesAConvertir.ToTaula()));
            }
            else
            {
                throw new ChunkFormatException();
            }
        }
コード例 #2
0
        protected override void ParseData(byte[] chunkData)
        {
            Llista <byte> bytesAConvertir = new Llista <byte>();
            Encoding      encodingSource  = null;
            long          posicion        = 0;

            while (chunkData[posicion] != NULLBYTE && chunkData.LongLength > posicion)
            {
                bytesAConvertir.Add(chunkData[posicion++]);
            }
            if (chunkData[posicion] == NULLBYTE)
            {
                keyword = Serializar.ToString(bytesAConvertir.ToTaula());
                bytesAConvertir.Clear();
                posicion++;                              //paso el Null byte
                if (COMPRESION != chunkData[posicion++]) //leo la compresion
                {
                    throw new ChunkFormatException();
                }
                while (chunkData.LongLength > posicion)
                {
                    bytesAConvertir.Add(chunkData[posicion++]);
                }
                encodingSource = System.Text.Encoding.GetEncoding(1252);                //es la unica usada...
                Information    = Serializar.ToString(System.Text.ASCIIEncoding.Convert(encodingSource, Encoding.ASCII, bytesAConvertir.ToTaula()));
            }
            else
            {
                throw new ChunkFormatException();
            }
        }
コード例 #3
0
        protected virtual void UpdateData()
        {
            Llista <Byte> data = new Llista <byte>();

            data.AddRange(Serializar.GetBytes(Keyword));                                                                                                //Keyword
            data.Add(NULLBYTE);                                                                                                                         //null separator
            data.AddRange(System.Text.ASCIIEncoding.Convert(Encoding.ASCII, System.Text.Encoding.GetEncoding(1252), Serializar.GetBytes(Information))); //text
            ChunkData = data.ToTaula();
        }
コード例 #4
0
        void Update()
        {
            Llista <byte> dataBytes = new Llista <byte>();

            dataBytes.AddRange(Serializar.GetBytes(SequenceNumber));
            dataBytes.AddRange(Serializar.GetBytes(Width));
            dataBytes.AddRange(Serializar.GetBytes(Height));
            dataBytes.AddRange(Serializar.GetBytes(OffsetX));
            dataBytes.AddRange(Serializar.GetBytes(OffsetY));
            dataBytes.AddRange(Serializar.GetBytes(DelayNum));
            dataBytes.AddRange(Serializar.GetBytes(DelayDen));
            dataBytes.Add((byte)DisposeOP);
            dataBytes.Add((byte)BlendOP);
            ChunkData = dataBytes.ToTaula();
        }
コード例 #5
0
ファイル: APNG.cs プロジェクト: OldNet/Gabriel.Cat.Utilitats
        public Chunk[] GetChunks()
        {
            Llista <Chunk> chunks    = new Llista <Chunk>();
            Chunk          chunkIDAT = null;
            uint           orden     = 3;//no se porque va de 3 en 3....

            if (pngs.Count > 0)
            {
                //	pngs.Ordena();
                chunks.Add(IhdrChunk);                                             //IHDR
                chunks.Add(new acTLChunk(NumeroDeRepeticiones, (uint)pngs.Count)); //acTL

                //pongo los pngs
                //fcTL
                if (!SaltarPrimerFotograma)
                {
                    pngs[0].FCTL.SequenceNumber = orden; orden += 3;
                    chunks.Add(pngs[0].FCTL);
                }
                //Idata
                for (int j = 0; j < pngs[0].IDATS.Count; j++)
                {
                    pngs[0].IDATS[j].ChunkType = IDATChunk.NAME;//el primero es IDAT
                    chunks.Add(pngs[0].IDATS[j]);
                }
                for (int i = 1; i < pngs.Count; i++)
                {
                    //fcTL

                    pngs[i].FCTL.SequenceNumber = orden; orden += 3;
                    chunks.Add(pngs[i].FCTL);
                    //Idata
                    for (int j = 0; j < pngs[i].IDATS.Count; j++)
                    {
                        chunkIDAT           = pngs[i].IDATS[j].Clon();
                        chunkIDAT.ChunkType = fdATChunk.NAME;// los demás fdAT
                        chunks.Add(chunkIDAT);
                    }
                }
                chunks.AddRange(metadata);
                chunks.Add(IendChunk);
            }
            return(chunks.ToTaula());
        }
コード例 #6
0
        void UpDate()
        {
            Llista <byte> dataBytes = new Llista <byte>();

            uint[] fields =
            {
                width,
                height,
                bitDepth,
                colorType,
                compressionMethod,
                filterMethod,
                interlaceMethod
            };
            for (int i = 0; i < fields.Length; i++)
            {
                dataBytes.AddRange(Serializar.GetBytes(fields[i]));
            }
            ChunkData = dataBytes.ToTaula();
        }