1 /**************************************************************************/ 2 /* */ 3 /* Copyright (c) 2001, 2010 NoMachine, http://www.nomachine.com/. */ 4 /* */ 5 /* NXCOMP, NX protocol compression and NX extensions to this software */ 6 /* are copyright of NoMachine. Redistribution and use of the present */ 7 /* software is allowed according to terms specified in the file LICENSE */ 8 /* which comes in the source distribution. */ 9 /* */ 10 /* Check http://www.nomachine.com/licensing.html for applicability. */ 11 /* */ 12 /* NX and NoMachine are trademarks of Medialogic S.p.A. */ 13 /* */ 14 /* All rights reserved. */ 15 /* */ 16 /**************************************************************************/ 17 18 #ifndef CreatePixmapCompat_H 19 #define CreatePixmapCompat_H 20 21 #include "Message.h" 22 23 // 24 // Set the verbosity level. 25 // 26 27 #define PANIC 28 #define WARNING 29 #undef TEST 30 #undef DEBUG 31 #undef DUMP 32 33 // 34 // Set default values. 35 // 36 37 #define CREATEPIXMAP_ENABLE_CACHE 1 38 #define CREATEPIXMAP_ENABLE_DATA 0 39 #define CREATEPIXMAP_ENABLE_SPLIT 0 40 #define CREATEPIXMAP_ENABLE_COMPRESS 0 41 42 #define CREATEPIXMAP_DATA_LIMIT 16 43 #define CREATEPIXMAP_DATA_OFFSET 16 44 45 #define CREATEPIXMAP_CACHE_SLOTS 1000 46 #define CREATEPIXMAP_CACHE_THRESHOLD 2 47 #define CREATEPIXMAP_CACHE_LOWER_THRESHOLD 1 48 49 // 50 // The message class. 51 // 52 53 class CreatePixmapCompatMessage : public Message 54 { 55 friend class CreatePixmapCompatStore; 56 57 public: 58 CreatePixmapCompatMessage()59 CreatePixmapCompatMessage() 60 { 61 } 62 ~CreatePixmapCompatMessage()63 ~CreatePixmapCompatMessage() 64 { 65 } 66 67 // 68 // Put here the fields which constitute 69 // the 'identity' part of the message. 70 // 71 72 private: 73 74 unsigned char depth; 75 76 unsigned int id; 77 unsigned int drawable; 78 79 unsigned short width; 80 unsigned short height; 81 }; 82 83 class CreatePixmapCompatStore : public MessageStore 84 { 85 public: 86 87 CreatePixmapCompatStore(); 88 89 virtual ~CreatePixmapCompatStore(); 90 name()91 virtual const char *name() const 92 { 93 return "CreatePixmapCompat"; 94 } 95 opcode()96 virtual unsigned char opcode() const 97 { 98 return X_CreatePixmap; 99 } 100 storage()101 virtual unsigned int storage() const 102 { 103 return sizeof(CreatePixmapCompatMessage); 104 } 105 106 // 107 // Message handling methods. 108 // 109 110 protected: 111 create()112 virtual Message *create() const 113 { 114 return new CreatePixmapCompatMessage(); 115 } 116 create(const Message & message)117 virtual Message *create(const Message &message) const 118 { 119 return new CreatePixmapCompatMessage((const CreatePixmapCompatMessage &) message); 120 } 121 destroy(Message * message)122 virtual void destroy(Message *message) const 123 { 124 delete (CreatePixmapCompatMessage *) message; 125 } 126 127 virtual int encodeIdentity(EncodeBuffer &encodeBuffer, const unsigned char *buffer, 128 const unsigned int size, int bigEndian, 129 ChannelCache *channelCache) const; 130 131 virtual int decodeIdentity(DecodeBuffer &decodeBuffer, unsigned char *&buffer, 132 unsigned int &size, int bigEndian, WriteBuffer *writeBuffer, 133 ChannelCache *channelCache) const; 134 135 virtual int parseIdentity(Message *message, const unsigned char *buffer, 136 unsigned int size, int bigEndian) const; 137 138 virtual int unparseIdentity(const Message *message, unsigned char *buffer, 139 unsigned int size, int bigEndian) const; 140 141 virtual void updateIdentity(EncodeBuffer &encodeBuffer, const Message *message, 142 const Message *cachedMessage, 143 ChannelCache *channelCache) const; 144 145 virtual void updateIdentity(DecodeBuffer &decodeBuffer, const Message *message, 146 ChannelCache *channelCache) const; 147 148 virtual void identityChecksum(const Message *message, const unsigned char *buffer, 149 unsigned int size, int bigEndian) const; 150 151 virtual void dumpIdentity(const Message *message) const; 152 }; 153 154 #endif /* CreatePixmapCompat_H */ 155