Mercurial > hg > Members > riono > TreeVNC_ja_comment
comparison src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java @ 498:8d95d64c33bf
add multicastPut
author | oshiro |
---|---|
date | Fri, 15 Feb 2019 20:11:47 +0900 |
parents | 0f9b3de45fb2 |
children | 5455c62a3775 |
comparison
equal
deleted
inserted
replaced
497:62d6e9180a11 | 498:8d95d64c33bf |
---|---|
25 package com.glavsoft.rfb.encoding.decoder; | 25 package com.glavsoft.rfb.encoding.decoder; |
26 | 26 |
27 import com.glavsoft.drawing.Renderer; | 27 import com.glavsoft.drawing.Renderer; |
28 import com.glavsoft.exceptions.TransportException; | 28 import com.glavsoft.exceptions.TransportException; |
29 import com.glavsoft.transport.Reader; | 29 import com.glavsoft.transport.Reader; |
30 import jp.ac.u_ryukyu.treevnc.TreeRFBProto; | |
30 | 31 |
31 public class ZRLEDecoder extends ZlibDecoder { | 32 public class ZRLEDecoder extends ZlibDecoder { |
32 private static final int MAX_TILE_SIZE = 64; | 33 private static final int MAX_TILE_SIZE = 64; |
33 private int[] decodedBitmap; | 34 private int[] decodedBitmap; |
34 private int[] palette; | 35 private int[] palette; |
38 FramebufferUpdateRectangle rect) throws TransportException { | 39 FramebufferUpdateRectangle rect) throws TransportException { |
39 int zippedLength = (int) reader.readUInt32(); | 40 int zippedLength = (int) reader.readUInt32(); |
40 if (0 == zippedLength) return; | 41 if (0 == zippedLength) return; |
41 int length = rect.width * rect.height * renderer.getBytesPerPixel(); | 42 int length = rect.width * rect.height * renderer.getBytesPerPixel(); |
42 byte[] bytes = unzip(reader, zippedLength, length, rect.getEncodingType()); | 43 byte[] bytes = unzip(reader, zippedLength, length, rect.getEncodingType()); |
43 decode1(renderer, rect, bytes, zippedLength); | 44 decode1(renderer, rect, bytes, zippedLength, null); |
44 } | 45 } |
45 | 46 |
46 public void decode1(Renderer renderer, | 47 public void decode1(Renderer renderer, |
47 FramebufferUpdateRectangle rect, byte[] bytes, int zippedLength) throws TransportException { | 48 FramebufferUpdateRectangle rect, byte[] bytes, int zippedLength, TreeRFBProto rfbProto) throws TransportException { |
48 int offset = zippedLength; | 49 int offset = zippedLength; |
49 int maxX = rect.x + rect.width; | 50 int maxX = rect.x + rect.width; |
50 int maxY = rect.y + rect.height; | 51 int maxY = rect.y + rect.height; |
52 int prevoffset = offset; | |
53 System.out.println("decode1: "+rect); | |
51 if (null == palette) { | 54 if (null == palette) { |
52 palette = new int [128]; | 55 palette = new int [128]; |
53 } | 56 } |
54 if (null == decodedBitmap) { | 57 if (null == decodedBitmap) { |
55 decodedBitmap = new int[MAX_TILE_SIZE * MAX_TILE_SIZE]; | 58 decodedBitmap = new int[MAX_TILE_SIZE * MAX_TILE_SIZE]; |
84 } else { | 87 } else { |
85 offset += decodePacked(bytes, offset, renderer, paletteSize, tileX, tileY, tileWidth, tileHeight); | 88 offset += decodePacked(bytes, offset, renderer, paletteSize, tileX, tileY, tileWidth, tileHeight); |
86 } | 89 } |
87 } | 90 } |
88 } | 91 } |
92 rfbProto.multicastPut(byte, prevoffset, offset); | |
93 prevoffset = offset; | |
89 } | 94 } |
90 } | 95 } |
91 | 96 |
92 private int decodePlainRle(byte[] bytes, int offset, Renderer renderer, | 97 private int decodePlainRle(byte[] bytes, int offset, Renderer renderer, |
93 int tileX, int tileY, int tileWidth, int tileHeight) { | 98 int tileX, int tileY, int tileWidth, int tileHeight) { |