view 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 source

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

}