private void RenderInternal(ISvgRenderer renderer, bool renderFilter)
{
if (!(renderFilter && RenderFilter(renderer)))
{
var opacity = FixOpacityValue(Opacity);
if (opacity == 1f)
{
RenderInternal(renderer);
}
else
{
IsPathDirty = true;
var bounds = Renderable ? Bounds : Path(null).GetBounds();
IsPathDirty = true;
if (bounds.Width > 0f && bounds.Height > 0f)
{
using (var canvas = new Bitmap((int)Math.Ceiling(bounds.Width), (int)Math.Ceiling(bounds.Height)))
{
using (var canvasRenderer = SvgRenderer.FromImage(canvas))
{
canvasRenderer.SetBoundable(renderer.GetBoundable());
canvasRenderer.TranslateTransform(-bounds.X, -bounds.Y);
RenderInternal(canvasRenderer);
}
var srcRect = new RectangleF(0f, 0f, bounds.Width, bounds.Height);
renderer.DrawImage(canvas, bounds, srcRect, GraphicsUnit.Pixel, opacity);
}
}
}
}
}