using System; using System.IO; namespace Hjg.Pngcs.Chunks { // Token: 0x0200002B RID: 43 public class PngChunkITXT : PngChunkTextVar { // Token: 0x0600017A RID: 378 RVA: 0x0000677D File Offset: 0x0000497D public PngChunkITXT(ImageInfo info) : base("iTXt", info) { } // Token: 0x0600017B RID: 379 RVA: 0x000067A4 File Offset: 0x000049A4 public override ChunkRaw CreateRawChunk() { if (this.key.Length == 0) { throw new PngjException("Text chunk key must be non empty"); } MemoryStream memoryStream = new MemoryStream(); ChunkHelper.WriteBytesToStream(memoryStream, ChunkHelper.ToBytes(this.key)); memoryStream.WriteByte(0); memoryStream.WriteByte(this.compressed ? 1 : 0); memoryStream.WriteByte(0); ChunkHelper.WriteBytesToStream(memoryStream, ChunkHelper.ToBytes(this.langTag)); memoryStream.WriteByte(0); ChunkHelper.WriteBytesToStream(memoryStream, ChunkHelper.ToBytesUTF8(this.translatedTag)); memoryStream.WriteByte(0); byte[] array = ChunkHelper.ToBytesUTF8(this.val); if (this.compressed) { array = ChunkHelper.compressBytes(array, true); } ChunkHelper.WriteBytesToStream(memoryStream, array); byte[] array2 = memoryStream.ToArray(); ChunkRaw chunkRaw = base.createEmptyChunk(array2.Length, false); chunkRaw.Data = array2; return chunkRaw; } // Token: 0x0600017C RID: 380 RVA: 0x00006870 File Offset: 0x00004A70 public override void ParseFromRaw(ChunkRaw c) { int num = 0; int[] array = new int[3]; for (int i = 0; i < c.Data.Length; i++) { if (c.Data[i] == 0) { array[num] = i; num++; if (num == 1) { i += 2; } if (num == 3) { break; } } } if (num != 3) { throw new PngjException("Bad formed PngChunkITXT chunk"); } this.key = ChunkHelper.ToString(c.Data, 0, array[0]); int num2 = array[0] + 1; this.compressed = c.Data[num2] != 0; num2++; if (this.compressed && c.Data[num2] != 0) { throw new PngjException("Bad formed PngChunkITXT chunk - bad compression method "); } this.langTag = ChunkHelper.ToString(c.Data, num2, array[1] - num2); this.translatedTag = ChunkHelper.ToStringUTF8(c.Data, array[1] + 1, array[2] - array[1] - 1); num2 = array[2] + 1; if (this.compressed) { byte[] array2 = ChunkHelper.compressBytes(c.Data, num2, c.Data.Length - num2, false); this.val = ChunkHelper.ToStringUTF8(array2); return; } this.val = ChunkHelper.ToStringUTF8(c.Data, num2, c.Data.Length - num2); } // Token: 0x0600017D RID: 381 RVA: 0x000069A0 File Offset: 0x00004BA0 public override void CloneDataFromRead(PngChunk other) { PngChunkITXT pngChunkITXT = (PngChunkITXT)other; this.key = pngChunkITXT.key; this.val = pngChunkITXT.val; this.compressed = pngChunkITXT.compressed; this.langTag = pngChunkITXT.langTag; this.translatedTag = pngChunkITXT.translatedTag; } // Token: 0x0600017E RID: 382 RVA: 0x000069F0 File Offset: 0x00004BF0 public bool IsCompressed() { return this.compressed; } // Token: 0x0600017F RID: 383 RVA: 0x000069F8 File Offset: 0x00004BF8 public void SetCompressed(bool compressed) { this.compressed = compressed; } // Token: 0x06000180 RID: 384 RVA: 0x00006A01 File Offset: 0x00004C01 public string GetLangtag() { return this.langTag; } // Token: 0x06000181 RID: 385 RVA: 0x00006A09 File Offset: 0x00004C09 public void SetLangtag(string langtag) { this.langTag = langtag; } // Token: 0x06000182 RID: 386 RVA: 0x00006A12 File Offset: 0x00004C12 public string GetTranslatedTag() { return this.translatedTag; } // Token: 0x06000183 RID: 387 RVA: 0x00006A1A File Offset: 0x00004C1A public void SetTranslatedTag(string translatedTag) { this.translatedTag = translatedTag; } // Token: 0x040000D8 RID: 216 public const string ID = "iTXt"; // Token: 0x040000D9 RID: 217 private bool compressed; // Token: 0x040000DA RID: 218 private string langTag = ""; // Token: 0x040000DB RID: 219 private string translatedTag = ""; } }