From 95d5ce56a4bddf1bdcb032d510447323970d44ca Mon Sep 17 00:00:00 2001 From: Nelson Carrillo Date: Sun, 19 Jul 2015 18:58:33 -0400 Subject: [PATCH] Began implementing Geometry support for Cairo/Gtk --- Cairo/Perspex.Cairo/CairoExtensions.cs | 2 +- Cairo/Perspex.Cairo/Media/DrawingContext.cs | 5 +--- Cairo/Perspex.Cairo/Renderer.cs | 2 +- Perspex.Controls/Shapes/Shape.cs | 2 -- .../Platform/IRenderTargetBitmapImpl.cs | 4 +-- TestApplication/Program.cs | 29 +++++++++++++++++++ .../Media/StreamGeometryContextImpl.cs | 1 - 7 files changed, 34 insertions(+), 11 deletions(-) diff --git a/Cairo/Perspex.Cairo/CairoExtensions.cs b/Cairo/Perspex.Cairo/CairoExtensions.cs index 364e330c09..e9969ee90e 100644 --- a/Cairo/Perspex.Cairo/CairoExtensions.cs +++ b/Cairo/Perspex.Cairo/CairoExtensions.cs @@ -76,7 +76,7 @@ namespace Perspex.Cairo return Pango.Alignment.Left; } - if (alignment == Perspex.Media.TextAlignment.Center) + if (alignment == Perspex.Media.TextAlignment.Centered) { return Pango.Alignment.Center; } diff --git a/Cairo/Perspex.Cairo/Media/DrawingContext.cs b/Cairo/Perspex.Cairo/Media/DrawingContext.cs index d7a18ace50..ece359923d 100644 --- a/Cairo/Perspex.Cairo/Media/DrawingContext.cs +++ b/Cairo/Perspex.Cairo/Media/DrawingContext.cs @@ -158,8 +158,7 @@ namespace Perspex.Cairo.Media this.context.CurveTo(cto.Point.ToCairo(), cto.Point2.ToCairo(), cto.Point3.ToCairo()); } } - - System.Diagnostics.Debug.WriteLine("Render"); + if (useFill) { this.context.FillPreserve(); @@ -205,7 +204,6 @@ namespace Perspex.Cairo.Media /// The rectangle bounds. public void FillRectange(Perspex.Media.Brush brush, Rect rect) { - this.SetBrush(brush); this.context.Rectangle(rect.ToCairo()); this.context.Fill(); @@ -268,7 +266,6 @@ namespace Perspex.Cairo.Media { this.SetBrush(pen.Brush); this.context.LineWidth = pen.Thickness; - } } } diff --git a/Cairo/Perspex.Cairo/Renderer.cs b/Cairo/Perspex.Cairo/Renderer.cs index 53a307303f..046be3e5b4 100644 --- a/Cairo/Perspex.Cairo/Renderer.cs +++ b/Cairo/Perspex.Cairo/Renderer.cs @@ -31,7 +31,7 @@ namespace Perspex.Cairo public Renderer(IPlatformHandle handle, double width, double height) { } - + public Renderer(ImageSurface surface) { this.surface = surface; diff --git a/Perspex.Controls/Shapes/Shape.cs b/Perspex.Controls/Shapes/Shape.cs index 530bc0f6a6..3f296c6b00 100644 --- a/Perspex.Controls/Shapes/Shape.cs +++ b/Perspex.Controls/Shapes/Shape.cs @@ -39,8 +39,6 @@ namespace Perspex.Controls.Shapes Control.AffectsRender(StrokeProperty); Control.AffectsRender(StrokeDashArrayProperty); Control.AffectsMeasure(StrokeThicknessProperty); - - } public abstract Geometry DefiningGeometry diff --git a/Perspex.SceneGraph/Platform/IRenderTargetBitmapImpl.cs b/Perspex.SceneGraph/Platform/IRenderTargetBitmapImpl.cs index c61bd549af..7478de1e60 100644 --- a/Perspex.SceneGraph/Platform/IRenderTargetBitmapImpl.cs +++ b/Perspex.SceneGraph/Platform/IRenderTargetBitmapImpl.cs @@ -4,10 +4,10 @@ // // ----------------------------------------------------------------------- -using System; - namespace Perspex.Platform { + using System; + public interface IRenderTargetBitmapImpl : IBitmapImpl, IDisposable { void Render(IVisual visual); diff --git a/TestApplication/Program.cs b/TestApplication/Program.cs index d67164d1e1..9071f51fbc 100644 --- a/TestApplication/Program.cs +++ b/TestApplication/Program.cs @@ -17,6 +17,9 @@ using Perspex.Gtk; #endif using ReactiveUI; using Splat; +using Serilog; +using Serilog.Filters; +using Serilog.Events; namespace TestApplication { @@ -262,6 +265,8 @@ namespace TestApplication private static TabItem ButtonsTab() { Button defaultButton; + + var showDialog = ReactiveCommand.Create(); Button showDialogButton; var result = new TabItem @@ -279,6 +284,7 @@ namespace TestApplication (showDialogButton = new Button { Content = "Button", + Command = showDialog, [ToolTip.TipProperty] = "Hello World!", }), new Button @@ -334,6 +340,29 @@ namespace TestApplication defaultButton.Content = ((string)defaultButton.Content == "Default") ? "Clicked" : "Default"; }; + showDialog.Subscribe(async _ => + { + var close = ReactiveCommand.Create(); + + var dialog = new Window + { + Content = new StackPanel + { + Width = 200, + Height = 200, + Children = new Controls + { + new Button { Content = "Yes", Command = close, CommandParameter = "Yes" }, + new Button { Content = "No", Command = close, CommandParameter = "No" }, + } + } + }; + + close.Subscribe(x => dialog.Close(x)); + + showDialogButton.Content = await dialog.ShowDialog(); + }); + return result; } diff --git a/Windows/Perspex.Direct2D1/Media/StreamGeometryContextImpl.cs b/Windows/Perspex.Direct2D1/Media/StreamGeometryContextImpl.cs index 17b5105ba2..15fb88d7d0 100644 --- a/Windows/Perspex.Direct2D1/Media/StreamGeometryContextImpl.cs +++ b/Windows/Perspex.Direct2D1/Media/StreamGeometryContextImpl.cs @@ -37,7 +37,6 @@ namespace Perspex.Direct2D1.Media public void BeginFigure(Point startPoint, bool isFilled) { - System.Diagnostics.Debug.WriteLine("IS FILLED {0}", isFilled); this.sink.BeginFigure(startPoint.ToSharpDX(), isFilled ? FigureBegin.Filled : FigureBegin.Hollow); }