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)); }
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}") });
public Inlay(string url, BaseRenderHandler renderHandler) { this.url = url; RenderHandler = renderHandler; }