예제 #1
0
        protected virtual ZPlane ReadZPlane(BinaryReader b, int size, int numStrips)
        {
            var zPlaneData = b.ReadBytes(size);

            byte[] strips  = null;
            var    offsets = new List <int?>();

            using (var ms = new MemoryStream(zPlaneData))
            {
                var br        = new BinaryReader(ms);
                var tableSize = 4 + numStrips * 2;
                ms.Seek(2, SeekOrigin.Current);
                // read table offsets
                for (int i = 0; i < numStrips; i++)
                {
                    var offset = br.ReadUInt16();
                    if (offset != 0)
                    {
                        offsets.Add(offset - tableSize);
                    }
                    else
                    {
                        offsets.Add(null);
                    }
                }
                strips = br.ReadBytes(size - tableSize);
            }
            var zPlane = new ZPlane(strips, offsets);

            return(zPlane);
        }
예제 #2
0
        public Bitmap Decode(RoomBlock roomBlock, int zPlaneIndex)
        {
            var RMHD = roomBlock.GetRMHD();

            _width  = RMHD.Width;
            _height = RMHD.Height;
            _zPlane = roomBlock.GetRMIM().GetIM00().GetZPlanes()[zPlaneIndex];

            Decode();

            return(_resultBitmap);
        }
예제 #3
0
        public void Encode(RoomBlock blockToEncode, Bitmap imageToEncode, int zPlaneIndex)
        {
            _imageToEncode = imageToEncode;

            var RMHD = blockToEncode.GetRMHD();

            _width  = RMHD.Width;
            _height = RMHD.Height;
            _zPlane = blockToEncode.GetRMIM().GetIM00().GetZPlanes()[zPlaneIndex];

            Encode();
        }
예제 #4
0
        public Bitmap Decode(RoomBlock roomBlock, int objectIndex, int imageIndex, int zPlaneIndex)
        {
            var obj = roomBlock.GetOBIMs()[objectIndex];

            ObjectImageHeader IMHD = obj.GetIMHD();

            _width  = IMHD.Width;
            _height = IMHD.Height;
            _zPlane = obj.GetIMxx()[imageIndex].GetZPlanes()[zPlaneIndex];

            Decode();

            return(_resultBitmap);
        }
예제 #5
0
        public void Encode(RoomBlock blockToEncode, int objectIndex, int imageIndex, Bitmap imageToEncode, int zPlaneIndex)
        {
            var obj = blockToEncode.GetOBIMs()[objectIndex];

            _imageToEncode = imageToEncode;

            ObjectImageHeader IMHD = obj.GetIMHD();

            _width  = IMHD.Width;
            _height = IMHD.Height;
            _zPlane = obj.GetIMxx()[imageIndex].GetZPlanes()[zPlaneIndex];

            Encode();
        }
예제 #6
0
        public override void SetAndRefreshData(Structures.BlockBase blockBase)
        {
            base.SetAndRefreshData(blockBase);

            _zPlane = (ZPlane)blockBase;

            StripCount.Text = "Number of Strips: " + _zPlane.Strips.Count;

            Strips.Items.Clear();
            foreach (ZPlaneStripData zPlaneStripData in _zPlane.Strips)
            {
                ListViewItem item = Strips.Items.Add(zPlaneStripData.OffSet.ToString());
                item.SubItems.Add(zPlaneStripData.ImageData.Length.ToString());
            }

            Strips.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
        }