Browse Source

Replaced PushTransform by PushPreTransform and PushPostTransform

pull/241/head
Nikita Tsukanov 11 years ago
parent
commit
50f0865a64
  1. 2
      src/Gtk/Perspex.Cairo/Media/TileBrushes.cs
  2. 2
      src/Perspex.Application/Application.cs
  3. 8
      src/Perspex.SceneGraph/Media/DrawingContext.cs
  4. 5
      src/Perspex.SceneGraph/Rendering/RendererBase.cs
  5. 2
      src/Windows/Perspex.Direct2D1/Media/VisualBrushImpl.cs

2
src/Gtk/Perspex.Cairo/Media/TileBrushes.cs

@ -113,7 +113,7 @@ namespace Perspex.Cairo.Media
out drawRect);
using (ctx.PushClip(drawRect))
using (ctx.PushTransform(transform))
using (ctx.PushPostTransform(transform))
{
ctx.Render(visual);
}

2
src/Perspex.Application/Application.cs

@ -177,7 +177,7 @@ namespace Perspex
/// <param name="platformID">The value of Environment.OSVersion.Platform.</param>
protected void InitializeSubsystems(int platformID)
{
if (true)//platformID == 4 || platformID == 6)
if (platformID == 4 || platformID == 6)
{
InitializeSubsystem("Perspex.Cairo");
InitializeSubsystem("Perspex.Gtk");

8
src/Perspex.SceneGraph/Media/DrawingContext.cs

@ -147,10 +147,14 @@ namespace Perspex.Media
/// </summary>
/// <param name="matrix">The matrix</param>
/// <returns>A disposable used to undo the transformation.</returns>
public PushedState PushTransform(Matrix matrix)
public PushedState PushPostTransform(Matrix matrix) => PushSetTransform(CurrentTransform*matrix);
public PushedState PushPreTransform(Matrix matrix) => PushSetTransform(matrix*CurrentTransform);
PushedState PushSetTransform(Matrix matrix)
{
var oldMatrix = CurrentTransform;
matrix = oldMatrix*matrix;
_impl.Transform = matrix;
return new PushedState(this, PushedState.PushedStateType.Matrix, oldMatrix);
}

5
src/Perspex.SceneGraph/Rendering/RendererBase.cs

@ -50,9 +50,10 @@ namespace Perspex.Rendering
var offset = Matrix.CreateTranslation(origin);
renderTransform = (-offset)*visual.RenderTransform.Value*(offset);
}
m = context.CurrentTransform.Invert()*renderTransform*m*context.CurrentTransform;
m = renderTransform*m;
using (context.PushTransform(m))
using (context.PushPreTransform(m))
using (context.PushOpacity(opacity))
using (visual.ClipToBounds ? context.PushClip(new Rect(visual.Bounds.Size)) : default(DrawingContext.PushedState))
{

2
src/Windows/Perspex.Direct2D1/Media/VisualBrushImpl.cs

@ -55,7 +55,7 @@ namespace Perspex.Direct2D1.Media
using (var ctx = renderer.CreateDrawingContext())
using (ctx.PushClip(drawRect))
using (ctx.PushTransform(transform))
using (ctx.PushPostTransform(transform))
{
ctx.Render(visual);
}

Loading…
Cancel
Save