using System; namespace Hjg.Pngcs.Chunks { // Token: 0x0200002E RID: 46 public class PngChunkPLTE : PngChunkSingle { // Token: 0x0600019B RID: 411 RVA: 0x00006D4C File Offset: 0x00004F4C public PngChunkPLTE(ImageInfo info) : base("PLTE", info) { this.nentries = 0; } // Token: 0x0600019C RID: 412 RVA: 0x00006D61 File Offset: 0x00004F61 public override PngChunk.ChunkOrderingConstraint GetOrderingConstraint() { return PngChunk.ChunkOrderingConstraint.NA; } // Token: 0x0600019D RID: 413 RVA: 0x00006D64 File Offset: 0x00004F64 public override ChunkRaw CreateRawChunk() { int num = 3 * this.nentries; int[] array = new int[3]; ChunkRaw chunkRaw = base.createEmptyChunk(num, true); int i = 0; int num2 = 0; while (i < this.nentries) { this.GetEntryRgb(i, array); chunkRaw.Data[num2++] = (byte)array[0]; chunkRaw.Data[num2++] = (byte)array[1]; chunkRaw.Data[num2++] = (byte)array[2]; i++; } return chunkRaw; } // Token: 0x0600019E RID: 414 RVA: 0x00006DE0 File Offset: 0x00004FE0 public override void ParseFromRaw(ChunkRaw chunk) { this.SetNentries(chunk.Length / 3); int i = 0; int num = 0; while (i < this.nentries) { this.SetEntry(i, (int)(chunk.Data[num++] & byte.MaxValue), (int)(chunk.Data[num++] & byte.MaxValue), (int)(chunk.Data[num++] & byte.MaxValue)); i++; } } // Token: 0x0600019F RID: 415 RVA: 0x00006E4C File Offset: 0x0000504C public override void CloneDataFromRead(PngChunk other) { PngChunkPLTE pngChunkPLTE = (PngChunkPLTE)other; this.SetNentries(pngChunkPLTE.GetNentries()); Array.Copy(pngChunkPLTE.entries, 0, this.entries, 0, this.nentries); } // Token: 0x060001A0 RID: 416 RVA: 0x00006E88 File Offset: 0x00005088 public void SetNentries(int nentries) { this.nentries = nentries; if (nentries < 1 || nentries > 256) { throw new PngjException("invalid pallette - nentries=" + nentries); } if (this.entries == null || this.entries.Length != nentries) { this.entries = new int[nentries]; } } // Token: 0x060001A1 RID: 417 RVA: 0x00006EDD File Offset: 0x000050DD public int GetNentries() { return this.nentries; } // Token: 0x060001A2 RID: 418 RVA: 0x00006EE5 File Offset: 0x000050E5 public void SetEntry(int n, int r, int g, int b) { this.entries[n] = (r << 16) | (g << 8) | b; } // Token: 0x060001A3 RID: 419 RVA: 0x00006EFA File Offset: 0x000050FA public int GetEntry(int n) { return this.entries[n]; } // Token: 0x060001A4 RID: 420 RVA: 0x00006F04 File Offset: 0x00005104 public void GetEntryRgb(int index, int[] rgb, int offset) { int num = this.entries[index]; rgb[offset] = (num & 16711680) >> 16; rgb[offset + 1] = (num & 65280) >> 8; rgb[offset + 2] = num & 255; } // Token: 0x060001A5 RID: 421 RVA: 0x00006F41 File Offset: 0x00005141 public void GetEntryRgb(int n, int[] rgb) { this.GetEntryRgb(n, rgb, 0); } // Token: 0x060001A6 RID: 422 RVA: 0x00006F4C File Offset: 0x0000514C public int MinBitDepth() { if (this.nentries <= 2) { return 1; } if (this.nentries <= 4) { return 2; } if (this.nentries <= 16) { return 4; } return 8; } // Token: 0x040000E1 RID: 225 public const string ID = "PLTE"; // Token: 0x040000E2 RID: 226 private int nentries; // Token: 0x040000E3 RID: 227 private int[] entries; } }