aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/Gradient.cs
diff options
context:
space:
mode:
authorj-p <jp.bruyere@live.be>2018-12-11 23:20:54 +0100
committerGitHub <noreply@github.com>2018-12-11 23:20:54 +0100
commiteef19b533a0e2ce17f2762d3acfc5990496eaaa0 (patch)
tree6f09101bd8097c1a4ca6a216597bb5d4941453fa /src/Gradient.cs
parent65820f61457262b631eba35283c55135aecbc5f2 (diff)
parentf6732851fe211e22ff91716ac83dffc0cf09d620 (diff)
Merge pull request #44 from jpbruyere/xlib
Xlib
Diffstat (limited to 'src/Gradient.cs')
-rw-r--r--src/Gradient.cs137
1 files changed, 0 insertions, 137 deletions
diff --git a/src/Gradient.cs b/src/Gradient.cs
deleted file mode 100644
index 0806e885..00000000
--- a/src/Gradient.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// Gradient.cs
-//
-// Author:
-// Jean-Philippe Bruyère <jp.bruyere@hotmail.com>
-//
-// 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 System.Collections.Generic;
-using Cairo;
-
-namespace Crow
-{
- public class Gradient : Fill
- {
- public enum Type
- {
- Vertical,
- Horizontal,
- Oblic,
- Radial
- }
- public class ColorStop
- {
- public double Offset;
- public Color Color;
-
- public ColorStop(double offset, Color color){
- Offset = offset;
- Color = color;
- }
- public static object Parse(string s)
- {
- if (string.IsNullOrEmpty (s))
- return null;
-
- string[] parts = s.Trim ().Split (':');
-
- if (parts.Length > 2)
- throw new Exception ("too many parameters in color stop: " + s);
-
- if (parts.Length == 2)
- return new ColorStop (double.Parse (parts [0]), (Color)parts [1]);
-
- return new ColorStop (-1, (Color)parts [0]);
- }
- }
- public Gradient.Type GradientType = Type.Vertical;
-// public double x0;
-// public double y0;
-// public double x1;
-// public double y1;
-// public double Radius1;
-// public double Radius2;
- public List<ColorStop> Stops = new List<ColorStop>();
- public Gradient(Gradient.Type _type)
- {
- GradientType = _type;
- }
-
- #region implemented abstract members of Fill
-
- public override void SetAsSource (Context ctx, Rectangle bounds = default(Rectangle))
- {
- Cairo.Gradient grad = null;
- switch (GradientType) {
- case Type.Vertical:
- grad = new Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Left, bounds.Bottom);
- break;
- case Type.Horizontal:
- grad = new Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Right, bounds.Top);
- break;
- case Type.Oblic:
- grad = new Cairo.LinearGradient (bounds.Left, bounds.Top, bounds.Right, bounds.Bottom);
- break;
- case Type.Radial:
- throw new NotImplementedException ();
- }
-
- foreach (ColorStop cs in Stops)
- grad.AddColorStop (cs.Offset, cs.Color);
-
- ctx.SetSource (grad);
- grad.Dispose ();
- }
- #endregion
-
- public static object Parse(string s)
- {
- if (string.IsNullOrEmpty (s))
- return Color.White;
-
- Crow.Gradient tmp;
-
- string[] stops = s.Trim ().Split ('|');
-
- switch (stops[0].Trim()) {
- case "vgradient":
- tmp = new Gradient (Type.Vertical);
- break;
- case "hgradient":
- tmp = new Gradient (Type.Horizontal);
- break;
- case "ogradient":
- tmp = new Gradient (Type.Oblic);
- break;
- default:
- throw new Exception ("Unknown gradient type: " + stops [0]);
- }
-
- for (int i = 1; i < stops.Length; i++)
- tmp.Stops.Add((ColorStop)ColorStop.Parse(stops[i]));
-
- return tmp;
- }
- }
-}
-