Beispiel #1
0
        private static object OnNewInlayRequest(NewInlayRequest request)
        {
            var size = new Size(request.Width, request.Height);
            BaseRenderHandler renderHandler = request.FrameTransportMode switch
            {
                FrameTransportMode.SharedTexture => new TextureRenderHandler(size),
                FrameTransportMode.BitmapBuffer => new BitmapBufferRenderHandler(size),
                _ => throw new Exception($"Unhandled frame transport mode {request.FrameTransportMode}"),
            };

            var inlay = new Inlay(request.Url, renderHandler);

            inlay.Initialise();
            inlays.Add(request.Guid, inlay);

            renderHandler.CursorChanged += (sender, cursor) =>
            {
                ipcBuffer.RemoteRequest <object>(new SetCursorRequest()
                {
                    Guid   = request.Guid,
                    Cursor = cursor
                });
            };

            return(BuildRenderHandlerResponse(renderHandler));
        }
Beispiel #2
0
 private static object BuildRenderHandlerResponse(BaseRenderHandler renderHandler)
 {
     return(renderHandler switch
     {
         TextureRenderHandler textureRenderHandler => new TextureHandleResponse()
         {
             TextureHandle = textureRenderHandler.SharedTextureHandle
         },
         BitmapBufferRenderHandler bitmapBufferRenderHandler => new BitmapBufferResponse()
         {
             BitmapBufferName = bitmapBufferRenderHandler.BitmapBufferName,
             FrameInfoBufferName = bitmapBufferRenderHandler.FrameInfoBufferName,
         },
         _ => throw new Exception($"Unhandled render handler type {renderHandler.GetType().Name}")
     });
Beispiel #3
0
 public Inlay(string url, BaseRenderHandler renderHandler)
 {
     this.url      = url;
     RenderHandler = renderHandler;
 }