# HG changeset patch # User sugi # Date 1415500801 -32400 # Node ID f1dc728ffe8773e7fbb5734d3cce9678b8bbac65 # Parent bf9480332e7258e7a0e6da7117a61233dd647686 refactor diff -r bf9480332e72 -r f1dc728ffe87 src/main/java/com/glavsoft/rfb/encoding/decoder/AliceVNCMessage.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/AliceVNCMessage.java Sun Nov 09 11:13:05 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -package com.glavsoft.rfb.encoding.decoder; - -import org.msgpack.annotation.Message; - -import com.glavsoft.rfb.encoding.EncodingType; -import com.glavsoft.rfb.encoding.PixelFormat; -import com.glavsoft.rfb.encoding.ServerInitMessage; - -@Message -public class AliceVNCMessage { - public int x; - public int y; - public int width; - public int height; - public int encodingTypeId; - public String name; - - // use RichCursorDecoder - public byte[] bitmask; - - // pixel format info - public byte bitsPerPixel; - public byte depth; - public byte bigEndianFlag; - public byte trueColourFlag; - public short redMax; - public short greenMax; - public short blueMax; - public byte redShift; - public byte greenShift; - public byte blueShift; - - public AliceVNCMessage(){ - - } - - public void setRectangle(FramebufferUpdateRectangle rect){ - x = rect.x; - y = rect.y; - width = rect.width; - height = rect.height; - encodingTypeId = rect.getEncodingType().getId(); - } - - public FramebufferUpdateRectangle getFramebufferUpdateRectangle(){ - FramebufferUpdateRectangle rect = - new FramebufferUpdateRectangle(x, y, width, height); - rect.encodingType = EncodingType.byId(encodingTypeId); - - return rect; - } - - public EncodingType getEncodingType() { - return EncodingType.byId(encodingTypeId); - } - - public void setPixelFormat(PixelFormat pixelFormat) { - bitsPerPixel = pixelFormat.bitsPerPixel; - depth = pixelFormat.depth; - bigEndianFlag = pixelFormat.bigEndianFlag; - trueColourFlag = pixelFormat.trueColourFlag; - redMax = pixelFormat.redMax; - greenMax = pixelFormat.greenMax; - blueMax = pixelFormat.blueMax; - redShift = pixelFormat.redShift; - greenShift = pixelFormat.greenShift; - blueShift = pixelFormat.blueShift; - } - - public PixelFormat getPixelFormat(){ - PixelFormat pixelFormat = new PixelFormat(); - - pixelFormat.bitsPerPixel = bitsPerPixel; - pixelFormat.depth = depth; - pixelFormat.bigEndianFlag = bigEndianFlag; - pixelFormat.trueColourFlag = trueColourFlag; - pixelFormat.redMax = redMax; - pixelFormat.greenMax = greenMax; - pixelFormat.blueMax = blueMax; - pixelFormat.redShift = redShift; - pixelFormat.greenShift = greenShift; - pixelFormat.blueShift = blueShift; - - return pixelFormat; - } - - public void setServerInitMessage(ServerInitMessage serverInitMessage) { - setPixelFormat(serverInitMessage.getPixelFormat()); - width = serverInitMessage.getFrameBufferWidth(); - height = serverInitMessage.getFrameBufferHeight(); - name = serverInitMessage.getName(); - - } -} diff -r bf9480332e72 -r f1dc728ffe87 src/main/java/com/glavsoft/rfb/encoding/decoder/RichCursorDecoder.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/RichCursorDecoder.java Sun Nov 09 11:13:05 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/RichCursorDecoder.java Sun Nov 09 11:40:01 2014 +0900 @@ -24,6 +24,7 @@ package com.glavsoft.rfb.encoding.decoder; +import jp.ac.u_ryukyu.ie.cr.DecodeInfomation; import alice.datasegment.DataSegment; import alice.datasegment.ReceiveData; @@ -61,14 +62,14 @@ byte[] bitmask = new byte[scanLine * rect.height]; reader.readBytes(bitmask, 0, bitmask.length); - AliceVNCMessage message = new AliceVNCMessage(); + DecodeInfomation message = new DecodeInfomation(); message.setRectangle(rect); message.bitmask = bitmask.clone(); ReceiveData rData = new ReceiveData(buffer.clone(), false, false); - DataSegment.getLocal().put("pixelByteArray", rData, null); + DataSegment.getLocal().put("pixelData", rData, null); rData = new ReceiveData(message, false, false); - DataSegment.getLocal().put("aliceVNCMessage", rData, null); + DataSegment.getLocal().put("updateRectangle", rData, null); sb = new StringBuilder(" "); for (int i=0; i 0; } - public void decode(Renderer renderer, AliceVNCMessage message, byte[] buffer) + public void decode(Renderer renderer, DecodeInfomation message, byte[] buffer) throws TransportException { FramebufferUpdateRectangle rect = message.getFramebufferUpdateRectangle(); int bytesPerPixel = renderer.getBytesPerPixel(); diff -r bf9480332e72 -r f1dc728ffe87 src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java --- a/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java Sun Nov 09 11:13:05 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEDecoder.java Sun Nov 09 11:40:01 2014 +0900 @@ -27,6 +27,7 @@ import java.util.zip.DataFormatException; import java.util.zip.Inflater; +import jp.ac.u_ryukyu.ie.cr.DecodeInfomation; import alice.datasegment.DataSegment; import alice.datasegment.ReceiveData; @@ -47,15 +48,15 @@ if (0 == zippedLength) return; int length = rect.width * rect.height * renderer.getBytesPerPixel(); byte[] bytes = unzip(reader, zippedLength, length); - - AliceVNCMessage message = new AliceVNCMessage(); + + DecodeInfomation message = new DecodeInfomation(); message.setRectangle(rect); message.encodingTypeId = EncodingType.ZRLEE.getId(); - + ReceiveData rData = new ReceiveData(bytes.clone(), false, false); - DataSegment.getLocal().put("pixelByteArray", rData, null); + DataSegment.getLocal().put("pixelData", rData, null); rData = new ReceiveData(message, false, false); - DataSegment.getLocal().put("aliceVNCMessage", rData, null); + DataSegment.getLocal().put("updateRectangle", rData, null); decode(renderer, rect, bytes, 0); } @@ -184,7 +185,7 @@ } return paletteSize * bytesPerCPixel; } - + @Override protected byte[] unzip(Reader reader, int zippedLength, int length) throws TransportException { @@ -201,7 +202,7 @@ int len = decoder.inflate(bytes, position, bytes.length - position); if (len > 0) { position += len; - } + } } while (!decoder.needsInput()); } catch (DataFormatException e) { throw new TransportException("cannot inflate Zlib data", e); diff -r bf9480332e72 -r f1dc728ffe87 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Sun Nov 09 11:13:05 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Sun Nov 09 11:40:01 2014 +0900 @@ -37,7 +37,6 @@ import com.glavsoft.rfb.client.SetPixelFormatMessage; import com.glavsoft.rfb.encoding.EncodingType; import com.glavsoft.rfb.encoding.PixelFormat; -import com.glavsoft.rfb.encoding.decoder.AliceVNCMessage; import com.glavsoft.rfb.encoding.decoder.Decoder; import com.glavsoft.rfb.encoding.decoder.DecodersContainer; import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle; @@ -48,6 +47,8 @@ import java.io.StringWriter; import java.util.logging.Logger; +import jp.ac.u_ryukyu.ie.cr.DecodeInfomation; + public class ReceiverTask implements Runnable { private static final byte FRAMEBUFFER_UPDATE = 0; private static final byte SET_COLOR_MAP_ENTRIES = 1; @@ -181,15 +182,15 @@ renderer = repaintController.createRenderer(reader, rect.width, rect.height, context.getPixelFormat()); } - AliceVNCMessage message = new AliceVNCMessage(); + DecodeInfomation message = new DecodeInfomation(); message.setRectangle(rect); message.setPixelFormat(context.getPixelFormat()); - + ReceiveData rData = new ReceiveData("dummy", false, false); - DataSegment.getLocal().put("pixelByteArray", rData, null); + DataSegment.getLocal().put("pixelData", rData, null); rData = new ReceiveData(message, false, false); - DataSegment.getLocal().put("aliceVNCMessage", rData, null); - + DataSegment.getLocal().put("updateRectangle", rData, null); + context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false)); // repaintController.repaintCursor(); } else diff -r bf9480332e72 -r f1dc728ffe87 src/main/java/com/glavsoft/rfb/protocol/state/InitState.java --- a/src/main/java/com/glavsoft/rfb/protocol/state/InitState.java Sun Nov 09 11:13:05 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/state/InitState.java Sun Nov 09 11:40:01 2014 +0900 @@ -34,12 +34,13 @@ import com.glavsoft.exceptions.UnsupportedSecurityTypeException; import com.glavsoft.rfb.encoding.EncodingType; import com.glavsoft.rfb.encoding.ServerInitMessage; -import com.glavsoft.rfb.encoding.decoder.AliceVNCMessage; import com.glavsoft.rfb.protocol.ProtocolContext; import com.glavsoft.rfb.protocol.ProtocolSettings; import java.util.logging.Logger; +import jp.ac.u_ryukyu.ie.cr.DecodeInfomation; + /** * ClientInit * @@ -82,17 +83,17 @@ } protected void completeContextData(ServerInitMessage serverInitMessage) { - AliceVNCMessage mes = new AliceVNCMessage(); + DecodeInfomation mes = new DecodeInfomation(); mes.setServerInitMessage(serverInitMessage); ReceiveData rData = new ReceiveData(mes, false, false); DataSegment.getLocal().put("initMessage", rData, null); rData = new ReceiveData(mes, false, false); mes.encodingTypeId = EncodingType.DESKTOP_SIZE.getId(); - DataSegment.getLocal().put("aliceVNCMessage", rData, null); + DataSegment.getLocal().put("updateRectangle", rData, null); rData = new ReceiveData("dummy", false, false); - DataSegment.getLocal().put("pixelByteArray", rData, null); + DataSegment.getLocal().put("pixelData", rData, null); context.setPixelFormat(serverInitMessage.getPixelFormat()); context.setFbWidth(serverInitMessage.getFrameBufferWidth()); diff -r bf9480332e72 -r f1dc728ffe87 src/main/java/jp/ac/u_ryukyu/ie/cr/DecodeInfomation.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/DecodeInfomation.java Sun Nov 09 11:40:01 2014 +0900 @@ -0,0 +1,95 @@ +package jp.ac.u_ryukyu.ie.cr; + +import org.msgpack.annotation.Message; + +import com.glavsoft.rfb.encoding.EncodingType; +import com.glavsoft.rfb.encoding.PixelFormat; +import com.glavsoft.rfb.encoding.ServerInitMessage; +import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle; + +@Message +public class DecodeInfomation { + public int x; + public int y; + public int width; + public int height; + public int encodingTypeId; + public String name; + + // use RichCursorDecoder + public byte[] bitmask; + + // pixel format info + public byte bitsPerPixel; + public byte depth; + public byte bigEndianFlag; + public byte trueColourFlag; + public short redMax; + public short greenMax; + public short blueMax; + public byte redShift; + public byte greenShift; + public byte blueShift; + + public DecodeInfomation(){ + + } + + public void setRectangle(FramebufferUpdateRectangle rect){ + x = rect.x; + y = rect.y; + width = rect.width; + height = rect.height; + encodingTypeId = rect.getEncodingType().getId(); + } + + public FramebufferUpdateRectangle getFramebufferUpdateRectangle(){ + FramebufferUpdateRectangle rect = + new FramebufferUpdateRectangle(x, y, width, height); + rect.encodingType = EncodingType.byId(encodingTypeId); + + return rect; + } + + public EncodingType getEncodingType() { + return EncodingType.byId(encodingTypeId); + } + + public void setPixelFormat(PixelFormat pixelFormat) { + bitsPerPixel = pixelFormat.bitsPerPixel; + depth = pixelFormat.depth; + bigEndianFlag = pixelFormat.bigEndianFlag; + trueColourFlag = pixelFormat.trueColourFlag; + redMax = pixelFormat.redMax; + greenMax = pixelFormat.greenMax; + blueMax = pixelFormat.blueMax; + redShift = pixelFormat.redShift; + greenShift = pixelFormat.greenShift; + blueShift = pixelFormat.blueShift; + } + + public PixelFormat getPixelFormat(){ + PixelFormat pixelFormat = new PixelFormat(); + + pixelFormat.bitsPerPixel = bitsPerPixel; + pixelFormat.depth = depth; + pixelFormat.bigEndianFlag = bigEndianFlag; + pixelFormat.trueColourFlag = trueColourFlag; + pixelFormat.redMax = redMax; + pixelFormat.greenMax = greenMax; + pixelFormat.blueMax = blueMax; + pixelFormat.redShift = redShift; + pixelFormat.greenShift = greenShift; + pixelFormat.blueShift = blueShift; + + return pixelFormat; + } + + public void setServerInitMessage(ServerInitMessage serverInitMessage) { + setPixelFormat(serverInitMessage.getPixelFormat()); + width = serverInitMessage.getFrameBufferWidth(); + height = serverInitMessage.getFrameBufferHeight(); + name = serverInitMessage.getName(); + + } +}