| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704 |
- /*
- * Copyright (c) 2014-2015 Sylvain Peyrefitte
- *
- * This file is part of node-rdpjs.
- *
- * node-rdpjs is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- var type = require('../../core').type;
- var log = require('../../core').log;
- var error = require('../../core').error;
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240486.aspx
- */
- var CapsType = {
- CAPSTYPE_GENERAL : 0x0001,
- CAPSTYPE_BITMAP : 0x0002,
- CAPSTYPE_ORDER : 0x0003,
- CAPSTYPE_BITMAPCACHE : 0x0004,
- CAPSTYPE_CONTROL : 0x0005,
- CAPSTYPE_ACTIVATION : 0x0007,
- CAPSTYPE_POINTER : 0x0008,
- CAPSTYPE_SHARE : 0x0009,
- CAPSTYPE_COLORCACHE : 0x000A,
- CAPSTYPE_SOUND : 0x000C,
- CAPSTYPE_INPUT : 0x000D,
- CAPSTYPE_FONT : 0x000E,
- CAPSTYPE_BRUSH : 0x000F,
- CAPSTYPE_GLYPHCACHE : 0x0010,
- CAPSTYPE_OFFSCREENCACHE : 0x0011,
- CAPSTYPE_BITMAPCACHE_HOSTSUPPORT : 0x0012,
- CAPSTYPE_BITMAPCACHE_REV2 : 0x0013,
- CAPSTYPE_VIRTUALCHANNEL : 0x0014,
- CAPSTYPE_DRAWNINEGRIDCACHE : 0x0015,
- CAPSTYPE_DRAWGDIPLUS : 0x0016,
- CAPSTYPE_RAIL : 0x0017,
- CAPSTYPE_WINDOW : 0x0018,
- CAPSETTYPE_COMPDESK : 0x0019,
- CAPSETTYPE_MULTIFRAGMENTUPDATE : 0x001A,
- CAPSETTYPE_LARGE_POINTER : 0x001B,
- CAPSETTYPE_SURFACE_COMMANDS : 0x001C,
- CAPSETTYPE_BITMAP_CODECS : 0x001D,
- CAPSSETTYPE_FRAME_ACKNOWLEDGE : 0x001E
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240549.aspx
- */
- var MajorType = {
- OSMAJORTYPE_UNSPECIFIED : 0x0000,
- OSMAJORTYPE_WINDOWS : 0x0001,
- OSMAJORTYPE_OS2 : 0x0002,
- OSMAJORTYPE_MACINTOSH : 0x0003,
- OSMAJORTYPE_UNIX : 0x0004,
- OSMAJORTYPE_IOS : 0x0005,
- OSMAJORTYPE_OSX : 0x0006,
- OSMAJORTYPE_ANDROID : 0x0007
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240549.aspx
- */
- var MinorType = {
- OSMINORTYPE_UNSPECIFIED : 0x0000,
- OSMINORTYPE_WINDOWS_31X : 0x0001,
- OSMINORTYPE_WINDOWS_95 : 0x0002,
- OSMINORTYPE_WINDOWS_NT : 0x0003,
- OSMINORTYPE_OS2_V21 : 0x0004,
- OSMINORTYPE_POWER_PC : 0x0005,
- OSMINORTYPE_MACINTOSH : 0x0006,
- OSMINORTYPE_NATIVE_XSERVER : 0x0007,
- OSMINORTYPE_PSEUDO_XSERVER : 0x0008,
- OSMINORTYPE_WINDOWS_RT : 0x0009
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240549.aspx
- */
- var GeneralExtraFlag = {
- FASTPATH_OUTPUT_SUPPORTED : 0x0001,
- NO_BITMAP_COMPRESSION_HDR : 0x0400,
- LONG_CREDENTIALS_SUPPORTED : 0x0004,
- AUTORECONNECT_SUPPORTED : 0x0008,
- ENC_SALTED_CHECKSUM : 0x0010
- };
- var Boolean = {
- FALSE : 0x00,
- TRUE : 0x01
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240556.aspx
- */
- var OrderFlag = {
- NEGOTIATEORDERSUPPORT : 0x0002,
- ZEROBOUNDSDELTASSUPPORT : 0x0008,
- COLORINDEXSUPPORT : 0x0020,
- SOLIDPATTERNBRUSHONLY : 0x0040,
- ORDERFLAGS_EXTRA_FLAGS : 0x0080
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240556.aspx
- */
- var Order = {
- TS_NEG_DSTBLT_INDEX : 0x00,
- TS_NEG_PATBLT_INDEX : 0x01,
- TS_NEG_SCRBLT_INDEX : 0x02,
- TS_NEG_MEMBLT_INDEX : 0x03,
- TS_NEG_MEM3BLT_INDEX : 0x04,
- TS_NEG_DRAWNINEGRID_INDEX : 0x07,
- TS_NEG_LINETO_INDEX : 0x08,
- TS_NEG_MULTI_DRAWNINEGRID_INDEX : 0x09,
- TS_NEG_SAVEBITMAP_INDEX : 0x0B,
- TS_NEG_MULTIDSTBLT_INDEX : 0x0F,
- TS_NEG_MULTIPATBLT_INDEX : 0x10,
- TS_NEG_MULTISCRBLT_INDEX : 0x11,
- TS_NEG_MULTIOPAQUERECT_INDEX : 0x12,
- TS_NEG_FAST_INDEX_INDEX : 0x13,
- TS_NEG_POLYGON_SC_INDEX : 0x14,
- TS_NEG_POLYGON_CB_INDEX : 0x15,
- TS_NEG_POLYLINE_INDEX : 0x16,
- TS_NEG_FAST_GLYPH_INDEX : 0x18,
- TS_NEG_ELLIPSE_SC_INDEX : 0x19,
- TS_NEG_ELLIPSE_CB_INDEX : 0x1A,
- TS_NEG_INDEX_INDEX : 0x1B
- };
- var OrderEx = {
- ORDERFLAGS_EX_CACHE_BITMAP_REV3_SUPPORT : 0x0002,
- ORDERFLAGS_EX_ALTSEC_FRAME_MARKER_SUPPORT : 0x0004
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240563.aspx
- */
- var InputFlags = {
- INPUT_FLAG_SCANCODES : 0x0001,
- INPUT_FLAG_MOUSEX : 0x0004,
- INPUT_FLAG_FASTPATH_INPUT : 0x0008,
- INPUT_FLAG_UNICODE : 0x0010,
- INPUT_FLAG_FASTPATH_INPUT2 : 0x0020,
- INPUT_FLAG_UNUSED1 : 0x0040,
- INPUT_FLAG_UNUSED2 : 0x0080,
- TS_INPUT_FLAG_MOUSE_HWHEEL : 0x0100
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240564.aspx
- */
- var BrushSupport = {
- BRUSH_DEFAULT : 0x00000000,
- BRUSH_COLOR_8x8 : 0x00000001,
- BRUSH_COLOR_FULL : 0x00000002
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240565.aspx
- */
- var GlyphSupport = {
- GLYPH_SUPPORT_NONE : 0x0000,
- GLYPH_SUPPORT_PARTIAL : 0x0001,
- GLYPH_SUPPORT_FULL : 0x0002,
- GLYPH_SUPPORT_ENCODE : 0x0003
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240550.aspx
- */
- var OffscreenSupportLevel = {
- FALSE : 0x00000000,
- TRUE : 0x00000001
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240551.aspx
- */
- var VirtualChannelCompressionFlag = {
- VCCAPS_NO_COMPR : 0x00000000,
- VCCAPS_COMPR_SC : 0x00000001,
- VCCAPS_COMPR_CS_8K : 0x00000002
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240552.aspx
- */
- var SoundFlag = {
- NONE : 0x0000,
- SOUND_BEEPS_FLAG : 0x0001
- };
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240549.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function generalCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_GENERAL,
- osMajorType : new type.UInt16Le(),
- osMinorType : new type.UInt16Le(),
- protocolVersion : new type.UInt16Le(0x0200, {constant : true}),
- pad2octetsA : new type.UInt16Le(),
- generalCompressionTypes : new type.UInt16Le(0, {constant : true}),
- extraFlags : new type.UInt16Le(),
- updateCapabilityFlag : new type.UInt16Le(0, {constant : true}),
- remoteUnshareFlag : new type.UInt16Le(0, {constant : true}),
- generalCompressionLevel : new type.UInt16Le(0, {constant : true}),
- refreshRectSupport : new type.UInt8(),
- suppressOutputSupport : new type.UInt8()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240554.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function bitmapCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_BITMAP,
- preferredBitsPerPixel : new type.UInt16Le(),
- receive1BitPerPixel : new type.UInt16Le(0x0001),
- receive4BitsPerPixel : new type.UInt16Le(0x0001),
- receive8BitsPerPixel : new type.UInt16Le(0x0001),
- desktopWidth : new type.UInt16Le(),
- desktopHeight : new type.UInt16Le(),
- pad2octets : new type.UInt16Le(),
- desktopResizeFlag : new type.UInt16Le(),
- bitmapCompressionFlag : new type.UInt16Le(0x0001, {constant : true}),
- highColorFlags : new type.UInt8(0),
- drawingFlags : new type.UInt8(),
- multipleRectangleSupport : new type.UInt16Le(0x0001, {constant : true}),
- pad2octetsB : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240556.aspx
- * @param orders {type.BinaryString|null} list of available orders
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function orderCapability(orders, opt) {
- if(orders && orders.size() !== 32) {
- throw new error.FatalError('NODE_RDP_PROTOCOL_PDU_CAPS_BAD_ORDERS_SIZE');
- }
-
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_ORDER,
- terminalDescriptor : new type.BinaryString(Buffer.from(Array(16 + 1).join('\x00'), 'binary'), {readLength : new type.CallableValue(16)}),
- pad4octetsA : new type.UInt32Le(0),
- desktopSaveXGranularity : new type.UInt16Le(1),
- desktopSaveYGranularity : new type.UInt16Le(20),
- pad2octetsA : new type.UInt16Le(0),
- maximumOrderLevel : new type.UInt16Le(1),
- numberFonts : new type.UInt16Le(),
- orderFlags : new type.UInt16Le(OrderFlag.NEGOTIATEORDERSUPPORT),
- orderSupport : orders || new type.Factory(function(s) {
- self.orderSupport = new type.BinaryString(null, {readLength : new type.CallableValue(32)}).read(s);
- }),
- textFlags : new type.UInt16Le(),
- orderSupportExFlags : new type.UInt16Le(),
- pad4octetsB : new type.UInt32Le(),
- desktopSaveSize : new type.UInt32Le(480 * 480),
- pad2octetsC : new type.UInt16Le(),
- pad2octetsD : new type.UInt16Le(),
- textANSICodePage : new type.UInt16Le(0),
- pad2octetsE : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240559.aspx
- * @param opt type options
- * @returns {type.Component}
- */
- function bitmapCacheCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_BITMAPCACHE,
- pad1 : new type.UInt32Le(),
- pad2 : new type.UInt32Le(),
- pad3 : new type.UInt32Le(),
- pad4 : new type.UInt32Le(),
- pad5 : new type.UInt32Le(),
- pad6 : new type.UInt32Le(),
- cache0Entries : new type.UInt16Le(),
- cache0MaximumCellSize : new type.UInt16Le(),
- cache1Entries : new type.UInt16Le(),
- cache1MaximumCellSize : new type.UInt16Le(),
- cache2Entries : new type.UInt16Le(),
- cache2MaximumCellSize : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- *
- * @param isServer {boolean} true if in server mode
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function pointerCapability(isServer, opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_POINTER,
- colorPointerFlag : new type.UInt16Le(),
- colorPointerCacheSize : new type.UInt16Le(20),
- //old version of rdp doesn't support ...
- pointerCacheSize : new type.UInt16Le(null, {conditional : function() {
- return isServer || false;
- }})
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240563.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function inputCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_INPUT,
- inputFlags : new type.UInt16Le(),
- pad2octetsA : new type.UInt16Le(),
- // same value as gcc.ClientCoreSettings.kbdLayout
- keyboardLayout : new type.UInt32Le(),
- // same value as gcc.ClientCoreSettings.keyboardType
- keyboardType : new type.UInt32Le(),
- // same value as gcc.ClientCoreSettings.keyboardSubType
- keyboardSubType : new type.UInt32Le(),
- // same value as gcc.ClientCoreSettings.keyboardFnKeys
- keyboardFunctionKey : new type.UInt32Le(),
- // same value as gcc.ClientCoreSettingrrs.imeFileName
- imeFileName : new type.BinaryString(Buffer.from(Array(64 + 1).join('\x00'), 'binary'), {readLength : new type.CallableValue(64)})
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240564.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function brushCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_BRUSH,
- brushSupportLevel : new type.UInt32Le(BrushSupport.BRUSH_DEFAULT)
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240566.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function cacheEntry(opt) {
- var self = {
- cacheEntries : new type.UInt16Le(),
- cacheMaximumCellSize : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240565.aspx
- * @param entries {type.Component} cache entries
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function glyphCapability(entries, opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_GLYPHCACHE,
- glyphCache : entries || new type.Factory(function(s) {
- self.glyphCache = new type.Component([]);
- for(var i = 0; i < 10; i++) {
- self.glyphCache.obj.push(cacheEntry().read(s));
- }
- }),
- fragCache : new type.UInt32Le(),
- // all fonts are sent with bitmap format (very expensive)
- glyphSupportLevel : new type.UInt16Le(GlyphSupport.GLYPH_SUPPORT_NONE),
- pad2octets : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240550.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function offscreenBitmapCacheCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_OFFSCREENCACHE,
- offscreenSupportLevel : new type.UInt32Le(OffscreenSupportLevel.FALSE),
- offscreenCacheSize : new type.UInt16Le(),
- offscreenCacheEntries : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240551.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function virtualChannelCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_VIRTUALCHANNEL,
- flags : new type.UInt32Le(VirtualChannelCompressionFlag.VCCAPS_NO_COMPR),
- VCChunkSize : new type.UInt32Le(null, {optional : true})
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240552.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function soundCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_SOUND,
- soundFlags : new type.UInt16Le(SoundFlag.NONE),
- pad2octetsA : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240568.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function controlCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_CONTROL,
- controlFlags : new type.UInt16Le(),
- remoteDetachFlag : new type.UInt16Le(),
- controlInterest : new type.UInt16Le(0x0002),
- detachInterest : new type.UInt16Le(0x0002)
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240569.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function windowActivationCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_ACTIVATION,
- helpKeyFlag : new type.UInt16Le(),
- helpKeyIndexFlag : new type.UInt16Le(),
- helpExtendedKeyFlag : new type.UInt16Le(),
- windowManagerKeyFlag : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240571.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function fontCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_FONT,
- fontSupportFlags : new type.UInt16Le(0x0001),
- pad2octets : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc241564.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function colorCacheCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_COLORCACHE,
- colorTableCacheSize : new type.UInt16Le(0x0006),
- pad2octets : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240570.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function shareCapability(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSTYPE_SHARE,
- nodeId : new type.UInt16Le(),
- pad2octets : new type.UInt16Le()
- };
-
- return new type.Component(self, opt);
- }
- /**
- * @see http://msdn.microsoft.com/en-us/library/cc240649.aspx
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function multiFragmentUpdate(opt) {
- var self = {
- __TYPE__ : CapsType.CAPSETTYPE_MULTIFRAGMENTUPDATE,
- MaxRequestSize : new type.UInt32Le(0)
- };
-
- return new type.Component(self, opt);
- }
- /**
- * Capability wrapper packet
- * @see http://msdn.microsoft.com/en-us/library/cc240486.aspx
- * @param cap {type.Component}
- * @param opt {object} type options
- * @returns {type.Component}
- */
- function capability(cap, opt) {
- var self = {
- capabilitySetType : new type.UInt16Le(function() {
- return self.capability.obj.__TYPE__;
- }),
- lengthCapability : new type.UInt16Le(function() {
- return new type.Component(self).size();
- }),
- capability : cap || new type.Factory(function(s) {
- switch(self.capabilitySetType.value) {
- case CapsType.CAPSTYPE_GENERAL:
- self.capability = generalCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_BITMAP:
- self.capability = bitmapCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_ORDER:
- self.capability = orderCapability(null, {readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_BITMAPCACHE:
- self.capability = bitmapCacheCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_POINTER:
- self.capability = pointerCapability(false, {readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_INPUT:
- self.capability = inputCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_BRUSH:
- self.capability = brushCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_GLYPHCACHE:
- self.capability = glyphCapability(null, {readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_OFFSCREENCACHE:
- self.capability = offscreenBitmapCacheCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_VIRTUALCHANNEL:
- self.capability = virtualChannelCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_SOUND:
- self.capability = soundCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_CONTROL:
- self.capability = controlCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_ACTIVATION:
- self.capability = windowActivationCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_FONT:
- self.capability = fontCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_COLORCACHE:
- self.capability = colorCacheCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSTYPE_SHARE:
- self.capability = shareCapability({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- case CapsType.CAPSETTYPE_MULTIFRAGMENTUPDATE:
- self.capability = multiFragmentUpdate({readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- break;
- default:
- log.debug('unknown capability ' + self.capabilitySetType.value);
- self.capability = new type.BinaryString(null, {readLength : new type.CallableValue(function() {
- return self.lengthCapability.value - 4;
- })}).read(s);
- }
- })
- };
-
- return new type.Component(self, opt);
- }
- /**
- * Module exports
- */
- module.exports = {
- CapsType : CapsType,
- MajorType : MajorType,
- MinorType : MinorType,
- GeneralExtraFlag : GeneralExtraFlag,
- Boolean : Boolean,
- OrderFlag : OrderFlag,
- Order : Order,
- OrderEx : OrderEx,
- InputFlags : InputFlags,
- BrushSupport : BrushSupport,
- GlyphSupport : GlyphSupport,
- OffscreenSupportLevel : OffscreenSupportLevel,
- VirtualChannelCompressionFlag : VirtualChannelCompressionFlag,
- SoundFlag : SoundFlag,
- generalCapability : generalCapability,
- bitmapCapability : bitmapCapability,
- orderCapability : orderCapability,
- bitmapCacheCapability : bitmapCacheCapability,
- pointerCapability : pointerCapability,
- inputCapability : inputCapability,
- brushCapability : brushCapability,
- cacheEntry : cacheEntry,
- glyphCapability : glyphCapability,
- offscreenBitmapCacheCapability : offscreenBitmapCacheCapability,
- virtualChannelCapability : virtualChannelCapability,
- soundCapability : soundCapability,
- controlCapability : controlCapability,
- windowActivationCapability : windowActivationCapability,
- fontCapability : fontCapability,
- colorCacheCapability : colorCacheCapability,
- shareCapability : shareCapability,
- multiFragmentUpdate : multiFragmentUpdate,
- capability : capability
- };
|