コード例 #1
0
            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;
            }