private byte[] EncodeSurfBits(TS_SURFCMD_SET_SURF_BITS surfBitsData)
{
List<byte> buffer = new List<byte>();
RdpbcgrEncoder.EncodeStructure(buffer, (ushort)surfBitsData.cmdType);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.destLeft);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.destTop);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.destRight);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.destBottom);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.bpp);
RdpbcgrEncoder.EncodeStructure(buffer, (byte)surfBitsData.bitmapData.flags);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.reserved);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.codecID);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.width);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.height);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.bitmapDataLength);
if (surfBitsData.bitmapData.exBitmapDataHeader != null)
{
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.exBitmapDataHeader.highUniqueId);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.exBitmapDataHeader.lowUniqueId);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.exBitmapDataHeader.tmMilliseconds);
RdpbcgrEncoder.EncodeStructure(buffer, surfBitsData.bitmapData.exBitmapDataHeader.tmSeconds);
}
if (surfBitsData.bitmapData.bitmapData != null)
{
RdpbcgrEncoder.EncodeBytes(buffer, surfBitsData.bitmapData.bitmapData);
}
return buffer.ToArray();
}