diff --git a/Cairo/Perspex.Cairo/Media/DrawingContext.cs b/Cairo/Perspex.Cairo/Media/DrawingContext.cs
index 8349da6bde..47fc45048b 100644
--- a/Cairo/Perspex.Cairo/Media/DrawingContext.cs
+++ b/Cairo/Perspex.Cairo/Media/DrawingContext.cs
@@ -116,19 +116,16 @@ namespace Perspex.Cairo.Media
/// The geometry.
public void DrawGeometry(Perspex.Media.Brush brush, Perspex.Media.Pen pen, Perspex.Media.Geometry geometry)
{
- // TODO: Implement
- System.Diagnostics.Debug.WriteLine("Geometry {0}", geometry.GetType());
var impl = geometry.PlatformImpl as StreamGeometryImpl;
var clone = new Queue(impl.Operations);
bool useFill = false;
-
- //this.context.Save();
+
var pop = this.PushTransform(impl.Transform);
+ this.SetPen(pen);
+
while (clone.Count > 0)
{
- // this.SetBrush(brush);
- this.SetPen(new Pen(brush, 0.5));
var current = clone.Dequeue();
@@ -192,6 +189,7 @@ namespace Perspex.Cairo.Media
{
var layout = ((FormattedTextImpl)text.PlatformImpl).Layout;
this.SetBrush(foreground);
+
this.context.MoveTo(origin.X, origin.Y);
Pango.CairoHelper.ShowLayout(this.context, layout);
}
@@ -203,6 +201,7 @@ 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();
diff --git a/Cairo/Perspex.Cairo/Media/StreamGeometryContextImpl.cs b/Cairo/Perspex.Cairo/Media/StreamGeometryContextImpl.cs
index 3b04123481..1d53ef6ec4 100644
--- a/Cairo/Perspex.Cairo/Media/StreamGeometryContextImpl.cs
+++ b/Cairo/Perspex.Cairo/Media/StreamGeometryContextImpl.cs
@@ -13,11 +13,9 @@ namespace Perspex.Cairo.Media
public class StreamGeometryContextImpl : IStreamGeometryContextImpl
{
- private Queue ops;
private StreamGeometryImpl impl;
- public StreamGeometryContextImpl(Queue ops, StreamGeometryImpl imp)
+ public StreamGeometryContextImpl(StreamGeometryImpl imp)
{
- this.ops = ops;
this.impl = imp;
points = new List();
}
@@ -34,14 +32,14 @@ namespace Perspex.Cairo.Media
public void BeginFigure(Point startPoint, bool isFilled)
{
System.Diagnostics.Debug.WriteLine("IS filled {0}", isFilled);
- ops.Enqueue(new BeginOp { Point = startPoint, IsFilled = isFilled });
+ this.impl.Operations.Enqueue(new BeginOp { Point = startPoint, IsFilled = isFilled });
points.Add(startPoint);
}
public void BezierTo(Point point1, Point point2, Point point3)
{
// TODO: Implement
- ops.Enqueue(new CurveToOp { Point = point1, Point2 = point2, Point3 = point3 });
+ this.impl.Operations.Enqueue(new CurveToOp { Point = point1, Point2 = point2, Point3 = point3 });
points.Add(point1);
points.Add(point2);
points.Add(point3);
@@ -49,13 +47,13 @@ namespace Perspex.Cairo.Media
public void LineTo(Point point)
{
- ops.Enqueue(new LineToOp { Point = point });
+ this.impl.Operations.Enqueue(new LineToOp { Point = point });
points.Add(point);
}
public void EndFigure(bool isClosed)
{
- this.ops.Enqueue(new EndOp { IsClosed = isClosed });
+ this.impl.Operations.Enqueue(new EndOp { IsClosed = isClosed });
double maxX = 0;
double maxY = 0;
@@ -67,9 +65,10 @@ namespace Perspex.Cairo.Media
}
var context = new Cairo.Context(new Cairo.ImageSurface(Cairo.Format.Argb32, (int)maxX, (int)maxY));
- var clone = new Queue(this.ops);
- bool useFill = false;
-
+ var clone = new Queue(this.impl.Operations);
+
+ context.LineWidth = 2;
+
while (clone.Count > 0)
{
var current = clone.Dequeue();
diff --git a/Cairo/Perspex.Cairo/Media/StreamGeometryImpl.cs b/Cairo/Perspex.Cairo/Media/StreamGeometryImpl.cs
index f949d7382b..cf423dbc17 100644
--- a/Cairo/Perspex.Cairo/Media/StreamGeometryImpl.cs
+++ b/Cairo/Perspex.Cairo/Media/StreamGeometryImpl.cs
@@ -76,7 +76,7 @@ namespace Perspex.Cairo.Media
private Matrix transform = Matrix.Identity;
public Matrix Transform
{
- get { return transform; }
+ get { return this.transform; }
set
{
if (value != this.Transform)
@@ -91,20 +91,17 @@ namespace Perspex.Cairo.Media
public IStreamGeometryImpl Clone()
{
- // TODO: Implement
return new StreamGeometryImpl(this.Operations);
}
public Rect GetRenderBounds(double strokeThickness)
{
- // TODO: Implement
return this.Bounds;
}
public IStreamGeometryContextImpl Open()
{
- // TODO: Implement
- return new StreamGeometryContextImpl(this.Operations, this);
+ return new StreamGeometryContextImpl(this);
}
}
}