Esempio n. 1
0
        public void Deserialize(byte[] buffer, ref int offset, ref Bitmap img)
        {
            // Read data size
            int size = (int)SerializerBinary.ReadUInt32Fixed(buffer, ref offset);

            // Copy data into stream
            if (_sharedMemoryStream == null)
            {
                _sharedMemoryStream = new MemoryStream(size);
            }
            else if (_sharedMemoryStream.Capacity < size)
            {
                _sharedMemoryStream.Capacity = size;
            }

            var ms = _sharedMemoryStream;

            ms.Position = 0;
            var memoryStreamBuffer = ms.GetBuffer();

            if (size > 0)
            {
                SerializerBinary.FastCopy(buffer, offset, memoryStreamBuffer, 0, size);
            }

            // Now we can load the image back from the stream
            ms.Position = 0;

            img = new Bitmap(ms);

            offset += size;
        }
Esempio n. 2
0
            public override void Execute(object target, byte[] buffer, ref int offset)
            {
                var size = SerializerBinary.ReadUInt32Fixed(buffer, ref offset);

                TMember value = default;

                _formatter.Deserialize(buffer, ref offset, ref value);
                _propSetter(target, value);
            }
Esempio n. 3
0
        public void Deserialize(byte[] buffer, ref int offset, ref Bitmap img)
        {
            // Read data size
            int size = (int)SerializerBinary.ReadUInt32Fixed(buffer, ref offset);

            // Prepare memory stream
            if (_sharedMemoryStream == null)
            {
                _sharedMemoryStream = new MemoryStream(size);
            }
            else if (_sharedMemoryStream.Capacity < size)
            {
                _sharedMemoryStream.Capacity = size;
            }

            var stream = _sharedMemoryStream;


            if (size < 0)
            {
                throw new InvalidOperationException($"Invalid bitmap size: {size} bytes");
            }
            else if (size == 0)
            {
                img = null;
                return;
            }

            // Copy bitmap data into the stream-buffer
            stream.SetLength(size);
            stream.Position = 0;
            var streamBuffer = stream.GetBuffer();

            SerializerBinary.FastCopy(buffer, (uint)offset, streamBuffer, 0, (uint)size);

            stream.Position = 0;
            img             = new Bitmap(stream);

            offset += size;
        }
Esempio n. 4
0
            public override void Execute(object target, byte[] buffer, ref int offset)
            {
                var size = SerializerBinary.ReadUInt32Fixed(buffer, ref offset);

                offset += (int)size;
            }