annotate src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java @ 500:6609174beafe

fix subencoding
author oshiro
date Sun, 17 Feb 2019 17:55:25 +0900
parents 8d95d64c33bf
children 1646be890954
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
b31903e5b02d rename myRFBProto
oc
parents: 204
diff changeset
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
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
13
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
14 private TreeRFBProto rfb;
26
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
15
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
16 public ZRLEESender(TreeRFBProto rfb) {
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
17 this.rfb = rfb;
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
18 }
66
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
19
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
20 public ZRLEESender() {
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
21 }
66
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
22
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
23 @Override
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
24 public void decode(Reader reader, Renderer renderer,
275
0f9b3de45fb2 set main display size.
oc
parents: 264
diff changeset
25 FramebufferUpdateRectangle rect) throws TransportException, UnsupportedEncodingException {
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
26 // TreeVNC handling
185
feefc1e58153 minor fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 184
diff changeset
27 int dataLen = getZrleLength(rect, reader);
189
f381159e38f3 fix readSendData.
oc
parents: 186
diff changeset
28 reader.reset();
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
29 if (rfb.hasViewer()) {
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
30 ZRLEDecoder decoder = new ZRLEDecoder();
381
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
31 if (rect.getEncodingType() == EncodingType.ZRLE) {
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
32 // ReadSendData convert ZRLE to ZRLEE
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
33 // unzipped data in the bytes
500
6609174beafe fix subencoding
oshiro
parents: 498
diff changeset
34 byte[] bytes = new byte[rect.width * rect.height * renderer.getBytesPerPixel()];
264
83d0256a8808 add fixing display filter.
oc
parents: 239
diff changeset
35 rfb.readSendData(dataLen, reader, bytes, rect);
498
8d95d64c33bf add multicastPut
oshiro
parents: 493
diff changeset
36 decoder.decode1(renderer, rect, bytes, 0, rfb);
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
37 return;
381
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
38 } else {
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
39 // no reencoding is required
47c018aed50e Change condition to ZRLEESender.decode method
innparusu
parents: 380
diff changeset
40 // readSend does not peform unzip, do the fullrecoding
264
83d0256a8808 add fixing display filter.
oc
parents: 239
diff changeset
41 rfb.readSendData(dataLen, reader, null, rect);
380
aef5cbdd84ab Fix compare SerialNumber flag
innparusu
parents: 378
diff changeset
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
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
48 decoder.decode(reader, renderer, rect);
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
49 return;
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
50 }
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
51 }
498
8d95d64c33bf add multicastPut
oshiro
parents: 493
diff changeset
52 byte[] bytes = new byte[dataLen];
380
aef5cbdd84ab Fix compare SerialNumber flag
innparusu
parents: 378
diff changeset
53 rfb.readSendData(dataLen, reader, bytes, rect);
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
54 }
26
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
55
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
56 private int getZrleLength(FramebufferUpdateRectangle rect, Reader reader)
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
57 throws TransportException {
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
58 int zrleLength = 0;
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
59 if (rect.getEncodingType() == EncodingType.ZRLE
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
60 || rect.getEncodingType() == EncodingType.ZRLEE
414
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
61 || rect.getEncodingType() == EncodingType.ZLIB || rect.getEncodingType() == EncodingType.CHECK_DELAY) {
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
62 zrleLength = reader.readInt32();
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
63 }
414
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
64 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
65 // 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
66 return zrleLength + 20 + 8;
414
3af5f4af2d63 Send data size for checkDelay
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 381
diff changeset
67 }
239
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
68 return zrleLength + 20;
d655db005535 create sendCheckDelay Socket.
oc
parents: 232
diff changeset
69 }
66
84ad879891e9 dont move
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 65
diff changeset
70
26
73b13bc335c2 add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
one
parents:
diff changeset
71 }