/// <summary> /// Initialize TIM class /// </summary> /// <param name="buffer">Raw Data buffer</param> /// <param name="offset">Start of Tim Data</param> public TIM2(byte[] buffer, uint offset = 0) { using (BinaryReader br = new BinaryReader(new MemoryStream(buffer))) { this.buffer = buffer; br.BaseStream.Seek(offset, SeekOrigin.Begin); Debug.Assert(br.ReadByte() == 0x10); //tag Debug.Assert(br.ReadByte() == 0); // version br.BaseStream.Seek(2, SeekOrigin.Current); Bppflag b = (Bppflag)br.ReadByte(); timOffset = offset; if ((b & (Bppflag._24bpp)) >= (Bppflag._24bpp)) { bpp = 24; } else if ((b & Bppflag._16bpp) != 0) { bpp = 16; } else if ((b & Bppflag._8bpp) != 0) { bpp = 8; } else { bpp = 4; } CLP = (b & Bppflag.CLP) != 0; Debug.Assert(((bpp == 4 || bpp == 8) && CLP) || ((bpp == 16 || bpp == 24) && !CLP)); ReadParameters(br); } }
public static bool Test4Bit(Bppflag depth) => depth == 0;
public static bool Test8Bit(Bppflag depth) => !depth.HasFlag(Bppflag._16bpp) && depth.HasFlag(Bppflag._8bpp);
public static bool Test16Bit(Bppflag depth) => depth.HasFlag(Bppflag._16bpp) && !depth.HasFlag(Bppflag._8bpp);