public override void BuildFilter(RenderContext renderer) { switch (Overflow) { case Overflow.Auto: case Overflow.Visible: case Overflow.Scroll: base.BuildFilter(renderer); break; default: ScreenRegion prevClip = renderer.ClipRegion; try{ Css.ComputedStyle cs = Style.Computed; renderer.SetClip(new BoxRegion(cs.OffsetLeft, cs.OffsetTop, cs.PixelWidth, cs.PixelHeight), false); base.BuildFilter(renderer); }finally{ renderer.SetClip(prevClip, true); } break; } }
/// <summary> /// Sets the clipping region of the specified <see cref="RenderContext"/>. /// </summary> /// <param name="renderer">The <see cref="RenderContext"/> to have its clipping region set.</param> protected virtual void SetClip(RenderContext renderer) { Css.Value clip = ClipPath; if (clip == null) { return; } _previousClip = renderer.ClipRegion; // Get the shape from the clip value: Css.Value nextValue; ShapeProvider shape = clip.ToShape(this, renderer, out nextValue); if (clip != nextValue) { // Overwrite the raw clip var: ClipPath = nextValue; } if (shape != null) { // Get the region now: renderer.SetClip(shape.GetRegion(this, renderer), false); } }