public List <DecodedFrame> GetDecodedFrameList()
        {
            var result = new List <DecodedFrame>();

            for (int i = 0; i < Frames.Length; i++)
            {
                var df = new DecodedFrame();
                for (int x = 0; x < 256; x++)
                {
                    for (int y = 0; y < 192; y++)
                    {
                        df.Layer1Data[x, y] = Frames[i].Layer1[y, x];
                        df.Layer2Data[x, y] = Frames[i].Layer2[y, x];
                    }
                }
                int f = (Frames[i].FirstByteHeader & 0b00000110) >> 1;
                if (f > 0)
                {
                    df.Layer1Color = (LayerColor)(f - 1);
                }
                f = (Frames[i].FirstByteHeader & 0b00011000) >> 3;
                if (f > 0)
                {
                    df.Layer2Color = (LayerColor)(f - 1);
                }
                df.IsPaperWhite = (Frames[i].FirstByteHeader & 1) == 1;
                df.SetImage(null, true);
                result.Add(df);
            }

            return(result);
        }
 public DecodedFrame(DecodedFrame src)
 {
     Array.Copy(src.Layer1Data, Layer1Data, 256 * 192);
     Array.Copy(src.Layer2Data, Layer2Data, 256 * 192);
     IsPaperWhite = src.IsPaperWhite;
     Layer1Color  = src.Layer1Color;
     Layer2Color  = src.Layer2Color;
     SetImage(null, true);
 }