changeset 2:e046eb8a3ac1

succeed to repaint another viewer
author YU
date Sat, 13 Sep 2014 07:09:27 +0900
parents a73b8a20e233
children 9d932f70b29a
files src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveUpdateRectangle.java src/main/java/jp/ac/u_ryukyu/alicevnc/RenderAndControllerHolder.java
diffstat 3 files changed, 69 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java	Sat Sep 13 04:57:52 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java	Sat Sep 13 07:09:27 2014 +0900
@@ -17,7 +17,7 @@
 
 public class ReceiveServerInitMessage extends CodeSegment {
 
-    private Receiver info = ids.create(CommandType.PEEK);
+    private Receiver info = ids.create(CommandType.TAKE);
     
    
     public ReceiveServerInitMessage(){
@@ -35,7 +35,7 @@
         SwingViewerWindowFactory viewerWindowFactory = new SwingViewerWindowFactory(true, false, viewer);
         ProtocolSettings settings = ProtocolSettings.getDefaultSettings();
         Protocol context = new Protocol(null, null, null, settings);
-        
+        //context.createMessageQueue(); // need clear Queue
         ServerInitMessage serverInitMessage = info.asClass(ServerInitMessage.class);
         context.setPixelFormat(serverInitMessage.getPixelFormat());
         context.setFbWidth(serverInitMessage.getFrameBufferWidth());
@@ -44,8 +44,11 @@
         
         SwingViewerWindow viewerWindow = viewerWindowFactory.createViewerWindow(context, settings, viewer.getUiSettings(), null, null);
         IRepaintController repaintController = viewerWindow.getSurface();
-        Renderer renderer = repaintController.createRenderer(null, 1280, 800, context.getPixelFormat());
-        
+        Renderer renderer = repaintController.createRenderer(null, serverInitMessage.getFrameBufferWidth(), serverInitMessage.getFrameBufferHeight(), context.getPixelFormat());
+        RenderAndControllerHolder holder = new RenderAndControllerHolder(renderer, repaintController);
+        ods.put("Holder", holder);
+     
+        new ReceiveUpdateRectangle();
     }
 
 }
--- /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();
+        
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/RenderAndControllerHolder.java	Sat Sep 13 07:09:27 2014 +0900
@@ -0,0 +1,17 @@
+package jp.ac.u_ryukyu.alicevnc;
+
+import com.glavsoft.drawing.Renderer;
+import com.glavsoft.rfb.IRepaintController;
+
+public class RenderAndControllerHolder {
+
+    public Renderer renderer;
+    public IRepaintController repaintController;
+    
+    public RenderAndControllerHolder(Renderer renderer,
+            IRepaintController repaintController) {
+        this.repaintController = repaintController;
+        this.renderer = renderer;
+    }
+
+}