Mercurial > hg > Members > riono > TreeVNC_ja_comment
view src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java @ 50:225e3873d75f
Modified to be able to specify the region of the screen in the argument.
author | one |
---|---|
date | Tue, 09 Jul 2013 18:08:16 +0900 |
parents | f70008073a03 |
children | 84f1c39ba3bf |
line wrap: on
line source
package com.glavsoft.rfb.encoding.decoder; import jp.ac.u_ryukyu.treevnc.MyRfbProto; import jp.ac.u_ryukyu.treevnc.client.MyRfbProtoClient; import com.glavsoft.drawing.Renderer; import com.glavsoft.exceptions.TransportException; import com.glavsoft.rfb.encoding.EncodingType; import com.glavsoft.transport.Reader; public class ZRLEESender extends Decoder { private MyRfbProto rfb; public ZRLEESender(MyRfbProto rfb) { this.rfb = rfb; } public ZRLEESender(MyRfbProtoClient rfb) { } @Override public void decode(Reader reader, Renderer renderer, FramebufferUpdateRectangle rect) throws TransportException { int dataLen = getZrleLength(rect,reader); reader.reset(); rfb.readSendData(dataLen, reader); if(rfb instanceof MyRfbProtoClient) { reader.readByte();// message reader.readByte();// padding reader.readUInt16();// numberOfRectangle rect.fill(reader);// fill Decoder decoder = new ZRLEDecoder(); decoder.decode(reader,renderer,rect); } } private int getZrleLength(FramebufferUpdateRectangle rect,Reader reader) throws TransportException { int zrleLength = 0; if (rect.getEncodingType() == EncodingType.ZRLE || rect.getEncodingType() == EncodingType.ZRLEE || rect.getEncodingType() == EncodingType.ZLIB) { zrleLength = reader.readInt32(); } return zrleLength + 20; } }