diff options
Diffstat (limited to 'src/GraphicObjects')
| -rw-r--r-- | src/GraphicObjects/Border.cs | 7 | ||||
| -rw-r--r-- | src/GraphicObjects/GraphicObject.cs | 12 | ||||
| -rw-r--r-- | src/GraphicObjects/HueSelector.cs | 8 | ||||
| -rw-r--r-- | src/GraphicObjects/NumericControl.cs | 2 | ||||
| -rw-r--r-- | src/GraphicObjects/SaturationValueSelector.cs | 2 | ||||
| -rw-r--r-- | src/GraphicObjects/TabItem.cs | 3 | ||||
| -rw-r--r-- | src/GraphicObjects/TemplatedControl.cs | 3 | ||||
| -rw-r--r-- | src/GraphicObjects/TestCairoPatch.cs | 148 | ||||
| -rw-r--r-- | src/GraphicObjects/Trend.cs | 3 |
9 files changed, 171 insertions, 17 deletions
diff --git a/src/GraphicObjects/Border.cs b/src/GraphicObjects/Border.cs index a7c039c3..569315cc 100644 --- a/src/GraphicObjects/Border.cs +++ b/src/GraphicObjects/Border.cs @@ -28,6 +28,7 @@ using System; using System.Xml.Serialization; using System.ComponentModel; using System.Diagnostics; +using Cairo; namespace Crow { @@ -126,7 +127,7 @@ namespace Crow int tmp = base.measureRawSize (lt); return tmp < 0 ? tmp : tmp + 2 * BorderWidth; } - protected override void onDraw (Cairo.Context gr) + protected override void onDraw (Context gr) { drawborder2 (gr); @@ -141,7 +142,7 @@ namespace Crow child.Paint (ref gr); gr.Restore (); } - void drawborder2(Cairo.Context gr){ + void drawborder2(Context gr){ Rectangle rBack = new Rectangle (Slot.Size); //rBack.Inflate (-Margin); @@ -228,7 +229,7 @@ namespace Crow } } } - void drawborder1(Cairo.Context gr){ + void drawborder1(Context gr){ Rectangle rBack = new Rectangle (Slot.Size); //rBack.Inflate (-Margin); diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index 2523810e..b7ca11f6 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -38,7 +38,7 @@ using Crow.IML; namespace Crow { /// <summary> - /// This is the base class for all the graphic trees elements + /// The base class for all the graphic tree elements. /// </summary> public class GraphicObject : ILayoutable, IValueChange, IDisposable { @@ -1375,7 +1375,7 @@ namespace Crow #region Rendering /// <summary> This is the common overridable drawing routine to create new widget </summary> - protected virtual void onDraw(Cairo.Context gr) + protected virtual void onDraw(Context gr) { #if DEBUG_UPDATE Debug.WriteLine (string.Format("OnDraw -> {0}", this.ToString ())); @@ -1400,13 +1400,13 @@ namespace Crow if (bmp != null) bmp.Dispose (); bmp = new ImageSurface (Format.Argb32, Slot.Width, Slot.Height); - using (Cairo.Context gr = new Cairo.Context (bmp)) { + using (Context gr = new Context (bmp)) { gr.Antialias = Interface.Antialias; onDraw (gr); } bmp.Flush (); } - protected virtual void UpdateCache(Cairo.Context ctx){ + protected virtual void UpdateCache(Context ctx){ #if DEBUG_UPDATE Debug.WriteLine (string.Format("UpdateCache -> {0}", this.ToString ())); #endif @@ -1425,7 +1425,7 @@ namespace Crow } /// <summary> Chained painting routine on the parent context of the actual cached version /// of the widget </summary> - public virtual void Paint (ref Cairo.Context ctx) + public virtual void Paint (ref Context ctx) { #if DEBUG_UPDATE Debug.WriteLine (string.Format("Paint -> {0}", this.ToString ())); @@ -1461,7 +1461,7 @@ namespace Crow LastPaintedSlot = Slot; } } - void paintDisabled(Cairo.Context gr, Rectangle rb){ + void paintDisabled(Context gr, Rectangle rb){ gr.Operator = Operator.Xor; gr.SetSourceRGBA (0.6, 0.6, 0.6, 0.3); gr.Rectangle (rb); diff --git a/src/GraphicObjects/HueSelector.cs b/src/GraphicObjects/HueSelector.cs index a94053fd..08c84deb 100644 --- a/src/GraphicObjects/HueSelector.cs +++ b/src/GraphicObjects/HueSelector.cs @@ -67,11 +67,13 @@ namespace Crow RegisterForRedraw (); } } - protected override void onDraw (Cairo.Context gr) + protected override void onDraw (Context gr) { base.onDraw (gr); Rectangle r = ClientRectangle; + r.Height -= 4; + r.Y += 2; Gradient.Type gt = Gradient.Type.Horizontal; if (Orientation == Orientation.Vertical) @@ -111,9 +113,9 @@ namespace Crow r.Y = mousePos.Y - 2; } - CairoHelpers.CairoRectangle (ctx, r, 2); + CairoHelpers.CairoRectangle (ctx, r, 1); ctx.SetSourceColor (Color.White); - ctx.LineWidth = 2.0; + ctx.LineWidth = 1.0; ctx.Stroke(); ctx.Restore (); } diff --git a/src/GraphicObjects/NumericControl.cs b/src/GraphicObjects/NumericControl.cs index d8fdead4..21cb1961 100644 --- a/src/GraphicObjects/NumericControl.cs +++ b/src/GraphicObjects/NumericControl.cs @@ -113,7 +113,7 @@ namespace Crow RegisterForRedraw (); } } - [XmlAttributeAttribute][DefaultValue(0.0)] + [DefaultValue(0.0)] public double Value { get { return _actualValue; } diff --git a/src/GraphicObjects/SaturationValueSelector.cs b/src/GraphicObjects/SaturationValueSelector.cs index 8d726685..b0bf270e 100644 --- a/src/GraphicObjects/SaturationValueSelector.cs +++ b/src/GraphicObjects/SaturationValueSelector.cs @@ -65,7 +65,7 @@ namespace Crow RegisterForRedraw (); } } - protected override void onDraw (Cairo.Context gr) + protected override void onDraw (Context gr) { base.onDraw (gr); diff --git a/src/GraphicObjects/TabItem.cs b/src/GraphicObjects/TabItem.cs index 2fdc3802..9dfff864 100644 --- a/src/GraphicObjects/TabItem.cs +++ b/src/GraphicObjects/TabItem.cs @@ -28,6 +28,7 @@ using System; using System.Xml.Serialization; using System.ComponentModel; using System.Diagnostics; +using Cairo; namespace Crow { @@ -105,7 +106,7 @@ namespace Crow NotifyValueChanged ("IsSelected", isSelected); } } - protected override void onDraw (Cairo.Context gr) + protected override void onDraw (Context gr) { gr.Save (); diff --git a/src/GraphicObjects/TemplatedControl.cs b/src/GraphicObjects/TemplatedControl.cs index 01ba22c2..6e236c8d 100644 --- a/src/GraphicObjects/TemplatedControl.cs +++ b/src/GraphicObjects/TemplatedControl.cs @@ -34,6 +34,7 @@ using System.Linq; using System.Collections.Generic; using System.Text; using System.Reflection; +using Cairo; namespace Crow { @@ -105,7 +106,7 @@ namespace Crow ///this allow applying root background to random template's component /// </summary> /// <param name="gr">Backend context</param> - protected override void onDraw (Cairo.Context gr) + protected override void onDraw (Context gr) { gr.Save (); diff --git a/src/GraphicObjects/TestCairoPatch.cs b/src/GraphicObjects/TestCairoPatch.cs new file mode 100644 index 00000000..f155d3c0 --- /dev/null +++ b/src/GraphicObjects/TestCairoPatch.cs @@ -0,0 +1,148 @@ +// +// TestCairoPatch.cs +// +// Author: +// jp <> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using Cairo; + +namespace Crow +{ + public class TestCairoPatch : GraphicObject + { + void computeControlPoints ( + double xc, double yc, + double x1, double y1, + out double x2, out double y2, + out double x3, out double y3, + double x4, double y4){ + double ax = x1 - xc; + double ay = y1 - yc; + double bx = x4 - xc; + double byy = y4 - yc; + double q1 = ax * ax + ay * ay; + double q2 = q1 + ax * bx + ay * byy; + double k2 = 4.0/3.0 * (Math.Sqrt(2.0 * q1 * q2) - q2) / (ax * byy - ay * bx); + + + x2 = xc + ax - k2 * ay; + y2 = yc + ay + k2 * ax; + x3 = xc + bx + k2 * byy; + y3 = yc + byy - k2 * bx; + } + protected override void onDraw (Context gr) + { + base.onDraw (gr); + + double radius = 100; + + double pi3 = Math.PI / 3.0; + + MeshPattern mp = new MeshPattern (); + + double x1 = radius,y1 = 0, + x2 = 0, y2 = 0, x3 = 0, y3 = 0, x4 = 0, y4 = 0, + xc = radius,yc = radius; + + double dx = Math.Sin (pi3) * radius; + double dy = Math.Cos (pi3) * radius; + + mp.BeginPatch (); + mp.MoveTo (xc, yc); + mp.LineTo (x1, y1); + x4 = xc + dx; + y4 = yc - dy; + computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4); + mp.CurveTo (x2, y2, x3, y3, x4, y4); + + mp.SetCornerColorRGB (0, 1, 1, 1); + mp.SetCornerColorRGB (1, 1, 0, 0); + mp.SetCornerColorRGB (2, 1, 1, 0); + + x1 = x4; + y1 = y4; + y4 = yc + dy; + + computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4); + mp.CurveTo (x2, y2, x3, y3, x4, y4); + + mp.SetCornerColorRGB (3, 0, 1, 0); + mp.EndPatch (); + + x1 = x4; + y1 = y4; + x4 = xc; + y4 = yc * 2.0; + + mp.BeginPatch (); + mp.MoveTo (xc, yc); + mp.LineTo (x1, y1); + computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4); + mp.CurveTo (x2, y2, x3, y3, x4, y4); + + mp.SetCornerColorRGB (0, 1, 1, 1); + mp.SetCornerColorRGB (1, 0, 1, 0); + mp.SetCornerColorRGB (2, 0, 1, 1); + + x1 = x4; + y1 = y4; + x4 = xc-dx; + y4 = yc+dy; + + computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4); + mp.CurveTo (x2, y2, x3, y3, x4, y4); + + mp.SetCornerColorRGB (3, 0, 0, 1); + mp.EndPatch (); + + x1 = x4; + y1 = y4; + y4 = yc - dy; + + mp.BeginPatch (); + mp.MoveTo (xc, yc); + mp.LineTo (x1, y1); + computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4); + mp.CurveTo (x2, y2, x3, y3, x4, y4); + + mp.SetCornerColorRGB (0, 1, 1, 1); + mp.SetCornerColorRGB (1, 0, 0, 1); + mp.SetCornerColorRGB (2, 1, 0, 1); + + x1 = x4; + y1 = y4; + x4 = radius; + y4 = 0; + + computeControlPoints (xc, yc, x1, y1, out x2, out y2, out x3, out y3, x4, y4); + mp.CurveTo (x2, y2, x3, y3, x4, y4); + + mp.SetCornerColorRGB (3, 1, 0, 0); + mp.EndPatch (); + + gr.SetSource (mp); + gr.Paint (); + } + } +} + diff --git a/src/GraphicObjects/Trend.cs b/src/GraphicObjects/Trend.cs index 50a1e56f..055c870d 100644 --- a/src/GraphicObjects/Trend.cs +++ b/src/GraphicObjects/Trend.cs @@ -28,6 +28,7 @@ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.ComponentModel; +using Cairo; namespace Crow { @@ -139,7 +140,7 @@ namespace Crow RegisterForRedraw (); } } - protected override void onDraw (Cairo.Context gr) + protected override void onDraw (Context gr) { base.onDraw (gr); |