Skip to content

Commit

Permalink
(#63) Rendering: some improvements and TODO fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
ForNeVeR committed Jan 14, 2023
1 parent 2563b20 commit a7b1be9
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 15 deletions.
4 changes: 2 additions & 2 deletions src/WpfMath.Shared/Rendering/IElementRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ public interface IElementRenderer
{
/// <summary>Renders a <see cref="Box"/> to the renderer drawing context.</summary>
/// <param name="box">The element that should be rendered.</param>
/// <param name="x">An X coordinate of the top left corner.</param>
/// <param name="y">An Y coordinate of the top left corner.</param>
/// <param name="x">Logical X coordinate of the top left corner.</param>
/// <param name="y">Logical Y coordinate of the top left corner.</param>
/// <remarks>Should be called for every element of the formula (including nested ones).</remarks>
/// <remarks>
/// Usually this method should call <see cref="Box.RenderTo"/> with optional code common for all elements.
Expand Down
11 changes: 7 additions & 4 deletions src/WpfMath.Shared/Rendering/TeXFormulaExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,25 @@ namespace WpfMath.Rendering;

public static class TeXFormulaExtensions
{
/// <summary>Renders a <paramref name="formula"/> to the passed <paramref name="renderer"/>.</summary>
/// <param name="environment">Rendering parameters.</param>
/// <param name="x">Logical X coordinate of the top left corner of the formula.</param>
/// <param name="y">Logical Y coordinate of the top left corner of the formula.</param>
public static void RenderTo(
this TexFormula formula,
IElementRenderer renderer,
TexEnvironment environment,
double scale, // TODO: Get rid of this; it is already encoded in the renderer anyway.
double x,
double y)
{
var box = formula.CreateBox(environment);
Render(box, renderer, scale, x, y);
Render(box, renderer, x, y);
}

// TODO: Merge into RenderTo after we get rid of the TexRenderer class.
internal static void Render(Box box, IElementRenderer renderer, double scale, double x, double y)
internal static void Render(Box box, IElementRenderer renderer, double x, double y)
{
renderer.RenderElement(box, x / scale, y / scale + box.Height);
renderer.RenderElement(box, x, y + box.Height);
renderer.FinishRendering();
}
}
2 changes: 1 addition & 1 deletion src/WpfMath/Rendering/GeometryElementRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public void RenderTransformed(Box box, IEnumerable<Transformation> transforms, d
var scaledTransforms = transforms.Select(t => t.Scale(_scale));
ApplyTransformations(scaledTransforms, group);
var nestedRenderer = new GeometryElementRenderer(group, _scale);
nestedRenderer.RenderElement(box, x, y);
nestedRenderer.RenderElement(box, x / _scale, y / _scale);
_geometry.Children.Add(group);
}

Expand Down
4 changes: 2 additions & 2 deletions src/WpfMath/Rendering/WpfTeXFormulaExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public static Geometry RenderToGeometry(
{
var geometry = new GeometryGroup();
var renderer = new GeometryElementRenderer(geometry, scale);
formula.RenderTo(renderer, environment, scale, x, y);
formula.RenderTo(renderer, environment, x, y);
return geometry;
}

Expand Down Expand Up @@ -72,6 +72,6 @@ private static void RenderWithPositiveCoordinates(
double x,
double y)
{
formula.RenderTo(new WpfElementRenderer(drawingContext, scale), environment, scale, x, y);
formula.RenderTo(new WpfElementRenderer(drawingContext, scale), environment, x, y);
}
}
12 changes: 6 additions & 6 deletions src/WpfMath/TexRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,13 @@ public double Baseline
}

[Obsolete("Use WpfMath.Rendering.TeXFormulaExtensions::RenderTo instead.")]
public void RenderFormulaTo(IElementRenderer renderer, double x, double y) // TODO: Remove all internal usages of this method.
public void RenderFormulaTo(IElementRenderer renderer, double x, double y)
{
TeXFormulaExtensions.Render(Box, renderer, Scale, x, y);
TeXFormulaExtensions.Render(Box, renderer, x, y);
}

[Obsolete("Use WpfMath.Rendering.WpfTeXFormulaExtensions::RenderToGeometry instead.")]
public Geometry RenderToGeometry(double x, double y) // TODO: Remove all internal usages of this method.
public Geometry RenderToGeometry(double x, double y)
{
var geometry = new GeometryGroup();
var renderer = new GeometryElementRenderer(geometry, Scale);
Expand All @@ -72,7 +72,7 @@ private void RenderWithPositiveCoordinates(DrawingVisual visual, double x, doubl
}

[Obsolete("Use WpfMath.Rendering.WpfTeXFormulaExtensions::RenderToBitmap instead.")]
public BitmapSource RenderToBitmap(double x, double y, double dpi) // TODO: Remove all internal usages of this method.
public BitmapSource RenderToBitmap(double x, double y, double dpi)
{
var visual = new DrawingVisual();
this.RenderWithPositiveCoordinates(visual, x, y);
Expand All @@ -87,10 +87,10 @@ public BitmapSource RenderToBitmap(double x, double y, double dpi) // TODO: Remo
}

[Obsolete("Use WpfMath.Rendering.WpfTeXFormulaExtensions::RenderToBitmap instead.")]
public BitmapSource RenderToBitmap(double x, double y) => this.RenderToBitmap(x, y, DefaultDpi); // TODO: Remove all internal usages of this method.
public BitmapSource RenderToBitmap(double x, double y) => this.RenderToBitmap(x, y, DefaultDpi);

[Obsolete("Use WpfMath.Rendering.WpfTeXFormulaExtensions::RenderTo instead.")]
public void Render(DrawingContext drawingContext, double x, double y) => // TODO: Remove all internal usages of this method.
public void Render(DrawingContext drawingContext, double x, double y) =>
RenderFormulaTo(new WpfElementRenderer(drawingContext, Scale), x, y);
}
}

0 comments on commit a7b1be9

Please sign in to comment.