private ITsCapsSet ParseTsCapsSet(byte[] data, ref int currentIndex)
{
ITsCapsSet set = null;
int tempIndex = currentIndex;
// TS_CAPS_SET: capabilitySetType
capabilitySetType_Values capSetType = (capabilitySetType_Values)ParseUInt16(data, ref tempIndex, false);
// TS_CAPS_SET: lengthCapability
ushort length = ParseUInt16(data, ref tempIndex, false);
// TS_CAPS_SET: capabilityData
byte[] capabilityData = GetBytes(data, ref currentIndex, length);
switch (capSetType)
{
// General Capability Set
case capabilitySetType_Values.CAPSTYPE_GENERAL:
set = ParseCapsTypeGeneral(capabilityData);
break;
// Revision 1 Bitmap Cache Capability Set.
case capabilitySetType_Values.CAPSTYPE_BITMAPCACHE:
set = ParseCapsTypeBitmapCache(capabilityData);
break;
// Window Activation Capability Set
case capabilitySetType_Values.CAPSTYPE_ACTIVATION:
set = ParseCapsTypeActivation(capabilityData);
break;
// Bitmap Capability Set
case capabilitySetType_Values.CAPSTYPE_BITMAP:
set = ParseCapsTypeBitmap(capabilityData);
break;
// Order Capability Set
case capabilitySetType_Values.CAPSTYPE_ORDER:
set = ParseCapsTypeOrder(capabilityData);
break;
// Pointer Capability Set
case capabilitySetType_Values.CAPSTYPE_POINTER:
set = ParseCapsTypePointer(capabilityData);
break;
// Share Capability Set
case capabilitySetType_Values.CAPSTYPE_SHARE:
set = ParseCapsTypeShare(capabilityData);
break;
// Color Table Cache Capability Set
case capabilitySetType_Values.CAPSTYPE_COLORCACHE:
set = ParseCapsTypeColorCache(capabilityData);
break;
// Input Capability Set
case capabilitySetType_Values.CAPSTYPE_INPUT:
set = ParseCapsTypeInput(capabilityData);
break;
// Font Capability Set
case capabilitySetType_Values.CAPSTYPE_FONT:
set = ParseCapsTypeFont(capabilityData);
break;
// Bitmap Cache Host Support Capability Set
case capabilitySetType_Values.CAPSTYPE_BITMAPCACHE_HOSTSUPPORT:
set = ParseCapsTypeBitmapCacheHostSupport(capabilityData);
break;
// Virtual Channel Capability Set
case capabilitySetType_Values.CAPSTYPE_VIRTUALCHANNEL:
set = ParseCapsTypeVirtualChannel(capabilityData);
break;
// DrawNineGrid Cache Capability Set
case capabilitySetType_Values.CAPSTYPE_DRAWNINEGRIDCACHE:
set = ParseCapsTypeDrawNineGridCache(capabilityData);
break;
// Draw GDI+ Cache Capability Set
case capabilitySetType_Values.CAPSTYPE_DRAWGDIPLUS:
set = ParseCapsTypeDrawGdiPlus(capabilityData);
break;
// Remote Programs Capability Set
case capabilitySetType_Values.CAPSTYPE_RAIL:
set = ParseCapsTypeRail(capabilityData);
break;
// Window List Capability Set
case capabilitySetType_Values.CAPSTYPE_WINDOW:
set = ParseCapsTypeWindow(capabilityData);
break;
// Desktop Composition Extension Capability Set
case capabilitySetType_Values.CAPSETTYPE_COMPDESK:
set = ParseCapsTypeCompDesk(capabilityData);
break;
// Multifragment Update Capability Set
case capabilitySetType_Values.CAPSETTYPE_MULTIFRAGMENTUPDATE:
set = ParseCapsTypeMultiFragmentUpdate(capabilityData);
break;
// Large Pointer Capability Set
case capabilitySetType_Values.CAPSETTYPE_LARGE_POINTER:
set = ParseCapsTypeLargePointer(capabilityData);
break;
// Surface Commands Capability Set
case capabilitySetType_Values.CAPSETTYPE_SURFACE_COMMANDS:
set = ParseCapsTypeSurfaceCommands(capabilityData);
break;
// Bitmap Codecs Capability Set
case capabilitySetType_Values.CAPSETTYPE_BITMAP_CODECS:
set = ParseCapsTypeBitmapCodecs(capabilityData);
break;
// Revision 2 Bitmap Cache Capability Set.
case capabilitySetType_Values.CAPSTYPE_BITMAPCACHE_REV2:
set = ParseCapsTypeBitmapCacheRev2(capabilityData);
break;
// Brush Capability Set.
case capabilitySetType_Values.CAPSTYPE_BRUSH:
set = ParseCapsTypeBrush(capabilityData);
break;
// Glyph Cache Capability Set.
case capabilitySetType_Values.CAPSTYPE_GLYPHCACHE:
set = ParseCapsTypeGlyphCache(capabilityData);
break;
// Offscreen Bitmap Cache Capability Set.
case capabilitySetType_Values.CAPSTYPE_OFFSCREENCACHE:
set = ParseCapsTypeOffScreenCache(capabilityData);
break;
// Sound Capability Set.
case capabilitySetType_Values.CAPSTYPE_SOUND:
set = ParseCapsTypeSound(capabilityData);
break;
// Control Capability Set.
case capabilitySetType_Values.CAPSTYPE_CONTROL:
set = PaseCapsTypeControl(capabilityData);
break;
// TS_FRAME_ACKNOWLEDGE_CAPABILITYSET.
case capabilitySetType_Values.CAPSETTYPE_FRAME_ACKNOWLEDGE:
set = PaseCapsTypeFrameAcknowledge(capabilityData);
break;
default:
throw new FormatException(ConstValue.ERROR_MESSAGE_ENUM_UNRECOGNIZED);
}
return set;
}