Benedikt Schroeder пре 7 година
родитељ
комит
881069fd5d
4 измењених фајлова са 40 додато и 58 уклоњено
  1. 1 2
      .gitignore
  2. 0 42
      Avalonia.sln
  3. 3 14
      src/Avalonia.Controls/Image.cs
  4. 36 0
      src/Avalonia.Controls/RenderOptions.cs

+ 1 - 2
.gitignore

@@ -181,5 +181,4 @@ project.lock.json
 ##################
 ##################
 ## BenchmarkDotNet
 ## BenchmarkDotNet
 ##################
 ##################
-BenchmarkDotNet.Artifacts/
-/src/ImageInterpRepro
+BenchmarkDotNet.Artifacts/

+ 0 - 42
Avalonia.sln

@@ -187,8 +187,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.Designer.HostApp.N
 EndProject
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Skia.UnitTests", "tests\Avalonia.Skia.UnitTests\Avalonia.Skia.UnitTests.csproj", "{E1240B49-7B4B-4371-A00E-068778C5CF0B}"
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Skia.UnitTests", "tests\Avalonia.Skia.UnitTests\Avalonia.Skia.UnitTests.csproj", "{E1240B49-7B4B-4371-A00E-068778C5CF0B}"
 EndProject
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ImageInterpRepro", "src\ImageInterpRepro\ImageInterpRepro.csproj", "{54A1062E-126E-4813-98A7-8DB9D949CD93}"
-EndProject
 Global
 Global
 	GlobalSection(SharedMSBuildProjectFiles) = preSolution
 	GlobalSection(SharedMSBuildProjectFiles) = preSolution
 		src\Shared\RenderHelpers\RenderHelpers.projitems*{3c4c0cb4-0c0f-4450-a37b-148c84ff905f}*SharedItemsImports = 13
 		src\Shared\RenderHelpers\RenderHelpers.projitems*{3c4c0cb4-0c0f-4450-a37b-148c84ff905f}*SharedItemsImports = 13
@@ -2516,46 +2514,6 @@ Global
 		{E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|NetCoreOnly.Build.0 = Release|Any CPU
 		{E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|NetCoreOnly.Build.0 = Release|Any CPU
 		{E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|x86.ActiveCfg = Release|Any CPU
 		{E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|x86.ActiveCfg = Release|Any CPU
 		{E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|x86.Build.0 = Release|Any CPU
 		{E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|x86.Build.0 = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|NetCoreOnly.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|NetCoreOnly.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|Any CPU.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|iPhone.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|NetCoreOnly.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|NetCoreOnly.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|x86.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.AppStore|x86.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|iPhone.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|iPhone.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|NetCoreOnly.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|NetCoreOnly.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|x86.ActiveCfg = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Debug|x86.Build.0 = Debug|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|Any CPU.Build.0 = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|iPhone.ActiveCfg = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|iPhone.Build.0 = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|NetCoreOnly.ActiveCfg = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|NetCoreOnly.Build.0 = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|x86.ActiveCfg = Release|Any CPU
-		{54A1062E-126E-4813-98A7-8DB9D949CD93}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 		HideSolutionNode = FALSE

+ 3 - 14
src/Avalonia.Controls/Image.cs

@@ -26,17 +26,10 @@ namespace Avalonia.Controls
         public static readonly StyledProperty<Stretch> StretchProperty =
         public static readonly StyledProperty<Stretch> StretchProperty =
             AvaloniaProperty.Register<Image, Stretch>(nameof(Stretch), Stretch.Uniform);
             AvaloniaProperty.Register<Image, Stretch>(nameof(Stretch), Stretch.Uniform);
 
 
-        /// <summary>
-        /// Defines the <see cref="ScalingMode"/> property.
-        /// </summary>
-        public static readonly StyledProperty<BitmapScalingMode> ScalingModeProperty =
-            AvaloniaProperty.Register<Image, BitmapScalingMode>(nameof(BitmapScalingMode));
-
         static Image()
         static Image()
         {
         {
             AffectsRender(SourceProperty);
             AffectsRender(SourceProperty);
             AffectsRender(StretchProperty);
             AffectsRender(StretchProperty);
-            AffectsRender(ScalingModeProperty);
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -57,12 +50,6 @@ namespace Avalonia.Controls
             set { SetValue(StretchProperty, value); }
             set { SetValue(StretchProperty, value); }
         }
         }
 
 
-        public BitmapScalingMode ScalingMode
-        {
-            get { return (BitmapScalingMode)GetValue(ScalingModeProperty); }
-            set { SetValue(ScalingModeProperty, value); }
-        }
-
         /// <summary>
         /// <summary>
         /// Renders the control.
         /// Renders the control.
         /// </summary>
         /// </summary>
@@ -83,7 +70,9 @@ namespace Avalonia.Controls
                 Rect sourceRect = new Rect(sourceSize)
                 Rect sourceRect = new Rect(sourceSize)
                     .CenterRect(new Rect(destRect.Size / scale));
                     .CenterRect(new Rect(destRect.Size / scale));
 
 
-                context.DrawImage(source, 1, sourceRect, destRect, ScalingMode);
+                var scalingMode = RenderOptions.GetBitmapScalingMode(this);
+
+                context.DrawImage(source, 1, sourceRect, destRect, scalingMode);
             }
             }
         }
         }
 
 

+ 36 - 0
src/Avalonia.Controls/RenderOptions.cs

@@ -0,0 +1,36 @@
+namespace Avalonia.Controls
+{
+    using Avalonia.Visuals.Media.Imaging;
+
+    public class RenderOptions
+    {
+        /// <summary>
+        /// Defines the <see cref="BitmapScalingMode"/> property.
+        /// </summary>
+        public static readonly StyledProperty<BitmapScalingMode> BitmapScalingModeProperty =
+            AvaloniaProperty.RegisterAttached<RenderOptions, Control, BitmapScalingMode>(
+                "BitmapScalingMode",
+                BitmapScalingMode.LowQuality,
+                inherits: true);
+
+        /// <summary>
+        /// Gets the value of the BitmapScalingMode attached property for a control.
+        /// </summary>
+        /// <param name="element">The control.</param>
+        /// <returns>The control's left coordinate.</returns>
+        public static BitmapScalingMode GetBitmapScalingMode(AvaloniaObject element)
+        {
+            return element.GetValue(BitmapScalingModeProperty);
+        }
+
+        /// <summary>
+        /// Sets the value of the BitmapScalingMode attached property for a control.
+        /// </summary>
+        /// <param name="element">The control.</param>
+        /// <param name="value">The left value.</param>
+        public static void SetBitmapScalingMode(AvaloniaObject element, double value)
+        {
+            element.SetValue(BitmapScalingModeProperty, value);
+        }
+    }
+}