public static IDisposable Push(RenderCubinContext ctx) { if (Current == ctx) { return new DisposableAction(() => {}); } else { _stack.Push(ctx); return new DisposableAction(() => { (Current == ctx).AssertTrue(); _stack.Pop(); }); } }
public static byte[] PeekRenderCubin(this Renderable renderable, RenderCubinContext ctx) { if (renderable == null) return null; if (ctx == null) return PeekRenderCubin(renderable); using (RenderCubinContext.Push(ctx)) { var buf = new MemoryStream(); using (ctx.OverrideBuf(buf)) { renderable.RenderCubin(ctx); var cubin = ctx.Result; return cubin; } } }
public static void RenderCubin(this Renderable renderable, RenderCubinContext ctx) { if (renderable == null) return; if (ctx == null) RenderCubin(renderable); using (RenderCubinContext.Push(ctx)) { renderable.RenderCubin(); } }