66 lines
2.0 KiB
C#
66 lines
2.0 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
namespace System.Resources
|
|
{
|
|
// Token: 0x0200028C RID: 652
|
|
internal class Win32IconFileReader
|
|
{
|
|
// Token: 0x060020D9 RID: 8409 RVA: 0x00078984 File Offset: 0x00076B84
|
|
public Win32IconFileReader(Stream s)
|
|
{
|
|
this.iconFile = s;
|
|
}
|
|
|
|
// Token: 0x060020DA RID: 8410 RVA: 0x00078994 File Offset: 0x00076B94
|
|
public ICONDIRENTRY[] ReadIcons()
|
|
{
|
|
ICONDIRENTRY[] array2;
|
|
using (BinaryReader binaryReader = new BinaryReader(this.iconFile))
|
|
{
|
|
int num = (int)binaryReader.ReadInt16();
|
|
int num2 = (int)binaryReader.ReadInt16();
|
|
if (num != 0 || num2 != 1)
|
|
{
|
|
throw new Exception("Invalid .ico file format");
|
|
}
|
|
long num3 = (long)binaryReader.ReadInt16();
|
|
ICONDIRENTRY[] array = new ICONDIRENTRY[num3];
|
|
int num4 = 0;
|
|
while ((long)num4 < num3)
|
|
{
|
|
ICONDIRENTRY icondirentry = new ICONDIRENTRY();
|
|
icondirentry.bWidth = binaryReader.ReadByte();
|
|
icondirentry.bHeight = binaryReader.ReadByte();
|
|
icondirentry.bColorCount = binaryReader.ReadByte();
|
|
icondirentry.bReserved = binaryReader.ReadByte();
|
|
icondirentry.wPlanes = binaryReader.ReadInt16();
|
|
icondirentry.wBitCount = binaryReader.ReadInt16();
|
|
int num5 = binaryReader.ReadInt32();
|
|
int num6 = binaryReader.ReadInt32();
|
|
icondirentry.image = new byte[num5];
|
|
long position = this.iconFile.Position;
|
|
this.iconFile.Position = (long)num6;
|
|
this.iconFile.Read(icondirentry.image, 0, num5);
|
|
this.iconFile.Position = position;
|
|
if (icondirentry.wPlanes == 0)
|
|
{
|
|
icondirentry.wPlanes = (short)((int)icondirentry.image[12] | ((int)icondirentry.image[13] << 8));
|
|
}
|
|
if (icondirentry.wBitCount == 0)
|
|
{
|
|
icondirentry.wBitCount = (short)((int)icondirentry.image[14] | ((int)icondirentry.image[15] << 8));
|
|
}
|
|
array[num4] = icondirentry;
|
|
num4++;
|
|
}
|
|
array2 = array;
|
|
}
|
|
return array2;
|
|
}
|
|
|
|
// Token: 0x04000BC0 RID: 3008
|
|
private Stream iconFile;
|
|
}
|
|
}
|