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(); } }
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(); } }
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(); }
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(); }
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()); }
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(); }