private byte[] EncodeSurfCmds(TS_FP_SURFCMDS surfCmdsData)
{
List<byte> totalBuffer = new List<byte>();
List<byte> buffer = new List<byte>();
if (surfCmdsData.surfaceCommands != null)
{
for (int i = 0; i < surfCmdsData.surfaceCommands.Length; ++i)
{
if (surfCmdsData.surfaceCommands[i].GetType() == typeof(TS_SURFCMD_SET_SURF_BITS))
{
RdpbcgrEncoder.EncodeBytes(
buffer, EncodeSurfBits((TS_SURFCMD_SET_SURF_BITS)surfCmdsData.surfaceCommands[i]));
}
else if (surfCmdsData.surfaceCommands[i].GetType() == typeof(TS_SURFCMD_STREAM_SURF_BITS))
{
RdpbcgrEncoder.EncodeBytes(
buffer, EncodeSurfStream((TS_SURFCMD_STREAM_SURF_BITS)surfCmdsData.surfaceCommands[i]));
}
else
{
RdpbcgrEncoder.EncodeBytes(
buffer, EncodeSurfFrameMaker((TS_FRAME_MARKER)surfCmdsData.surfaceCommands[i]));
}
}
}
if (surfCmdsData.compressionFlags != compressedType_Values.None)
{
RdpbcgrEncoder.EncodeBytes(
totalBuffer, serverSessionContext.Compress(surfCmdsData.compressionFlags, buffer.ToArray()));
}
else
{
RdpbcgrEncoder.EncodeBytes(totalBuffer, buffer.ToArray());
}
return totalBuffer.ToArray();
}