Exemplo n.º 1
0
        public FixBadPixelsList(FileReader aPefFile, uint aID, uint aVersion, uint aFlags, uint aSizeInBytes)
            : base(aID, aVersion, aFlags, aSizeInBytes)
        {
            _bayerPhase = aPefFile.ReadI4BE();
            int badPointCount = aPefFile.ReadI4BE();
            int badRectCount  = aPefFile.ReadI4BE();

            _badPoints = new List <BadPoint>();
            _badRects  = new List <BadRect>();

            for (int i = 0; i < badPointCount; i++)
            {
                BadPoint p = new BadPoint();
                p.Row    = aPefFile.ReadI4BE();
                p.Column = aPefFile.ReadI4BE();
                _badPoints.Add(p);
            }
            for (int i = 0; i < badRectCount; i++)
            {
                BadRect r = new BadRect();
                r.Top    = aPefFile.ReadI4BE();
                r.Left   = aPefFile.ReadI4BE();
                r.Bottom = aPefFile.ReadI4BE();
                r.Right  = aPefFile.ReadI4BE();
                _badRects.Add(r);
            }
        }
Exemplo n.º 2
0
        public override byte[] GetAsBytes()
        {
            MemoryStream ms = new MemoryStream();
            BinaryWriter bw = new BinaryWriter(ms);

            bw.Write(Endian_swap(_id));
            bw.Write(Endian_swap(_version));
            bw.Write(Endian_swap(_flags));
            bw.Write(Endian_swap(_sizeInBytes));

            bw.Write(Endian_swap(_bayerPhase));
            bw.Write(Endian_swap(_badPoints.Count));
            bw.Write(Endian_swap(_badRects.Count));

            for (int i = 0; i < _badPoints.Count; i++)
            {
                BadPoint p = _badPoints[i];
                bw.Write(Endian_swap(p.Row));
                bw.Write(Endian_swap(p.Column));
            }
            for (int i = 0; i < _badRects.Count; i++)
            {
                BadRect r = _badRects[i];
                bw.Write(Endian_swap(r.Top));
                bw.Write(Endian_swap(r.Left));
                bw.Write(Endian_swap(r.Bottom));
                bw.Write(Endian_swap(r.Right));
            }

            bw.Flush();
            ms.Flush();
            byte[] ret = ms.ToArray();
            bw.Close();
            bw.Dispose();
            return(ret);
        }