Mercurial > hg > Applications > TreeVNC
annotate src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java @ 493:6f21b6176984
change inflate_size
author | oshiro |
---|---|
date | Fri, 01 Feb 2019 18:34:58 +0900 |
parents | 5c3635d6ab3c |
children | 8d95d64c33bf |
rev | line source |
---|---|
26
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
1 package com.glavsoft.rfb.encoding.decoder; |
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
2 |
232
6ee4cdca104c
send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents:
207
diff
changeset
|
3 import java.io.UnsupportedEncodingException; |
6ee4cdca104c
send value of port and localhost in checkdelay framebufferupdate, and get this.
oc
parents:
207
diff
changeset
|
4 |
207 | 5 import jp.ac.u_ryukyu.treevnc.TreeRFBProto; |
26
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
6 |
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
7 import com.glavsoft.drawing.Renderer; |
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
8 import com.glavsoft.exceptions.TransportException; |
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
9 import com.glavsoft.rfb.encoding.EncodingType; |
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
10 import com.glavsoft.transport.Reader; |
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
11 |
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
12 public class ZRLEESender extends Decoder { |
66 | 13 |
239 | 14 private TreeRFBProto rfb; |
26
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
15 |
239 | 16 public ZRLEESender(TreeRFBProto rfb) { |
17 this.rfb = rfb; | |
18 } | |
66 | 19 |
239 | 20 public ZRLEESender() { |
21 } | |
66 | 22 |
239 | 23 @Override |
24 public void decode(Reader reader, Renderer renderer, | |
275 | 25 FramebufferUpdateRectangle rect) throws TransportException, UnsupportedEncodingException { |
239 | 26 // TreeVNC handling |
185 | 27 int dataLen = getZrleLength(rect, reader); |
190 | 28 byte[] bytes = new byte[rect.width * rect.height * renderer.getBytesPerPixel()]; |
189 | 29 reader.reset(); |
239 | 30 if (rfb.hasViewer()) { |
31 ZRLEDecoder decoder = new ZRLEDecoder(); | |
381 | 32 if (rect.getEncodingType() == EncodingType.ZRLE) { |
33 // ReadSendData convert ZRLE to ZRLEE | |
34 // unzipped data in the bytes | |
264 | 35 rfb.readSendData(dataLen, reader, bytes, rect); |
239 | 36 decoder.decode1(renderer, rect, bytes, 0); |
37 return; | |
381 | 38 } else { |
39 // no reencoding is required | |
40 // readSend does not peform unzip, do the fullrecoding | |
264 | 41 rfb.readSendData(dataLen, reader, null, rect); |
380 | 42 reader.reset(); |
414
3af5f4af2d63
Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
381
diff
changeset
|
43 if (rect.getEncodingType() == EncodingType.CHECK_DELAY) { |
3af5f4af2d63
Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
381
diff
changeset
|
44 reader.skip(24); |
3af5f4af2d63
Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
381
diff
changeset
|
45 } else { |
3af5f4af2d63
Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
381
diff
changeset
|
46 reader.skip(16); |
3af5f4af2d63
Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
381
diff
changeset
|
47 } |
239 | 48 decoder.decode(reader, renderer, rect); |
49 return; | |
50 } | |
51 } | |
380 | 52 rfb.readSendData(dataLen, reader, bytes, rect); |
239 | 53 } |
26
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
54 |
239 | 55 private int getZrleLength(FramebufferUpdateRectangle rect, Reader reader) |
56 throws TransportException { | |
57 int zrleLength = 0; | |
58 if (rect.getEncodingType() == EncodingType.ZRLE | |
59 || rect.getEncodingType() == EncodingType.ZRLEE | |
414
3af5f4af2d63
Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
381
diff
changeset
|
60 || rect.getEncodingType() == EncodingType.ZLIB || rect.getEncodingType() == EncodingType.CHECK_DELAY) { |
239 | 61 zrleLength = reader.readInt32(); |
62 } | |
414
3af5f4af2d63
Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
381
diff
changeset
|
63 if (rect.getEncodingType() == EncodingType.CHECK_DELAY) { |
415
5c3635d6ab3c
Send Check_Delay packet if checkDelay flag is true
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
414
diff
changeset
|
64 // plus time byte |
5c3635d6ab3c
Send Check_Delay packet if checkDelay flag is true
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
414
diff
changeset
|
65 return zrleLength + 20 + 8; |
414
3af5f4af2d63
Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
381
diff
changeset
|
66 } |
239 | 67 return zrleLength + 20; |
68 } | |
66 | 69 |
26
73b13bc335c2
add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff
changeset
|
70 } |