Added readCompactLength and writeCompactLength
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@12 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rdr/OutStream.h b/rdr/OutStream.h
index a064bcc..aed2eea 100644
--- a/rdr/OutStream.h
+++ b/rdr/OutStream.h
@@ -65,6 +65,25 @@
inline void writeS16(S16 s) { writeU16((U16)s); }
inline void writeS32(S32 s) { writeU32((U32)s); }
+ // writeCompactLength() writes 1..3 bytes representing length of the data
+ // following. This method is used by the Tight encoder.
+
+ inline void writeCompactLength(unsigned int len) {
+ U8 b = len & 0x7F;
+ if (len <= 0x7F) {
+ writeU8(b);
+ } else {
+ writeU8(b | 0x80);
+ b = len >> 7 & 0x7F;
+ if (len <= 0x3FFF) {
+ writeU8(b);
+ } else {
+ writeU8(b | 0x80);
+ writeU8(len >> 14 & 0xFF);
+ }
+ }
+ }
+
// writeString() writes a string - a U32 length followed by the data. The
// given string should be null-terminated (but the terminating null is not
// written to the stream).