private byte[] EncodeNewPtr(TS_FP_POINTERATTRIBUTE ptrData)
{
List<byte> totalBuffer = new List<byte>();
List<byte> buffer = new List<byte>();
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.xorBpp);
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.colorPtrAttr.cacheIndex);
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.colorPtrAttr.hotSpot.xPos);
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.colorPtrAttr.hotSpot.yPos);
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.colorPtrAttr.width);
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.colorPtrAttr.height);
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.colorPtrAttr.lengthAndMask);
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.colorPtrAttr.lengthXorMask);
if (ptrData.newPointerUpdateData.colorPtrAttr.xorMaskData != null)
{
RdpbcgrEncoder.EncodeBytes(buffer, ptrData.newPointerUpdateData.colorPtrAttr.xorMaskData);
}
if (ptrData.newPointerUpdateData.colorPtrAttr.andMaskData != null)
{
RdpbcgrEncoder.EncodeBytes(buffer, ptrData.newPointerUpdateData.colorPtrAttr.andMaskData);
}
RdpbcgrEncoder.EncodeStructure(buffer, ptrData.newPointerUpdateData.colorPtrAttr.pad);
if (ptrData.compressionFlags != compressedType_Values.None)
{
RdpbcgrEncoder.EncodeBytes(
totalBuffer, serverSessionContext.Compress(ptrData.compressionFlags, buffer.ToArray()));
}
else
{
RdpbcgrEncoder.EncodeBytes(totalBuffer, buffer.ToArray());
}
return totalBuffer.ToArray();
}