136 lines
3.4 KiB
C#
136 lines
3.4 KiB
C#
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;
|
|
}
|
|
}
|