scripts
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace Hjg.Pngcs.Chunks
|
||||
{
|
||||
// Token: 0x02000014 RID: 20
|
||||
public class PngChunkSPLT : PngChunkMultiple
|
||||
{
|
||||
// Token: 0x17000006 RID: 6
|
||||
// (get) Token: 0x0600008D RID: 141 RVA: 0x00003757 File Offset: 0x00001957
|
||||
// (set) Token: 0x0600008E RID: 142 RVA: 0x0000375F File Offset: 0x0000195F
|
||||
public string PalName { get; set; }
|
||||
|
||||
// Token: 0x17000007 RID: 7
|
||||
// (get) Token: 0x0600008F RID: 143 RVA: 0x00003768 File Offset: 0x00001968
|
||||
// (set) Token: 0x06000090 RID: 144 RVA: 0x00003770 File Offset: 0x00001970
|
||||
public int SampleDepth { get; set; }
|
||||
|
||||
// Token: 0x17000008 RID: 8
|
||||
// (get) Token: 0x06000091 RID: 145 RVA: 0x00003779 File Offset: 0x00001979
|
||||
// (set) Token: 0x06000092 RID: 146 RVA: 0x00003781 File Offset: 0x00001981
|
||||
public int[] Palette { get; set; }
|
||||
|
||||
// Token: 0x06000093 RID: 147 RVA: 0x0000378A File Offset: 0x0000198A
|
||||
public PngChunkSPLT(ImageInfo info)
|
||||
: base("sPLT", info)
|
||||
{
|
||||
this.PalName = "";
|
||||
}
|
||||
|
||||
// Token: 0x06000094 RID: 148 RVA: 0x000037A3 File Offset: 0x000019A3
|
||||
public override PngChunk.ChunkOrderingConstraint GetOrderingConstraint()
|
||||
{
|
||||
return PngChunk.ChunkOrderingConstraint.BEFORE_IDAT;
|
||||
}
|
||||
|
||||
// Token: 0x06000095 RID: 149 RVA: 0x000037A8 File Offset: 0x000019A8
|
||||
public override ChunkRaw CreateRawChunk()
|
||||
{
|
||||
MemoryStream memoryStream = new MemoryStream();
|
||||
ChunkHelper.WriteBytesToStream(memoryStream, ChunkHelper.ToBytes(this.PalName));
|
||||
memoryStream.WriteByte(0);
|
||||
memoryStream.WriteByte((byte)this.SampleDepth);
|
||||
int nentries = this.GetNentries();
|
||||
for (int i = 0; i < nentries; i++)
|
||||
{
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
if (this.SampleDepth == 8)
|
||||
{
|
||||
PngHelperInternal.WriteByte(memoryStream, (byte)this.Palette[i * 5 + j]);
|
||||
}
|
||||
else
|
||||
{
|
||||
PngHelperInternal.WriteInt2(memoryStream, this.Palette[i * 5 + j]);
|
||||
}
|
||||
}
|
||||
PngHelperInternal.WriteInt2(memoryStream, this.Palette[i * 5 + 4]);
|
||||
}
|
||||
byte[] array = memoryStream.ToArray();
|
||||
ChunkRaw chunkRaw = base.createEmptyChunk(array.Length, false);
|
||||
chunkRaw.Data = array;
|
||||
return chunkRaw;
|
||||
}
|
||||
|
||||
// Token: 0x06000096 RID: 150 RVA: 0x00003864 File Offset: 0x00001A64
|
||||
public override void ParseFromRaw(ChunkRaw c)
|
||||
{
|
||||
int num = -1;
|
||||
for (int i = 0; i < c.Data.Length; i++)
|
||||
{
|
||||
if (c.Data[i] == 0)
|
||||
{
|
||||
num = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (num <= 0 || num > c.Data.Length - 2)
|
||||
{
|
||||
throw new PngjException("bad sPLT chunk: no separator found");
|
||||
}
|
||||
this.PalName = ChunkHelper.ToString(c.Data, 0, num);
|
||||
this.SampleDepth = PngHelperInternal.ReadInt1fromByte(c.Data, num + 1);
|
||||
num += 2;
|
||||
int num2 = (c.Data.Length - num) / ((this.SampleDepth == 8) ? 6 : 10);
|
||||
this.Palette = new int[num2 * 5];
|
||||
int num3 = 0;
|
||||
for (int j = 0; j < num2; j++)
|
||||
{
|
||||
int num4;
|
||||
int num5;
|
||||
int num6;
|
||||
int num7;
|
||||
if (this.SampleDepth == 8)
|
||||
{
|
||||
num4 = PngHelperInternal.ReadInt1fromByte(c.Data, num++);
|
||||
num5 = PngHelperInternal.ReadInt1fromByte(c.Data, num++);
|
||||
num6 = PngHelperInternal.ReadInt1fromByte(c.Data, num++);
|
||||
num7 = PngHelperInternal.ReadInt1fromByte(c.Data, num++);
|
||||
}
|
||||
else
|
||||
{
|
||||
num4 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
|
||||
num += 2;
|
||||
num5 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
|
||||
num += 2;
|
||||
num6 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
|
||||
num += 2;
|
||||
num7 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
|
||||
num += 2;
|
||||
}
|
||||
int num8 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
|
||||
num += 2;
|
||||
this.Palette[num3++] = num4;
|
||||
this.Palette[num3++] = num5;
|
||||
this.Palette[num3++] = num6;
|
||||
this.Palette[num3++] = num7;
|
||||
this.Palette[num3++] = num8;
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000097 RID: 151 RVA: 0x00003A18 File Offset: 0x00001C18
|
||||
public override void CloneDataFromRead(PngChunk other)
|
||||
{
|
||||
PngChunkSPLT pngChunkSPLT = (PngChunkSPLT)other;
|
||||
this.PalName = pngChunkSPLT.PalName;
|
||||
this.SampleDepth = pngChunkSPLT.SampleDepth;
|
||||
this.Palette = new int[pngChunkSPLT.Palette.Length];
|
||||
Array.Copy(pngChunkSPLT.Palette, 0, this.Palette, 0, this.Palette.Length);
|
||||
}
|
||||
|
||||
// Token: 0x06000098 RID: 152 RVA: 0x00003A72 File Offset: 0x00001C72
|
||||
public int GetNentries()
|
||||
{
|
||||
return this.Palette.Length / 5;
|
||||
}
|
||||
|
||||
// Token: 0x04000050 RID: 80
|
||||
public const string ID = "sPLT";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user