diff --git a/samples/XamlTestApplication/XamlTestApplication.csproj b/samples/XamlTestApplication/XamlTestApplication.csproj index c902b6dcf4..f70928c398 100644 --- a/samples/XamlTestApplication/XamlTestApplication.csproj +++ b/samples/XamlTestApplication/XamlTestApplication.csproj @@ -48,8 +48,8 @@ ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll True - - ..\..\packages\Sprache.2.0.0.50\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll + + ..\..\packages\Sprache.2.0.0.51\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll True diff --git a/samples/XamlTestApplication/packages.config b/samples/XamlTestApplication/packages.config index dc9c5078a2..7e3e5237a5 100644 --- a/samples/XamlTestApplication/packages.config +++ b/samples/XamlTestApplication/packages.config @@ -2,7 +2,7 @@ - + diff --git a/src/Android/Avalonia.AndroidTestApplication/Avalonia.AndroidTestApplication.csproj b/src/Android/Avalonia.AndroidTestApplication/Avalonia.AndroidTestApplication.csproj index a90acabed0..cfc8cd2318 100644 --- a/src/Android/Avalonia.AndroidTestApplication/Avalonia.AndroidTestApplication.csproj +++ b/src/Android/Avalonia.AndroidTestApplication/Avalonia.AndroidTestApplication.csproj @@ -65,15 +65,15 @@ - ..\..\..\packages\Serilog.1.5.9\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll + ..\..\..\packages\Serilog.1.5.14\lib\portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10\Serilog.dll True ..\..\..\packages\Splat.1.6.2\lib\monoandroid\Splat.dll True - - ..\..\..\packages\Sprache.2.0.0.47\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid1+MonoTouch1\Sprache.dll + + ..\..\..\packages\Sprache.2.0.0.51\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll True diff --git a/src/Android/Avalonia.AndroidTestApplication/packages.config b/src/Android/Avalonia.AndroidTestApplication/packages.config index 1b636d41d6..470074798d 100644 --- a/src/Android/Avalonia.AndroidTestApplication/packages.config +++ b/src/Android/Avalonia.AndroidTestApplication/packages.config @@ -1,8 +1,8 @@  - + - + diff --git a/src/Gtk/Avalonia.Cairo/Media/DrawingContext.cs b/src/Gtk/Avalonia.Cairo/Media/DrawingContext.cs index 768aa90dba..63d5e32bd6 100644 --- a/src/Gtk/Avalonia.Cairo/Media/DrawingContext.cs +++ b/src/Gtk/Avalonia.Cairo/Media/DrawingContext.cs @@ -77,25 +77,40 @@ namespace Avalonia.Cairo.Media /// The rect in the output to draw to. public void DrawImage(IBitmap bitmap, double opacity, Rect sourceRect, Rect destRect) { - var impl = bitmap.PlatformImpl as BitmapImpl; - var size = new Size(impl.PixelWidth, impl.PixelHeight); - var scale = new Vector(destRect.Width / sourceRect.Width, destRect.Height / sourceRect.Height); - - _context.Save(); - - Gdk.CairoHelper.SetSourcePixbuf ( - _context, - impl, - -sourceRect.X + destRect.X, - -sourceRect.Y + destRect.Y); - impl.Scale (impl, (int)destRect.X, (int)destRect.Y, (int)destRect.Width, (int)destRect.Height, 0, 0, scale.X, scale.Y, Gdk.InterpType.Bilinear); - - _context.PushGroup (); - _context.Rectangle (destRect.ToCairo ()); - _context.Fill (); - _context.PopGroupToSource (); - _context.PaintWithAlpha (opacityOverride); - _context.Restore(); + var impl = bitmap.PlatformImpl as BitmapImpl; + var size = new Size(impl.PixelWidth, impl.PixelHeight); + var scale = new Vector(destRect.Width / sourceRect.Width, destRect.Height / sourceRect.Height); + + _context.Save(); + _context.Scale(scale.X, scale.Y); + destRect /= scale; + + if (opacityOverride < 1.0f) { + _context.PushGroup (); + Gdk.CairoHelper.SetSourcePixbuf ( + _context, + impl, + -sourceRect.X + destRect.X, + -sourceRect.Y + destRect.Y); + + _context.Rectangle (destRect.ToCairo ()); + _context.Fill (); + _context.PopGroupToSource (); + _context.PaintWithAlpha (opacityOverride); + } else { + _context.PushGroup (); + Gdk.CairoHelper.SetSourcePixbuf ( + _context, + impl, + -sourceRect.X + destRect.X, + -sourceRect.Y + destRect.Y); + + _context.Rectangle (destRect.ToCairo ()); + _context.Fill (); + _context.PopGroupToSource (); + _context.PaintWithAlpha (opacityOverride); + } + _context.Restore(); } /// diff --git a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj index 45280020c4..2b0d034a5a 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj +++ b/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj @@ -60,6 +60,7 @@ + @@ -321,8 +322,8 @@ - - ..\..\..\packages\Sprache.2.0.0.50\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll + + ..\..\..\packages\Sprache.2.0.0.51\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll True diff --git a/src/Markup/Avalonia.Markup.Xaml/Context/AvaloniaTypeFeatureProvider.cs b/src/Markup/Avalonia.Markup.Xaml/Context/AvaloniaTypeFeatureProvider.cs index 4396062e79..fcb5703f83 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Context/AvaloniaTypeFeatureProvider.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Context/AvaloniaTypeFeatureProvider.cs @@ -174,6 +174,7 @@ namespace Avalonia.Markup.Xaml.Context RegisterTypeConverter(typeof(Uri), new UriTypeConverter()); RegisterTypeConverter(typeof(Cursor), new CursorTypeConverter()); RegisterTypeConverter(typeof(WindowIcon), new IconTypeConverter()); + RegisterTypeConverter(typeof(FontWeight), new FontWeightConverter()); } } } \ No newline at end of file diff --git a/src/Markup/Avalonia.Markup.Xaml/Converters/FontWeightConverter.cs b/src/Markup/Avalonia.Markup.Xaml/Converters/FontWeightConverter.cs new file mode 100644 index 0000000000..00964ef043 --- /dev/null +++ b/src/Markup/Avalonia.Markup.Xaml/Converters/FontWeightConverter.cs @@ -0,0 +1,39 @@ +namespace Avalonia.Markup.Xaml.Converters +{ + using Avalonia.Media; + using OmniXaml.TypeConversion; + using System; + using System.Globalization; + + public class FontWeightConverter : ITypeConverter + { + public bool CanConvertFrom(IValueContext context, Type sourceType) + { + return sourceType == typeof(string); + } + + public bool CanConvertTo(IValueContext context, Type destinationType) + { + return false; + } + + public object ConvertFrom(IValueContext context, CultureInfo culture, object value) + { + FontWeight result; + + if (Enum.TryParse(value as string, out result)) + { + return result; + } + else + { + throw new ArgumentException("unable to convert parameter to FontWeight"); + } + } + + public object ConvertTo(IValueContext context, CultureInfo culture, object value, Type destinationType) + { + throw new NotImplementedException(); + } + } +} diff --git a/src/Markup/Avalonia.Markup.Xaml/packages.config b/src/Markup/Avalonia.Markup.Xaml/packages.config index 12bd37feef..762fe58c1f 100644 --- a/src/Markup/Avalonia.Markup.Xaml/packages.config +++ b/src/Markup/Avalonia.Markup.Xaml/packages.config @@ -1,6 +1,6 @@  - + diff --git a/tests/Avalonia.Markup.UnitTests/Properties/AssemblyInfo.cs b/tests/Avalonia.Markup.UnitTests/Properties/AssemblyInfo.cs index 4ee486911e..d1567d46be 100644 --- a/tests/Avalonia.Markup.UnitTests/Properties/AssemblyInfo.cs +++ b/tests/Avalonia.Markup.UnitTests/Properties/AssemblyInfo.cs @@ -1,6 +1,7 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using Xunit; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information @@ -34,3 +35,6 @@ using System.Runtime.InteropServices; // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] + +// Don't run tests in parallel. +[assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj b/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj index 8fb996bad7..0e2e11c300 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Avalonia.Markup.Xaml.UnitTests.csproj @@ -50,8 +50,8 @@ ..\..\packages\Splat.1.6.2\lib\Net45\Splat.dll True - - ..\..\packages\Sprache.2.0.0.50\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll + + ..\..\packages\Sprache.2.0.0.51\lib\portable-net4+netcore45+win8+wp8+sl5+MonoAndroid+Xamarin.iOS10+MonoTouch\Sprache.dll True diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/packages.config b/tests/Avalonia.Markup.Xaml.UnitTests/packages.config index 2ff422adaa..c9010ec3af 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/packages.config +++ b/tests/Avalonia.Markup.Xaml.UnitTests/packages.config @@ -2,7 +2,7 @@ - +