private void sendOrderCaps(RdpPacket_Localised data) {

		byte[] order_caps = new byte[32];
		order_caps[0] = 1; /* dest blt */
		order_caps[1] = 1; /* pat blt */// nb no rectangle orders if this is 0
		order_caps[2] = 1; /* screen blt */
		order_caps[3] = (byte) (Options.bitmap_caching ? 1 : 0); /* memblt */
		order_caps[4] = 0; /* triblt */
		order_caps[8] = 1; /* line */
		order_caps[9] = 1; /* line */
		order_caps[10] = 1; /* rect */
		order_caps[11] = (Constants.desktop_save ? 1 : 0); /* desksave */
		order_caps[13] = 1; /* memblt */
		order_caps[14] = 1; /* triblt */
		order_caps[20] = (byte) (Options.polygon_ellipse_orders ? 1 : 0); /* polygon */
		order_caps[21] = (byte) (Options.polygon_ellipse_orders ? 1 : 0); /* polygon2 */
		order_caps[22] = 1; /* polyline */
		order_caps[25] = (byte) (Options.polygon_ellipse_orders ? 1 : 0); /* ellipse */
		order_caps[26] = (byte) (Options.polygon_ellipse_orders ? 1 : 0); /* ellipse2 */
		order_caps[27] = 1; /* text2 */
		
		data.setLittleEndian16(RDP_CAPSET_ORDER);
		data.setLittleEndian16(RDP_CAPLEN_ORDER);

		data.incrementPosition(20); /* Terminal desc, pad */
		data.setLittleEndian16(1); /* Cache X granularity */
		data.setLittleEndian16(20); /* Cache Y granularity */
		data.setLittleEndian16(0); /* Pad */
		data.setLittleEndian16(1); /* Max order level */
		data.setLittleEndian16(0x147); /* Number of fonts */
		data.setLittleEndian16(0x2a); /* Capability flags */
		data.copyFromByteArray(order_caps, 0, data.getPosition(), 32); /*
																		 * Orders
																		 * supported
																		 */
		data.incrementPosition(32);
		data.setLittleEndian16(0x6a1); /* Text capability flags */
		data.incrementPosition(6); /* Pad */
		data.setLittleEndian32(Constants.desktop_save ? 0x38400 : 0); /*
																	 * Desktop
																	 * cache
																	 * size
																	 */
		data.setLittleEndian32(0); /* Unknown */
		data.setLittleEndian32(0x4e4); /* Unknown */
	}