Mercurial > hg > Applications > AliceVNC
diff src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveUpdateRectangle.java @ 2:e046eb8a3ac1
succeed to repaint another viewer
author | YU |
---|---|
date | Sat, 13 Sep 2014 07:09:27 +0900 |
parents | |
children | 9a24e36d8ed7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveUpdateRectangle.java Sat Sep 13 07:09:27 2014 +0900 @@ -0,0 +1,45 @@ +package jp.ac.u_ryukyu.alicevnc; + +import com.glavsoft.exceptions.TransportException; +import com.glavsoft.rfb.encoding.decoder.DecodeInfo; +import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle; +import com.glavsoft.rfb.encoding.decoder.ZRLEDecoder; + +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.Receiver; + +public class ReceiveUpdateRectangle extends CodeSegment{ + + private Receiver info = ids.create(CommandType.PEEK); + private Receiver info1 = ids.create(CommandType.TAKE); + + public ReceiveUpdateRectangle(){ + info.setKey("Holder"); + info1.setKey("decodeInfo"); + } + + public void run() { + ZRLEDecoder decoder = new ZRLEDecoder(); + RenderAndControllerHolder holder = info.asClass(RenderAndControllerHolder.class); + DecodeInfo decodeInfo = info1.asClass(DecodeInfo.class); + + try { + decoder.decode(decodeInfo, holder.renderer); + FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle(); + rect.x = decodeInfo.x; + rect.y = decodeInfo.y; + rect.height = decodeInfo.height; + rect.width = decodeInfo.width; + rect.encodingType = decodeInfo.encodingType; + + holder.repaintController.repaintBitmap(rect); + } catch (TransportException e) { + e.printStackTrace(); + } + + new ReceiveUpdateRectangle(); + + } + +}