Browse Source

feat: translation (#20836)

pull/20877/head
Betta_Fish 2 weeks ago
committed by GitHub
parent
commit
99b071bf22
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.Adorners.cs
  2. 4
      src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.ComputedProperties.cs
  3. 7
      src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.DirtyInputs.cs
  4. 1
      src/Avalonia.Base/composition-schema.xml

6
src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.Adorners.cs

@ -52,7 +52,7 @@ partial class ServerCompositionVisual
// We ignore Visual's RenderTransform completely since it's set by AdornerLayer and can be out of sync
// with compositor-driver animations
var ownTransform = MatrixUtils.ComputeTransform(Size, AnchorPoint, CenterPoint, Matrix.Identity, Scale,
RotationAngle, Orientation, Offset);
RotationAngle, Orientation, Offset + Translation);
if (
AdornerLayer_GetExpectedSharedAncestor(this) is {} sharedAncestor
&& ComputeTransformFromAncestor(AdornedVisual, sharedAncestor, out var adornerLayerToAdornedVisual))
@ -63,7 +63,7 @@ partial class ServerCompositionVisual
}
else
_ownTransform = MatrixUtils.ComputeTransform(Size, AnchorPoint, CenterPoint, TransformMatrix, Scale,
RotationAngle, Orientation, Offset);
RotationAngle, Orientation, Offset + Translation);
PropagateFlags(true, true);
@ -170,4 +170,4 @@ partial class ServerCompositionVisual
_pools.IntStackPool.Return(ref _adornerPushedClipStack!);
}
}
}
}

4
src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.ComputedProperties.cs

@ -148,7 +148,7 @@ partial class ServerCompositionVisual
if (_combinedTransformDirty)
{
_ownTransform = MatrixUtils.ComputeTransform(Size, AnchorPoint, CenterPoint, TransformMatrix, Scale,
RotationAngle, Orientation, Offset);
RotationAngle, Orientation, Offset + Translation);
setDirtyForRender = setDirtyBounds = true;
@ -161,4 +161,4 @@ partial class ServerCompositionVisual
_ownBoundsDirty = _clipSizeDirty = _combinedTransformDirty = _compositionFieldsDirty = false;
PropagateFlags(setDirtyBounds, setDirtyForRender, setHasExtraDirtyRect);
}
}
}

7
src/Avalonia.Base/Rendering/Composition/Server/ServerCompositionVisual/ServerCompositionVisual.DirtyInputs.cs

@ -43,7 +43,9 @@ partial class ServerCompositionVisual
| CompositionVisualChangedFields.Orientation
| CompositionVisualChangedFields.OrientationAnimated
| CompositionVisualChangedFields.Offset
| CompositionVisualChangedFields.OffsetAnimated;
| CompositionVisualChangedFields.OffsetAnimated
| CompositionVisualChangedFields.Translation
| CompositionVisualChangedFields.TranslationAnimated;
private const CompositionVisualChangedFields ClipSizeDirtyMask =
CompositionVisualChangedFields.Size
@ -100,7 +102,8 @@ partial class ServerCompositionVisual
|| property == s_IdOfScaleProperty
|| property == s_IdOfRotationAngleProperty
|| property == s_IdOfOrientationProperty
|| property == s_IdOfOffsetProperty)
|| property == s_IdOfOffsetProperty
|| property == s_IdOfTranslationProperty)
TriggerCombinedTransformDirty();
if (property == s_IdOfClipToBoundsProperty

1
src/Avalonia.Base/composition-schema.xml

@ -22,6 +22,7 @@
<Property Name="Clip" Type="Avalonia.Platform.IGeometryImpl?" Internal="true" />
<Property Name="ClipToBounds" Type="bool" Animated="true" DefaultValue="true"/>
<Property Name="Offset" Type="Vector3D" Animated="true"/>
<Property Name="Translation" Type="Vector3D" Animated="true"/>
<Property Name="Size" Type="Vector" Animated="true"/>
<Property Name="AnchorPoint" Type="Vector" Animated="true"/>
<Property Name="CenterPoint" Type="Vector3D" Animated="true"/>

Loading…
Cancel
Save