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