public VideoFrame(Reader reader, ushort width, ushort height) { Width = width; Height = height; startOffset = (int)reader.Pos; ImageData = new byte[Width * Height]; FilePos = (uint)(reader.ReadByte() + (reader.ReadByte() << 8) + (reader.ReadByte() << 16) + (reader.ReadByte() << 24));//reader.ReadUInt32(); for (int i = 0; i < 128; i++) { Color c; byte r = reader.ReadByte(); //r byte g = reader.ReadByte(); //g byte b = reader.ReadByte(); //b c = Color.FromArgb(255, r, g, b); //Console.WriteLine("Colour " + i + " = " + c.R + " " + c.G + " " + c.B); FramePalette.Add(c); } bool Next = false; while (!Next) { byte tmp = reader.ReadByte(); idkMan.Add(tmp); //Console.WriteLine("idk lol = " + tmp); if (tmp == 44) { Next = true; } // AKA ',' } ImageLeft = reader.ReadUInt16(); ImageTop = reader.ReadUInt16(); ImageWidth = reader.ReadUInt16(); ImageHeight = reader.ReadUInt16(); PaletteType = reader.ReadByte(); //Console.WriteLine("Palette Type = " + PaletteType); isInterlaced = (uint)PaletteType << 25 >> 31; //Console.WriteLine("Interlaced? = " + isInterlaced); //Console.WriteLine("Use full Palette = " + (PaletteType >> 7)); FullPallete = PaletteType >> 7 == 1; if (FullPallete) // Use extra colours? { for (int i = 128; i < 256; i++) { Color c; byte r = reader.ReadByte(); //r byte g = reader.ReadByte(); //g byte b = reader.ReadByte(); //b c = Color.FromArgb(255, r, g, b); //Console.WriteLine("(Extra) Colour " + i + " = " + c.R + "," + c.G + "," + c.B); FramePalette.Add(c); } } ReadGIFData(reader); Console.WriteLine("Loaded Video Frame!"); //reader.BaseStream.Position = FilePos + 6; endOffset = (int)reader.Pos; }