Browse Source

Additional transform for drawing context

drawing-context-hack
Nikita Tsukanov 9 years ago
parent
commit
3d3ff52c50
  1. 13
      src/Avalonia.SceneGraph/Media/DrawingContext.cs

13
src/Avalonia.SceneGraph/Media/DrawingContext.cs

@ -12,6 +12,9 @@ namespace Avalonia.Media
{ {
private readonly IDrawingContextImpl _impl; private readonly IDrawingContextImpl _impl;
private int _currentLevel; private int _currentLevel;
//Internal tranformation that is applied but not exposed anywhere
//To be used for DPI scaling, etc
private Matrix? _hiddenPostTransform = Matrix.Identity;
@ -36,7 +39,7 @@ namespace Avalonia.Media
} }
} }
public DrawingContext(IDrawingContextImpl impl) public DrawingContext(IDrawingContextImpl impl, Matrix? hiddenPostTransform = null)
{ {
_impl = impl; _impl = impl;
} }
@ -55,10 +58,16 @@ namespace Avalonia.Media
private set private set
{ {
_currentTransform = value; _currentTransform = value;
_impl.Transform = _currentTransform*_currentContainerTransform; var transform = _currentTransform*_currentContainerTransform;
if (_hiddenPostTransform.HasValue)
transform = transform*_hiddenPostTransform.Value;
_impl.Transform = transform;
} }
} }
//HACK: This is a temporary hack that is used in the render loop
//to update TransformedBounds property
[Obsolete("HACK for render loop, don't use")]
internal Matrix CurrentContainerTransform => _currentContainerTransform; internal Matrix CurrentContainerTransform => _currentContainerTransform;
/// <summary> /// <summary>

Loading…
Cancel
Save