public BitmapDrawingContext(SKSurface surface, Vector dpi, IVisualBrushRenderer visualBrushRenderer) : base(surface.Canvas, dpi, visualBrushRenderer) { _surface = surface; }
/// <summary> /// Configure paint wrapper to use visual brush. /// </summary> /// <param name="paintWrapper">Paint wrapper.</param> /// <param name="visualBrush">Visual brush.</param> /// <param name="visualBrushRenderer">Visual brush renderer.</param> /// <param name="tileBrushImage">Tile brush image.</param> private void ConfigureVisualBrush(ref PaintWrapper paintWrapper, IVisualBrush visualBrush, IVisualBrushRenderer visualBrushRenderer, ref IDrawableBitmapImpl tileBrushImage) { if (_visualBrushRenderer == null) { throw new NotSupportedException("No IVisualBrushRenderer was supplied to DrawingContextImpl."); } var intermediateSize = visualBrushRenderer.GetRenderTargetSize(visualBrush); if (intermediateSize.Width >= 1 && intermediateSize.Height >= 1) { var intermediate = CreateRenderTarget(intermediateSize, false); using (var ctx = intermediate.CreateDrawingContext(visualBrushRenderer)) { ctx.Clear(Colors.Transparent); visualBrushRenderer.RenderVisualBrush(ctx, visualBrush); } tileBrushImage = intermediate; paintWrapper.AddDisposable(tileBrushImage); } }
public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) { return(new BitmapDrawingContext(Bitmap, _dpi, visualBrushRenderer)); }
public BitmapDrawingContext(SKBitmap bitmap, Vector dpi, IVisualBrushRenderer visualBrushRenderer) : this(CreateSurface(bitmap), dpi, visualBrushRenderer) { }
public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer, Action finishedCallback) { return(new DrawingContextImpl(visualBrushRenderer, null, _renderTarget, finishedCallback: finishedCallback)); }
public virtual IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) => CreateDrawingContext(visualBrushRenderer, null);
public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) { return(new DrawingContextImpl(visualBrushRenderer, _target, _dwriteFactory)); }
public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) { var session = _surface.BeginDraw(); bool success = false; try { var disp = session.Display; var gl = disp.GlInterface; gl.GetIntegerv(GL_FRAMEBUFFER_BINDING, out var fb); var size = session.Size; var scaling = session.Scaling; if (size.Width <= 0 || size.Height <= 0 || scaling < 0) { session.Dispose(); throw new InvalidOperationException( $"Can't create drawing context for surface with {size} size and {scaling} scaling"); } gl.Viewport(0, 0, size.Width, size.Height); gl.ClearStencil(0); gl.ClearColor(0, 0, 0, 0); gl.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); lock (_grContext) { _grContext.ResetContext(); GRBackendRenderTarget renderTarget = new GRBackendRenderTarget(size.Width, size.Height, disp.SampleCount, disp.StencilSize, new GRGlFramebufferInfo((uint)fb, GRPixelConfig.Rgba8888.ToGlSizedFormat())); var surface = SKSurface.Create(_grContext, renderTarget, session.IsYFlipped ? GRSurfaceOrigin.TopLeft : GRSurfaceOrigin.BottomLeft, GRPixelConfig.Rgba8888.ToColorType()); var nfo = new DrawingContextImpl.CreateInfo { GrContext = _grContext, Canvas = surface.Canvas, Dpi = SkiaPlatform.DefaultDpi * scaling, VisualBrushRenderer = visualBrushRenderer, DisableTextLcdRendering = true }; var ctx = new DrawingContextImpl(nfo, Disposable.Create(() => { surface.Canvas.Flush(); surface.Dispose(); renderTarget.Dispose(); _grContext.Flush(); session.Dispose(); })); success = true; return(ctx); } } finally { if (!success) { session.Dispose(); } } }
/// <inheritdoc/> public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer vbr) => PlatformImpl.Item.CreateDrawingContext(vbr);
public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) { return(new DrawingContextImpl(visualBrushRenderer, null, _window._deviceContext)); }
public IDrawingContextImpl CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) { return(new HeadlessDrawingContextStub()); }
/// <summary> /// Initializes a new instance of the <see cref="DrawingContext"/> class. /// </summary> /// <param name="surface">The GDK drawable.</param> public DrawingContext(Gdk.Drawable drawable, IVisualBrushRenderer visualBrushRenderer) { _context = Gdk.CairoHelper.Create(drawable); _visualBrushRenderer = visualBrushRenderer; }
/// <summary> /// Initializes a new instance of the <see cref="DrawingContext"/> class. /// </summary> /// <param name="surface">The target surface.</param> public DrawingContext(Cairo.Surface surface, IVisualBrushRenderer visualBrushRenderer) { _context = new Cairo.Context(surface); _visualBrushRenderer = visualBrushRenderer; }