private byte[] EncodePalette(TS_UPDATE_PALETTE paletteData)
{
List<byte> totalBuffer = new List<byte>();
RdpbcgrEncoder.EncodeStructure(totalBuffer, paletteData.shareDataHeader);
List<byte> buffer = new List<byte>();
RdpbcgrEncoder.EncodeStructure(buffer, (ushort)paletteData.paletteData.updateType);
RdpbcgrEncoder.EncodeStructure(buffer, paletteData.paletteData.pad2Octets);
RdpbcgrEncoder.EncodeStructure(buffer, paletteData.paletteData.numberColors);
if (paletteData.paletteData.paletteEntries != null)
{
for (int i = 0; i < paletteData.paletteData.paletteEntries.Length; ++i)
{
RdpbcgrEncoder.EncodeStructure(buffer, paletteData.paletteData.paletteEntries[i].red);
RdpbcgrEncoder.EncodeStructure(buffer, paletteData.paletteData.paletteEntries[i].green);
RdpbcgrEncoder.EncodeStructure(buffer, paletteData.paletteData.paletteEntries[i].blue);
}
}
if (paletteData.shareDataHeader.compressedType != compressedType_Values.None)
{
RdpbcgrEncoder.EncodeBytes(
totalBuffer, serverSessionContext.Compress(paletteData.shareDataHeader.compressedType, buffer.ToArray()));
}
else
{
RdpbcgrEncoder.EncodeBytes(totalBuffer, buffer.ToArray());
}
return totalBuffer.ToArray();
}