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();
+        
+    }
+
+}