diff options
author | Peter Åstrand <astrand@cendio.se> | 2004-11-16 15:23:25 +0000 |
---|---|---|
committer | Peter Åstrand <astrand@cendio.se> | 2004-11-16 15:23:25 +0000 |
commit | 462753d02c3e97543221bbafa759f45dcd1643a0 (patch) | |
tree | 4572b0b332c14e49d74a8aa8070e2778e753218f /rfb/TightDecoder.cxx | |
parent | f38c49f74e1c5756d9ec56b787840921388179f8 (diff) | |
download | tigervnc-462753d02c3e97543221bbafa759f45dcd1643a0.tar.gz tigervnc-462753d02c3e97543221bbafa759f45dcd1643a0.zip |
Added basic almost-functional Tight support, from tightrealvnc project. Decoder only.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@14 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'rfb/TightDecoder.cxx')
-rw-r--r-- | rfb/TightDecoder.cxx | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/rfb/TightDecoder.cxx b/rfb/TightDecoder.cxx new file mode 100644 index 00000000..46776473 --- /dev/null +++ b/rfb/TightDecoder.cxx @@ -0,0 +1,62 @@ +/* Copyright (C) 2000-2003 Constantin Kaplinsky. All Rights Reserved. + * + * This 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 2 of the License, or + * (at your option) any later version. + * + * This software 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 software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ +#include <rfb/CMsgReader.h> +#include <rfb/CMsgHandler.h> +#include <rfb/TightDecoder.h> + +using namespace rfb; + +#define EXTRA_ARGS CMsgHandler* handler +#define FILL_RECT(r, p) handler->fillRect(r, p) +#define IMAGE_RECT(r, p) handler->imageRect(r, p) +#define BPP 8 +#include <rfb/tightDecode.h> +#undef BPP +#define BPP 16 +#include <rfb/tightDecode.h> +#undef BPP +#define BPP 32 +#include <rfb/tightDecode.h> +#undef BPP + +Decoder* TightDecoder::create(CMsgReader* reader) +{ + return new TightDecoder(reader); +} + +TightDecoder::TightDecoder(CMsgReader* reader_) : reader(reader_) +{ +} + +TightDecoder::~TightDecoder() +{ +} + +void TightDecoder::readRect(const Rect& r, CMsgHandler* handler) +{ + rdr::InStream* is = reader->getInStream(); + rdr::U8* buf = reader->getImageBuf(r.area()); + switch (reader->bpp()) { + case 8: + tightDecode8 (r, is, zis, (rdr::U8*) buf, handler); break; + case 16: + tightDecode16(r, is, zis, (rdr::U16*)buf, handler); break; + case 32: + tightDecode32(r, is, zis, (rdr::U32*)buf, handler); break; + } +} |